Somehow, it is possible to get a pcicintr() when in the resume process.

This will trigger inserted()) to be called twice which confuses pccardd.
Add code to not process pcicitr())'s when in the middle of a resume
process. The real insertion of cards and the emulated one in the suspend/resume
code really do not mix up.
This commit is contained in:
Guido van Rooij 1999-02-14 20:16:15 +00:00
parent 829024ef22
commit a1f7e1b4c5

View File

@ -1104,7 +1104,14 @@ pcicintr(void *unused)
#endif /* PC98 */
s = splhigh();
for (slot = 0; slot < PCIC_MAX_SLOTS; slot++, sp++)
if (sp->slt && (chg = sp->getb(sp, PCIC_STAT_CHG)) != 0)
/*
* don't process this interrupt if we are in suspend
* state; we have different means to (re)initialize the
* slot.
* XXX we shouldn't even get here!?
*/
if (sp->slt && (sp->slt->state != suspend) &&
(chg = sp->getb(sp, PCIC_STAT_CHG)) != 0)
if (chg & PCIC_CDTCH) {
if ((sp->getb(sp, PCIC_STATUS) & PCIC_CD) ==
PCIC_CD) {