|
@@ -35,6 +35,7 @@
|
|
|
#include <linux/pci-aspm.h>
|
|
#include <linux/pci-aspm.h>
|
|
|
#include <linux/acpi.h>
|
|
#include <linux/acpi.h>
|
|
|
#include <linux/slab.h>
|
|
#include <linux/slab.h>
|
|
|
|
|
+#include <linux/dmi.h>
|
|
|
#include <acpi/apei.h> /* for acpi_hest_init() */
|
|
#include <acpi/apei.h> /* for acpi_hest_init() */
|
|
|
|
|
|
|
|
#include "internal.h"
|
|
#include "internal.h"
|
|
@@ -429,6 +430,19 @@ static void negotiate_os_control(struct acpi_pci_root *root, int *no_aspm,
|
|
|
struct acpi_device *device = root->device;
|
|
struct acpi_device *device = root->device;
|
|
|
acpi_handle handle = device->handle;
|
|
acpi_handle handle = device->handle;
|
|
|
|
|
|
|
|
|
|
+ /*
|
|
|
|
|
+ * Apple always return failure on _OSC calls when _OSI("Darwin") has
|
|
|
|
|
+ * been called successfully. We know the feature set supported by the
|
|
|
|
|
+ * platform, so avoid calling _OSC at all
|
|
|
|
|
+ */
|
|
|
|
|
+
|
|
|
|
|
+ if (dmi_match(DMI_SYS_VENDOR, "Apple Inc.")) {
|
|
|
|
|
+ root->osc_control_set = ~OSC_PCI_EXPRESS_PME_CONTROL;
|
|
|
|
|
+ decode_osc_control(root, "OS assumes control of",
|
|
|
|
|
+ root->osc_control_set);
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
/*
|
|
/*
|
|
|
* All supported architectures that use ACPI have support for
|
|
* All supported architectures that use ACPI have support for
|
|
|
* PCI domains, so we indicate this in _OSC support capabilities.
|
|
* PCI domains, so we indicate this in _OSC support capabilities.
|