Revert "x86/cpu: Add a steppings field to struct x86_cpu_id"
authorBen Hutchings <benh@debian.org>
Tue, 5 May 2020 01:19:23 +0000 (02:19 +0100)
committerBen Hutchings <benh@debian.org>
Tue, 9 Jun 2020 17:50:00 +0000 (18:50 +0100)
Forwarded: not-needed

Adding the x86_cpu_id::steppings field is an ABI change.  It doesn't
seem worth the trouble of another ABI bump just to be able to report
some potential future CPU steppings as invulnerable.  Until we have
other change that require an ABI bump, we'll match the affected models
regardless of stepping.

Gbp-Pq: Topic debian/abi
Gbp-Pq: Name revert-x86-cpu-add-a-steppings-field-to-struct-x86_cpu_id.patch

arch/x86/include/asm/cpu_device_id.h
arch/x86/kernel/cpu/match.c
include/linux/mod_devicetable.h

index 0c814cd9ea42c0842711571143a24a92905624ae..04a15c312d8b4964d641e436d9a41db153d007fd 100644 (file)
 #define X86_CENTAUR_FAM6_C7_D          0xd
 #define X86_CENTAUR_FAM6_NANO          0xf
 
-#define X86_STEPPINGS(mins, maxs)    GENMASK(maxs, mins)
-
-/**
- * X86_MATCH_VENDOR_FAM_MODEL_STEPPINGS_FEATURE - Base macro for CPU matching
- * @_vendor:   The vendor name, e.g. INTEL, AMD, HYGON, ..., ANY
- *             The name is expanded to X86_VENDOR_@_vendor
- * @_family:   The family number or X86_FAMILY_ANY
- * @_model:    The model number, model constant or X86_MODEL_ANY
- * @_steppings:        Bitmask for steppings, stepping constant or X86_STEPPING_ANY
- * @_feature:  A X86_FEATURE bit or X86_FEATURE_ANY
- * @_data:     Driver specific data or NULL. The internal storage
- *             format is unsigned long. The supplied value, pointer
- *             etc. is casted to unsigned long internally.
- *
- * Backport version to keep the SRBDS pile consistant. No shorter variants
- * required for this.
- */
-#define X86_MATCH_VENDOR_FAM_MODEL_STEPPINGS_FEATURE(_vendor, _family, _model, \
-                                                   _steppings, _feature, _data) { \
-       .vendor         = X86_VENDOR_##_vendor,                         \
-       .family         = _family,                                      \
-       .model          = _model,                                       \
-       .steppings      = _steppings,                                   \
-       .feature        = _feature,                                     \
-       .driver_data    = (unsigned long) _data                         \
-}
-
 /*
  * Match specific microcode revisions.
  *
index 2f163e6646b6f853160197416391c3211f781d38..6dd78d8235e4498abe83b624d69f9104315ae56e 100644 (file)
@@ -34,18 +34,13 @@ const struct x86_cpu_id *x86_match_cpu(const struct x86_cpu_id *match)
        const struct x86_cpu_id *m;
        struct cpuinfo_x86 *c = &boot_cpu_data;
 
-       for (m = match;
-            m->vendor | m->family | m->model | m->steppings | m->feature;
-            m++) {
+       for (m = match; m->vendor | m->family | m->model | m->feature; m++) {
                if (m->vendor != X86_VENDOR_ANY && c->x86_vendor != m->vendor)
                        continue;
                if (m->family != X86_FAMILY_ANY && c->x86 != m->family)
                        continue;
                if (m->model != X86_MODEL_ANY && c->x86_model != m->model)
                        continue;
-               if (m->steppings != X86_STEPPING_ANY &&
-                   !(BIT(c->x86_stepping) & m->steppings))
-                       continue;
                if (m->feature != X86_FEATURE_ANY && !cpu_has(c, m->feature))
                        continue;
                return m;
index 953d7ca01eb602f8e99bcd72933cff97f00629b6..e3596db077dc598f3a44c2e47086d0b017d4e551 100644 (file)
@@ -657,10 +657,6 @@ struct mips_cdmm_device_id {
 /*
  * MODULE_DEVICE_TABLE expects this struct to be called x86cpu_device_id.
  * Although gcc seems to ignore this error, clang fails without this define.
- *
- * Note: The ordering of the struct is different from upstream because the
- * static initializers in kernels < 5.7 still use C89 style while upstream
- * has been converted to proper C99 initializers.
  */
 #define x86cpu_device_id x86_cpu_id
 struct x86_cpu_id {
@@ -669,7 +665,6 @@ struct x86_cpu_id {
        __u16 model;
        __u16 feature;  /* bit index */
        kernel_ulong_t driver_data;
-       __u16 steppings;
 };
 
 #define X86_FEATURE_MATCH(x) \
@@ -678,7 +673,6 @@ struct x86_cpu_id {
 #define X86_VENDOR_ANY 0xffff
 #define X86_FAMILY_ANY 0
 #define X86_MODEL_ANY  0
-#define X86_STEPPING_ANY 0
 #define X86_FEATURE_ANY 0      /* Same as FPU, you can't test for that */
 
 /*