diff options
author | Alex Chiang <achiang@hp.com> | 2009-12-20 14:19:09 -0500 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2009-12-22 03:24:08 -0500 |
commit | 78f1699659963fff97975df44db6d5dbe7218e55 (patch) | |
tree | 929291454d6d86a523c9b3881eb8cc40d65a11fc /drivers/acpi/internal.h | |
parent | 55639353a0035052d9ea6cfe4dde0ac7fcbb2c9f (diff) |
ACPI: processor: call _PDC early
We discovered that at least one machine (HP Envy), methods in the DSDT
attempt to call external methods defined in a dynamically loaded SSDT.
Unfortunately, the DSDT methods we are trying to call are part of the
EC initialization, which happens very early, and the the dynamic SSDT
is only loaded when a processor _PDC method runs much later.
This results in namespace lookup errors for the (as of yet) undefined
methods.
Since Windows doesn't have any issues with this machine, we take it
as a hint that they must be evaluating _PDC much earlier than we are.
Thus, the proper thing for Linux to do should be to match the Windows
implementation more closely.
Provide a mechanism to call _PDC before we enable the EC. Doing so loads
the dynamic tables, and allows the EC to be enabled correctly.
The ACPI processor driver will still evaluate _PDC in its .add() method
to cover the hotplug case.
Resolves: http://bugzilla.kernel.org/show_bug.cgi?id=14824
Cc: ming.m.lin@intel.com
Signed-off-by: Alex Chiang <achiang@hp.com>
Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/acpi/internal.h')
-rw-r--r-- | drivers/acpi/internal.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/acpi/internal.h b/drivers/acpi/internal.h index 074cf8682d52..cb28e0502acc 100644 --- a/drivers/acpi/internal.h +++ b/drivers/acpi/internal.h | |||
@@ -43,6 +43,7 @@ int acpi_power_transition(struct acpi_device *device, int state); | |||
43 | extern int acpi_power_nocheck; | 43 | extern int acpi_power_nocheck; |
44 | 44 | ||
45 | int acpi_wakeup_device_init(void); | 45 | int acpi_wakeup_device_init(void); |
46 | void acpi_early_processor_set_pdc(void); | ||
46 | 47 | ||
47 | /* -------------------------------------------------------------------------- | 48 | /* -------------------------------------------------------------------------- |
48 | Embedded Controller | 49 | Embedded Controller |