Skip to contentSkip to conversation

Prevent crash when loading "cpqfc" with Tachyon XL2 cards (against 2.4.20-rc1-ac1)

PATCH New Martin Knoblauch 1 participant 1 message Nov 14, 2002

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Prevent crash when loading "cpqfc" with Tachyon XL2 cards (against 2.4.20-rc1-ac1)

Hi,

please apply the appended patch to "drivers/scsi/cpqfcTSinit.c". It
adds a call to "pci_enable_device" which prevents a hard crash when loading the driver on a Tachyon XL2 based HP card (IA64 platform). The patch is against 2.4.20-rc1-ac1, but should apply to mainline.

In general, is someone working making the Tachyon XL2 cards really work
with the cpqfc driver? I am very interested in that. It is really sad to see those 60 FC disks idle when Linux is booted on our rx5670 :-( I would love to help out with testing and experimenting.

The current problems (after applying this patch are):

- unable to read WWN from NVRAM
- no GBIC found
- no link state
- no disks found

Thanks
Martin

Signature · 10 lines
Martin Knoblauch
Senior System Architect
MSC.software GmbH
Am Moosfeld 13
D-81829 Muenchen, Germany

e-mail: [email protected]
http://www.mscsoftware.com
Phone/Fax: +49-89-431987-189 / -7189
Mobile: +49-174-3069245
cpqfcTSinit.c renamed from cpqfcTSinit.c-orig +5 -0
@@ -242,6 +242,10 @@
 
 		while ((PciDev = pci_find_device(cpqfc_boards[i].vendor_id, cpqfc_boards[i].device_id, PciDev))) {
 
+			if (pci_enable_device(PciDev) != 0) {
+				printk(KERN_WARNING "cpqfc: pci_enable_devive failed, skipping.\n");
+				continue;
+			}
 			if (pci_set_dma_mask(PciDev, CPQFCTS_DMA_MASK) != 0) {
 				printk(KERN_WARNING "cpqfc: HBA cannot support required DMA mask, skipping.\n");
 				continue;
@@ -411,6 +415,7 @@
 	// can we find an FC device mapping to this SCSI target?
 	DumCmnd.channel = ScsiDev->channel;	// For searching
 	DumCmnd.target = ScsiDev->id;
+	DumCmnd.lun = ScsiDev->lun;
 	pLoggedInPort = fcFindLoggedInPort(fcChip, &DumCmnd,	// search Scsi Nexus
 					   0,	// DON'T search linked list for FC port id
 					   NULL,	// DON'T search linked list for FC WWN