diff options
Diffstat (limited to 'drivers/acpi/pci_root.c')
-rw-r--r-- | drivers/acpi/pci_root.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/acpi/pci_root.c b/drivers/acpi/pci_root.c index e6ae603ed1a1..cd4de7e038ea 100644 --- a/drivers/acpi/pci_root.c +++ b/drivers/acpi/pci_root.c | |||
@@ -35,6 +35,7 @@ | |||
35 | #include <linux/pci-aspm.h> | 35 | #include <linux/pci-aspm.h> |
36 | #include <linux/acpi.h> | 36 | #include <linux/acpi.h> |
37 | #include <linux/slab.h> | 37 | #include <linux/slab.h> |
38 | #include <linux/dmi.h> | ||
38 | #include <acpi/apei.h> /* for acpi_hest_init() */ | 39 | #include <acpi/apei.h> /* for acpi_hest_init() */ |
39 | 40 | ||
40 | #include "internal.h" | 41 | #include "internal.h" |
@@ -430,6 +431,19 @@ static void negotiate_os_control(struct acpi_pci_root *root, int *no_aspm, | |||
430 | acpi_handle handle = device->handle; | 431 | acpi_handle handle = device->handle; |
431 | 432 | ||
432 | /* | 433 | /* |
434 | * Apple always return failure on _OSC calls when _OSI("Darwin") has | ||
435 | * been called successfully. We know the feature set supported by the | ||
436 | * platform, so avoid calling _OSC at all | ||
437 | */ | ||
438 | |||
439 | if (dmi_match(DMI_SYS_VENDOR, "Apple Inc.")) { | ||
440 | root->osc_control_set = ~OSC_PCI_EXPRESS_PME_CONTROL; | ||
441 | decode_osc_control(root, "OS assumes control of", | ||
442 | root->osc_control_set); | ||
443 | return; | ||
444 | } | ||
445 | |||
446 | /* | ||
433 | * All supported architectures that use ACPI have support for | 447 | * All supported architectures that use ACPI have support for |
434 | * PCI domains, so we indicate this in _OSC support capabilities. | 448 | * PCI domains, so we indicate this in _OSC support capabilities. |
435 | */ | 449 | */ |