2f32a971b7
When sending an IPI, if a previous IPI is still pending delivery, native_lapic_ipi_vectored() waits for the previous IPI to be sent. We've seen a few inexplicable panics with the current timeout of 50 ms. Increase the timeout to 1 second and make it tunable. No hardware specification mentions a timeout in this case; I checked the Intel SDM, Intel MP spec, and Intel x2APIC spec. Linux and illumos wait forever. In Linux, see __default_send_IPI_shortcut() in arch/x86/kernel/apic/ipi.c. In illumos, see apic_send_ipi() in usr/src/uts/i86pc/io/pcplusmp/apic_common.c. However, misbehaving hardware could hang the system if we wait forever. Reviewed by: mav kib MFC after: 1 week Sponsored by: Dell EMC Isilon Differential Revision: https://reviews.freebsd.org/D29942 |
||
---|---|---|
.. | ||
autoconf.c | ||
bus_machdep.c | ||
busdma_bounce.c | ||
busdma_machdep.c | ||
cpu_machdep.c | ||
dbreg.c | ||
delay.c | ||
dump_machdep.c | ||
fdt_machdep.c | ||
identcpu.c | ||
intr_machdep.c | ||
io_apic.c | ||
legacy.c | ||
local_apic.c | ||
mca.c | ||
mp_watchdog.c | ||
mp_x86.c | ||
mptable_pci.c | ||
mptable.c | ||
msi.c | ||
nexus.c | ||
pvclock.c | ||
stack_machdep.c | ||
tsc.c | ||
ucode.c | ||
x86_mem.c |