On Fri, Sep 14, 2007 at 07:12:52PM +0200, Bastian Blank wrote: > On Fri, Sep 14, 2007 at 10:53:50AM -0600, dann frazier wrote: > > Have you verified that this fix works in 2.6.18? It seems like its > > adding support for megaraid3s w/ specific subsystem devices, while > > 2.6.18 (and current upstream) claim megaraid3 devices w/ *any* > > subsystem ids. (Although there does appear to be code to explicitly > > not claim some cards w/ intel vendor ids). > > megaraid_mbox claims PCI_VENDOR_ID_AMI and PCI_VENDOR_ID_LSI_LOGIC for > PCI_DEVICE_ID_AMI_MEGARAID3. megaraid claims PCI_VENDOR_ID_INTEL for the > same device. > > The patch adds PCI_VENDOR_ID_AMI to megaraid with two specific subsystem > ids. They are not excluded in megaraid_mbox, so both claim the same > device.
Thanks waldi, I see that I failed to notice that the MEGARAID3 entry was PCI_VENDOR_ID_INTEL (not _AMI). I've modified the patch to also blacklist these controllers in the megaraid_mbox driver to avoid an overlap. I tested this patch on one of the 2M cards I have (which, for whatever reason, all work just fine with either driver). If this looks correct, I'll submit it upstream and then we can look at backporting it into a stable update. --- linux-source-2.6.18.orig/drivers/scsi/megaraid.c 2006-09-19 21:42:06.000000000 -0600 +++ linux-source-2.6.18/drivers/scsi/megaraid.c 2007-09-14 18:10:16.000000000 -0600 @@ -24,6 +24,7 @@ * * Supported controllers: MegaRAID 418, 428, 438, 466, 762, 467, 471, 490, 493 * 518, 520, 531, 532 + * NetRAID 1M, 2M * * This driver is supported by LSI Logic, with assistance from Red Hat, Dell, * and others. Please send updates to the mailing list @@ -5042,6 +5043,10 @@ static struct pci_device_id megaraid_pci PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, {PCI_VENDOR_ID_AMI, PCI_DEVICE_ID_AMI_MEGARAID2, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, + {PCI_VENDOR_ID_AMI, PCI_DEVICE_ID_AMI_MEGARAID3, + HP_SUBSYS_VID, HP_NETRAID1M_SUBSYS_DID, 0, 0, 0}, + {PCI_VENDOR_ID_AMI, PCI_DEVICE_ID_AMI_MEGARAID3, + HP_SUBSYS_VID, HP_NETRAID2M_SUBSYS_DID, 0, 0, 0}, {PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_AMI_MEGARAID3, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, {0,} --- linux-source-2.6.18.orig/drivers/scsi/megaraid.h 2006-09-19 21:42:06.000000000 -0600 +++ linux-source-2.6.18/drivers/scsi/megaraid.h 2007-09-14 17:47:50.000000000 -0600 @@ -84,6 +84,10 @@ #define LSI_SUBSYS_VID 0x1000 #define INTEL_SUBSYS_VID 0x8086 +/* Sub-System Device IDs */ +#define HP_NETRAID1M_SUBSYS_DID 0x60E7 +#define HP_NETRAID2M_SUBSYS_DID 0x60E8 + #define HBA_SIGNATURE 0x3344 #define HBA_SIGNATURE_471 0xCCCC #define HBA_SIGNATURE_64BIT 0x0299 --- linux-source-2.6.18.orig/drivers/scsi/megaraid/megaraid_mbox.c 2006-09-19 21:42:06.000000000 -0600 +++ linux-source-2.6.18/drivers/scsi/megaraid/megaraid_mbox.c 2007-09-14 18:50:40.000000000 -0600 @@ -426,6 +426,16 @@ megaraid_probe_one(struct pci_dev *pdev, con_log(CL_ANN, ("bus %d:slot %d:func %d\n", pdev->bus->number, PCI_SLOT(pdev->devfn), PCI_FUNC(pdev->devfn))); + /* Some NetRAID 1M and 2M controllers still require the old driver */ + if (pdev->vendor == PCI_VENDOR_ID_AMI && \ + pdev->device == PCI_DEVICE_ID_AMI_MEGARAID3 && \ + pdev->subsystem_vendor == PCI_VENDOR_ID_HP && \ + (pdev->subsystem_device == 0x60e7 || \ + pdev->subsystem_device == 0x60e8)) { + con_log(CL_ANN, ("megaraid_mbox: Blacklisted device found, aborting.\n")); + return -ENODEV; + } + if (pci_enable_device(pdev)) { con_log(CL_ANN, (KERN_WARNING "megaraid: pci_enable_device failed\n")); -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]