mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-29 07:04:10 +08:00
ACPI / hotplug / PCI: Runtime resume bridge before rescan
If a PCI bridge (or PCIe port) that is runtime suspended gets an ACPI hotplug event, such as BUS_CHECK we need to make sure it is resumed before devices below the bridge are re-scanned. Otherwise the devices behind the port are not accessible and will be treated as hot-unplugged. To fix this, resume PCI bridges from runtime suspend while rescanning. Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
parent
d963f6512e
commit
16468c783c
@ -675,6 +675,8 @@ static void acpiphp_check_bridge(struct acpiphp_bridge *bridge)
|
|||||||
if (bridge->is_going_away)
|
if (bridge->is_going_away)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
pm_runtime_get_sync(&bridge->pci_dev->dev);
|
||||||
|
|
||||||
list_for_each_entry(slot, &bridge->slots, node) {
|
list_for_each_entry(slot, &bridge->slots, node) {
|
||||||
struct pci_bus *bus = slot->bus;
|
struct pci_bus *bus = slot->bus;
|
||||||
struct pci_dev *dev, *tmp;
|
struct pci_dev *dev, *tmp;
|
||||||
@ -694,6 +696,8 @@ static void acpiphp_check_bridge(struct acpiphp_bridge *bridge)
|
|||||||
disable_slot(slot);
|
disable_slot(slot);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pm_runtime_put(&bridge->pci_dev->dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user