Commit 47f8bcf3 authored by Matthew Garrett's avatar Matthew Garrett Committed by Dave Jones

[CPUFREQ] pcc driver should check for pcch method before calling _OSC

The pcc specification documents an _OSC method that's incompatible with the
one defined as part of the ACPI spec. This shouldn't be a problem as both
are supposed to be guarded with a UUID. Unfortunately approximately nobody
(including HP, who wrote this spec) properly check the UUID on entry to the
_OSC call. Right now this could result in surprising behaviour if the pcc
driver performs an _OSC call on a machine that doesn't implement the pcc
specification. Check whether the PCCH method exists first in order to reduce
this probability.
Signed-off-by: default avatarMatthew Garrett <mjg@redhat.com>
Cc: Naga Chumbalkar <nagananda.chumbalkar@hp.com>
Signed-off-by: default avatarDave Jones <davej@redhat.com>
parent 6f90388a
...@@ -397,13 +397,17 @@ static int __init pcc_cpufreq_probe(void) ...@@ -397,13 +397,17 @@ static int __init pcc_cpufreq_probe(void)
struct pcc_memory_resource *mem_resource; struct pcc_memory_resource *mem_resource;
struct pcc_register_resource *reg_resource; struct pcc_register_resource *reg_resource;
union acpi_object *out_obj, *member; union acpi_object *out_obj, *member;
acpi_handle handle, osc_handle; acpi_handle handle, osc_handle, pcch_handle;
int ret = 0; int ret = 0;
status = acpi_get_handle(NULL, "\\_SB", &handle); status = acpi_get_handle(NULL, "\\_SB", &handle);
if (ACPI_FAILURE(status)) if (ACPI_FAILURE(status))
return -ENODEV; return -ENODEV;
status = acpi_get_handle(handle, "PCCH", &pcch_handle);
if (ACPI_FAILURE(status))
return -ENODEV;
status = acpi_get_handle(handle, "_OSC", &osc_handle); status = acpi_get_handle(handle, "_OSC", &osc_handle);
if (ACPI_SUCCESS(status)) { if (ACPI_SUCCESS(status)) {
ret = pcc_cpufreq_do_osc(&osc_handle); ret = pcc_cpufreq_do_osc(&osc_handle);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment