Skip to content

Commit 735b2ac

Browse files
authored
Rollback Ignore disabled hyperthreads (#340)
Fixes #339
1 parent 9a05d39 commit 735b2ac

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

src/x86/linux/init.c

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ static void cpuinfo_x86_count_objects(
4747
uint32_t linux_processors_count,
4848
const struct cpuinfo_x86_linux_processor linux_processors[restrict static linux_processors_count],
4949
const struct cpuinfo_x86_processor processor[restrict static 1],
50+
uint32_t valid_processor_mask,
5051
uint32_t llc_apic_bits,
5152
uint32_t cores_count_ptr[restrict static 1],
5253
uint32_t clusters_count_ptr[restrict static 1],
@@ -69,7 +70,7 @@ static void cpuinfo_x86_count_objects(
6970
uint32_t last_l1i_id = UINT32_MAX, last_l1d_id = UINT32_MAX;
7071
uint32_t last_l2_id = UINT32_MAX, last_l3_id = UINT32_MAX, last_l4_id = UINT32_MAX;
7172
for (uint32_t i = 0; i < linux_processors_count; i++) {
72-
if (bitmask_all(linux_processors[i].flags, CPUINFO_LINUX_FLAG_VALID)) {
73+
if (bitmask_all(linux_processors[i].flags, valid_processor_mask)) {
7374
const uint32_t apic_id = linux_processors[i].apic_id;
7475
cpuinfo_log_debug(
7576
"APID ID %" PRIu32 ": system processor %" PRIu32,
@@ -166,13 +167,13 @@ void cpuinfo_x86_linux_init(void) {
166167
const uint32_t max_present_processors_count = 1 + cpuinfo_linux_get_max_present_processor(max_processors_count);
167168
cpuinfo_log_debug("maximum present processors count: %" PRIu32, max_present_processors_count);
168169

169-
uint32_t valid_processor_mask = CPUINFO_LINUX_FLAG_APIC_ID;
170+
uint32_t valid_processor_mask = 0;
170171
uint32_t x86_linux_processors_count = max_processors_count;
171172
if (max_present_processors_count != 0) {
172173
x86_linux_processors_count = min(x86_linux_processors_count, max_present_processors_count);
173-
valid_processor_mask |= CPUINFO_LINUX_FLAG_PRESENT;
174+
valid_processor_mask = CPUINFO_LINUX_FLAG_PRESENT;
174175
} else {
175-
valid_processor_mask |= CPUINFO_LINUX_FLAG_PROC_CPUINFO;
176+
valid_processor_mask = CPUINFO_LINUX_FLAG_PROC_CPUINFO;
176177
}
177178
if (max_possible_processors_count != 0) {
178179
x86_linux_processors_count = min(x86_linux_processors_count, max_possible_processors_count);
@@ -259,6 +260,7 @@ void cpuinfo_x86_linux_init(void) {
259260
x86_linux_processors_count,
260261
x86_linux_processors,
261262
&x86_processor,
263+
valid_processor_mask,
262264
llc_apic_bits,
263265
&cores_count,
264266
&clusters_count,

0 commit comments

Comments
 (0)