[CPUFREQ] acpi-cpufreq: blacklist Intel 0f68: Fix HT detection and put in notification message

Removing the SMT/HT check, since the Errata doesn't mention
Hyper-Threading.

Adding in a printk, so that the user knows why acpi-cpufreq refuses to
load. Also, once system is blacklisted, don't repeat checks to see if
blacklisted. This also causes the message to only be printed once,
rather than for each CPU.

Signed-off-by: John L. Villalovos <john.l.villalovos@intel.com>
Signed-off-by: Dave Jones <davej@redhat.com>

authored by John Villalovos and committed by Dave Jones 293afe44 c53614ec

+17 -6
+17 -6
arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c
··· 526 527 static int acpi_cpufreq_blacklist(struct cpuinfo_x86 *c) 528 { 529 - /* http://www.intel.com/Assets/PDF/specupdate/314554.pdf 530 * AL30: A Machine Check Exception (MCE) Occurring during an 531 * Enhanced Intel SpeedStep Technology Ratio Change May Cause 532 - * Both Processor Cores to Lock Up when HT is enabled*/ 533 if (c->x86_vendor == X86_VENDOR_INTEL) { 534 if ((c->x86 == 15) && 535 (c->x86_model == 6) && 536 - (c->x86_mask == 8) && smt_capable()) 537 return -ENODEV; 538 } 539 return 0; 540 } ··· 555 unsigned int result = 0; 556 struct cpuinfo_x86 *c = &cpu_data(policy->cpu); 557 struct acpi_processor_performance *perf; 558 559 dprintk("acpi_cpufreq_cpu_init\n"); 560 561 #ifdef CONFIG_SMP 562 - result = acpi_cpufreq_blacklist(c); 563 - if (result) 564 - return result; 565 #endif 566 567 data = kzalloc(sizeof(struct acpi_cpufreq_data), GFP_KERNEL);
··· 526 527 static int acpi_cpufreq_blacklist(struct cpuinfo_x86 *c) 528 { 529 + /* Intel Xeon Processor 7100 Series Specification Update 530 + * http://www.intel.com/Assets/PDF/specupdate/314554.pdf 531 * AL30: A Machine Check Exception (MCE) Occurring during an 532 * Enhanced Intel SpeedStep Technology Ratio Change May Cause 533 + * Both Processor Cores to Lock Up. */ 534 if (c->x86_vendor == X86_VENDOR_INTEL) { 535 if ((c->x86 == 15) && 536 (c->x86_model == 6) && 537 + (c->x86_mask == 8)) { 538 + printk(KERN_INFO "acpi-cpufreq: Intel(R) " 539 + "Xeon(R) 7100 Errata AL30, processors may " 540 + "lock up on frequency changes: disabling " 541 + "acpi-cpufreq.\n"); 542 return -ENODEV; 543 + } 544 } 545 return 0; 546 } ··· 549 unsigned int result = 0; 550 struct cpuinfo_x86 *c = &cpu_data(policy->cpu); 551 struct acpi_processor_performance *perf; 552 + #ifdef CONFIG_SMP 553 + static int blacklisted; 554 + #endif 555 556 dprintk("acpi_cpufreq_cpu_init\n"); 557 558 #ifdef CONFIG_SMP 559 + if (blacklisted) 560 + return blacklisted; 561 + blacklisted = acpi_cpufreq_blacklist(c); 562 + if (blacklisted) 563 + return blacklisted; 564 #endif 565 566 data = kzalloc(sizeof(struct acpi_cpufreq_data), GFP_KERNEL);