]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commitdiff
UBUNTU: SAUCE: (no-up) Allow filtering of cpufreq drivers
authorTim Gardner <tim.gardner@canonical.com>
Tue, 24 Apr 2012 17:47:18 +0000 (11:47 -0600)
committerSeth Forshee <seth.forshee@canonical.com>
Mon, 29 Jan 2018 13:44:48 +0000 (07:44 -0600)
Harmless patch that allows k8 powernow machines to boot. Carry until
conflict.

BugLink: http://bugs.launchpad.net/bugs/984288
Acked-by: Stefan Bader <stefan.bader@canonical.com>
Acked-by: Herton Krzesinski <herton.krzesinski@canonical.com>
Signed-off-by: Tim Gardner <tim.gardner@canonical.com>
Documentation/admin-guide/kernel-parameters.txt
drivers/cpufreq/cpufreq.c

index 46b26bfee27ba81267703a1ceac7c0e082f1e5ec..ac5d6a155cc10ed979eccd48df81ba230c6f9a1f 100644 (file)
                        0: default value, disable debugging
                        1: enable debugging at boot time
 
+       cpufreq_driver= [X86] Allow only the named cpu frequency scaling driver
+                       to register. Example: cpufreq_driver=powernow-k8
+                       Format: { none | STRING }
+
        cpuidle.off=1   [CPU_IDLE]
                        disable the cpuidle sub-system
 
index 41d148af77482a4f93bd2c415f936052302be507..50211fa684d5e7ab0e86696ded0b684910650f53 100644 (file)
@@ -2455,6 +2455,20 @@ static int cpuhp_cpufreq_offline(unsigned int cpu)
        return 0;
 }
 
+static char cpufreq_driver_name[CPUFREQ_NAME_LEN];
+
+static int __init cpufreq_driver_setup(char *str)
+{
+       strlcpy(cpufreq_driver_name, str, CPUFREQ_NAME_LEN);
+       return 1;
+}
+
+/*
+ * Set this name to only allow one specific cpu freq driver, e.g.,
+ * cpufreq_driver=powernow-k8
+ */
+__setup("cpufreq_driver=", cpufreq_driver_setup);
+
 /**
  * cpufreq_register_driver - register a CPU Frequency driver
  * @driver_data: A struct cpufreq_driver containing the values#
@@ -2481,7 +2495,13 @@ int cpufreq_register_driver(struct cpufreq_driver *driver_data)
             (!!driver_data->get_intermediate != !!driver_data->target_intermediate))
                return -EINVAL;
 
-       pr_debug("trying to register driver %s\n", driver_data->name);
+       pr_debug("trying to register driver %s, cpufreq_driver=%s\n",
+               driver_data->name, cpufreq_driver_name);
+
+       if (cpufreq_driver_name[0])
+               if (!driver_data->name ||
+                       strcmp(cpufreq_driver_name, driver_data->name))
+                               return -EINVAL;
 
        /* Protect against concurrent CPU online/offline. */
        cpus_read_lock();