- Make sure the apic is idle before sending an IPI. This is required on
non-X-APIC machines. Previously this was only done in the DETECT_DEADLOCK case when really it is needed in all cases. Reminded by: jhb
This commit is contained in:
parent
02ec600572
commit
fe5efaede8
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=125317
@ -691,8 +691,8 @@ lapic_ipi_raw(register_t icrlo, u_int dest)
|
||||
intr_restore(eflags);
|
||||
}
|
||||
|
||||
#ifdef DETECT_DEADLOCK
|
||||
#define BEFORE_SPIN 1000000
|
||||
#ifdef DETECT_DEADLOCK
|
||||
#define AFTER_SPIN 1000
|
||||
#endif
|
||||
|
||||
@ -723,11 +723,9 @@ lapic_ipi_vectored(u_int vector, int dest)
|
||||
destfield = dest;
|
||||
}
|
||||
|
||||
#ifdef DETECT_DEADLOCK
|
||||
/* Check for an earlier stuck IPI. */
|
||||
/* Wait for an earlier IPI to finish. */
|
||||
if (!lapic_ipi_wait(BEFORE_SPIN))
|
||||
panic("APIC: Previous IPI is stuck");
|
||||
#endif
|
||||
|
||||
lapic_ipi_raw(icrlo, destfield);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user