|
@@ -635,8 +635,6 @@ static void init_intel_misc_features(struct cpuinfo_x86 *c)
|
|
|
|
|
|
static void init_intel(struct cpuinfo_x86 *c)
|
|
|
{
|
|
|
- unsigned int l2 = 0;
|
|
|
-
|
|
|
early_init_intel(c);
|
|
|
|
|
|
intel_workarounds(c);
|
|
@@ -659,13 +657,7 @@ static void init_intel(struct cpuinfo_x86 *c)
|
|
|
#endif
|
|
|
}
|
|
|
|
|
|
- l2 = init_intel_cacheinfo(c);
|
|
|
-
|
|
|
- /* Detect legacy cache sizes if init_intel_cacheinfo did not */
|
|
|
- if (l2 == 0) {
|
|
|
- cpu_detect_cache_sizes(c);
|
|
|
- l2 = c->x86_cache_size;
|
|
|
- }
|
|
|
+ init_intel_cacheinfo(c);
|
|
|
|
|
|
if (c->cpuid_level > 9) {
|
|
|
unsigned eax = cpuid_eax(10);
|
|
@@ -678,7 +670,8 @@ static void init_intel(struct cpuinfo_x86 *c)
|
|
|
set_cpu_cap(c, X86_FEATURE_LFENCE_RDTSC);
|
|
|
|
|
|
if (boot_cpu_has(X86_FEATURE_DS)) {
|
|
|
- unsigned int l1;
|
|
|
+ unsigned int l1, l2;
|
|
|
+
|
|
|
rdmsr(MSR_IA32_MISC_ENABLE, l1, l2);
|
|
|
if (!(l1 & (1<<11)))
|
|
|
set_cpu_cap(c, X86_FEATURE_BTS);
|
|
@@ -706,6 +699,7 @@ static void init_intel(struct cpuinfo_x86 *c)
|
|
|
* Dixon is NOT a Celeron.
|
|
|
*/
|
|
|
if (c->x86 == 6) {
|
|
|
+ unsigned int l2 = c->x86_cache_size;
|
|
|
char *p = NULL;
|
|
|
|
|
|
switch (c->x86_model) {
|