While in the interrupt loop, check for a bogus interrupt value of 0xff.

This may be returned if the underlying hardware is a pc-card which has
been ejected.

Reviewed by: warner
This commit is contained in:
Jonathan Lemon 2001-06-04 22:01:44 +00:00
parent d316920f0c
commit 11457bbf08
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=77731

View File

@ -1010,6 +1010,15 @@ fxp_intr(void *xsc)
}
while ((statack = CSR_READ_1(sc, FXP_CSR_SCB_STATACK)) != 0) {
/*
* It should not be possible to have all bits set; the
* FXP_SCB_INTR_SWI bit always returns 0 on a read. If
* all bits are set, this may indicate that the card has
* been physically ejected, so ignore it.
*/
if (statack == 0xff)
return;
/*
* First ACK all the interrupts in this pass.
*/