Page MenuHomeFreeBSD

D28111.diff
No OneTemporary

D28111.diff

diff --git a/sys/amd64/amd64/mp_machdep.c b/sys/amd64/amd64/mp_machdep.c
--- a/sys/amd64/amd64/mp_machdep.c
+++ b/sys/amd64/amd64/mp_machdep.c
@@ -660,6 +660,7 @@
cpuset_t other_cpus, mask1;
uint32_t generation, *p_cpudone;
int cpu;
+ bool is_all;
/*
* It is not necessary to signal other CPUs while booting or
@@ -673,14 +674,10 @@
/*
* Check for other cpus. Return if none.
*/
- if (!CPU_CMP(&mask, &all_cpus)) {
- if (mp_ncpus <= 1)
- goto local_cb;
- } else {
- CPU_CLR(PCPU_GET(cpuid), &mask);
- if (CPU_EMPTY(&mask))
- goto local_cb;
- }
+ is_all = !CPU_CMP(&mask, &all_cpus);
+ CPU_CLR(PCPU_GET(cpuid), &mask);
+ if (CPU_EMPTY(&mask))
+ goto local_cb;
/*
* Initiator must have interrupts enabled, which prevents
@@ -719,7 +716,7 @@
* (zeroing slot) and reading from it below (wait for
* acknowledgment).
*/
- if (!CPU_CMP(&mask, &all_cpus)) {
+ if (is_all) {
ipi_all_but_self(IPI_INVLOP);
other_cpus = all_cpus;
CPU_CLR(PCPU_GET(cpuid), &other_cpus);

File Metadata

Mime Type
text/plain
Expires
Thu, Sep 26, 5:16 AM (21 h, 48 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
12812058
Default Alt Text
D28111.diff (1014 B)

Event Timeline