diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-03-26 00:01:43 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-03-26 00:01:43 -0400 |
commit | 5aafdea448fb86412a6f8e46df518c1545d32436 (patch) | |
tree | c8e7b57382628873a26b15fbda1f41b527ad1c0b /drivers/acpi | |
parent | 56a9ccb7ba5ffd5f285e3a9628cb446192c8639c (diff) | |
parent | eca67315e0e0d5fd91264d79c88694006dbc7d31 (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.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 @@ | |||
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); |