Date: Mon, 22 May 2000 14:20:02 -0700 (PDT) From: mike ryan <mike+fbsd@medianstrip.net> To: freebsd-bugs@FreeBSD.org Subject: Re: kern/18756: [PATCH] fxp device causes lockups after suspend/resume Message-ID: <200005222120.OAA98718@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/18756; it has been noted by GNATS. From: mike ryan <mike+fbsd@medianstrip.net> To: David Greenman <dg@root.com> Cc: FreeBSD-gnats-submit@FreeBSD.ORG Subject: Re: kern/18756: [PATCH] fxp device causes lockups after suspend/resume Date: Mon, 22 May 2000 17:14:51 -0400 on May 22, David Greenman <dg@root.com> wrote: > > > >+ /* don't try to service interrupts when the interface isn't running */ > >+ if ((ifp->if_flags & IFF_RUNNING) == 0) { > >+ return; > >+ } > >+ > > while ((statack = CSR_READ_1(sc, FXP_CSR_SCB_STATACK)) != 0) { > > This could be a problem. If an interrupt occurs, it must be acknowledged > otherwise you'll be stuck in an infinit loop - PCI interrupts are level > sensitive and must be cleared in the ISR. the only time i've seen that return executed is when the interrupt was for another device sharing the same IRQ that happened to have been resumed first -- in my case, an onboard uhci usb controller. without the check above, i do get resume lockups in fxp_intr. i've just been assuming that an fxp can't generate a interrupt unless it's running. if that's not correct, would it be better to have a "device suspended" flag in fxp_softc and replace the statement above to execute the necessary resume code if the device is still suspended? To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200005222120.OAA98718>