usbehci: remove panic() calls from interrupts if stuff isnt ready (spurious interrupts?)

This commit is contained in:
cinap_lenrek 2013-01-31 23:43:04 +01:00
parent a2b83a5aea
commit 5a93a2a983

View file

@ -1338,8 +1338,7 @@ isohsinterrupt(Ctlr *ctlr, Isoio *iso)
Itd *tdi; Itd *tdi;
tdi = iso->tdi; tdi = iso->tdi;
assert(tdi != nil); if(tdi == nil || itdactive(tdi)) /* not all tds are done */
if(itdactive(tdi)) /* not all tds are done */
return 0; return 0;
ctlr->nisointr++; ctlr->nisointr++;
ddiprint("isohsintr: iso %#p: tdi %#p tdu %#p\n", iso, tdi, iso->tdu); ddiprint("isohsintr: iso %#p: tdi %#p tdu %#p\n", iso, tdi, iso->tdu);
@ -1409,8 +1408,7 @@ isofsinterrupt(Ctlr *ctlr, Isoio *iso)
Sitd *stdi; Sitd *stdi;
stdi = iso->stdi; stdi = iso->stdi;
assert(stdi != nil); if(stdi == nil || (stdi->csw & Stdactive) != 0) /* nothing new done */
if((stdi->csw & Stdactive) != 0) /* nothing new done */
return 0; return 0;
ctlr->nisointr++; ctlr->nisointr++;
ddiprint("isofsintr: iso %#p: tdi %#p tdu %#p\n", iso, stdi, iso->stdu); ddiprint("isofsintr: iso %#p: tdi %#p tdu %#p\n", iso, stdi, iso->stdu);
@ -1479,7 +1477,7 @@ qhinterrupt(Ctlr *ctlr, Qh *qh)
panic("qhinterrupt: qh state"); panic("qhinterrupt: qh state");
td = qh->tds; td = qh->tds;
if(td == nil) if(td == nil)
panic("qhinterrupt: no tds"); return 0;
if((td->csw & Tdactive) == 0) if((td->csw & Tdactive) == 0)
ddqprint("qhinterrupt port %#p qh %#p\n", ctlr->capio, qh); ddqprint("qhinterrupt port %#p qh %#p\n", ctlr->capio, qh);
for(; td != nil; td = td->next){ for(; td != nil; td = td->next){
@ -1583,8 +1581,8 @@ ehciintr(Hci *hp)
qh = ctlr->qhs; qh = ctlr->qhs;
i = 0; i = 0;
do{ do{
if (qh == nil) if(qh == nil)
panic("ehciintr: nil qh"); break;
if(qh->state == Qrun) if(qh->state == Qrun)
some += qhinterrupt(ctlr, qh); some += qhinterrupt(ctlr, qh);
qh = qh->next; qh = qh->next;
@ -1592,8 +1590,6 @@ ehciintr(Hci *hp)
if(i > 100) if(i > 100)
print("echi: interrupt: qh loop?\n"); print("echi: interrupt: qh loop?\n");
} }
// if (some == 0)
// panic("ehciintr: no work");
iunlock(ctlr); iunlock(ctlr);
return some; return some;
} }