From ef611e96c45da13fe8d222b74279172a230d80b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Thu, 10 Aug 2023 18:00:11 +0200 Subject: [PATCH] kernel/x86: also write the cpu number when the rdpid instruction is available Change-Id: I5b37fe8aff9b4cf12fbd4dd60a91eb09f11f4e2b Reviewed-on: https://review.haiku-os.org/c/haiku/+/6807 Reviewed-by: waddlesplash --- src/system/kernel/arch/x86/arch_cpu.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/system/kernel/arch/x86/arch_cpu.cpp b/src/system/kernel/arch/x86/arch_cpu.cpp index 2847da7838..60ede300f0 100644 --- a/src/system/kernel/arch/x86/arch_cpu.cpp +++ b/src/system/kernel/arch/x86/arch_cpu.cpp @@ -1693,9 +1693,11 @@ arch_cpu_init_percpu(kernel_args* args, int cpu) x86_write_cr4(x86_read_cr4() | IA32_CR4_MCE); #ifdef __x86_64__ - // if RDTSCP is available write cpu number in TSC_AUX - if (x86_check_feature(IA32_FEATURE_AMD_EXT_RDTSCP, FEATURE_EXT_AMD)) + // if RDTSCP or RDPID are available write cpu number in TSC_AUX + if (x86_check_feature(IA32_FEATURE_AMD_EXT_RDTSCP, FEATURE_EXT_AMD) + || x86_check_feature(IA32_FEATURE_RDPID, FEATURE_7_ECX)) { x86_write_msr(IA32_MSR_TSC_AUX, cpu); + } // make LFENCE a dispatch serializing instruction on AMD 64bit cpu_ent* cpuEnt = get_cpu_struct();