Re: [PATCH v3 1/1] PCI/ERR: Fix reset logic in pcie_do_recovery() call

From: Kuppuswamy, Sathyanarayanan
Date: Wed Sep 23 2020 - 22:04:42 EST




On 9/23/20 6:15 PM, Sinan Kaya wrote:
On 9/22/2020 7:44 PM, Kuppuswamy, Sathyanarayanan wrote:
here does the restore happen here?  I.e., what function does this?

DLLSC link down event will remove affected devices/drivers. And link up
event
will re-create all devices.

on DLLSC link down event
->pciehp_ist()
  ->pciehp_handle_presence_or_link_change()
    ->pciehp_disable_slot()
      ->__pciehp_disable_slot()
        ->remove_board()
          ->pciehp_unconfigure_device()

on DLLSC link up event
->pciehp_ist()
  ->pciehp_handle_presence_or_link_change()
    ->pciehp_enable_slot()
      ->__pciehp_enable_slot()
        ->board_added()
          ->pciehp_configure_device()

AFAIK, DLLSC is a requirement not optional. Why is this not supported by
non-hotplug ports?
Its required for hotplug capable ports. Please check PCIe spec v5.0 sec 6.7.3.3.

The Data Link Layer State Changed event provides an indication that the state of
the Data Link Layer Link Active bit in the Link Status Register has changed.
Support for Data Link Layer State Changed events and software notification of these
events are required for hot-plug capable Downstream Ports.



--
Sathyanarayanan Kuppuswamy
Linux Kernel Developer