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:
parent
e90cb846c6
commit
a3f3e57534
@ -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.
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user