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 | |