git: 40c01de13562 - stable/13 - x86: Short-circuit ipi_all_but_self() on UP systems
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 14 Jan 2025 14:43:47 UTC
The branch stable/13 has been updated by markj:
URL: https://cgit.FreeBSD.org/src/commit/?id=40c01de1356224a82fec217bd3cd59dd058ef095
commit 40c01de1356224a82fec217bd3cd59dd058ef095
Author: Mark Johnston <markj@FreeBSD.org>
AuthorDate: 2025-01-07 17:58:58 +0000
Commit: Mark Johnston <markj@FreeBSD.org>
CommitDate: 2025-01-14 14:14:45 +0000
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
(cherry picked from commit 254a2b767f9a39f1541e0a07a70bbe269e86ad70)
---
sys/x86/x86/mp_x86.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/sys/x86/x86/mp_x86.c b/sys/x86/x86/mp_x86.c
index 56cf7e426076..771cf95f36b4 100644
--- a/sys/x86/x86/mp_x86.c
+++ b/sys/x86/x86/mp_x86.c
@@ -1424,6 +1424,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.