1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef _ASM_X86_CPU_DEVICE_ID 3 #define _ASM_X86_CPU_DEVICE_ID 4 5 /* 6 * Declare drivers belonging to specific x86 CPUs 7 * Similar in spirit to pci_device_id and related PCI functions 8 */ 9 10 #include <linux/mod_devicetable.h> 11 12 /* 13 * Match specific microcode revisions. 14 * 15 * vendor/family/model/stepping must be all set. 16 * 17 * Only checks against the boot CPU. When mixed-stepping configs are 18 * valid for a CPU model, add a quirk for every valid stepping and 19 * do the fine-tuning in the quirk handler. 20 */ 21 22 struct x86_cpu_desc { 23 u8 x86_family; 24 u8 x86_vendor; 25 u8 x86_model; 26 u8 x86_stepping; 27 u32 x86_microcode_rev; 28 }; 29 30 #define INTEL_CPU_DESC(model, stepping, revision) { \ 31 .x86_family = 6, \ 32 .x86_vendor = X86_VENDOR_INTEL, \ 33 .x86_model = (model), \ 34 .x86_stepping = (stepping), \ 35 .x86_microcode_rev = (revision), \ 36 } 37 38 extern const struct x86_cpu_id *x86_match_cpu(const struct x86_cpu_id *match); 39 extern bool x86_cpu_has_min_microcode_rev(const struct x86_cpu_desc *table); 40 41 #endif /* _ASM_X86_CPU_DEVICE_ID */ 42