aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Johnston <markj@FreeBSD.org>2025-01-07 17:58:58 +0000
committerMark Johnston <markj@FreeBSD.org>2025-01-07 18:13:54 +0000
commit254a2b767f9a39f1541e0a07a70bbe269e86ad70 (patch)
treefc4e09e1f9e50248058b142cd9ff98e6f24e0e97
parent1832eb102e10c7f2891c032ecf7b265b75d3cd50 (diff)
x86: Short-circuit ipi_all_but_self() on UP systems
Apparently this is required on old intel hw, see https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=275086#c3 PR: 275086 Reviewed by: mav, kib Fixes: 279cd05b7e4d ("Use APIC_IPI_DEST_OTHERS for bitmapped IPIs too.") MFC after: 1 week Diagnosed by: Ben Wilber <ben@desync.com> Differential Revision: https://reviews.freebsd.org/D48361
-rw-r--r--sys/x86/x86/mp_x86.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/sys/x86/x86/mp_x86.c b/sys/x86/x86/mp_x86.c
index 493017e303e3..c0da41a4d222 100644
--- a/sys/x86/x86/mp_x86.c
+++ b/sys/x86/x86/mp_x86.c
@@ -1425,6 +1425,9 @@ ipi_all_but_self(u_int ipi)
cpuset_t other_cpus;
int cpu, c;
+ if (mp_ncpus == 1)
+ return;
+
/*
* IPI_STOP_HARD maps to a NMI and the trap handler needs a bit
* of help in order to understand what is the source.