Re: [PATCH] acpi-cpufreq: blacklist Intel 0f68 processors [v3]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





Dominik Brodowski wrote:
Might this be worth something more explicit than a "dprintk", such as

printk(KERN_INFO "Intel(R) Xeon(R) 7100 processors are broken and may lock "
		 "up on frequency changes: disabling acpi-cpufreq.\n")


Sure, np. I was just following what I thought the rest of the code was doing. I like a printk better than a dprintk myself ....

New patch.

P.

diff --git a/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c b/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c
index ae9b503..6e9c2b3 100644
--- a/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c
+++ b/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c
@@ -590,6 +590,24 @@ static const struct dmi_system_id sw_any_bug_dmi_table[] = {
 };
 #endif
 
+static int acpi_cpufreq_blacklist(struct cpuinfo_x86 *c)
+{
+	/* http://www.intel.com/Assets/PDF/specupdate/314554.pdf
+	 * AL30 â??A Machine Check Exception (MCE) Occurring during an
+	 * Enhanced Intel SpeedStep® Technology Ratio Change May Cause
+	 * Both Processor Cores to Lock Up */
+	if (c->x86_vendor == X86_VENDOR_INTEL) {
+		if ((c->x86 == 15) && (c->x86_model == 6) &&
+		    (c->x86_mask == 8)) {
+			printk(KERN_INFO "Intel(R) Xeon(R) 7100 processors "
+			       "are broken and may lock up on frequency "
+			       "changes: disabling acpi-cpufreq.\n");
+			return -ENODEV;
+		}
+	}
+	return 0;
+}
+
 static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy)
 {
 	unsigned int i;
@@ -602,6 +620,10 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy)
 
 	dprintk("acpi_cpufreq_cpu_init\n");
 
+	result = acpi_cpufreq_blacklist(c);
+	if (result)
+		return result;
+
 	data = kzalloc(sizeof(struct acpi_cpufreq_data), GFP_KERNEL);
 	if (!data)
 		return -ENOMEM;

[Index of Archives]     [Linux Kernel Devel]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Forum]     [Linux SCSI]

  Powered by Linux