On 3/14/2018 4:50 PM, Keith Busch wrote: > On Mon, Mar 12, 2018 at 11:47:12PM -0400, Sinan Kaya wrote: >> >> The spec is recommending code to use "Hotplug Surprise" to differentiate >> these two cases we are looking for. >> >> The use case Keith is looking for is for hotplug support. >> The case I and Oza are more interested is for error handling on platforms >> with no hotplug support. >> >> According to the spec, if "Hotplug Surprise" is set in slot capabilities, >> then hotplug driver handles link up and DPC driver doesn't interfere with >> its operation. Hotplug driver observes link up interrupt like it is doing today. >> When link up event is observed, hotplug driver will do the enumeration. >> >> If "Hotplug Surprise" bit is not set, it is the job of the DPC driver to >> bring up the link. I believe this path should follow the AER driver path >> as there is a very well defined error reporting and recovery framework >> in the code. >> >> The link comes back up automatically when DPC driver handles its interrupt >> very similar to what secondary bus reset does for AER. I don't believe >> there is a hotplug possibility under this condition since it is not supported >> to begin with. >> >> Should we plumb the "Hotplug Surprise" condition into the code to satisfy >> both cases and leave the error handling path according to this code series? > > I'm on board with this, but I think you mean "Hotplug Capable" rather > than "Hotplug Surprise". The former may co-exist with DPC and handles > the link-ups, leaving DPC responsible for handling the link-down. > Yes, we can go with "Hotplug Capable". > The "Hotplug Surprise" capability is recommended to not co-exist with DPC > since that capability may suppress the "surprise link down" notification > that DPC needs to see in order to trigger. > > If the "Hotplug Capable" bit is not set, detecting the link-up after a > DPC event would have to fall under a different component's responsibility, > so I think I'm finally seeing your point. > OK. To simplify our life, we can check if hotplug service is attached to this device or not and follow two different paths. We can get rid of re-enumeration and stop devices for the non-hotplug case and make it behave exactly like AER. Bjorn, will that work for you? -- Sinan Kaya Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc. Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project.