diff options
| -rw-r--r-- | drivers/acpi/processor_pdc.c | 30 |
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) | |||
| 144 | } | 144 | } |
| 145 | EXPORT_SYMBOL_GPL(acpi_processor_set_pdc); | 145 | EXPORT_SYMBOL_GPL(acpi_processor_set_pdc); |
| 146 | 146 | ||
| 147 | static int early_pdc_optin; | ||
| 148 | static int set_early_pdc_optin(const struct dmi_system_id *id) | ||
| 149 | { | ||
| 150 | early_pdc_optin = 1; | ||
| 151 | return 0; | ||
| 152 | } | ||
| 153 | |||
| 154 | static struct dmi_system_id __cpuinitdata early_pdc_optin_table[] = { | ||
| 155 | { | ||
| 156 | set_early_pdc_optin, "HP Envy", { | ||
| 157 | DMI_MATCH(DMI_BIOS_VENDOR, "Hewlett-Packard"), | ||
| 158 | DMI_MATCH(DMI_PRODUCT_NAME, "HP Envy") }, NULL}, | ||
| 159 | { | ||
| 160 | set_early_pdc_optin, "HP Pavilion dv6", { | ||
| 161 | DMI_MATCH(DMI_BIOS_VENDOR, "Hewlett-Packard"), | ||
| 162 | DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion dv6") }, NULL}, | ||
| 163 | { | ||
| 164 | set_early_pdc_optin, "HP Pavilion dv7", { | ||
| 165 | DMI_MATCH(DMI_BIOS_VENDOR, "Hewlett-Packard"), | ||
| 166 | DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion dv7") }, NULL}, | ||
| 167 | {}, | ||
| 168 | }; | ||
| 169 | |||
| 147 | static acpi_status | 170 | static acpi_status |
| 148 | early_init_pdc(acpi_handle handle, u32 lvl, void *context, void **rv) | 171 | early_init_pdc(acpi_handle handle, u32 lvl, void *context, void **rv) |
| 149 | { | 172 | { |
| @@ -159,6 +182,13 @@ void __init acpi_early_processor_set_pdc(void) | |||
| 159 | */ | 182 | */ |
| 160 | dmi_check_system(processor_idle_dmi_table); | 183 | dmi_check_system(processor_idle_dmi_table); |
| 161 | 184 | ||
| 185 | /* | ||
| 186 | * Allow systems to opt-in to early _PDC evaluation. | ||
| 187 | */ | ||
| 188 | dmi_check_system(early_pdc_optin_table); | ||
| 189 | if (!early_pdc_optin) | ||
| 190 | return; | ||
| 191 | |||
| 162 | acpi_walk_namespace(ACPI_TYPE_PROCESSOR, ACPI_ROOT_OBJECT, | 192 | acpi_walk_namespace(ACPI_TYPE_PROCESSOR, ACPI_ROOT_OBJECT, |
| 163 | ACPI_UINT32_MAX, | 193 | ACPI_UINT32_MAX, |
| 164 | early_init_pdc, NULL, NULL, NULL); | 194 | early_init_pdc, NULL, NULL, NULL); |
