From: Prarit Bhargava <[email protected]>
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 <[email protected]>
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 -- [email protected]
To unsubscribe send an email to [email protected]
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/[email protected]
Do not reply to spam, report it:
https://pagure.io/fedora-infrastructure/new_issue