From: Tony Luck <tony.luck@intel.com>
To: Borislav Petkov <bp@alien8.de>
Cc: x86@kernel.org, linux-kernel@vger.kernel.org,
patches@lists.linux.dev, Tony Luck <tony.luck@intel.com>,
Thomas Gleixner <tglx@linutronix.de>
Subject: [PATCH v3 02/74] x86/cpu/vfm: Add new macros to work with (vendor/family/model) values
Date: Tue, 16 Apr 2024 14:19:04 -0700 [thread overview]
Message-ID: <20240416211941.9369-3-tony.luck@intel.com> (raw)
In-Reply-To: <20240416211941.9369-1-tony.luck@intel.com>
To avoid adding a slew of new macros for each new Intel CPU family
switch over from providing CPU model number #defines to a new
scheme that encodes vendor, family, and model in a single number.
Signed-off-by: Tony Luck <tony.luck@intel.com>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
---
arch/x86/include/asm/cpu_device_id.h | 93 ++++++++++++++++++++++++++++
1 file changed, 93 insertions(+)
diff --git a/arch/x86/include/asm/cpu_device_id.h b/arch/x86/include/asm/cpu_device_id.h
index bf4e065cf1e2..833f230aeafc 100644
--- a/arch/x86/include/asm/cpu_device_id.h
+++ b/arch/x86/include/asm/cpu_device_id.h
@@ -2,6 +2,39 @@
#ifndef _ASM_X86_CPU_DEVICE_ID
#define _ASM_X86_CPU_DEVICE_ID
+/*
+ * Can't use <linux/bitfield.h> because it generates expressions that
+ * cannot be used in structure initializers. Bitfield construction
+ * here must match the union in struct cpuinfo_86:
+ * union {
+ * struct {
+ * __u8 x86_model;
+ * __u8 x86;
+ * __u8 x86_vendor;
+ * __u8 x86_reserved;
+ * };
+ * __u32 x86_vfm;
+ * };
+ */
+#define VFM_MODEL_BIT 0
+#define VFM_FAMILY_BIT 8
+#define VFM_VENDOR_BIT 16
+#define VFM_RSVD_BIT 24
+
+#define VFM_MODEL_MASK GENMASK(VFM_FAMILY_BIT - 1, VFM_MODEL_BIT)
+#define VFM_FAMILY_MASK GENMASK(VFM_VENDOR_BIT - 1, VFM_FAMILY_BIT)
+#define VFM_VENDOR_MASK GENMASK(VFM_RSVD_BIT - 1, VFM_VENDOR_BIT)
+
+#define VFM_MODEL(vfm) (((vfm) & VFM_MODEL_MASK) >> VFM_MODEL_BIT)
+#define VFM_FAMILY(vfm) (((vfm) & VFM_FAMILY_MASK) >> VFM_FAMILY_BIT)
+#define VFM_VENDOR(vfm) (((vfm) & VFM_VENDOR_MASK) >> VFM_VENDOR_BIT)
+
+#define VFM_MAKE(_vendor, _family, _model) ( \
+ ((_model) << VFM_MODEL_BIT) | \
+ ((_family) << VFM_FAMILY_BIT) | \
+ ((_vendor) << VFM_VENDOR_BIT) \
+)
+
/*
* Declare drivers belonging to specific x86 CPUs
* Similar in spirit to pci_device_id and related PCI functions
@@ -49,6 +82,16 @@
.driver_data = (unsigned long) _data \
}
+#define X86_MATCH_VENDORID_FAM_MODEL_STEPPINGS_FEATURE(_vendor, _family, _model, \
+ _steppings, _feature, _data) { \
+ .vendor = _vendor, \
+ .family = _family, \
+ .model = _model, \
+ .steppings = _steppings, \
+ .feature = _feature, \
+ .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
@@ -164,6 +207,56 @@
X86_MATCH_VENDOR_FAM_MODEL_STEPPINGS_FEATURE(INTEL, 6, INTEL_FAM6_##model, \
steppings, X86_FEATURE_ANY, data)
+/**
+ * X86_MATCH_VFM - Match encoded vendor/family/model
+ * @vfm: Encoded 8-bits each for vendor, family, 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.
+ *
+ * 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)
+
+/**
+ * X86_MATCH_VFM_STEPPINGS - Match encoded vendor/family/model/stepping
+ * @vfm: Encoded 8-bits each for vendor, family, model
+ * @steppings: Bitmask of steppings to match
+ * @data: Driver specific data or NULL. The internal storage
+ * format is unsigned long. The supplied value, pointer
+ * etc. is casted to unsigned long internally.
+ *
+ * feature is set to wildcard
+ */
+#define X86_MATCH_VFM_STEPPINGS(vfm, steppings, data) \
+ X86_MATCH_VENDORID_FAM_MODEL_STEPPINGS_FEATURE( \
+ VFM_VENDOR(vfm), \
+ VFM_FAMILY(vfm), \
+ VFM_MODEL(vfm), \
+ steppings, X86_FEATURE_ANY, data)
+
+/**
+ * X86_MATCH_VFM_FEATURE - Match encoded vendor/family/model/feature
+ * @vfm: Encoded 8-bits each for vendor, family, model
+ * @feature: A X86_FEATURE bit
+ * @data: Driver specific data or NULL. The internal storage
+ * format is unsigned long. The supplied value, pointer
+ * etc. is casted 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)
+
/*
* Match specific microcode revisions.
*
--
2.44.0
next prev parent reply other threads:[~2024-04-16 21:19 UTC|newest]
Thread overview: 119+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-16 21:19 [PATCH v3 00/74] New Intel CPUID families Tony Luck
2024-04-16 21:19 ` [PATCH v3 01/74] x86/cpu/vfm: Add/initialize x86_vfm field to struct cpuinfo_x86 Tony Luck
2024-04-22 10:01 ` [tip: x86/cpu] " tip-bot2 for Tony Luck
2024-04-16 21:19 ` Tony Luck [this message]
2024-04-17 7:42 ` [PATCH v3 02/74] x86/cpu/vfm: Add new macros to work with (vendor/family/model) values Amadeusz Sławiński
2024-04-22 10:01 ` [tip: x86/cpu] " tip-bot2 for Tony Luck
2024-04-16 21:19 ` [PATCH v3 03/74] x86/cpu/vfm: Update arch/x86/include/asm/intel-family.h Tony Luck
2024-04-22 10:01 ` [tip: x86/cpu] " tip-bot2 for Tony Luck
2024-04-16 21:19 ` [PATCH v3 04/74] x86/cpu/vfm: Update arch/x86/crypto/poly1305_glue.c Tony Luck
2024-04-16 21:19 ` [PATCH v3 05/74] x86/cpu/vfm: Update arch/x86/crypto/twofish_glue_3way.c Tony Luck
2024-04-16 21:19 ` [PATCH v3 06/74] x86/cpu/vfm: Update arch/x86/events/intel/cstate.c Tony Luck
2024-04-16 21:19 ` [PATCH v3 07/74] x86/cpu/vfm: Update arch/x86/events/intel/lbr.c Tony Luck
2024-04-16 21:19 ` [PATCH v3 08/74] x86/cpu/vfm: Update arch/x86/events/intel/pt.c Tony Luck
2024-04-16 21:19 ` [PATCH v3 09/74] x86/cpu/vfm: Update arch/x86/events/intel/uncore.c Tony Luck
2024-04-16 21:19 ` [PATCH v3 10/74] x86/cpu/vfm: Update arch/x86/events/intel/uncore_nhmex.c Tony Luck
2024-04-16 21:19 ` [PATCH v3 11/74] x86/cpu/vfm: Update arch/x86/events/intel/uncore_snbep.c Tony Luck
2024-04-16 21:19 ` [PATCH v3 12/74] x86/cpu/vfm: Update arch/x86/events/msr.c Tony Luck
2024-04-16 21:19 ` [PATCH v3 13/74] x86/cpu/vfm: Update arch/x86/events/rapl.c Tony Luck
2024-04-16 21:19 ` [PATCH v3 14/74] x86/cpu/vfm: Update arch/x86/kernel/apic/apic.c Tony Luck
2024-04-16 21:19 ` [PATCH v3 15/74] x86/cpu/vfm: Update arch/x86/kernel/cpu/aperfmperf.c Tony Luck
2024-04-16 21:19 ` [PATCH v3 16/74] x86/cpu/vfm: Update arch/x86/kernel/cpu/bugs.c Tony Luck
2024-04-16 21:19 ` [PATCH v3 17/74] x86/cpu/vfm: Update arch/x86/kernel/cpu/common.c Tony Luck
2024-04-16 21:19 ` [PATCH v3 18/74] x86/cpu/vfm: Update arch/x86/kernel/cpu/intel.c Tony Luck
2024-04-16 21:19 ` [PATCH v3 19/74] x86/cpu/vfm: Update arch/x86/kernel/cpu/intel_epb.c Tony Luck
2024-04-16 21:19 ` [PATCH v3 20/74] x86/cpu/vfm: Update arch/x86/kernel/cpu/match.c Tony Luck
2024-04-16 21:19 ` [PATCH v3 21/74] x86/cpu/vfm: Update arch/x86/kernel/cpu/mce/core.c Tony Luck
2024-04-16 21:19 ` [PATCH v3 22/74] x86/cpu/vfm: Update arch/x86/kernel/cpu/mce/intel.c Tony Luck
2024-04-16 21:19 ` [PATCH v3 23/74] x86/cpu/vfm: Update arch/x86/kernel/cpu/mce/severity.c Tony Luck
2024-04-16 21:19 ` [PATCH v3 24/74] x86/cpu/vfm: Update arch/x86/kernel/cpu/microcode/intel.c Tony Luck
2024-04-16 21:19 ` [PATCH v3 25/74] x86/cpu/vfm: Update arch/x86/kernel/cpu/resctrl/core.c Tony Luck
2024-04-16 21:19 ` [PATCH v3 26/74] x86/cpu/vfm: Update arch/x86/kernel/cpu/resctrl/pseudo_lock.c Tony Luck
2024-04-16 21:19 ` [PATCH v3 27/74] x86/cpu/vfm: Update arch/x86/kernel/smpboot.c Tony Luck
2024-04-16 21:19 ` [PATCH v3 28/74] x86/cpu/vfm: Update arch/x86/kernel/tsc.c Tony Luck
2024-04-16 21:19 ` [PATCH v3 29/74] x86/cpu/vfm: Update arch/x86/kernel/tsc_msr.c Tony Luck
2024-04-16 21:19 ` [PATCH v3 30/74] x86/cpu/vfm: Update arch/x86/kvm/pmu.c Tony Luck
2024-04-17 18:59 ` Sean Christopherson
2024-04-16 21:19 ` [PATCH v3 31/74] x86/cpu/vfm: Update arch/x86/kvm/vmx/vmx.c Tony Luck
2024-04-17 19:00 ` Sean Christopherson
2024-04-16 21:19 ` [PATCH v3 32/74] x86/cpu/vfm: Update arch/x86/mm/init.c Tony Luck
2024-04-16 21:19 ` [PATCH v3 33/74] x86/cpu/vfm: Update arch/x86/pci/intel_mid_pci.c Tony Luck
2024-04-16 21:19 ` [PATCH v3 34/74] x86/cpu/vfm: Update arch/x86/virt/vmx/tdx/tdx.c Tony Luck
2024-04-16 21:19 ` [PATCH v3 35/74] x86/cpu/vfm: Update arch/x86/events/intel/core.c Tony Luck
2024-04-16 21:19 ` [PATCH v3 36/74] x86/cpu/vfm: Update arch/x86/platform/intel-mid/intel-mid.c Tony Luck
2024-04-16 21:19 ` [PATCH v3 37/74] x86/cpu/vfm: Update arch/x86/platform/atom/punit_atom_debug.c Tony Luck
2024-04-16 21:19 ` [PATCH v3 38/74] x86/cpu/vfm: Update arch/x86/events/intel/core.c Tony Luck
2024-04-16 21:19 ` [PATCH v3 39/74] x86/cpu/vfm: Update arch/x86/boot/cpucheck.c Tony Luck
2024-04-16 21:21 ` [PATCH v3 40/74] x86/cpu/vfm: Update drivers/acpi/acpi_lpss.c Tony Luck
2024-04-17 8:25 ` Rafael J. Wysocki
2024-04-16 21:22 ` [PATCH v3 41/74] x86/cpu/vfm: Update drivers/acpi/x86/utils.c Tony Luck
2024-04-17 8:26 ` Rafael J. Wysocki
2024-04-16 21:22 ` [PATCH v3 42/74] x86/cpu/vfm: Update tpm files Tony Luck
2024-04-17 15:41 ` Jarkko Sakkinen
2024-04-17 16:38 ` Luck, Tony
2024-04-17 22:10 ` Jarkko Sakkinen
2024-04-17 16:07 ` Paul Menzel
2024-04-17 16:43 ` Luck, Tony
2024-04-17 22:48 ` Jarkko Sakkinen
2024-04-16 21:22 ` [PATCH v3 43/74] x86/cpu/vfm: Update drivers/cpufreq/intel_pstate.c Tony Luck
2024-04-17 8:20 ` Rafael J. Wysocki
2024-04-16 21:22 ` [PATCH v3 44/74] x86/cpu/vfm: Update drivers/cpufreq/speedstep-centrino.c Tony Luck
2024-04-17 8:21 ` Rafael J. Wysocki
2024-04-16 21:22 ` [PATCH v3 45/74] x86/cpu/vfm: Update drivers/edac/i10nm_base.c Tony Luck
2024-04-16 21:22 ` [PATCH v3 46/74] x86/cpu/vfm: Update drivers/edac/pnd2_edac.c Tony Luck
2024-04-16 21:22 ` [PATCH v3 47/74] x86/cpu/vfm: Update drivers/edac/sb_edac.c Tony Luck
2024-04-16 21:22 ` [PATCH v3 48/74] x86/cpu/vfm: Update drivers/edac/skx_base.c Tony Luck
2024-04-16 21:22 ` [PATCH v3 49/74] x86/cpu/vfm: Update drivers/extcon/extcon-axp288.c Tony Luck
2024-05-08 15:07 ` Chanwoo Choi
2024-04-16 21:22 ` [PATCH v3 50/74] x86/cpu/vfm: Update drivers/hwmon/peci/cputemp.c Tony Luck
2024-04-16 22:34 ` Guenter Roeck
2024-04-16 23:05 ` Luck, Tony
2024-04-16 23:37 ` Guenter Roeck
2024-04-16 23:57 ` Luck, Tony
2024-04-18 13:32 ` Winiarska, Iwona
2024-04-18 13:52 ` Guenter Roeck
2024-04-18 14:50 ` Winiarska, Iwona
2024-04-22 16:35 ` Luck, Tony
2024-04-22 22:19 ` Luck, Tony
2024-04-24 13:32 ` Winiarska, Iwona
2024-04-24 17:43 ` Luck, Tony
2024-04-16 21:22 ` [PATCH v3 51/74] x86/cpu/vfm: Update drivers/idle/intel_idle.c Tony Luck
2024-04-17 8:24 ` Rafael J. Wysocki
2024-04-16 21:22 ` [PATCH v3 52/74] x86/cpu/vfm: Update drivers/pci/pci-mid.c Tony Luck
2024-04-16 21:38 ` Bjorn Helgaas
2024-04-16 21:51 ` Luck, Tony
2024-04-17 8:47 ` Andy Shevchenko
2024-04-16 21:22 ` [PATCH v3 53/74] x86/cpu/vfm: Update drivers/peci/cpu.c Tony Luck
2024-04-16 21:22 ` [PATCH v3 54/74] x86/cpu/vfm: Update drivers/platform/x86/intel/ifs/core.c Tony Luck
2024-04-16 23:29 ` Joseph, Jithu
2024-04-16 21:22 ` [PATCH v3 55/74] x86/cpu/vfm: Update drivers/platform/x86/intel_ips.c Tony Luck
2024-04-16 21:22 ` [PATCH v3 56/74] x86/cpu/vfm: Update drivers/platform/x86/intel/pmc/core.c Tony Luck
2024-04-16 21:22 ` [PATCH v3 57/74] x86/cpu/vfm: Update drivers/platform/x86/intel/pmc/pltdrv.c Tony Luck
2024-04-16 21:22 ` [PATCH v3 58/74] x86/cpu/vfm: Update drivers/platform/x86/intel_scu_wdt.c Tony Luck
2024-04-16 21:22 ` [PATCH v3 59/74] x86/cpu/vfm: Update drivers/platform/x86/intel/speed_select_if/isst_if_common.c Tony Luck
2024-04-16 21:22 ` [PATCH v3 60/74] x86/cpu/vfm: Update drivers/platform/x86/intel/speed_select_if/isst_if_mbox_msr.c Tony Luck
2024-04-16 21:22 ` [PATCH v3 61/74] x86/cpu/vfm: Update drivers/platform/x86/intel/telemetry/debugfs.c Tony Luck
2024-04-16 21:22 ` [PATCH v3 62/74] x86/cpu/vfm: Update drivers/platform/x86/intel/telemetry/pltdrv.c Tony Luck
2024-04-16 21:22 ` [PATCH v3 63/74] x86/cpu/vfm: Update drivers/platform/x86/intel/turbo_max_3.c Tony Luck
2024-04-16 21:22 ` [PATCH v3 64/74] x86/cpu/vfm: Update drivers/platform/x86/intel/uncore-frequency/uncore-frequency.c Tony Luck
2024-04-16 21:22 ` [PATCH v3 65/74] x86/cpu/vfm: Update drivers/platform/x86/p2sb.c Tony Luck
2024-04-16 21:22 ` [PATCH v3 66/74] x86/cpu/vfm: Update drivers/powercap/intel_rapl_common.c Tony Luck
2024-04-17 8:21 ` Rafael J. Wysocki
2024-04-16 21:22 ` [PATCH v3 67/74] x86/cpu/vfm: Update drivers/powercap/intel_rapl_msr.c Tony Luck
2024-04-17 8:22 ` Rafael J. Wysocki
2024-04-16 21:22 ` [PATCH v3 68/74] x86/cpu/vfm: Update drivers/staging/media/atomisp/include/linux/atomisp_platform.h Tony Luck
2024-04-17 8:07 ` Andy Shevchenko
2024-04-17 16:24 ` Luck, Tony
2024-04-17 17:00 ` Andy Shevchenko
2024-04-17 17:31 ` Luck, Tony
2024-04-16 21:22 ` [PATCH v3 69/74] x86/cpu/vfm: Update intel_soc_dts_thermal.c Tony Luck
2024-04-17 8:23 ` Rafael J. Wysocki
2024-04-16 21:22 ` [PATCH v3 70/74] x86/cpu/vfm: Update drivers/thermal/intel/intel_tcc_cooling.c Tony Luck
2024-04-17 8:23 ` Rafael J. Wysocki
2024-04-16 21:22 ` [PATCH v3 71/74] x86/cpu/vfm: Update sound/soc/intel/avs/boards/es8336.c Tony Luck
2024-04-17 8:01 ` Amadeusz Sławiński
2024-04-16 21:23 ` [PATCH v3 72/74] x86/cpu/vfm: Update tools/power/x86/turbostat/turbostat.c Tony Luck
2024-04-17 8:24 ` Rafael J. Wysocki
2024-04-16 21:23 ` [PATCH v3 73/74] x86/cpu/vfm: Delete X86_MATCH_INTEL_FAM6_MODEL[_STEPPING]() macros Tony Luck
2024-04-16 21:23 ` [PATCH v3 74/74] x86/cpu/vfm: Delete all the *_FAM6_ CPU #defines Tony Luck
2024-04-16 23:31 ` [PATCH v3 00/74] New Intel CPUID families Luck, Tony
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240416211941.9369-3-tony.luck@intel.com \
--to=tony.luck@intel.com \
--cc=bp@alien8.de \
--cc=linux-kernel@vger.kernel.org \
--cc=patches@lists.linux.dev \
--cc=tglx@linutronix.de \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox