From 4a0d6dfd2cffd0c806af38ee593ab1bb6ef88d4f Mon Sep 17 00:00:00 2001 From: Alan Cox Date: Thu, 15 May 2003 05:12:24 +0000 Subject: [PATCH] Initialize logical_cpus_mask when the logical CPUs are enumerated in the mptable. (Previously, logical_cpus_mask was only initialized if the hyperthreading fixup was executed.) Approved by: re (jhb) Reviewed by: ps --- sys/amd64/amd64/mp_machdep.c | 7 +++++-- sys/amd64/amd64/mptable.c | 7 +++++-- sys/amd64/include/mptable.h | 7 +++++-- sys/i386/i386/mp_machdep.c | 7 +++++-- sys/i386/i386/mptable.c | 7 +++++-- sys/i386/include/mptable.h | 7 +++++-- 6 files changed, 30 insertions(+), 12 deletions(-) diff --git a/sys/amd64/amd64/mp_machdep.c b/sys/amd64/amd64/mp_machdep.c index 4cc8bf54579..d630bd583aa 100644 --- a/sys/amd64/amd64/mp_machdep.c +++ b/sys/amd64/amd64/mp_machdep.c @@ -999,9 +999,12 @@ mptable_pass2(void) while (count--) { switch (type = *(u_char *) position) { case 0: - if (processor_entry(position, cpu)) + if (processor_entry(position, cpu)) { + if (logical_cpus != 0 && + cpu % logical_cpus != 0) + logical_cpus_mask |= (1 << cpu); ++cpu; - + } if (need_hyperthreading_fixup) { /* * Create fake mptable processor entries diff --git a/sys/amd64/amd64/mptable.c b/sys/amd64/amd64/mptable.c index 4cc8bf54579..d630bd583aa 100644 --- a/sys/amd64/amd64/mptable.c +++ b/sys/amd64/amd64/mptable.c @@ -999,9 +999,12 @@ mptable_pass2(void) while (count--) { switch (type = *(u_char *) position) { case 0: - if (processor_entry(position, cpu)) + if (processor_entry(position, cpu)) { + if (logical_cpus != 0 && + cpu % logical_cpus != 0) + logical_cpus_mask |= (1 << cpu); ++cpu; - + } if (need_hyperthreading_fixup) { /* * Create fake mptable processor entries diff --git a/sys/amd64/include/mptable.h b/sys/amd64/include/mptable.h index 4cc8bf54579..d630bd583aa 100644 --- a/sys/amd64/include/mptable.h +++ b/sys/amd64/include/mptable.h @@ -999,9 +999,12 @@ mptable_pass2(void) while (count--) { switch (type = *(u_char *) position) { case 0: - if (processor_entry(position, cpu)) + if (processor_entry(position, cpu)) { + if (logical_cpus != 0 && + cpu % logical_cpus != 0) + logical_cpus_mask |= (1 << cpu); ++cpu; - + } if (need_hyperthreading_fixup) { /* * Create fake mptable processor entries diff --git a/sys/i386/i386/mp_machdep.c b/sys/i386/i386/mp_machdep.c index 4cc8bf54579..d630bd583aa 100644 --- a/sys/i386/i386/mp_machdep.c +++ b/sys/i386/i386/mp_machdep.c @@ -999,9 +999,12 @@ mptable_pass2(void) while (count--) { switch (type = *(u_char *) position) { case 0: - if (processor_entry(position, cpu)) + if (processor_entry(position, cpu)) { + if (logical_cpus != 0 && + cpu % logical_cpus != 0) + logical_cpus_mask |= (1 << cpu); ++cpu; - + } if (need_hyperthreading_fixup) { /* * Create fake mptable processor entries diff --git a/sys/i386/i386/mptable.c b/sys/i386/i386/mptable.c index 4cc8bf54579..d630bd583aa 100644 --- a/sys/i386/i386/mptable.c +++ b/sys/i386/i386/mptable.c @@ -999,9 +999,12 @@ mptable_pass2(void) while (count--) { switch (type = *(u_char *) position) { case 0: - if (processor_entry(position, cpu)) + if (processor_entry(position, cpu)) { + if (logical_cpus != 0 && + cpu % logical_cpus != 0) + logical_cpus_mask |= (1 << cpu); ++cpu; - + } if (need_hyperthreading_fixup) { /* * Create fake mptable processor entries diff --git a/sys/i386/include/mptable.h b/sys/i386/include/mptable.h index 4cc8bf54579..d630bd583aa 100644 --- a/sys/i386/include/mptable.h +++ b/sys/i386/include/mptable.h @@ -999,9 +999,12 @@ mptable_pass2(void) while (count--) { switch (type = *(u_char *) position) { case 0: - if (processor_entry(position, cpu)) + if (processor_entry(position, cpu)) { + if (logical_cpus != 0 && + cpu % logical_cpus != 0) + logical_cpus_mask |= (1 << cpu); ++cpu; - + } if (need_hyperthreading_fixup) { /* * Create fake mptable processor entries