From 0f807f440100e0de90a03f53e0741d11984eacb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Mon, 16 Sep 2024 16:36:33 +0200 Subject: [PATCH] kernel/x86: dump hwpstate, cpb, proc_feedback features MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I06b6da05013c7271d0a97d5aa3af2b6f416496a9 Reviewed-on: https://review.haiku-os.org/c/haiku/+/8331 Tested-by: Commit checker robot Reviewed-by: Jérôme Duval Reviewed-by: waddlesplash --- headers/private/kernel/arch/x86/arch_cpu.h | 3 +++ src/system/kernel/arch/x86/arch_cpu.cpp | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/headers/private/kernel/arch/x86/arch_cpu.h b/headers/private/kernel/arch/x86/arch_cpu.h index 41781e7e4c..c1b8869005 100644 --- a/headers/private/kernel/arch/x86/arch_cpu.h +++ b/headers/private/kernel/arch/x86/arch_cpu.h @@ -382,7 +382,10 @@ #define IA32_FEATURE_XSAVES (1 << 3) // XSAVES and XRSTORS Instruction // x86 defined features from cpuid eax 0x80000007, edx register +#define IA32_FEATURE_AMD_HW_PSTATE (1 << 7) #define IA32_FEATURE_INVARIANT_TSC (1 << 8) +#define IA32_FEATURE_CPB (1 << 9) +#define IA32_FEATURE_PROC_FEEDBACK (1 << 11) // x86 defined features from cpuid eax 0x80000008, ebx register #define IA32_FEATURE_CLZERO (1 << 0) // CLZERO instruction diff --git a/src/system/kernel/arch/x86/arch_cpu.cpp b/src/system/kernel/arch/x86/arch_cpu.cpp index 455dcb8fa0..3e44407ac1 100644 --- a/src/system/kernel/arch/x86/arch_cpu.cpp +++ b/src/system/kernel/arch/x86/arch_cpu.cpp @@ -656,6 +656,14 @@ dump_feature_string(int currentCPU, cpu_ent* cpu) strlcat(features, "msr_arch ", sizeof(features)); if (cpu->arch.feature[FEATURE_7_EDX] & IA32_FEATURE_SSBD) strlcat(features, "ssbd ", sizeof(features)); + if (cpu->arch.feature[FEATURE_EXT_7_EDX] & IA32_FEATURE_AMD_HW_PSTATE) + strlcat(features, "hwpstate ", sizeof(features)); + if (cpu->arch.feature[FEATURE_EXT_7_EDX] & IA32_FEATURE_INVARIANT_TSC) + strlcat(features, "constant_tsc ", sizeof(features)); + if (cpu->arch.feature[FEATURE_EXT_7_EDX] & IA32_FEATURE_CPB) + strlcat(features, "cpb ", sizeof(features)); + if (cpu->arch.feature[FEATURE_EXT_7_EDX] & IA32_FEATURE_PROC_FEEDBACK) + strlcat(features, "proc_feedback ", sizeof(features)); if (cpu->arch.feature[FEATURE_D_1_EAX] & IA32_FEATURE_XSAVEOPT) strlcat(features, "xsaveopt ", sizeof(features)); if (cpu->arch.feature[FEATURE_D_1_EAX] & IA32_FEATURE_XSAVEC)