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:
Marius Strobl 2006-09-03 21:20:21 +00:00
parent 405a44d326
commit 7d7ce7f24e

View File

@ -456,6 +456,12 @@ cpu_ipi_send(u_int mid, u_long d0, u_long d1, u_long d2)
intr_restore(s);
if ((ids & IDR_NACK) == 0)
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 (
#ifdef KDB