diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-03-26 05:01:43 +0100 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-03-26 05:01:43 +0100 |
commit | 5aafdea448fb86412a6f8e46df518c1545d32436 (patch) | |
tree | c8e7b57382628873a26b15fbda1f41b527ad1c0b /drivers/acpi | |
parent | Merge git://git.infradead.org/battery-2.6 (diff) | |
parent | PCI: Disable ASPM when _OSC control is not granted for PCIe services (diff) | |
download | linux-5aafdea448fb86412a6f8e46df518c1545d32436.tar.xz linux-5aafdea448fb86412a6f8e46df518c1545d32436.zip |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6:
PCI: Disable ASPM when _OSC control is not granted for PCIe services
PCI: Changing ASPM policy, via /sys, to POWERSAVE could cause NMIs
PCI: PCIe links may not get configured for ASPM under POWERSAVE mode
PCI/ACPI: Report ASPM support to BIOS if not disabled from command line
Diffstat (limited to 'drivers/acpi')
-rw-r--r-- | drivers/acpi/pci_root.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/acpi/pci_root.c b/drivers/acpi/pci_root.c index 85249395623b..f911a2f8cc34 100644 --- a/drivers/acpi/pci_root.c +++ b/drivers/acpi/pci_root.c @@ -32,6 +32,7 @@ #include <linux/pm_runtime.h> #include <linux/pci.h> #include <linux/pci-acpi.h> +#include <linux/pci-aspm.h> #include <linux/acpi.h> #include <linux/slab.h> #include <acpi/acpi_bus.h> @@ -564,7 +565,7 @@ static int __devinit acpi_pci_root_add(struct acpi_device *device) /* Indicate support for various _OSC capabilities. */ if (pci_ext_cfg_avail(root->bus->self)) flags |= OSC_EXT_PCI_CONFIG_SUPPORT; - if (pcie_aspm_enabled()) + if (pcie_aspm_support_enabled()) flags |= OSC_ACTIVE_STATE_PWR_SUPPORT | OSC_CLOCK_PWR_CAPABILITY_SUPPORT; if (pci_msi_enabled()) @@ -591,12 +592,16 @@ static int __devinit acpi_pci_root_add(struct acpi_device *device) status = acpi_pci_osc_control_set(device->handle, &flags, OSC_PCI_EXPRESS_CAP_STRUCTURE_CONTROL); - if (ACPI_SUCCESS(status)) + if (ACPI_SUCCESS(status)) { dev_info(root->bus->bridge, "ACPI _OSC control (0x%02x) granted\n", flags); - else + } else { dev_dbg(root->bus->bridge, "ACPI _OSC request failed (code %d)\n", status); + printk(KERN_INFO "Unable to assume _OSC PCIe control. " + "Disabling ASPM\n"); + pcie_no_aspm(); + } } pci_acpi_add_bus_pm_notifier(device, root->bus); |