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:
parent
829024ef22
commit
a1f7e1b4c5
@ -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) {
|
||||
|
Loading…
Reference in New Issue
Block a user