⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rhel4.patch

📁 最新的Megaraid SAS卡驱动源代码
💻 PATCH
📖 第 1 页 / 共 3 页
字号:
 		goto fail_irq; 	}@@ -2745,7 +2794,10 @@ static void megasas_flush_cache(struct m 	dcmd->opcode = MR_DCMD_CTRL_CACHE_FLUSH; 	dcmd->mbox.b[0] = MR_FLUSH_CTRL_CACHE | MR_FLUSH_DISK_CACHE; -	megasas_issue_blocked_cmd(instance, cmd);+	if (crashdump_mode())+		megasas_issue_polled(instance, cmd);+	else+		megasas_issue_blocked_cmd(instance, cmd);  	megasas_return_cmd(instance, cmd); @@ -2755,10 +2807,8 @@ static void megasas_flush_cache(struct m /**  * megasas_shutdown_controller -	Instructs FW to shutdown the controller  * @instance:				Adapter soft state- * @opcode:				Shutdown/Hibernate  */-static void megasas_shutdown_controller(struct megasas_instance *instance,-					u32 opcode)+static void megasas_shutdown_controller(struct megasas_instance *instance) { 	struct megasas_cmd *cmd; 	struct megasas_dcmd_frame *dcmd;@@ -2781,7 +2831,7 @@ static void megasas_shutdown_controller( 	dcmd->flags = MFI_FRAME_DIR_NONE; 	dcmd->timeout = 0; 	dcmd->data_xfer_len = 0;-	dcmd->opcode = opcode;+	dcmd->opcode = MR_DCMD_CTRL_SHUTDOWN;  	megasas_issue_blocked_cmd(instance, cmd); @@ -2791,136 +2841,6 @@ static void megasas_shutdown_controller( }  /**- * megasas_suspend -	driver suspend entry point- * @pdev:		PCI device structure- * @state:				- */-static int __devinit-megasas_suspend(struct pci_dev *pdev, pm_message_t state)-{-	struct Scsi_Host *host;-	struct megasas_instance *instance;--	instance = pci_get_drvdata(pdev);-	host = instance->host;--	megasas_flush_cache(instance);-	megasas_shutdown_controller(instance, MR_DCMD_HIBERNATE_SHUTDOWN);-	tasklet_kill(&instance->isr_tasklet);--	pci_set_drvdata(instance->pdev, instance); -	instance->instancet->disable_intr(instance->reg_set);-	free_irq(instance->pdev->irq, instance);--	scsi_host_put(host);--	pci_save_state(pdev);-	pci_disable_device(pdev);--	pci_set_power_state(pdev, pci_choose_state(pdev, state));--	return 0;-}--/**- * megasas_resume-	driver resume entry point- * @pdev:		PCI device structure- */-static int __devinit-megasas_resume(struct pci_dev *pdev)-{-	int rval;-	struct Scsi_Host *host;-	struct megasas_instance *instance;-	-	instance = pci_get_drvdata(pdev);-	host = instance->host;-	pci_set_power_state(pdev, PCI_D0);-	pci_enable_wake(pdev, PCI_D0, 0);-	pci_restore_state(pdev);--	/*-	 * PCI prepping: enable device set bus mastering and dma mask-	 */-	rval = pci_enable_device(pdev);--	if (rval) {-		printk(KERN_INFO "megasas: Enable device failed\n");-		return rval;-	}--	pci_set_master(pdev);--	if (megasas_set_dma_mask(pdev))-		goto fail_set_dma_mask;--	/*-	 * Initialize MFI Firmware-	 */--	*instance->producer = 0;-	*instance->consumer = 0;--	atomic_set(&instance->fw_outstanding,0);--	/*-	 * We expect the FW state to be READY-	 */-	if (megasas_transition_to_ready(instance))-		goto fail_ready_state;--	if (megasas_issue_init_mfi(instance))-		goto fail_init_mfi;--	tasklet_init(&instance->isr_tasklet, megasas_complete_cmd_dpc,-                        (unsigned long)instance);	-	/*-	 * Register IRQ-	 */-	if (request_irq(pdev->irq, megasas_isr, IRQF_SHARED,-		"megasas",instance)) {-		printk(KERN_DEBUG "megasas: Failed to register IRQ\n");-		goto fail_irq;-	}--	instance->instancet->enable_intr(instance->reg_set);--	/*-	 * Store instance in PCI softstate-	 */-	pci_set_drvdata(pdev, instance);--	/*-	 * Initiate AEN (Asynchronous Event Notification)-	 */-	if (megasas_start_aen(instance))-		printk(KERN_ERR "megasas: Start AEN failed\n");-	-	return 0;	-	-      fail_irq:-      fail_init_mfi:--	if (instance->evt_detail)-		pci_free_consistent(pdev, sizeof(struct megasas_evt_detail),-				    instance->evt_detail,-				    instance->evt_detail_h);--	if (instance->producer)-		pci_free_consistent(pdev, sizeof(u32), instance->producer,-				    instance->producer_h);-	if (instance->consumer)-		pci_free_consistent(pdev, sizeof(u32), instance->consumer,-				    instance->consumer_h);-	scsi_host_put(host);-      fail_set_dma_mask:-      fail_ready_state:-	pci_disable_device(pdev);--	return -ENODEV;-}--/**  * megasas_detach_one -	PCI hot"un"plug entry point  * @pdev:		PCI device structure  */@@ -2936,7 +2856,7 @@ static void megasas_detach_one(struct pc 	sysfs_remove_bin_file(&host->shost_classdev.kobj, &sysfs_max_sectors_attr); 	scsi_remove_host(instance->host); 	megasas_flush_cache(instance);-	megasas_shutdown_controller(instance, MR_DCMD_CTRL_SHUTDOWN);+	megasas_shutdown_controller(instance); 	tasklet_kill(&instance->isr_tasklet);  	/*@@ -2982,9 +2902,10 @@ static void megasas_detach_one(struct pc  * megasas_shutdown -	Shutdown entry point  * @device:		Generic device structure  */-static void megasas_shutdown(struct pci_dev *pdev)+static void megasas_shutdown(struct device *device) {-	struct megasas_instance *instance = pci_get_drvdata(pdev);+	struct megasas_instance *instance = (struct megasas_instance *)+	    dev_get_drvdata(device); 	megasas_flush_cache(instance); } @@ -3023,11 +2944,11 @@ static int megasas_mgmt_fasync(int fd, s { 	int rc; -	mutex_lock(&megasas_async_queue_mutex);+	down(&megasas_async_queue_mutex);  	rc = fasync_helper(fd, filep, mode, &megasas_async_queue); -	mutex_unlock(&megasas_async_queue_mutex);+	up(&megasas_async_queue_mutex);  	if (rc >= 0) { 		/* For sanity check when we get ioctl */@@ -3166,6 +3087,7 @@ megasas_mgmt_fw_ioctl(struct megasas_ins 		 * sense_buff points to the location that has the user 		 * sense buffer address 		 */+ 		sense_buff = (unsigned long *) ((unsigned long)ioc->frame.raw + 					ioc->sense_off); 		sense_ptr = (u32 *) ((unsigned long)ioc->frame.raw +@@ -3276,13 +3198,13 @@ static int megasas_mgmt_ioctl_aen(struct /**  * megasas_mgmt_ioctl -	char node ioctl entry point  */-static long-megasas_mgmt_ioctl(struct file *file, unsigned int cmd, unsigned long arg)+static int+megasas_mgmt_ioctl(struct inode *inode, struct file *file, unsigned int cmd,+		   unsigned long arg) { 	switch (cmd) { 	case MEGASAS_IOC_FIRMWARE: 		return megasas_mgmt_ioctl_fw(file, arg);- 	case MEGASAS_IOC_GET_AEN: 		return megasas_mgmt_ioctl_aen(file, arg); 	}@@ -3332,8 +3254,8 @@ static int megasas_mgmt_compat_ioctl_fw( }  static long-megasas_mgmt_compat_ioctl(struct file *file, unsigned int cmd,-			  unsigned long arg)+megasas_mgmt_compat_ioctl(unsigned int fd, unsigned int cmd, unsigned long arg,+			  struct file *file) { 	switch (cmd) { 	case MEGASAS_IOC_FIRMWARE32:@@ -3349,15 +3271,12 @@ megasas_mgmt_compat_ioctl(struct file *f /*  * File operations structure for management interface  */-static const struct file_operations megasas_mgmt_fops = {+static struct file_operations megasas_mgmt_fops = { 	.owner = THIS_MODULE, 	.open = megasas_mgmt_open, 	.release = megasas_mgmt_release, 	.fasync = megasas_mgmt_fasync,-	.unlocked_ioctl = megasas_mgmt_ioctl,-#ifdef CONFIG_COMPAT-	.compat_ioctl = megasas_mgmt_compat_ioctl,-#endif+	.ioctl = megasas_mgmt_ioctl, };  /*@@ -3369,9 +3288,9 @@ static struct pci_driver megasas_pci_dri 	.id_table = megasas_pci_table, 	.probe = megasas_probe_one, 	.remove = __devexit_p(megasas_detach_one),-	.suspend = megasas_suspend,-	.resume = megasas_resume,-	.shutdown = megasas_shutdown,+	.driver = {+		   .shutdown = megasas_shutdown,+		   } };  /*@@ -3395,13 +3314,13 @@ megasas_sysfs_show_release_date(struct d static DRIVER_ATTR(release_date, S_IRUGO, megasas_sysfs_show_release_date, 		   NULL); -static ssize_t+static ssize_t  megasas_sysfs_show_dbg_lvl(struct device_driver *dd, char *buf) { 	return sprintf(buf,"%u",megasas_dbg_lvl); } -static ssize_t+static ssize_t  megasas_sysfs_set_dbg_lvl(struct device_driver *dd, const char *buf, size_t count) { 	int retval = count;@@ -3445,7 +3364,7 @@ static int __init megasas_init(void) 	/* 	 * Register ourselves as PCI hotplug module 	 */-	rval = pci_register_driver(&megasas_pci_driver);+	rval = pci_module_init(&megasas_pci_driver);  	if (rval) { 		printk(KERN_DEBUG "megasas: PCI hotplug regisration failed \n");@@ -3465,6 +3384,12 @@ static int __init megasas_init(void) 	if (rval) 		goto err_dcf_dbg_lvl; +#ifdef CONFIG_COMPAT+	register_ioctl32_conversion(MEGASAS_IOC_FIRMWARE32,+				    megasas_mgmt_compat_ioctl);+	register_ioctl32_conversion(MEGASAS_IOC_GET_AEN,+				    megasas_mgmt_compat_ioctl);+#endif 	return rval; err_dcf_dbg_lvl: 	driver_remove_file(&megasas_pci_driver.driver,@@ -3475,7 +3400,7 @@ err_dcf_attr_ver: 	pci_unregister_driver(&megasas_pci_driver); err_pcidrv: 	unregister_chrdev(megasas_mgmt_majorno, "megaraid_sas_ioctl");-  	return rval;+	return rval; }  /**@@ -3483,11 +3408,13 @@ err_pcidrv:  */ static void __exit megasas_exit(void) {-	driver_remove_file(&megasas_pci_driver.driver,-			   &driver_attr_dbg_lvl);+#ifdef CONFIG_COMPAT+	unregister_ioctl32_conversion(MEGASAS_IOC_FIRMWARE32);+	unregister_ioctl32_conversion(MEGASAS_IOC_GET_AEN);+#endif+	driver_remove_file(&megasas_pci_driver.driver, &driver_attr_version); 	driver_remove_file(&megasas_pci_driver.driver, 			   &driver_attr_release_date);-	driver_remove_file(&megasas_pci_driver.driver, &driver_attr_version);  	pci_unregister_driver(&megasas_pci_driver); 	unregister_chrdev(megasas_mgmt_majorno, "megaraid_sas_ioctl");diff -uprN base/megaraid_sas.h rhel4/megaraid_sas.h--- base/megaraid_sas.h	2007-10-13 20:37:32.000000000 -0700+++ rhel4/megaraid_sas.h	2007-10-13 20:42:13.000000000 -0700@@ -15,7 +15,7 @@ #ifndef LSI_MEGARAID_SAS_H #define LSI_MEGARAID_SAS_H -/*+/**  * MegaRAID SAS Driver meta data  */ #define MEGASAS_VERSION				"00.00.03.16"@@ -27,6 +27,8 @@  */ #define	PCI_DEVICE_ID_LSI_SAS1078R		0x0060 #define	PCI_DEVICE_ID_LSI_VERDE_ZCR		0x0413+#define	PCI_DEVICE_ID_LSI_SAS1064R		0x0411+#define	PCI_DEVICE_ID_DELL_PERC5		0x0015  /*  * =====================================@@ -40,7 +42,7 @@  * "message frames"  */ -/*+/**  * FW posts its state in upper 4 bits of outbound_msg_0 register  */ #define MFI_STATE_MASK				0xF0000000@@ -58,7 +60,7 @@  #define MEGAMFI_FRAME_SIZE			64 -/*+/**  * During FW init, clear pending cmds & reset state using inbound_msg_0  *  * ABORT	: Abort all pending cmds@@ -78,7 +80,7 @@ 						MFI_INIT_MFIMODE| \ 						MFI_INIT_ABORT -/*+/**  * MFI frame flags  */ #define MFI_FRAME_POST_IN_REPLY_QUEUE		0x0000@@ -92,12 +94,12 @@ #define MFI_FRAME_DIR_READ			0x0010 #define MFI_FRAME_DIR_BOTH			0x0018 -/*+/**  * Definition for cmd_status  */ #define MFI_CMD_STATUS_POLL_MODE		0xFF -/*+/**  * MFI command opcodes  */ #define MFI_CMD_INIT				0x00@@ -129,7 +131,7 @@ #define MR_DCMD_CLUSTER_RESET_ALL		0x08010100 #define MR_DCMD_CLUSTER_RESET_LD		0x08010200 -/*+/**  * MFI command completion codes  */ enum MFI_STAT {@@ -539,7 +541,6 @@ struct megasas_ctrl_info { #define MEGASAS_MAX_LD				64 #define MEGASAS_DEFAULT_CMD_PER_LUN		128 - #define MEGASAS_DBG_LVL				1 #define MEGASAS_FW_BUSY				1 @@ -555,7 +556,6 @@ struct megasas_ctrl_info { #define	MEGASAS_RESET_NOTICE_INTERVAL		5  #define MEGASAS_IOCTL_CMD			0- #define MEGASAS_DEFAULT_CMD_TIMEOUT		90  /*@@ -1108,7 +1108,7 @@ struct megasas_instance {  	atomic_t fw_outstanding; 	u32 hw_crit_error;-	+ 	struct megasas_instance_template *instancet; 	struct tasklet_struct isr_tasklet; 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -