blob: 25b71d4e9224b4e1035ad5be9e93dbfc2cd42453 [file] [log] [blame]
Greg Kroah-Hartmanb2441312017-11-01 15:07:57 +01001/* SPDX-License-Identifier: GPL-2.0 */
Dave Hansen970442c2016-06-02 17:19:27 -07002#ifndef _ASM_X86_INTEL_FAMILY_H
3#define _ASM_X86_INTEL_FAMILY_H
4
5/*
6 * "Big Core" Processors (Branded as Core, Xeon, etc...)
7 *
8 * The "_X" parts are generally the EP and EX Xeons, or the
Kan Liang00ae8312019-01-25 11:59:01 -08009 * "Extreme" ones, like Broadwell-E, or Atom microserver.
Dave Hansen970442c2016-06-02 17:19:27 -070010 *
Rajneesh Bhardwaj850eb9f2018-02-02 19:13:35 +053011 * While adding a new CPUID for a new microarchitecture, add a new
12 * group to keep logically sorted out in chronological order. Within
13 * that group keep the CPUID for the variants sorted by model number.
Tony Luck12ece2d2019-08-15 11:16:24 -070014 *
15 * The defined symbol names have the following form:
16 * INTEL_FAM6{OPTFAMILY}_{MICROARCH}{OPTDIFF}
17 * where:
18 * OPTFAMILY Describes the family of CPUs that this belongs to. Default
19 * is assumed to be "_CORE" (and should be omitted). Other values
20 * currently in use are _ATOM and _XEON_PHI
21 * MICROARCH Is the code name for the micro-architecture for this core.
22 * N.B. Not the platform name.
23 * OPTDIFF If needed, a short string to differentiate by market segment.
24 * Exact strings here will vary over time. _DESKTOP, _MOBILE, and
25 * _X (short for Xeon server) should be used when they are
26 * appropriate.
27 *
28 * The #define line may optionally include a comment including platform names.
Dave Hansen970442c2016-06-02 17:19:27 -070029 */
30
31#define INTEL_FAM6_CORE_YONAH 0x0E
Andy Shevchenkoc238f232017-03-16 17:50:45 +020032
Dave Hansen970442c2016-06-02 17:19:27 -070033#define INTEL_FAM6_CORE2_MEROM 0x0F
34#define INTEL_FAM6_CORE2_MEROM_L 0x16
35#define INTEL_FAM6_CORE2_PENRYN 0x17
36#define INTEL_FAM6_CORE2_DUNNINGTON 0x1D
37
38#define INTEL_FAM6_NEHALEM 0x1E
Dave Hansen4b3b2342016-06-29 12:27:37 -070039#define INTEL_FAM6_NEHALEM_G 0x1F /* Auburndale / Havendale */
Dave Hansen970442c2016-06-02 17:19:27 -070040#define INTEL_FAM6_NEHALEM_EP 0x1A
41#define INTEL_FAM6_NEHALEM_EX 0x2E
Andy Shevchenkoc238f232017-03-16 17:50:45 +020042
Dave Hansen970442c2016-06-02 17:19:27 -070043#define INTEL_FAM6_WESTMERE 0x25
Dave Hansen970442c2016-06-02 17:19:27 -070044#define INTEL_FAM6_WESTMERE_EP 0x2C
45#define INTEL_FAM6_WESTMERE_EX 0x2F
46
47#define INTEL_FAM6_SANDYBRIDGE 0x2A
48#define INTEL_FAM6_SANDYBRIDGE_X 0x2D
49#define INTEL_FAM6_IVYBRIDGE 0x3A
50#define INTEL_FAM6_IVYBRIDGE_X 0x3E
51
Peter Zijlstrac66f78a2019-08-27 21:48:21 +020052#define INTEL_FAM6_HASWELL 0x3C
Dave Hansen970442c2016-06-02 17:19:27 -070053#define INTEL_FAM6_HASWELL_X 0x3F
Peter Zijlstraaf239c42019-08-27 21:48:22 +020054#define INTEL_FAM6_HASWELL_L 0x45
Dave Hansen970442c2016-06-02 17:19:27 -070055#define INTEL_FAM6_HASWELL_GT3E 0x46
56
Peter Zijlstrac66f78a2019-08-27 21:48:21 +020057#define INTEL_FAM6_BROADWELL 0x3D
Dave Hansen970442c2016-06-02 17:19:27 -070058#define INTEL_FAM6_BROADWELL_GT3E 0x47
59#define INTEL_FAM6_BROADWELL_X 0x4F
Andy Shevchenkoc238f232017-03-16 17:50:45 +020060#define INTEL_FAM6_BROADWELL_XEON_D 0x56
Dave Hansen970442c2016-06-02 17:19:27 -070061
Peter Zijlstraaf239c42019-08-27 21:48:22 +020062#define INTEL_FAM6_SKYLAKE_L 0x4E
Peter Zijlstrac66f78a2019-08-27 21:48:21 +020063#define INTEL_FAM6_SKYLAKE 0x5E
Dave Hansen970442c2016-06-02 17:19:27 -070064#define INTEL_FAM6_SKYLAKE_X 0x55
Peter Zijlstraaf239c42019-08-27 21:48:22 +020065#define INTEL_FAM6_KABYLAKE_L 0x8E
Peter Zijlstrac66f78a2019-08-27 21:48:21 +020066#define INTEL_FAM6_KABYLAKE 0x9E
Dave Hansen970442c2016-06-02 17:19:27 -070067
Peter Zijlstraaf239c42019-08-27 21:48:22 +020068#define INTEL_FAM6_CANNONLAKE_L 0x66
Rajneesh Bhardwaj850eb9f2018-02-02 19:13:35 +053069
Kan Liange35faeb2019-06-03 06:41:20 -070070#define INTEL_FAM6_ICELAKE_X 0x6A
71#define INTEL_FAM6_ICELAKE_XEON_D 0x6C
Peter Zijlstrac66f78a2019-08-27 21:48:21 +020072#define INTEL_FAM6_ICELAKE 0x7D
Peter Zijlstraaf239c42019-08-27 21:48:22 +020073#define INTEL_FAM6_ICELAKE_L 0x7E
Rajneesh Bhardwaje32d0452019-06-06 06:54:19 +053074#define INTEL_FAM6_ICELAKE_NNPI 0x9D
Rajneesh Bhardwaj8cd8f0c2019-02-14 17:27:08 +053075
Dave Hansen970442c2016-06-02 17:19:27 -070076/* "Small Core" Processors (Atom) */
77
Peter Zijlstraf2c4db12018-08-07 10:17:27 -070078#define INTEL_FAM6_ATOM_BONNELL 0x1C /* Diamondville, Pineview */
79#define INTEL_FAM6_ATOM_BONNELL_MID 0x26 /* Silverthorne, Lincroft */
80
81#define INTEL_FAM6_ATOM_SALTWELL 0x36 /* Cedarview */
82#define INTEL_FAM6_ATOM_SALTWELL_MID 0x27 /* Penwell */
83#define INTEL_FAM6_ATOM_SALTWELL_TABLET 0x35 /* Cloverview */
84
85#define INTEL_FAM6_ATOM_SILVERMONT 0x37 /* Bay Trail, Valleyview */
86#define INTEL_FAM6_ATOM_SILVERMONT_X 0x4D /* Avaton, Rangely */
87#define INTEL_FAM6_ATOM_SILVERMONT_MID 0x4A /* Merriefield */
88
89#define INTEL_FAM6_ATOM_AIRMONT 0x4C /* Cherry Trail, Braswell */
90#define INTEL_FAM6_ATOM_AIRMONT_MID 0x5A /* Moorefield */
91
92#define INTEL_FAM6_ATOM_GOLDMONT 0x5C /* Apollo Lake */
93#define INTEL_FAM6_ATOM_GOLDMONT_X 0x5F /* Denverton */
94#define INTEL_FAM6_ATOM_GOLDMONT_PLUS 0x7A /* Gemini Lake */
Andy Shevchenko0a05fa62019-06-17 14:55:37 +030095
Kan Liang00ae8312019-01-25 11:59:01 -080096#define INTEL_FAM6_ATOM_TREMONT_X 0x86 /* Jacobsville */
Dave Hansen970442c2016-06-02 17:19:27 -070097
98/* Xeon Phi */
99
100#define INTEL_FAM6_XEON_PHI_KNL 0x57 /* Knights Landing */
Piotr Luc0047f592016-10-12 20:05:20 +0200101#define INTEL_FAM6_XEON_PHI_KNM 0x85 /* Knights Mill */
Dave Hansen970442c2016-06-02 17:19:27 -0700102
Andy Shevchenkoe2ce67b22018-06-29 22:31:08 +0300103/* Useful macros */
104#define INTEL_CPU_FAM_ANY(_family, _model, _driver_data) \
105{ \
106 .vendor = X86_VENDOR_INTEL, \
107 .family = _family, \
108 .model = _model, \
109 .feature = X86_FEATURE_ANY, \
110 .driver_data = (kernel_ulong_t)&_driver_data \
111}
112
113#define INTEL_CPU_FAM6(_model, _driver_data) \
114 INTEL_CPU_FAM_ANY(6, INTEL_FAM6_##_model, _driver_data)
115
Dave Hansen970442c2016-06-02 17:19:27 -0700116#endif /* _ASM_X86_INTEL_FAMILY_H */