[patch 14/36] magaraid: check for firmware version

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Janusz Krzysztofik <jkrzyszt@xxxxxxxxxxxx>

The old megaraid driver is apparently borken for firmware newer than 6.61.

megaraid_mbox works OK for Janusz with F/W 6.61.

Check for the F/W version and display a helpful warning if it is too high.  It
should make life easier for those who may face the problem.

Cc: "Ju, Seokmann" <Seokmann.Ju@xxxxxxxx>
Cc: James Bottomley <James.Bottomley@xxxxxxxxxxxx>
Signed-off-by: Andrew Morton <akpm@xxxxxxxx>
---

 drivers/scsi/megaraid/megaraid_mbox.c |   16 ++++++++++++++++
 drivers/scsi/megaraid/megaraid_mbox.h |    1 +
 2 files changed, 17 insertions(+)

diff -puN drivers/scsi/megaraid/megaraid_mbox.c~megaraid-check-for-firmware-version drivers/scsi/megaraid/megaraid_mbox.c
--- a/drivers/scsi/megaraid/megaraid_mbox.c~megaraid-check-for-firmware-version
+++ a/drivers/scsi/megaraid/megaraid_mbox.c
@@ -25,6 +25,7 @@
  * Dell PERC3/QC			101E	1960	1028	0471
  * Dell PERC3/DC			101E	1960	1028	0493
  * Dell PERC3/SC			101E	1960	1028	0475
+ * Dell CERC ATA100/4ch with F/W<=6.61	101E	1960	1028	0511
  * Dell PERC3/Di			1028	1960	1028	0123
  * Dell PERC4/SC			1000	1960	1028	0520
  * Dell PERC4/DC			1000	1960	1028	0518
@@ -807,6 +808,21 @@ megaraid_init_mbox(adapter_t *adapter)
 		goto out_alloc_cmds;
 	}
 
+	// Compatibility check
+	if (adapter->pdev->vendor == PCI_VENDOR_ID_AMI &&
+			adapter->pdev->device == PCI_DEVICE_ID_AMI_MEGARAID3 &&
+			adapter->pdev->subsystem_vendor == PCI_VENDOR_ID_DELL &&
+			adapter->pdev->subsystem_device == PCI_SUBSYS_ID_CERC_ATA100_4CH &&
+			(adapter->fw_version[0] > '6' ||
+			 (adapter->fw_version[0] == '6' &&
+			  adapter->fw_version[2] > '6') ||
+			 (adapter->fw_version[0] == '6'
+			  && adapter->fw_version[2] == '6'
+			  && adapter->fw_version[3] > '1'))) {
+		con_log(CL_ANN, (KERN_WARNING
+			"megaraid: problems? downgrade F/W to version 6.61\n"));
+	}
+
 	// Do we support extended CDBs
 	adapter->max_cdb_sz = 10;
 	if (megaraid_mbox_extended_cdb(adapter) == 0) {
diff -puN drivers/scsi/megaraid/megaraid_mbox.h~megaraid-check-for-firmware-version drivers/scsi/megaraid/megaraid_mbox.h
--- a/drivers/scsi/megaraid/megaraid_mbox.h~megaraid-check-for-firmware-version
+++ a/drivers/scsi/megaraid/megaraid_mbox.h
@@ -88,6 +88,7 @@
 #define PCI_SUBSYS_ID_PERC3_QC				0x0471
 #define PCI_SUBSYS_ID_PERC3_DC				0x0493
 #define PCI_SUBSYS_ID_PERC3_SC				0x0475
+#define PCI_SUBSYS_ID_CERC_ATA100_4CH			0x0511
 
 
 #define MBOX_MAX_SCSI_CMDS	128	// number of cmds reserved for kernel
_
-
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux