]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
x86/cpu: Shorten CPU matching macro
authorPawan Gupta <pawan.kumar.gupta@linux.intel.com>
Tue, 11 Mar 2025 15:02:20 +0000 (08:02 -0700)
committerIngo Molnar <mingo@kernel.org>
Wed, 19 Mar 2025 10:16:46 +0000 (11:16 +0100)
To add cpu-type to the existing CPU matching infrastructure, the base macro
X86_MATCH_VENDOR_FAM_MODEL_STEPPINGS_FEATURE need to append _CPU_TYPE. This
makes an already long name longer, and somewhat incomprehensible.

To avoid this, rename the base macro to X86_MATCH_CPU. The macro name
doesn't need to explicitly tell everything that it matches. The arguments
to the macro already hint at that.

For consistency, use this base macro to define X86_MATCH_VFM and friends.

Remove unused X86_MATCH_VENDOR_FAM_MODEL_FEATURE while at it.

  [ bp: Massage commit message. ]

Signed-off-by: Pawan Gupta <pawan.kumar.gupta@linux.intel.com>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Acked-by: Dave Hansen <dave.hansen@linux.intel.com>
Link: https://lore.kernel.org/r/20250311-add-cpu-type-v8-2-e8514dcaaff2@linux.intel.com
arch/x86/include/asm/cpu_device_id.h

index 9ebc263832ff88df7b2ba09d9a3c0b6f9801d467..45489b034cd62fe53138dc0c3d1e779c9571113b 100644 (file)
@@ -57,7 +57,7 @@
 #define X86_CPU_ID_FLAG_ENTRY_VALID    BIT(0)
 
 /**
- * X86_MATCH_VENDOR_FAM_MODEL_STEPPINGS_FEATURE - Base macro for CPU matching
+ * X86_MATCH_CPU -  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
  * into another macro at the usage site for good reasons, then please
  * start this local macro with X86_MATCH to allow easy grepping.
  */
-#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,                                     \
-       .flags          = X86_CPU_ID_FLAG_ENTRY_VALID,                  \
-       .driver_data    = (unsigned long) _data                         \
-}
-
-#define X86_MATCH_VENDORID_FAM_MODEL_STEPPINGS_FEATURE(_vendor, _family, _model, \
-                                                   _steppings, _feature, _data) { \
+#define X86_MATCH_CPU(_vendor, _family, _model, _steppings, _feature, _data) { \
        .vendor         = _vendor,                                      \
        .family         = _family,                                      \
        .model          = _model,                                       \
        .driver_data    = (unsigned long) _data                         \
 }
 
-/**
- * X86_MATCH_VENDOR_FAM_MODEL_FEATURE - 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
- * @_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.
- *
- * The steppings arguments of X86_MATCH_VENDOR_FAM_MODEL_STEPPINGS_FEATURE() is
- * set to wildcards.
- */
-#define X86_MATCH_VENDOR_FAM_MODEL_FEATURE(vendor, family, model, feature, data) \
-       X86_MATCH_VENDOR_FAM_MODEL_STEPPINGS_FEATURE(vendor, family, model, \
-                                               X86_STEPPING_ANY, feature, data)
-
 /**
  * X86_MATCH_VENDOR_FAM_FEATURE - Macro for matching vendor, family and CPU feature
  * @vendor:    The vendor name, e.g. INTEL, AMD, HYGON, ..., 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.
- *
- * All other missing arguments of X86_MATCH_VENDOR_FAM_MODEL_FEATURE() are
- * set to wildcards.
  */
-#define X86_MATCH_VENDOR_FAM_FEATURE(vendor, family, feature, data)    \
-       X86_MATCH_VENDOR_FAM_MODEL_FEATURE(vendor, family,              \
-                                          X86_MODEL_ANY, feature, data)
+#define X86_MATCH_VENDOR_FAM_FEATURE(vendor, family, feature, data)            \
+       X86_MATCH_CPU(X86_VENDOR_##vendor, family, X86_MODEL_ANY,               \
+                     X86_STEPPING_ANY, feature, data)
 
 /**
  * X86_MATCH_VENDOR_FEATURE - Macro for matching vendor and CPU feature
  * @data:      Driver specific data or NULL. The internal storage
  *             format is unsigned long. The supplied value, pointer
  *             etc. is casted to unsigned long internally.
- *
- * All other missing arguments of X86_MATCH_VENDOR_FAM_MODEL_FEATURE() are
- * set to wildcards.
  */
-#define X86_MATCH_VENDOR_FEATURE(vendor, feature, data)                        \
-       X86_MATCH_VENDOR_FAM_FEATURE(vendor, X86_FAMILY_ANY, feature, data)
+#define X86_MATCH_VENDOR_FEATURE(vendor, feature, data)                                \
+       X86_MATCH_CPU(X86_VENDOR_##vendor, X86_FAMILY_ANY, X86_MODEL_ANY,       \
+                     X86_STEPPING_ANY, feature, data)
 
 /**
  * X86_MATCH_FEATURE - Macro for matching a CPU feature
  * @data:      Driver specific data or NULL. The internal storage
  *             format is unsigned long. The supplied value, pointer
  *             etc. is casted to unsigned long internally.
- *
- * All other missing arguments of X86_MATCH_VENDOR_FAM_MODEL_FEATURE() are
- * set to wildcards.
  */
-#define X86_MATCH_FEATURE(feature, data)                               \
-       X86_MATCH_VENDOR_FEATURE(ANY, feature, data)
+#define X86_MATCH_FEATURE(feature, data)                                       \
+       X86_MATCH_CPU(X86_VENDOR_ANY, X86_FAMILY_ANY, X86_MODEL_ANY,            \
+                     X86_STEPPING_ANY, feature, data)
 
 /**
  * X86_MATCH_VENDOR_FAM_MODEL - Match vendor, family and model
  * @data:      Driver specific data or NULL. The internal storage
  *             format is unsigned long. The supplied value, pointer
  *             etc. is casted to unsigned long internally.
- *
- * All other missing arguments of X86_MATCH_VENDOR_FAM_MODEL_FEATURE() are
- * set to wildcards.
  */
-#define X86_MATCH_VENDOR_FAM_MODEL(vendor, family, model, data)                \
-       X86_MATCH_VENDOR_FAM_MODEL_FEATURE(vendor, family, model,       \
-                                          X86_FEATURE_ANY, data)
+#define X86_MATCH_VENDOR_FAM_MODEL(vendor, family, model, data)                        \
+       X86_MATCH_CPU(X86_VENDOR_##vendor, family, model, X86_STEPPING_ANY,     \
+                     X86_FEATURE_ANY, data)
 
 /**
  * X86_MATCH_VENDOR_FAM - Match vendor and family
  * @data:      Driver specific data or NULL. The internal storage
  *             format is unsigned long. The supplied value, pointer
  *             etc. is casted to unsigned long internally.
- *
- * All other missing arguments to X86_MATCH_VENDOR_FAM_MODEL_FEATURE() are
- * set of wildcards.
  */
-#define X86_MATCH_VENDOR_FAM(vendor, family, data)                     \
-       X86_MATCH_VENDOR_FAM_MODEL(vendor, family, X86_MODEL_ANY, data)
+#define X86_MATCH_VENDOR_FAM(vendor, family, data)                             \
+       X86_MATCH_CPU(X86_VENDOR_##vendor, family, X86_MODEL_ANY,               \
+                     X86_STEPPING_ANY, X86_FEATURE_ANY, data)
 
 /**
  * X86_MATCH_VFM - Match encoded vendor/family/model
  * @data:      Driver specific data or NULL. The internal storage
  *             format is unsigned long. The supplied value, pointer
  *             etc. is cast to unsigned long internally.
- *
- * Stepping and feature are set to wildcards
  */
-#define X86_MATCH_VFM(vfm, data)                       \
-       X86_MATCH_VENDORID_FAM_MODEL_STEPPINGS_FEATURE( \
-               VFM_VENDOR(vfm),                        \
-               VFM_FAMILY(vfm),                        \
-               VFM_MODEL(vfm),                         \
-               X86_STEPPING_ANY, X86_FEATURE_ANY, data)
+#define X86_MATCH_VFM(vfm, data)                                               \
+       X86_MATCH_CPU(VFM_VENDOR(vfm), VFM_FAMILY(vfm), VFM_MODEL(vfm),         \
+                     X86_STEPPING_ANY, X86_FEATURE_ANY, data)
 
 #define __X86_STEPPINGS(mins, maxs)    GENMASK(maxs, mins)
 /**
  * @data:      Driver specific data or NULL. The internal storage
  *             format is unsigned long. The supplied value, pointer
  *             etc. is cast to unsigned long internally.
- *
- * feature is set to wildcard
  */
-#define X86_MATCH_VFM_STEPS(vfm, min_step, max_step, data)     \
-       X86_MATCH_VENDORID_FAM_MODEL_STEPPINGS_FEATURE(         \
-               VFM_VENDOR(vfm),                                \
-               VFM_FAMILY(vfm),                                \
-               VFM_MODEL(vfm),                                 \
-               __X86_STEPPINGS(min_step, max_step),            \
-               X86_FEATURE_ANY, data)
+#define X86_MATCH_VFM_STEPS(vfm, min_step, max_step, data)                     \
+       X86_MATCH_CPU(VFM_VENDOR(vfm), VFM_FAMILY(vfm), VFM_MODEL(vfm),         \
+                     __X86_STEPPINGS(min_step, max_step), X86_FEATURE_ANY, data)
 
 /**
  * X86_MATCH_VFM_FEATURE - Match encoded vendor/family/model/feature
  * @data:      Driver specific data or NULL. The internal storage
  *             format is unsigned long. The supplied value, pointer
  *             etc. is cast to unsigned long internally.
- *
- * Steppings is set to wildcard
  */
-#define X86_MATCH_VFM_FEATURE(vfm, feature, data)      \
-       X86_MATCH_VENDORID_FAM_MODEL_STEPPINGS_FEATURE( \
-               VFM_VENDOR(vfm),                        \
-               VFM_FAMILY(vfm),                        \
-               VFM_MODEL(vfm),                         \
-               X86_STEPPING_ANY, feature, data)
+#define X86_MATCH_VFM_FEATURE(vfm, feature, data)                              \
+       X86_MATCH_CPU(VFM_VENDOR(vfm), VFM_FAMILY(vfm), VFM_MODEL(vfm),         \
+                     X86_STEPPING_ANY, feature, data)
 
 extern const struct x86_cpu_id *x86_match_cpu(const struct x86_cpu_id *match);
 extern bool x86_match_min_microcode_rev(const struct x86_cpu_id *table);