aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2011-03-26 00:01:43 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2011-03-26 00:01:43 -0400
commit5aafdea448fb86412a6f8e46df518c1545d32436 (patch)
treec8e7b57382628873a26b15fbda1f41b527ad1c0b /drivers/acpi
parent56a9ccb7ba5ffd5f285e3a9628cb446192c8639c (diff)
parenteca67315e0e0d5fd91264d79c88694006dbc7d31 (diff)
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.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/acpi/pci_root.c b/drivers/acpi/pci_root.c
index 85249395623..f911a2f8cc3 100644
--- a/drivers/acpi/pci_root.c
+++ b/drivers/acpi/pci_root.c
@@ -32,6 +32,7 @@
32#include <linux/pm_runtime.h> 32#include <linux/pm_runtime.h>
33#include <linux/pci.h> 33#include <linux/pci.h>
34#include <linux/pci-acpi.h> 34#include <linux/pci-acpi.h>
35#include <linux/pci-aspm.h>
35#include <linux/acpi.h> 36#include <linux/acpi.h>
36#include <linux/slab.h> 37#include <linux/slab.h>
37#include <acpi/acpi_bus.h> 38#include <acpi/acpi_bus.h>
@@ -564,7 +565,7 @@ static int __devinit acpi_pci_root_add(struct acpi_device *device)
564 /* Indicate support for various _OSC capabilities. */ 565 /* Indicate support for various _OSC capabilities. */
565 if (pci_ext_cfg_avail(root->bus->self)) 566 if (pci_ext_cfg_avail(root->bus->self))
566 flags |= OSC_EXT_PCI_CONFIG_SUPPORT; 567 flags |= OSC_EXT_PCI_CONFIG_SUPPORT;
567 if (pcie_aspm_enabled()) 568 if (pcie_aspm_support_enabled())
568 flags |= OSC_ACTIVE_STATE_PWR_SUPPORT | 569 flags |= OSC_ACTIVE_STATE_PWR_SUPPORT |
569 OSC_CLOCK_PWR_CAPABILITY_SUPPORT; 570 OSC_CLOCK_PWR_CAPABILITY_SUPPORT;
570 if (pci_msi_enabled()) 571 if (pci_msi_enabled())
@@ -591,12 +592,16 @@ static int __devinit acpi_pci_root_add(struct acpi_device *device)
591 592
592 status = acpi_pci_osc_control_set(device->handle, &flags, 593 status = acpi_pci_osc_control_set(device->handle, &flags,
593 OSC_PCI_EXPRESS_CAP_STRUCTURE_CONTROL); 594 OSC_PCI_EXPRESS_CAP_STRUCTURE_CONTROL);
594 if (ACPI_SUCCESS(status)) 595 if (ACPI_SUCCESS(status)) {
595 dev_info(root->bus->bridge, 596 dev_info(root->bus->bridge,
596 "ACPI _OSC control (0x%02x) granted\n", flags); 597 "ACPI _OSC control (0x%02x) granted\n", flags);
597 else 598 } else {
598 dev_dbg(root->bus->bridge, 599 dev_dbg(root->bus->bridge,
599 "ACPI _OSC request failed (code %d)\n", status); 600 "ACPI _OSC request failed (code %d)\n", status);
601 printk(KERN_INFO "Unable to assume _OSC PCIe control. "
602 "Disabling ASPM\n");
603 pcie_no_aspm();
604 }
600 } 605 }
601 606
602 pci_acpi_add_bus_pm_notifier(device, root->bus); 607 pci_acpi_add_bus_pm_notifier(device, root->bus);