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