PCI: portdrv: Restore PCI config state on slot reset
The port's config space may be cleared after a link reset, which wipes out the bridge's bus and memory windows. Restore the config space that was saved during probe so we can access downstream devices. Signed-off-by: Keith Busch <keith.busch@intel.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Reviewed-by: Sinan Kaya <okaya@kernel.org>
This commit is contained in:
Родитель
c29de84149
Коммит
874b325111
|
@ -146,6 +146,13 @@ static pci_ers_result_t pcie_portdrv_error_detected(struct pci_dev *dev,
|
|||
return PCI_ERS_RESULT_CAN_RECOVER;
|
||||
}
|
||||
|
||||
static pci_ers_result_t pcie_portdrv_slot_reset(struct pci_dev *dev)
|
||||
{
|
||||
pci_restore_state(dev);
|
||||
pci_save_state(dev);
|
||||
return PCI_ERS_RESULT_RECOVERED;
|
||||
}
|
||||
|
||||
static pci_ers_result_t pcie_portdrv_mmio_enabled(struct pci_dev *dev)
|
||||
{
|
||||
return PCI_ERS_RESULT_RECOVERED;
|
||||
|
@ -185,6 +192,7 @@ static const struct pci_device_id port_pci_ids[] = { {
|
|||
|
||||
static const struct pci_error_handlers pcie_portdrv_err_handler = {
|
||||
.error_detected = pcie_portdrv_error_detected,
|
||||
.slot_reset = pcie_portdrv_slot_reset,
|
||||
.mmio_enabled = pcie_portdrv_mmio_enabled,
|
||||
.resume = pcie_portdrv_err_resume,
|
||||
};
|
||||
|
|
Загрузка…
Ссылка в новой задаче