Re: [PATCH 2/2] e_powersaver: Require setting a module parameter to enable it

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


The Kconfig text and comment at the top of the file say this is
DANGEROUS.  According to Rafał Bilski it is not so bad as it used to
be, but he still didn't think it should be auto-loaded.

Rafał already made a similar change to longhaul.

Signed-off-by: Ben Hutchings <ben@xxxxxxxxxxxxxxx>
  drivers/cpufreq/e_powersaver.c | 9 +++++++++
  1 file changed, 9 insertions(+)

diff --git a/drivers/cpufreq/e_powersaver.c b/drivers/cpufreq/e_powersaver.c
index a0d2a42..880be39 100644
--- a/drivers/cpufreq/e_powersaver.c
+++ b/drivers/cpufreq/e_powersaver.c
@@ -45,6 +45,7 @@ static struct eps_cpu_data *eps_cpu[NR_CPUS];
  static int freq_failsafe_off;
  static int voltage_failsafe_off;
  static int set_max_voltage;
+static int enable;
  static int ignore_acpi_limit;
@@ -410,6 +411,10 @@ static int __init eps_init(void)
  	if (!x86_match_cpu(eps_cpu_id) || boot_cpu_data.x86_model < 10)
  		return -ENODEV;
+	if (!enable) {
+		printk(KERN_ERR "eps: Option \"enable\" not set. Aborting.\n");
+		return -ENODEV;
+	}
  	if (cpufreq_register_driver(&eps_driver))
  		return -EINVAL;
  	return 0;
@@ -432,6 +437,10 @@ MODULE_PARM_DESC(ignore_acpi_limit, "Don't check ACPI's processor speed limit");
  module_param(set_max_voltage, int, 0644);
  MODULE_PARM_DESC(set_max_voltage, "Set maximum CPU voltage (mV) C7-M only");
+/* By default driver is disabled to prevent incompatible
+ * system freeze. */
+module_param(enable, int, 0644);
+MODULE_PARM_DESC(enable, "Enable driver");
MODULE_AUTHOR("Rafal Bilski <rafalbilski@xxxxxxxxxx>");
  MODULE_DESCRIPTION("Enhanced PowerSaver driver for VIA C7 CPU's.");

Actually that's quite good solution for conflict between ACPI P-states driver and this
driver. In this way ACPI will always be loaded first unless user will choose otherwise.
I would like to point out that this text and one in Kconfig is a bit incorrect. Processor
won't allow any frequency outside it's limits by design. Processor may get overheated
if system isn't designed for CPU to run at full frequency and BIOS sets limits by means
of P-states tables. Otherwise only difference is ACPI P-states driver seems to be using
SMI to change frequency while e_powersaver uses MSRs.

Rafał Bilski
To unsubscribe from this list: send the line "unsubscribe cpufreq" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at

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

  Powered by Linux