Messages in this thread Patch in this message | | | Date | Tue, 11 Jan 2005 16:32:48 -0600 | From | DHollenbeck <> | Subject | Re: yenta_socket rapid fires interrupts |
| |
Linus Torvalds wrote:
>On Tue, 11 Jan 2005, DHollenbeck wrote: > > >>Add to my last post, the information that IRQ 11 is only being used by >>the two yenta sockets. So the "toggling" is not really toggling, but the >>printing of the two card sockets which are both on the same IRQ? >> >> > >Ahh. Good catch, silly me. No toggling, so you can ignore my last post. >There's no cycle going on, and the ports are stable, and the interrupt is >coming from somewhere else entirely. > >You could still enable debugging, but at that point I'd actually be >interested in the _first_ part of the debug output, not the long tail of >dead interrupts. You'd need a serial console or netconsole to catch it, >I'm afraid. > > Linus > > > My modfied, throw away, debug patch:
--- linux/drivers/pcmcia/yenta_socket..orig 2004-12-24 15:35:00.000000000 -0600 +++ linux/drivers/pcmcia/yenta_socket.c 2005-01-11 16:16:47.000000000 -0600 @@ -401,7 +401,7 @@ static unsigned int yenta_events(struct yenta_socket *socket) { u8 csc; - u32 cb_event; + u32 cb_event, intctl; unsigned int events; /* Clear interrupt status for the event */ @@ -412,13 +412,31 @@ events = (cb_event & (CB_CD1EVENT | CB_CD2EVENT)) ? SS_DETECT : 0 ; events |= (csc & I365_CSC_DETECT) ? SS_DETECT : 0; - if (exca_readb(socket, I365_INTCTL) & I365_PC_IOCARD) { + if ( (intctl=exca_readb(socket, I365_INTCTL)) & I365_PC_IOCARD) { events |= (csc & I365_CSC_STSCHG) ? SS_STSCHG : 0; } else { events |= (csc & I365_CSC_BVD1) ? SS_BATDEAD : 0; events |= (csc & I365_CSC_BVD2) ? SS_BATWARN : 0; events |= (csc & I365_CSC_READY) ? SS_READY : 0; } + +/* RHH: per Linus */ +#if 1 + { + u32 cb_state; + + static int intCount = 20; + + if( intCount > 0 ) + { + --intCount; + cb_state = cb_readl(socket, CB_SOCKET_STATE); + printk("yenta: event %08x state %08x csc %02x intctl %02x events=%08x\n", + cb_event, cb_state, csc, intctl, events ); + } + } +#endif + return events; } And the dmesg output. Please look at intctl. Is this our unsatisfied noise maker?
Linux Kernel Card Services options: [pci] [cardbus] PCI: Found IRQ 11 for device 0000:00:0d.0 PCI: Sharing IRQ 11 with 0000:00:0d.1 Yenta: CardBus bridge found at 0000:00:0d.0 [0000:0000] Yenta: Enabling burst memory read transactions Yenta: Using CSCINT to route CSC interrupts to PCI Yenta: Routing CardBus interrupts to PCI Yenta TI: socket 0000:00:0d.0, mfunc 0x00001022, devctl 0x64 Yenta: ISA IRQ mask 0x00a8, PCI irq 11 Socket status: 30000006 PCI: Found IRQ 11 for device 0000:00:0d.1 PCI: Sharing IRQ 11 with 0000:00:0d.0 Yenta: CardBus bridge found at 0000:00:0d.1 [0000:0000] Yenta: Using CSCINT to route CSC interrupts to PCI Yenta: Routing CardBus interrupts to PCI Yenta TI: socket 0000:00:0d.1, mfunc 0x00001022, devctl 0x64 yenta: event 00000000 state 30000006 csc 00 intctl 50 events=00000000 Yenta: ISA IRQ mask 0x00a8, PCI irq 11 Socket status: 30000020 yenta: event 00000000 state 30000006 csc 00 intctl 50 events=00000000 yenta: event 00000000 state 30000829 csc 00 intctl 10 events=00000000 yenta: event 00000000 state 30000006 csc 00 intctl 50 events=00000000 yenta: event 00000008 state 30000829 csc 00 intctl 10 events=00000000 yenta: event 00000000 state 30000006 csc 00 intctl 50 events=00000000 yenta: event 00000000 state 30000829 csc 00 intctl 10 events=00000000 yenta: event 00000000 state 30000006 csc 00 intctl 50 events=00000000 yenta: event 00000000 state 30000829 csc 00 intctl 10 events=00000000 yenta: event 00000000 state 30000006 csc 00 intctl 50 events=00000000 yenta: event 00000000 state 30000829 csc 00 intctl 10 events=00000000 yenta: event 00000000 state 30000006 csc 00 intctl 50 events=00000000 yenta: event 00000000 state 30000829 csc 00 intctl 10 events=00000000 yenta: event 00000000 state 30000006 csc 00 intctl 50 events=00000000 yenta: event 00000000 state 30000829 csc 00 intctl 10 events=00000000 yenta: event 00000000 state 30000006 csc 00 intctl 50 events=00000000 yenta: event 00000000 state 30000829 csc 00 intctl 10 events=00000000 yenta: event 00000000 state 30000006 csc 00 intctl 50 events=00000000 yenta: event 00000000 state 30000829 csc 00 intctl 10 events=00000000 yenta: event 00000000 state 30000006 csc 00 intctl 50 events=00000000 irq 11: nobody cared (try booting with the "irqpoll" option. [<c012b752>] __report_bad_irq+0x22/0x90 [<c012b868>] note_interrupt+0x78/0xc0 [<c012b11d>] __do_IRQ+0x13d/0x160 [<c0104aba>] do_IRQ+0x1a/0x30 [<c010337a>] common_interrupt+0x1a/0x20 [<c012007b>] sys_getresgid+0xb/0xa0 [<c0117750>] __do_softirq+0x30/0xa0 [<c0120060>] sys_setresgid+0x120/0x130 [<c01177f5>] do_softirq+0x35/0x40 [<c012af65>] irq_exit+0x35/0x40 [<c0104abf>] do_IRQ+0x1f/0x30 [<c010337a>] common_interrupt+0x1a/0x20 [<c01005b0>] default_idle+0x0/0x40 [<c038007b>] ic_setup_if+0xcb/0xd0 [<c01005d3>] default_idle+0x23/0x40 [<c010064c>] cpu_idle+0x1c/0x50 [<c036873c>] start_kernel+0x13c/0x160 handlers: [<c2838980>] (yenta_interrupt+0x0/0x40 [yenta_socket]) [<c2838980>] (yenta_interrupt+0x0/0x40 [yenta_socket]) Disabling IRQ #11 root@EMBEDDED[~]#
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |