[Fwd: irq 9: nobody cared! after moving from 2.4.19 to 2.6.11.5]

Daniel Ritz daniel.ritz at gmx.ch
Wed Apr 13 16:03:17 EDT 2005


hi

strange enough. the interrupt is even coming in on the right line. but
please try the attached patch. it should fix the problem. (also strange
enough the problem has not been reported before. but i saw similar
reports more than once this week. i think all from debian users. looks
like they upgraded the kernel so we have a lot more testers :)

dominik please push this for 2.6.12 anyway. it can't hurt :)

rgds
-daniel

------

[PATCH] yenta: harden PCI interrupt probing

some bridges seem to generate an interrupt while disabling the ISA
interrupts. register the interrupt handler earlier to catch that one.
also give the device some time to clear it's status after disabling
interrupts (not that it should matter but it's safer)

Signed-off-by: Daniel Ritz <daniel.ritz at gmx.ch>

--- 1.71/drivers/pcmcia/yenta_socket.c	2005-03-29 00:21:41 +02:00
+++ edited/drivers/pcmcia/yenta_socket.c	2005-04-13 21:31:13 +02:00
@@ -817,16 +817,16 @@
 
 	socket->probe_status = 0;
 
-	/* disable ISA interrupts */
-	bridge_ctrl = config_readw(socket, CB_BRIDGE_CONTROL);
-	bridge_ctrl &= ~CB_BRIDGE_INTR;
-	config_writew(socket, CB_BRIDGE_CONTROL, bridge_ctrl);
-
 	if (request_irq(socket->cb_irq, yenta_probe_handler, SA_SHIRQ, "yenta", socket)) {
 		printk(KERN_WARNING "Yenta: request_irq() in yenta_probe_cb_irq() failed!\n");
 		return -1;
 	}
 
+	/* disable ISA interrupts */
+	bridge_ctrl = config_readw(socket, CB_BRIDGE_CONTROL);
+	bridge_ctrl &= ~CB_BRIDGE_INTR;
+	config_writew(socket, CB_BRIDGE_CONTROL, bridge_ctrl);
+
 	/* generate interrupt, wait */
 	exca_writeb(socket, I365_CSCINT, I365_CSC_STSCHG);
 	cb_writel(socket, CB_SOCKET_EVENT, -1);
@@ -841,6 +841,7 @@
 	cb_writel(socket, CB_SOCKET_EVENT, -1);
 	exca_readb(socket, I365_CSC);
 
+	msleep(50);
 	free_irq(socket->cb_irq, socket);
 
 	return (int) socket->probe_status;




More information about the linux-pcmcia mailing list