On Sun, Mar 28, 2021 at 10:52:00AM +0200, Lukas Wunner wrote: > Downstream Port Containment (PCIe Base Spec, sec. 6.2.10) disables the > link upon an error and attempts to re-enable it when instructed by the > DPC driver. > > A slot which is both DPC- and hotplug-capable is currently brought down > by pciehp once DPC is triggered (due to the link change) and brought up > on successful recovery. That's undesirable, the slot should remain up > so that the hotplugged device remains bound to its driver. DPC notifies > the driver of the error and of successful recovery in pcie_do_recovery() > and the driver may then restore the device to working state. This is a bit strange. The PCIe spec says DPC capable ports suppress Link Down events specifically because it will confuse hot-plug surprise ports if you don't do that. I'm specifically looking at the "Implementation Note" in PCIe Base Spec 5.0 section 6.10.2.4. Do these ports have out-of-band Precense Detect capabilities? If so, we can ignore Link Down events on DPC capable ports as long as PCIe Slot Status PDC isn't set.