* [bug 2.5.69] xirc2ps_cs, irq 3: nobody cared, shutdown hangs @ 2003-05-11 14:47 Daniel Ritz 2003-05-11 16:13 ` Zwane Mwaikambo 0 siblings, 1 reply; 10+ messages in thread From: Daniel Ritz @ 2003-05-11 14:47 UTC (permalink / raw) To: linux-kernel, Andrew Morton, Jeff Garzik hi i see that one on shutdown with a xircom ce3 10/100 16bit pcmcia network card, driver xirc2ps_cs. the netdevice also never gets free, so the shutdown never finishs. 2.5.68 also doesn't work, 2.5.67 does work. rgds -daniel irq 3: nobody cared! Call Trace: [<c010d5ff>] handle_IRQ_event+0x93/0x104 [<c010d607>] handle_IRQ_event+0x9b/0x104 [<c010dac1>] do_IRQ+0x181/0x2cc [<d0839b80>] +0x0/0xa80 [yenta_socket] [<c010bfe0>] common_interrupt+0x18/0x20 [<d0839b80>] +0x0/0xa80 [yenta_socket] [<d0836938>] yenta_set_socket+0x144/0x250 [yenta_socket] [<d083847e>] +0x55e/0x87e [yenta_socket] [<d0836144>] pci_set_socket+0x28/0x34 [yenta_socket] [<d0839b80>] +0x0/0xa80 [yenta_socket] [<d0888192>] set_socket+0x16/0x1c [pcmcia_core] [<d0889d0b>] pcmcia_release_configuration+0xa7/0x110 [pcmcia_core] [<d088b018>] CardServices+0x1b8/0x340 [pcmcia_core] [<d084bec0>] xirc2ps_cs_driver+0x0/0xa0 [xirc2ps_cs] [<d0849268>] xirc2ps_release+0x68/0x94 [xirc2ps_cs] [<d084bf60>] +0x0/0xe0 [xirc2ps_cs] [<d084a621>] +0x21/0x60 [xirc2ps_cs] [<c013cdd5>] sys_delete_module+0x1b5/0x1d8 [<c0154e5c>] sys_munmap+0x44/0x64 [<c010b673>] syscall_call+0x7/0xb handlers: [<d0849438>] (xirc2ps_interrupt+0x0/0x59c [xirc2ps_cs]) unregister_netdevice: waiting for eth0 to become free. Usage count = 2 unregister_netdevice: waiting for eth0 to become free. Usage count = 2 unregister_netdevice: waiting for eth0 to become free. Usage count = 2 unregister_netdevice: waiting for eth0 to become free. Usage count = 2 ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [bug 2.5.69] xirc2ps_cs, irq 3: nobody cared, shutdown hangs 2003-05-11 14:47 [bug 2.5.69] xirc2ps_cs, irq 3: nobody cared, shutdown hangs Daniel Ritz @ 2003-05-11 16:13 ` Zwane Mwaikambo 2003-05-11 17:24 ` Jeff Garzik 2003-05-12 19:59 ` Daniel Ritz 0 siblings, 2 replies; 10+ messages in thread From: Zwane Mwaikambo @ 2003-05-11 16:13 UTC (permalink / raw) To: Daniel Ritz; +Cc: linux-kernel, Andrew Morton, Jeff Garzik On Sun, 11 May 2003, Daniel Ritz wrote: > hi > > i see that one on shutdown with a xircom ce3 10/100 16bit pcmcia network card, > driver xirc2ps_cs. the netdevice also never gets free, so the shutdown never > finishs. 2.5.68 also doesn't work, 2.5.67 does work. Interesting, eject with one of my PCMCIA (smc91c92) network cards also triggers an unhandled interrupt. I think the IRQ_NONE is incorrect here as the device really may have an interrupt to service. Index: linux-2.5-cvs/drivers/net/pcmcia/xirc2ps_cs.c =================================================================== RCS file: /home/cvs/linux-2.5/drivers/net/pcmcia/xirc2ps_cs.c,v retrieving revision 1.19 diff -u -p -B -r1.19 xirc2ps_cs.c --- linux-2.5-cvs/drivers/net/pcmcia/xirc2ps_cs.c 8 May 2003 05:16:27 -0000 1.19 +++ linux-2.5-cvs/drivers/net/pcmcia/xirc2ps_cs.c 11 May 2003 15:20:03 -0000 @@ -1312,7 +1312,7 @@ xirc2ps_interrupt(int irq, void *dev_id, */ if (!netif_device_present(dev)) - return IRQ_NONE; + goto out; ioaddr = dev->base_addr; if (lp->mohawk) { /* must disable the interrupt */ @@ -1515,6 +1515,7 @@ xirc2ps_interrupt(int irq, void *dev_id, * force an interrupt with this command: * PutByte(XIRCREG_CR, EnableIntr|ForceIntr); */ + out: return IRQ_RETVAL(handled); } /* xirc2ps_interrupt */ > unregister_netdevice: waiting for eth0 to become free. Usage count = 2 > unregister_netdevice: waiting for eth0 to become free. Usage count = 2 > unregister_netdevice: waiting for eth0 to become free. Usage count = 2 > unregister_netdevice: waiting for eth0 to become free. Usage count = 2 I can reproduce this, i'll have a look. -- function.linuxpower.ca ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [bug 2.5.69] xirc2ps_cs, irq 3: nobody cared, shutdown hangs 2003-05-11 16:13 ` Zwane Mwaikambo @ 2003-05-11 17:24 ` Jeff Garzik 2003-05-11 17:20 ` Alan Cox 2003-05-11 17:31 ` Zwane Mwaikambo 2003-05-12 19:59 ` Daniel Ritz 1 sibling, 2 replies; 10+ messages in thread From: Jeff Garzik @ 2003-05-11 17:24 UTC (permalink / raw) To: Zwane Mwaikambo; +Cc: Daniel Ritz, linux-kernel, Andrew Morton Zwane Mwaikambo wrote: > @@ -1312,7 +1312,7 @@ xirc2ps_interrupt(int irq, void *dev_id, > */ > > if (!netif_device_present(dev)) > - return IRQ_NONE; > + goto out; > > ioaddr = dev->base_addr; > if (lp->mohawk) { /* must disable the interrupt */ > @@ -1515,6 +1515,7 @@ xirc2ps_interrupt(int irq, void *dev_id, > * force an interrupt with this command: > * PutByte(XIRCREG_CR, EnableIntr|ForceIntr); > */ > + out: > return IRQ_RETVAL(handled); > } /* xirc2ps_interrupt */ If this patch works, it's mainly a signal to dig deeper. If netif_device_present() returns false, we think the hardware has disappeared. So that implies a bug in calling netif_device_detach() no a bug in the irq handler return value. This is _especially_ true for pcmcia, even more than pci. PCI ejects (including cardbus) are electrically safe, whereas pcmcia is different. If pcmcia hardware disappears on you, you _really_ don't want to be bitbanging its ports. Jeff ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [bug 2.5.69] xirc2ps_cs, irq 3: nobody cared, shutdown hangs 2003-05-11 17:24 ` Jeff Garzik @ 2003-05-11 17:20 ` Alan Cox 2003-05-11 22:08 ` David Woodhouse 2003-05-11 17:31 ` Zwane Mwaikambo 1 sibling, 1 reply; 10+ messages in thread From: Alan Cox @ 2003-05-11 17:20 UTC (permalink / raw) To: Jeff Garzik Cc: Zwane Mwaikambo, Daniel Ritz, Linux Kernel Mailing List, Andrew Morton On Sul, 2003-05-11 at 18:24, Jeff Garzik wrote: > If netif_device_present() returns false, we think the hardware has > disappeared. So that implies a bug in calling netif_device_detach() no > a bug in the irq handler return value. Not really. The IRQ can be outstanding from the hardware unplug, especially on PCMCIA. Its an edge triggered IRQ so the unplug is very likely to latch an IRQ for delivery as the connector unplugs. > If pcmcia hardware disappears on you, you _really_ don't want to be > bitbanging its ports. Its quite safe to do so. What we must do is ensure we don't reallocate the ports until they are truely freed. The current PCMCIA seems to get that right, (the current PCI locking for cardbus and hotplug is still terminally broken of course) Alan ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [bug 2.5.69] xirc2ps_cs, irq 3: nobody cared, shutdown hangs 2003-05-11 17:20 ` Alan Cox @ 2003-05-11 22:08 ` David Woodhouse 2003-05-11 21:40 ` Alan Cox 0 siblings, 1 reply; 10+ messages in thread From: David Woodhouse @ 2003-05-11 22:08 UTC (permalink / raw) To: Alan Cox Cc: Jeff Garzik, Zwane Mwaikambo, Daniel Ritz, Linux Kernel Mailing List, Andrew Morton On Sun, 2003-05-11 at 18:20, Alan Cox wrote: > On Sul, 2003-05-11 at 18:24, Jeff Garzik wrote: > > If pcmcia hardware disappears on you, you _really_ don't want to be > > bitbanging its ports. PCMCIA has varying pin length for the CD pins and hence gives you a few milliseconds of warning before the card is _actually_ disconnected. After that period of time has elapsed and the card is actually gone, you _really_ don't want to be bitbanging its ports. > Its quite safe to do so. Not on all platforms. -- dwmw2 ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [bug 2.5.69] xirc2ps_cs, irq 3: nobody cared, shutdown hangs 2003-05-11 22:08 ` David Woodhouse @ 2003-05-11 21:40 ` Alan Cox 2003-05-11 22:55 ` David Woodhouse 0 siblings, 1 reply; 10+ messages in thread From: Alan Cox @ 2003-05-11 21:40 UTC (permalink / raw) To: David Woodhouse Cc: Jeff Garzik, Zwane Mwaikambo, Daniel Ritz, Linux Kernel Mailing List, Andrew Morton On Sul, 2003-05-11 at 23:08, David Woodhouse wrote: > PCMCIA has varying pin length for the CD pins and hence gives you a few > milliseconds of warning before the card is _actually_ disconnected. Which is less than the worst case IRQ response time (or indeed on some PCs the worst case CPU hold off time for the PCI bus) > After that period of time has elapsed and the card is actually gone, you > _really_ don't want to be bitbanging its ports. > > > Its quite safe to do so. > > Not on all platforms. On all that matters it is safe, the others are unfixable anyway ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [bug 2.5.69] xirc2ps_cs, irq 3: nobody cared, shutdown hangs 2003-05-11 21:40 ` Alan Cox @ 2003-05-11 22:55 ` David Woodhouse 0 siblings, 0 replies; 10+ messages in thread From: David Woodhouse @ 2003-05-11 22:55 UTC (permalink / raw) To: Alan Cox Cc: Jeff Garzik, Zwane Mwaikambo, Daniel Ritz, Linux Kernel Mailing List, Andrew Morton On Sun, 2003-05-11 at 22:40, Alan Cox wrote: > On Sul, 2003-05-11 at 23:08, David Woodhouse wrote: > > PCMCIA has varying pin length for the CD pins and hence gives you a few > > milliseconds of warning before the card is _actually_ disconnected. > > Which is less than the worst case IRQ response time (or indeed on some > PCs the worst case CPU hold off time for the PCI bus) On some hardware. > > After that period of time has elapsed and the card is actually gone, you > > _really_ don't want to be bitbanging its ports. > > > > > Its quite safe to do so. > > > > Not on all platforms. > > On all that matters it is safe, the others are unfixable anyway Said 'others' will tend to give you better worst-case IRQ latency than a PeeCee with broken PCI host bridge and IDE controllers :) And even if that weren't the case, you appear to be asserting that because a problem may still be triggerable in a worst-case scenario with certain hardware configurations, we shouldn't attempt to fix it at all. With that I disagree. -- dwmw2 ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [bug 2.5.69] xirc2ps_cs, irq 3: nobody cared, shutdown hangs 2003-05-11 17:24 ` Jeff Garzik 2003-05-11 17:20 ` Alan Cox @ 2003-05-11 17:31 ` Zwane Mwaikambo 1 sibling, 0 replies; 10+ messages in thread From: Zwane Mwaikambo @ 2003-05-11 17:31 UTC (permalink / raw) To: Jeff Garzik; +Cc: Daniel Ritz, linux-kernel, Andrew Morton On Sun, 11 May 2003, Jeff Garzik wrote: > If this patch works, it's mainly a signal to dig deeper. > > If netif_device_present() returns false, we think the hardware has > disappeared. So that implies a bug in calling netif_device_detach() no > a bug in the irq handler return value. > > This is _especially_ true for pcmcia, even more than pci. PCI ejects > (including cardbus) are electrically safe, whereas pcmcia is different. > If pcmcia hardware disappears on you, you _really_ don't want to be > bitbanging its ports. Could possibly be a problem in CardServices, it appears to defer free'ing interrupts. -- function.linuxpower.ca ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [bug 2.5.69] xirc2ps_cs, irq 3: nobody cared, shutdown hangs 2003-05-11 16:13 ` Zwane Mwaikambo 2003-05-11 17:24 ` Jeff Garzik @ 2003-05-12 19:59 ` Daniel Ritz 2003-05-13 7:43 ` Zwane Mwaikambo 1 sibling, 1 reply; 10+ messages in thread From: Daniel Ritz @ 2003-05-12 19:59 UTC (permalink / raw) To: Zwane Mwaikambo; +Cc: linux-kernel, Andrew Morton, Jeff Garzik On Sunday 11 May 2003 18:13, Zwane Mwaikambo wrote: > On Sun, 11 May 2003, Daniel Ritz wrote: > > hi > > > > i see that one on shutdown with a xircom ce3 10/100 16bit pcmcia network > > card, driver xirc2ps_cs. the netdevice also never gets free, so the > > shutdown never finishs. 2.5.68 also doesn't work, 2.5.67 does work. > > Interesting, eject with one of my PCMCIA (smc91c92) network cards also > triggers an unhandled interrupt. I think the IRQ_NONE is incorrect here as > the device really may have an interrupt to service. > ok, i tried that one, but no luck. still nobody cares. so it's that one: if (int_status == 0xff) { /* card may be ejected */ DEBUG(3, "%s: interrupt %d for dead card\n", dev->name, irq); handled = 0; goto leave; } but it's not ejected, only a modpobe -r... > Index: linux-2.5-cvs/drivers/net/pcmcia/xirc2ps_cs.c > =================================================================== > RCS file: /home/cvs/linux-2.5/drivers/net/pcmcia/xirc2ps_cs.c,v > retrieving revision 1.19 > diff -u -p -B -r1.19 xirc2ps_cs.c > --- linux-2.5-cvs/drivers/net/pcmcia/xirc2ps_cs.c 8 May 2003 05:16:27 > -0000 1.19 +++ linux-2.5-cvs/drivers/net/pcmcia/xirc2ps_cs.c 11 May 2003 > 15:20:03 -0000 @@ -1312,7 +1312,7 @@ xirc2ps_interrupt(int irq, void > *dev_id, > */ > > if (!netif_device_present(dev)) > - return IRQ_NONE; > + goto out; > > ioaddr = dev->base_addr; > if (lp->mohawk) { /* must disable the interrupt */ > @@ -1515,6 +1515,7 @@ xirc2ps_interrupt(int irq, void *dev_id, > * force an interrupt with this command: > * PutByte(XIRCREG_CR, EnableIntr|ForceIntr); > */ > + out: > return IRQ_RETVAL(handled); > } /* xirc2ps_interrupt */ > > > unregister_netdevice: waiting for eth0 to become free. Usage count = 2 > > unregister_netdevice: waiting for eth0 to become free. Usage count = 2 > > unregister_netdevice: waiting for eth0 to become free. Usage count = 2 > > unregister_netdevice: waiting for eth0 to become free. Usage count = 2 > > I can reproduce this, i'll have a look. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [bug 2.5.69] xirc2ps_cs, irq 3: nobody cared, shutdown hangs 2003-05-12 19:59 ` Daniel Ritz @ 2003-05-13 7:43 ` Zwane Mwaikambo 0 siblings, 0 replies; 10+ messages in thread From: Zwane Mwaikambo @ 2003-05-13 7:43 UTC (permalink / raw) To: Daniel Ritz; +Cc: linux-kernel, Andrew Morton, Jeff Garzik On Mon, 12 May 2003, Daniel Ritz wrote: > ok, i tried that one, but no luck. still nobody cares. so it's that one: > if (int_status == 0xff) { /* card may be ejected */ > DEBUG(3, "%s: interrupt %d for dead card\n", dev->name, irq); > handled = 0; > goto leave; > } > > but it's not ejected, only a modpobe -r... We shutdown the device so a lot of things aren't defined at this stage. Lets make that handled = 1, we're bound to have 1 or 2 of these interrupts creeping in. Index: linux-2.5-cvs/drivers/net/pcmcia/xirc2ps_cs.c =================================================================== RCS file: /home/cvs/linux-2.5/drivers/net/pcmcia/xirc2ps_cs.c,v retrieving revision 1.19 diff -u -p -B -r1.19 xirc2ps_cs.c --- linux-2.5-cvs/drivers/net/pcmcia/xirc2ps_cs.c 8 May 2003 05:16:27 -0000 1.19 +++ linux-2.5-cvs/drivers/net/pcmcia/xirc2ps_cs.c 13 May 2003 06:50:22 -0000 @@ -1312,7 +1312,7 @@ xirc2ps_interrupt(int irq, void *dev_id, */ if (!netif_device_present(dev)) - return IRQ_NONE; + return IRQ_HANDLED; ioaddr = dev->base_addr; if (lp->mohawk) { /* must disable the interrupt */ @@ -1330,7 +1330,6 @@ xirc2ps_interrupt(int irq, void *dev_id, loop_entry: if (int_status == 0xff) { /* card may be ejected */ DEBUG(3, "%s: interrupt %d for dead card\n", dev->name, irq); - handled = 0; goto leave; } eth_status = GetByte(XIRCREG_ESR); -- function.linuxpower.ca ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2003-05-13 7:39 UTC | newest] Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2003-05-11 14:47 [bug 2.5.69] xirc2ps_cs, irq 3: nobody cared, shutdown hangs Daniel Ritz 2003-05-11 16:13 ` Zwane Mwaikambo 2003-05-11 17:24 ` Jeff Garzik 2003-05-11 17:20 ` Alan Cox 2003-05-11 22:08 ` David Woodhouse 2003-05-11 21:40 ` Alan Cox 2003-05-11 22:55 ` David Woodhouse 2003-05-11 17:31 ` Zwane Mwaikambo 2003-05-12 19:59 ` Daniel Ritz 2003-05-13 7:43 ` Zwane Mwaikambo
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).