@@ -72,19 +72,19 @@ static bool cpu_model_supports_sld __ro_after_init;
72
72
*/
73
73
static void check_memory_type_self_snoop_errata (struct cpuinfo_x86 * c )
74
74
{
75
- switch (c -> x86_model ) {
76
- case INTEL_FAM6_CORE_YONAH :
77
- case INTEL_FAM6_CORE2_MEROM :
78
- case INTEL_FAM6_CORE2_MEROM_L :
79
- case INTEL_FAM6_CORE2_PENRYN :
80
- case INTEL_FAM6_CORE2_DUNNINGTON :
81
- case INTEL_FAM6_NEHALEM :
82
- case INTEL_FAM6_NEHALEM_G :
83
- case INTEL_FAM6_NEHALEM_EP :
84
- case INTEL_FAM6_NEHALEM_EX :
85
- case INTEL_FAM6_WESTMERE :
86
- case INTEL_FAM6_WESTMERE_EP :
87
- case INTEL_FAM6_SANDYBRIDGE :
75
+ switch (c -> x86_vfm ) {
76
+ case INTEL_CORE_YONAH :
77
+ case INTEL_CORE2_MEROM :
78
+ case INTEL_CORE2_MEROM_L :
79
+ case INTEL_CORE2_PENRYN :
80
+ case INTEL_CORE2_DUNNINGTON :
81
+ case INTEL_NEHALEM :
82
+ case INTEL_NEHALEM_G :
83
+ case INTEL_NEHALEM_EP :
84
+ case INTEL_NEHALEM_EX :
85
+ case INTEL_WESTMERE :
86
+ case INTEL_WESTMERE_EP :
87
+ case INTEL_SANDYBRIDGE :
88
88
setup_clear_cpu_cap (X86_FEATURE_SELFSNOOP );
89
89
}
90
90
}
@@ -106,9 +106,9 @@ static void probe_xeon_phi_r3mwait(struct cpuinfo_x86 *c)
106
106
*/
107
107
if (c -> x86 != 6 )
108
108
return ;
109
- switch (c -> x86_model ) {
110
- case INTEL_FAM6_XEON_PHI_KNL :
111
- case INTEL_FAM6_XEON_PHI_KNM :
109
+ switch (c -> x86_vfm ) {
110
+ case INTEL_XEON_PHI_KNL :
111
+ case INTEL_XEON_PHI_KNM :
112
112
break ;
113
113
default :
114
114
return ;
@@ -134,32 +134,32 @@ static void probe_xeon_phi_r3mwait(struct cpuinfo_x86 *c)
134
134
* - Release note from 20180108 microcode release
135
135
*/
136
136
struct sku_microcode {
137
- u8 model ;
137
+ u32 vfm ;
138
138
u8 stepping ;
139
139
u32 microcode ;
140
140
};
141
141
static const struct sku_microcode spectre_bad_microcodes [] = {
142
- { INTEL_FAM6_KABYLAKE , 0x0B , 0x80 },
143
- { INTEL_FAM6_KABYLAKE , 0x0A , 0x80 },
144
- { INTEL_FAM6_KABYLAKE , 0x09 , 0x80 },
145
- { INTEL_FAM6_KABYLAKE_L , 0x0A , 0x80 },
146
- { INTEL_FAM6_KABYLAKE_L , 0x09 , 0x80 },
147
- { INTEL_FAM6_SKYLAKE_X , 0x03 , 0x0100013e },
148
- { INTEL_FAM6_SKYLAKE_X , 0x04 , 0x0200003c },
149
- { INTEL_FAM6_BROADWELL , 0x04 , 0x28 },
150
- { INTEL_FAM6_BROADWELL_G , 0x01 , 0x1b },
151
- { INTEL_FAM6_BROADWELL_D , 0x02 , 0x14 },
152
- { INTEL_FAM6_BROADWELL_D , 0x03 , 0x07000011 },
153
- { INTEL_FAM6_BROADWELL_X , 0x01 , 0x0b000025 },
154
- { INTEL_FAM6_HASWELL_L , 0x01 , 0x21 },
155
- { INTEL_FAM6_HASWELL_G , 0x01 , 0x18 },
156
- { INTEL_FAM6_HASWELL , 0x03 , 0x23 },
157
- { INTEL_FAM6_HASWELL_X , 0x02 , 0x3b },
158
- { INTEL_FAM6_HASWELL_X , 0x04 , 0x10 },
159
- { INTEL_FAM6_IVYBRIDGE_X , 0x04 , 0x42a },
142
+ { INTEL_KABYLAKE , 0x0B , 0x80 },
143
+ { INTEL_KABYLAKE , 0x0A , 0x80 },
144
+ { INTEL_KABYLAKE , 0x09 , 0x80 },
145
+ { INTEL_KABYLAKE_L , 0x0A , 0x80 },
146
+ { INTEL_KABYLAKE_L , 0x09 , 0x80 },
147
+ { INTEL_SKYLAKE_X , 0x03 , 0x0100013e },
148
+ { INTEL_SKYLAKE_X , 0x04 , 0x0200003c },
149
+ { INTEL_BROADWELL , 0x04 , 0x28 },
150
+ { INTEL_BROADWELL_G , 0x01 , 0x1b },
151
+ { INTEL_BROADWELL_D , 0x02 , 0x14 },
152
+ { INTEL_BROADWELL_D , 0x03 , 0x07000011 },
153
+ { INTEL_BROADWELL_X , 0x01 , 0x0b000025 },
154
+ { INTEL_HASWELL_L , 0x01 , 0x21 },
155
+ { INTEL_HASWELL_G , 0x01 , 0x18 },
156
+ { INTEL_HASWELL , 0x03 , 0x23 },
157
+ { INTEL_HASWELL_X , 0x02 , 0x3b },
158
+ { INTEL_HASWELL_X , 0x04 , 0x10 },
159
+ { INTEL_IVYBRIDGE_X , 0x04 , 0x42a },
160
160
/* Observed in the wild */
161
- { INTEL_FAM6_SANDYBRIDGE_X , 0x06 , 0x61b },
162
- { INTEL_FAM6_SANDYBRIDGE_X , 0x07 , 0x712 },
161
+ { INTEL_SANDYBRIDGE_X , 0x06 , 0x61b },
162
+ { INTEL_SANDYBRIDGE_X , 0x07 , 0x712 },
163
163
};
164
164
165
165
static bool bad_spectre_microcode (struct cpuinfo_x86 * c )
@@ -173,11 +173,8 @@ static bool bad_spectre_microcode(struct cpuinfo_x86 *c)
173
173
if (cpu_has (c , X86_FEATURE_HYPERVISOR ))
174
174
return false;
175
175
176
- if (c -> x86 != 6 )
177
- return false;
178
-
179
176
for (i = 0 ; i < ARRAY_SIZE (spectre_bad_microcodes ); i ++ ) {
180
- if (c -> x86_model == spectre_bad_microcodes [i ].model &&
177
+ if (c -> x86_vfm == spectre_bad_microcodes [i ].vfm &&
181
178
c -> x86_stepping == spectre_bad_microcodes [i ].stepping )
182
179
return (c -> microcode <= spectre_bad_microcodes [i ].microcode );
183
180
}
@@ -312,7 +309,7 @@ static void early_init_intel(struct cpuinfo_x86 *c)
312
309
* need the microcode to have already been loaded... so if it is
313
310
* not, recommend a BIOS update and disable large pages.
314
311
*/
315
- if (c -> x86 == 6 && c -> x86_model == 0x1c && c -> x86_stepping <= 2 &&
312
+ if (c -> x86_vfm == INTEL_ATOM_BONNELL && c -> x86_stepping <= 2 &&
316
313
c -> microcode < 0x20e ) {
317
314
pr_warn ("Atom PSE erratum detected, BIOS microcode update recommended\n" );
318
315
clear_cpu_cap (c , X86_FEATURE_PSE );
@@ -345,11 +342,11 @@ static void early_init_intel(struct cpuinfo_x86 *c)
345
342
346
343
/* Penwell and Cloverview have the TSC which doesn't sleep on S3 */
347
344
if (c -> x86 == 6 ) {
348
- switch (c -> x86_model ) {
349
- case INTEL_FAM6_ATOM_SALTWELL_MID :
350
- case INTEL_FAM6_ATOM_SALTWELL_TABLET :
351
- case INTEL_FAM6_ATOM_SILVERMONT_MID :
352
- case INTEL_FAM6_ATOM_AIRMONT_NP :
345
+ switch (c -> x86_vfm ) {
346
+ case INTEL_ATOM_SALTWELL_MID :
347
+ case INTEL_ATOM_SALTWELL_TABLET :
348
+ case INTEL_ATOM_SILVERMONT_MID :
349
+ case INTEL_ATOM_AIRMONT_NP :
353
350
set_cpu_cap (c , X86_FEATURE_NONSTOP_TSC_S3 );
354
351
break ;
355
352
default :
@@ -393,7 +390,7 @@ static void early_init_intel(struct cpuinfo_x86 *c)
393
390
* should be false so that __flush_tlb_all() causes CR3 instead of CR4.PGE
394
391
* to be modified.
395
392
*/
396
- if (c -> x86 == 5 && c -> x86_model == 9 ) {
393
+ if (c -> x86_vfm == INTEL_QUARK_X1000 ) {
397
394
pr_info ("Disabling PGE capability bit\n" );
398
395
setup_clear_cpu_cap (X86_FEATURE_PGE );
399
396
}
@@ -663,12 +660,13 @@ static void init_intel(struct cpuinfo_x86 *c)
663
660
set_cpu_cap (c , X86_FEATURE_PEBS );
664
661
}
665
662
666
- if (c -> x86 == 6 && boot_cpu_has (X86_FEATURE_CLFLUSH ) &&
667
- (c -> x86_model == 29 || c -> x86_model == 46 || c -> x86_model == 47 ))
663
+ if (boot_cpu_has (X86_FEATURE_CLFLUSH ) &&
664
+ (c -> x86_vfm == INTEL_CORE2_DUNNINGTON ||
665
+ c -> x86_vfm == INTEL_NEHALEM_EX ||
666
+ c -> x86_vfm == INTEL_WESTMERE_EX ))
668
667
set_cpu_bug (c , X86_BUG_CLFLUSH_MONITOR );
669
668
670
- if (c -> x86 == 6 && boot_cpu_has (X86_FEATURE_MWAIT ) &&
671
- ((c -> x86_model == INTEL_FAM6_ATOM_GOLDMONT )))
669
+ if (boot_cpu_has (X86_FEATURE_MWAIT ) && c -> x86_vfm == INTEL_ATOM_GOLDMONT )
672
670
set_cpu_bug (c , X86_BUG_MONITOR );
673
671
674
672
#ifdef CONFIG_X86_64
@@ -1285,9 +1283,9 @@ void handle_bus_lock(struct pt_regs *regs)
1285
1283
* feature even though they do not enumerate IA32_CORE_CAPABILITIES.
1286
1284
*/
1287
1285
static const struct x86_cpu_id split_lock_cpu_ids [] __initconst = {
1288
- X86_MATCH_INTEL_FAM6_MODEL ( ICELAKE_X , 0 ),
1289
- X86_MATCH_INTEL_FAM6_MODEL ( ICELAKE_L , 0 ),
1290
- X86_MATCH_INTEL_FAM6_MODEL ( ICELAKE_D , 0 ),
1286
+ X86_MATCH_VFM ( INTEL_ICELAKE_X , 0 ),
1287
+ X86_MATCH_VFM ( INTEL_ICELAKE_L , 0 ),
1288
+ X86_MATCH_VFM ( INTEL_ICELAKE_D , 0 ),
1291
1289
{}
1292
1290
};
1293
1291
0 commit comments