Do as the USII CPU manual suggests and leave interrupts enabled
for a bit before retrying to resend an IPI in order to avoid deadlocks if the other CPU is also trying to send one. OpenSolaris uses a delay of 1 microsecond here but waiting 2 microseconds with interrupts enabled like Linux does shouldn't hurt but is a bit safer. MFC after: 1 day
This commit is contained in:
parent
405a44d326
commit
7d7ce7f24e
@ -456,6 +456,12 @@ cpu_ipi_send(u_int mid, u_long d0, u_long d1, u_long d2)
|
|||||||
intr_restore(s);
|
intr_restore(s);
|
||||||
if ((ids & IDR_NACK) == 0)
|
if ((ids & IDR_NACK) == 0)
|
||||||
return;
|
return;
|
||||||
|
/*
|
||||||
|
* Leave interrupts enabled for a bit before retrying
|
||||||
|
* in order to avoid deadlocks if the other CPU is also
|
||||||
|
* trying to send an IPI.
|
||||||
|
*/
|
||||||
|
DELAY(2);
|
||||||
}
|
}
|
||||||
if (
|
if (
|
||||||
#ifdef KDB
|
#ifdef KDB
|
||||||
|
Loading…
x
Reference in New Issue
Block a user