[PATCH] fix DAC960 hang in 2.6.10-rc2

From: Bjorn Helgaas
Date: Thu Dec 02 2004 - 11:22:08 EST


The DAC960 driver looks at PCI_Device->irq before calling
pci_enable_device(), which means it requests the wrong IRQ
and hangs. The attached patch fixes it.
Don't look at PCI_Device->irq until *after* calling pci_enable_device().

Thanks to Johannes Rommel for reporting the problem and testing the fix.

Signed-off-by: Bjorn Helgaas <bjorn.helgaas@xxxxxx>

===== drivers/block/DAC960.c 1.74 vs edited =====
--- 1.74/drivers/block/DAC960.c 2004-10-05 13:57:21 -06:00
+++ edited/drivers/block/DAC960.c 2004-11-29 10:12:07 -07:00
@@ -2678,7 +2678,7 @@
DAC960_Controller_T *Controller = NULL;
unsigned char DeviceFunction = PCI_Device->devfn;
unsigned char ErrorStatus, Parameter0, Parameter1;
- unsigned int IRQ_Channel = PCI_Device->irq;
+ unsigned int IRQ_Channel;
void __iomem *BaseAddress;
int i;

@@ -2958,6 +2958,7 @@
/*
Acquire shared access to the IRQ Channel.
*/
+ IRQ_Channel = PCI_Device->irq;
if (request_irq(IRQ_Channel, InterruptHandler, SA_SHIRQ,
Controller->FullModelName, Controller) < 0)
{