summaryrefslogtreecommitdiff
path: root/drivers/acpi/processor_pdc.c
diff options
context:
space:
mode:
authorLen Brown <len.brown@intel.com>2010-01-20 01:26:22 -0500
committerLen Brown <len.brown@intel.com>2010-01-20 01:26:22 -0500
commit418521deef3b3dd478a54e4e21d983e010c848f7 (patch)
treee5f42f899edfdab08f842188eede783ad48893cd /drivers/acpi/processor_pdc.c
parentbe6066f34c948ccf4adcc90bbeb1fd335d663303 (diff)
parent2205cbe8ecaf5f3ab911cef839c94d05ea5b0c76 (diff)
Merge branch 'bugzilla-14954' into release
Diffstat (limited to 'drivers/acpi/processor_pdc.c')
-rw-r--r--drivers/acpi/processor_pdc.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/drivers/acpi/processor_pdc.c b/drivers/acpi/processor_pdc.c
index 7d4ee394d0b3..7247819dbd80 100644
--- a/drivers/acpi/processor_pdc.c
+++ b/drivers/acpi/processor_pdc.c
@@ -144,6 +144,29 @@ void acpi_processor_set_pdc(acpi_handle handle)
}
EXPORT_SYMBOL_GPL(acpi_processor_set_pdc);
+static int early_pdc_optin;
+static int set_early_pdc_optin(const struct dmi_system_id *id)
+{
+ early_pdc_optin = 1;
+ return 0;
+}
+
+static struct dmi_system_id __cpuinitdata early_pdc_optin_table[] = {
+ {
+ set_early_pdc_optin, "HP Envy", {
+ DMI_MATCH(DMI_BIOS_VENDOR, "Hewlett-Packard"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "HP Envy") }, NULL},
+ {
+ set_early_pdc_optin, "HP Pavilion dv6", {
+ DMI_MATCH(DMI_BIOS_VENDOR, "Hewlett-Packard"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion dv6") }, NULL},
+ {
+ set_early_pdc_optin, "HP Pavilion dv7", {
+ DMI_MATCH(DMI_BIOS_VENDOR, "Hewlett-Packard"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion dv7") }, NULL},
+ {},
+};
+
static acpi_status
early_init_pdc(acpi_handle handle, u32 lvl, void *context, void **rv)
{
@@ -159,6 +182,13 @@ void __init acpi_early_processor_set_pdc(void)
*/
dmi_check_system(processor_idle_dmi_table);
+ /*
+ * Allow systems to opt-in to early _PDC evaluation.
+ */
+ dmi_check_system(early_pdc_optin_table);
+ if (!early_pdc_optin)
+ return;
+
acpi_walk_namespace(ACPI_TYPE_PROCESSOR, ACPI_ROOT_OBJECT,
ACPI_UINT32_MAX,
early_init_pdc, NULL, NULL, NULL);