mirror of
https://git.FreeBSD.org/src.git
synced 2025-01-03 12:35:02 +00:00
On slow machines interrupts could be lost, so check for pending
interrupts in a loop. Tested by: Andrew Gordon <arg-bsd@arg1.demon.co.uk>
This commit is contained in:
parent
dcd88dc271
commit
bb83e7583e
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=95308
@ -974,18 +974,25 @@ avma1pp2_intr(void *xsc)
|
||||
/* was there an interrupt from this card ? */
|
||||
if ((stat & ASL_IRQ_Pending) == 0)
|
||||
return; /* no */
|
||||
/* interrupts are high active */
|
||||
if (stat & ASL_IRQ_TIMER)
|
||||
NDBGL1(L1_H_IRQ, "timer interrupt ???");
|
||||
if (stat & ASL_IRQ_HSCX)
|
||||
/* For slow machines loop as long as an interrupt is active */
|
||||
for (; ((stat & ASL_IRQ_Pending) != 0) ;)
|
||||
{
|
||||
NDBGL1(L1_H_IRQ, "HSCX");
|
||||
avma1pp2_hscx_int_handler(sc);
|
||||
}
|
||||
if (stat & ASL_IRQ_ISAC)
|
||||
{
|
||||
NDBGL1(L1_H_IRQ, "ISAC");
|
||||
ifpi2_isacsx_intr(sc);
|
||||
/* interrupts are high active */
|
||||
if (stat & ASL_IRQ_TIMER)
|
||||
NDBGL1(L1_H_IRQ, "timer interrupt ???");
|
||||
if (stat & ASL_IRQ_HSCX)
|
||||
{
|
||||
NDBGL1(L1_H_IRQ, "HSCX");
|
||||
avma1pp2_hscx_int_handler(sc);
|
||||
}
|
||||
if (stat & ASL_IRQ_ISAC)
|
||||
{
|
||||
NDBGL1(L1_H_IRQ, "ISAC");
|
||||
ifpi2_isacsx_intr(sc);
|
||||
}
|
||||
stat = bus_space_read_1(btag, bhandle, STAT0_OFFSET);
|
||||
NDBGL1(L1_H_IRQ, "stat %x", stat);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user