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
22struct 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
38extern const struct x86_cpu_id *x86_match_cpu(const struct x86_cpu_id *match);
39extern bool x86_cpu_has_min_microcode_rev(const struct x86_cpu_desc *table);
40
41#endif /* _ASM_X86_CPU_DEVICE_ID */
42