- 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:
Jeff Roberson 2004-02-02 09:50:43 +00:00
parent 02ec600572
commit fe5efaede8
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=125317

View File

@ -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);