From: Prarit Bhargava <prarit@xxxxxxxxxx> arch/x86: mark x86_64-v1 and x86_64-v2 processors as deprecated Upstream Status: RHEL only The x86 industry has defined microarchitecture levels x86_64-v1 and x86_64-v2 as defined here: https://en.wikipedia.org/wiki/X86-64#Microarchitecture_levels RHEL9 has a minimum of the x86_64-v2 microarchitecture and RHEL10 has a minimum of the x86_64-v3 microarchitecture. Mark x86_64-v1 and x86_64-v2 processors as deprecated. Signed-off-by: Prarit Bhargava <prarit@xxxxxxxxxx> diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c index blahblah..blahblah 100644 --- a/arch/x86/kernel/setup.c +++ b/arch/x86/kernel/setup.c @@ -708,6 +708,36 @@ static void rh_check_supported(void) */ if (acpi_disabled && !guest) pr_crit("ACPI has been disabled or is not available on this hardware. This may result in a single cpu boot, incorrect PCI IRQ routing, or boot failure.\n"); + + /* + * x86_64 microarchitecture levels: + * https://en.wikipedia.org/wiki/X86-64#Microarchitecture_levels + * + * RHEL9 has a minimum of the x86_64-v2 microarchitecture + * RHEL10 has a minimum of the x86_64-v3 microarchitecture + */ + + if (!boot_cpu_has(X86_FEATURE_CX16) || /* CMPXCHG16B */ + !boot_cpu_has(X86_FEATURE_LAHF_LM) || /* LAHF-SAHF */ + !boot_cpu_has(X86_FEATURE_POPCNT) || + !boot_cpu_has(X86_FEATURE_XMM3) || /* SSE-3 */ + !boot_cpu_has(X86_FEATURE_XMM4_1) || /* SSE4_1 */ + !boot_cpu_has(X86_FEATURE_XMM4_2) || /* SSE4_2 */ + !boot_cpu_has(X86_FEATURE_SSSE3)) { + mark_hardware_deprecated("x86_64-v1", "%s:%s", + boot_cpu_data.x86_vendor_id, boot_cpu_data.x86_model_id); + } else if (!boot_cpu_has(X86_FEATURE_AVX) || + !boot_cpu_has(X86_FEATURE_AVX2) || + !boot_cpu_has(X86_FEATURE_BMI1) || + !boot_cpu_has(X86_FEATURE_BMI2) || + !boot_cpu_has(X86_FEATURE_F16C) || + !boot_cpu_has(X86_FEATURE_FMA) || + /* LZCNT is not explicitly listed, but appears to be paired with BMI2 */ + !boot_cpu_has(X86_FEATURE_MOVBE) || + !boot_cpu_has(X86_FEATURE_OSXSAVE)) { + mark_hardware_deprecated("x86_64-v2", "%s:%s", + boot_cpu_data.x86_vendor_id, boot_cpu_data.x86_model_id); + } } #else #define rh_check_supported() diff --git a/include/linux/kernel.h b/include/linux/kernel.h index blahblah..blahblah 100644 --- a/include/linux/kernel.h +++ b/include/linux/kernel.h @@ -446,11 +446,13 @@ struct module; #ifdef CONFIG_RHEL_DIFFERENCES void mark_hardware_unmaintained(const char *driver_name, char *fmt, ...); +void mark_hardware_deprecated(const char *driver_name, char *fmt, ...); void mark_tech_preview(const char *msg, struct module *mod); void mark_partner_supported(const char *msg, struct module *mod); void init_rh_check_status(char *fn_name); #else static inline void mark_hardware_unmaintained(const char *driver_name, char *fmt, ...) { } +static inline void mark_hardware_deprecated(const char *driver_name, char *fmt, ...) { } static inline void mark_tech_preview(const char *msg, struct module *mod) { } static inline void mark_partner_supported(const char *msg, struct module *mod) { } #endif -- https://gitlab.com/cki-project/kernel-ark/-/merge_requests/2912 -- _______________________________________________ kernel mailing list -- kernel@xxxxxxxxxxxxxxxxxxxxxxx To unsubscribe send an email to kernel-leave@xxxxxxxxxxxxxxxxxxxxxxx Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/ List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines List Archives: https://lists.fedoraproject.org/archives/list/kernel@xxxxxxxxxxxxxxxxxxxxxxx Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue