Commit ab1225901da2d4cd2dcbae6840e93abbef417064

Authored by Mika Westerberg
Committed by Rafael J. Wysocki
1 parent 59612d1879

Revert "ACPI / hotplug / PCI: Avoid doing too much for spurious notifies"

Commit 2dc4128 (ACPI / hotplug / PCI: Avoid doing too much for
spurious notifies) changed the enable_slot() to check return value of
pci_scan_slot() and if it is zero return early from the function. It
means that there were no new devices in this particular slot.

However, if a device appeared deeper in the hierarchy the code now
ignores it causing things like Thunderbolt chaining fail to recognize
new devices.

The problem with Alex Williamson's machine was solved with commit
a47d8c8 (ACPI / hotplug / PCI: Avoid parent bus rescans on spurious
device checks) and hence we should be able to restore the original
functionality that we always rescan on bus check notification.

On a device check notification we still check what acpiphp_rescan_slot()
returns and on zero bail out early.

Fixes: 2dc41281b1d1 (ACPI / hotplug / PCI: Avoid doing too much for spurious notifies)
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Tested-by: Alex Williamson <alex.williamson@redhat.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

Showing 1 changed file with 1 additions and 5 deletions Side-by-side Diff

drivers/pci/hotplug/acpiphp_glue.c
... ... @@ -552,9 +552,8 @@
552 552 struct acpiphp_func *func;
553 553 int max, pass;
554 554 LIST_HEAD(add_list);
555   - int nr_found;
556 555  
557   - nr_found = acpiphp_rescan_slot(slot);
  556 + acpiphp_rescan_slot(slot);
558 557 max = acpiphp_max_busnr(bus);
559 558 for (pass = 0; pass < 2; pass++) {
560 559 list_for_each_entry(dev, &bus->devices, bus_list) {
... ... @@ -574,9 +573,6 @@
574 573 }
575 574 }
576 575 __pci_bus_assign_resources(bus, &add_list, NULL);
577   - /* Nothing more to do here if there are no new devices on this bus. */
578   - if (!nr_found && (slot->flags & SLOT_ENABLED))
579   - return;
580 576  
581 577 acpiphp_sanitize_bus(bus);
582 578 acpiphp_set_hpp_values(bus);