diff options
| author | Zhang Rui <rui.zhang@intel.com> | 2009-05-11 09:35:57 +0800 | 
|---|---|---|
| committer | Len Brown <len.brown@intel.com> | 2009-05-15 23:21:43 -0400 | 
| commit | 56c213fa012f2bad9eff908292ff2500f840b020 (patch) | |
| tree | f4dad271e04fe7dabf02a0debf8945061083e146 /drivers/acpi/processor_throttling.c | |
| parent | 091bf7624d1c90cec9e578a18529f615213ff847 (diff) | |
| download | olio-linux-3.10-56c213fa012f2bad9eff908292ff2500f840b020.tar.xz olio-linux-3.10-56c213fa012f2bad9eff908292ff2500f840b020.zip  | |
ACPI processor: introduce module parameter processor.ignore_tpc
Introduce module parameter processor.ignore_tpc.
Some laptops are shipped with buggy _TPC,
this module parameter is used to to disable the buggy support.
http://bugzilla.kernel.org/show_bug.cgi?id=13259
Signed-off-by: Zhang Rui <rui.zhang@intel.com>
Tested-by: James Ettle <theholyettlz@googlemail.com>
Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/acpi/processor_throttling.c')
| -rw-r--r-- | drivers/acpi/processor_throttling.c | 17 | 
1 files changed, 17 insertions, 0 deletions
diff --git a/drivers/acpi/processor_throttling.c b/drivers/acpi/processor_throttling.c index d0d1f4d5043..5f09fb8c0e0 100644 --- a/drivers/acpi/processor_throttling.c +++ b/drivers/acpi/processor_throttling.c @@ -45,6 +45,14 @@  #define _COMPONENT              ACPI_PROCESSOR_COMPONENT  ACPI_MODULE_NAME("processor_throttling"); +/* ignore_tpc: + *  0 -> acpi processor driver doesn't ignore _TPC values + *  1 -> acpi processor driver ignores _TPC values + */ +static int ignore_tpc; +module_param(ignore_tpc, int, 0644); +MODULE_PARM_DESC(ignore_tpc, "Disable broken BIOS _TPC throttling support"); +  struct throttling_tstate {  	unsigned int cpu;		/* cpu nr */  	int target_state;		/* target T-state */ @@ -283,6 +291,10 @@ static int acpi_processor_get_platform_limit(struct acpi_processor *pr)  	if (!pr)  		return -EINVAL; + +	if (ignore_tpc) +		goto end; +  	status = acpi_evaluate_integer(pr->handle, "_TPC", NULL, &tpc);  	if (ACPI_FAILURE(status)) {  		if (status != AE_NOT_FOUND) { @@ -290,6 +302,8 @@ static int acpi_processor_get_platform_limit(struct acpi_processor *pr)  		}  		return -ENODEV;  	} + +end:  	pr->throttling_platform_limit = (int)tpc;  	return 0;  } @@ -302,6 +316,9 @@ int acpi_processor_tstate_has_changed(struct acpi_processor *pr)  	struct acpi_processor_limit *limit;  	int target_state; +	if (ignore_tpc) +		return 0; +  	result = acpi_processor_get_platform_limit(pr);  	if (result) {  		/* Throttling Limit is unsupported */  |