lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Wed, 20 Aug 2008 19:02:06 +0200
From:	Thomas Renninger <trenn@...e.de>
To:	linux-kernel@...r.kernel.org
Cc:	ak@...ux.intel.com, len.brown@...el.com, arjan@...ux.intel.com,
	bjorn.helgaas@...com, linux-acpi@...r.kernel.org,
	Thomas Renninger <trenn@...e.de>
Subject: [PATCH 3/3] acpi-cpufreq: Make use of firmware bug report interface

Enhance check for processor cpufreq support, but missing or wrong ACPI
cpufreq package information. This often happens if the BIOS is older
as the CPU. Users should be told to update the BIOS then.

Not sure whether the check will show false negatives, e.g. some old
Pentium M (Banias/Dothan) worked with static compiled-in cpufreq tables.
-> needs review.
Best probably is to check whether a _PPC function exists in the processor
object, but this must be done in drivers/acpi/processor_*.c.
This should always be an indicator for an too old BIOS.

Signed-off-by: Thomas Renninger <trenn@...e.de>
---
 arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c |   16 +++++++++++++++-
 1 files changed, 15 insertions(+), 1 deletions(-)

diff --git a/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c b/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c
index dd097b8..1288142 100644
--- a/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c
+++ b/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c
@@ -26,6 +26,7 @@
  */
 
 #include <linux/kernel.h>
+#include <linux/firmware_error.h>
 #include <linux/module.h>
 #include <linux/init.h>
 #include <linux/smp.h>
@@ -67,6 +68,8 @@ struct acpi_cpufreq_data {
 	unsigned int cpu_feature;
 };
 
+#define PFX "acpi-cpufreq: "
+
 static DEFINE_PER_CPU(struct acpi_cpufreq_data *, drv_data);
 
 /* acpi_perf_data is a pointer to percpu data. */
@@ -354,7 +357,12 @@ static unsigned int get_cur_freq_on_cpu(unsigned int cpu)
 		/*
 		 * The dreaded BIOS frequency change behind our back.
 		 * Force set the frequency on next target call.
+		 * Dell tends to do this on their laptops and it is evil.
 		 */
+		FW_PRINT_WARN(FW_WARN, PFX " BIOS must not change frequency "
+			      "on _PPC changes, let OS do this");
+
+		
 		data->resume = 1;
 	}
 
@@ -587,8 +595,14 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy)
 		acpi_cpufreq_driver.flags |= CPUFREQ_CONST_LOOPS;
 
 	result = acpi_processor_register_performance(data->acpi_data, cpu);
-	if (result)
+	if (result) {
+		if (cpu_has(c, X86_FEATURE_EST)) {
+			FW_PRINT_CRIT(FW_ERR, PFX "Speedstep supported, but "
+				      "invalid ACPI CPU information, BIOS "
+				      "update needed");
+		}
 		goto err_free;
+	}
 
 	perf = data->acpi_data;
 	policy->shared_type = perf->shared_type;
-- 
1.5.4.5

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ