|
@@ -64,7 +64,13 @@ static DEFINE_MUTEX(performance_mutex);
|
|
|
* policy is adjusted accordingly.
|
|
|
*/
|
|
|
|
|
|
-static unsigned int ignore_ppc = 0;
|
|
|
+/* ignore_ppc:
|
|
|
+ * -1 -> cpufreq low level drivers not initialized -> _PSS, etc. not called yet
|
|
|
+ * ignore _PPC
|
|
|
+ * 0 -> cpufreq low level drivers initialized -> consider _PPC values
|
|
|
+ * 1 -> ignore _PPC totally -> forced by user through boot param
|
|
|
+ */
|
|
|
+static unsigned int ignore_ppc = -1;
|
|
|
module_param(ignore_ppc, uint, 0644);
|
|
|
MODULE_PARM_DESC(ignore_ppc, "If the frequency of your machine gets wrongly" \
|
|
|
"limited by BIOS, this should help");
|
|
@@ -72,7 +78,7 @@ MODULE_PARM_DESC(ignore_ppc, "If the frequency of your machine gets wrongly" \
|
|
|
#define PPC_REGISTERED 1
|
|
|
#define PPC_IN_USE 2
|
|
|
|
|
|
-static int acpi_processor_ppc_status = 0;
|
|
|
+static int acpi_processor_ppc_status;
|
|
|
|
|
|
static int acpi_processor_ppc_notifier(struct notifier_block *nb,
|
|
|
unsigned long event, void *data)
|
|
@@ -81,6 +87,11 @@ static int acpi_processor_ppc_notifier(struct notifier_block *nb,
|
|
|
struct acpi_processor *pr;
|
|
|
unsigned int ppc = 0;
|
|
|
|
|
|
+ if (event == CPUFREQ_START && ignore_ppc <= 0) {
|
|
|
+ ignore_ppc = 0;
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
if (ignore_ppc)
|
|
|
return 0;
|
|
|
|