public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* PATCH: 2.6.7 still hangs on boot with many i960 based boards
@ 2004-06-16 20:57 Alan Cox
  0 siblings, 0 replies; only message in thread
From: Alan Cox @ 2004-06-16 20:57 UTC (permalink / raw)
  To: linux-kernel; +Cc: linux-scsi

This is a resend of a patch from before. Without it the megaraid driver
crashes compaq management cards, Symbios FC920 fibre channel cards, Promise
Supertrak 100 IDE and the list continues. 

This replaces essential code from the 2.4 tree that went walkies breaking
everyone elses hardware.


diff -u --new-file --recursive --exclude-from /usr/src/exclude linux-2.6.7/drivers/scsi/megaraid.c 2.6.7-ac/drivers/scsi/megaraid.c
--- linux-2.6.7/drivers/scsi/megaraid.c	2004-06-16 21:11:36.456369864 +0100
+++ 2.6.7-ac/drivers/scsi/megaraid.c	2004-06-16 21:28:01.434630408 +0100
@@ -4610,6 +4610,21 @@
 
 	pci_bus = pdev->bus->number;
 	pci_dev_func = pdev->devfn;
+	
+	if(pdev->vendor == PCI_VENDOR_ID_INTEL)		/* The megaraid3 stuff reports the id of the intel
+							   part which is not remotely specific to the megaraid */
+	{
+		u16 magic;
+		/* Don't fall over the Compaq management cards using the same PCI identifier */
+		if(pdev->subsystem_vendor == PCI_VENDOR_ID_COMPAQ &&
+		   pdev->subsystem_device == 0xC000)
+		   	return -ENODEV;
+		/* Now check the magic signature byte */
+		pci_read_config_word(pdev, PCI_CONF_AMISIG, &magic);
+		if(magic != HBA_SIGNATURE_471 && magic != HBA_SIGNATURE)
+			return -ENODEV;
+		/* Ok it is probably a megaraid */
+	}
 
 	/*
 	 * For these vendor and device ids, signature offsets are not

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2004-06-16 21:03 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-06-16 20:57 PATCH: 2.6.7 still hangs on boot with many i960 based boards Alan Cox

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox