diff options
author | Bjorn Helgaas <bhelgaas@google.com> | 2015-04-10 09:27:18 -0400 |
---|---|---|
committer | Bjorn Helgaas <bhelgaas@google.com> | 2015-04-10 09:27:18 -0400 |
commit | 5468d5a64bf1e002e5081fa280186d0eba09fa0e (patch) | |
tree | a9c1500d4b0cfb9db1f822dc1357c184b0f2f188 /drivers/acpi | |
parent | 4dd1f57956ada782fd80b1c11c30a9595d6caafc (diff) | |
parent | 55db3208f238ee776f1f747734051723d8a3c13e (diff) |
Merge branch 'pci/misc' into next
* pci/misc:
PCI: Read capability list as dwords, not bytes
PCI: Don't clear ASPM bits when the FADT declares it's unsupported
PCI: Clarify policy for vendor IDs in pci.txt
PCI/ACPI: Optimize device state transition delays
PCI: Export pci_find_host_bridge() for use inside PCI core
PCI: Make a shareable UUID for PCI firmware ACPI _DSM
PCI: Fix typo in Thunderbolt kernel message
Diffstat (limited to 'drivers/acpi')
-rw-r--r-- | drivers/acpi/pci_root.c | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/drivers/acpi/pci_root.c b/drivers/acpi/pci_root.c index 68a5f712cd19..1b5569c092c6 100644 --- a/drivers/acpi/pci_root.c +++ b/drivers/acpi/pci_root.c | |||
@@ -423,8 +423,7 @@ out: | |||
423 | } | 423 | } |
424 | EXPORT_SYMBOL(acpi_pci_osc_control_set); | 424 | EXPORT_SYMBOL(acpi_pci_osc_control_set); |
425 | 425 | ||
426 | static void negotiate_os_control(struct acpi_pci_root *root, int *no_aspm, | 426 | static void negotiate_os_control(struct acpi_pci_root *root, int *no_aspm) |
427 | int *clear_aspm) | ||
428 | { | 427 | { |
429 | u32 support, control, requested; | 428 | u32 support, control, requested; |
430 | acpi_status status; | 429 | acpi_status status; |
@@ -495,10 +494,12 @@ static void negotiate_os_control(struct acpi_pci_root *root, int *no_aspm, | |||
495 | decode_osc_control(root, "OS now controls", control); | 494 | decode_osc_control(root, "OS now controls", control); |
496 | if (acpi_gbl_FADT.boot_flags & ACPI_FADT_NO_ASPM) { | 495 | if (acpi_gbl_FADT.boot_flags & ACPI_FADT_NO_ASPM) { |
497 | /* | 496 | /* |
498 | * We have ASPM control, but the FADT indicates | 497 | * We have ASPM control, but the FADT indicates that |
499 | * that it's unsupported. Clear it. | 498 | * it's unsupported. Leave existing configuration |
499 | * intact and prevent the OS from touching it. | ||
500 | */ | 500 | */ |
501 | *clear_aspm = 1; | 501 | dev_info(&device->dev, "FADT indicates ASPM is unsupported, using BIOS configuration\n"); |
502 | *no_aspm = 1; | ||
502 | } | 503 | } |
503 | } else { | 504 | } else { |
504 | decode_osc_control(root, "OS requested", requested); | 505 | decode_osc_control(root, "OS requested", requested); |
@@ -525,7 +526,7 @@ static int acpi_pci_root_add(struct acpi_device *device, | |||
525 | int result; | 526 | int result; |
526 | struct acpi_pci_root *root; | 527 | struct acpi_pci_root *root; |
527 | acpi_handle handle = device->handle; | 528 | acpi_handle handle = device->handle; |
528 | int no_aspm = 0, clear_aspm = 0; | 529 | int no_aspm = 0; |
529 | bool hotadd = system_state != SYSTEM_BOOTING; | 530 | bool hotadd = system_state != SYSTEM_BOOTING; |
530 | 531 | ||
531 | root = kzalloc(sizeof(struct acpi_pci_root), GFP_KERNEL); | 532 | root = kzalloc(sizeof(struct acpi_pci_root), GFP_KERNEL); |
@@ -584,7 +585,7 @@ static int acpi_pci_root_add(struct acpi_device *device, | |||
584 | 585 | ||
585 | root->mcfg_addr = acpi_pci_root_get_mcfg_addr(handle); | 586 | root->mcfg_addr = acpi_pci_root_get_mcfg_addr(handle); |
586 | 587 | ||
587 | negotiate_os_control(root, &no_aspm, &clear_aspm); | 588 | negotiate_os_control(root, &no_aspm); |
588 | 589 | ||
589 | /* | 590 | /* |
590 | * TBD: Need PCI interface for enumeration/configuration of roots. | 591 | * TBD: Need PCI interface for enumeration/configuration of roots. |
@@ -607,10 +608,6 @@ static int acpi_pci_root_add(struct acpi_device *device, | |||
607 | goto remove_dmar; | 608 | goto remove_dmar; |
608 | } | 609 | } |
609 | 610 | ||
610 | if (clear_aspm) { | ||
611 | dev_info(&device->dev, "Disabling ASPM (FADT indicates it is unsupported)\n"); | ||
612 | pcie_clear_aspm(root->bus); | ||
613 | } | ||
614 | if (no_aspm) | 611 | if (no_aspm) |
615 | pcie_no_aspm(); | 612 | pcie_no_aspm(); |
616 | 613 | ||