Re: [PATCH V5 3/3] PCI: Mask and unmask hotplug interrupts during reset

From: poza
Date: Tue Jul 03 2018 - 10:10:53 EST


On 2018-07-03 19:29, Lukas Wunner wrote:
On Tue, Jul 03, 2018 at 09:31:24AM -0400, Sinan Kaya wrote:
Issue is observing hotplug link down event in the middle of AER recovery
as in my previous reply.

If we mask hotplug interrupts before secondary bus reset via my patch,
then hotplug driver will not observe both link up and link down interrupts.

If we don't mask hotplug interrupts, we have a race condition.

I assume that a bus reset not only causes a link and presence event but
also clears the Presence Detect State bit in the Slot Status register
and the Data Link Layer Link Active bit in the Link Status register
momentarily.

pciehp may access those two bits concurrently to the AER driver
performing a slot reset. So it may not be sufficient to mask
the interrupt.

Was just wondering that you are protecting Presence Detect State bit with reset_lock, mainly in pciehp_ist
but with hotplug interrupt disabled, is there another way that it hotplug code gets activated ?


I've posted this patch to address the issue:
https://patchwork.ozlabs.org/patch/930391/

Thanks,

Lukas