PCI/portdrv: Report reset for frozen channel
The PCI error recovery always resets the link for a frozen state, so the port driver should return that a reset is required for its result. This will get the .slot_reset() callback invoked, which is necessary to restore the port's config space. Without this, the driver had been relying on downstream drivers to return this status. Link: https://lore.kernel.org/r/20210104230300.1277180-6-kbusch@kernel.org Tested-by: Hedi Berriche <hedi.berriche@hpe.com> Signed-off-by: Keith Busch <kbusch@kernel.org> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Acked-by: Hedi Berriche <hedi.berriche@hpe.com>
This commit is contained in:
parent
33ac78bd3b
commit
ba952824e6
1 changed files with 2 additions and 1 deletions
|
@ -153,7 +153,8 @@ static void pcie_portdrv_remove(struct pci_dev *dev)
|
||||||
static pci_ers_result_t pcie_portdrv_error_detected(struct pci_dev *dev,
|
static pci_ers_result_t pcie_portdrv_error_detected(struct pci_dev *dev,
|
||||||
pci_channel_state_t error)
|
pci_channel_state_t error)
|
||||||
{
|
{
|
||||||
/* Root Port has no impact. Always recovers. */
|
if (error == pci_channel_io_frozen)
|
||||||
|
return PCI_ERS_RESULT_NEED_RESET;
|
||||||
return PCI_ERS_RESULT_CAN_RECOVER;
|
return PCI_ERS_RESULT_CAN_RECOVER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue