powerpc/eeh: Probe after unbalanced kref check

Michael Ellerman mpe at ellerman.id.au
Mon Aug 17 18:03:31 AEST 2015


On Fri, 2015-14-08 at 06:03:19 UTC, Daniel Axtens wrote:
> In the complete hotplug case, EEH PEs are supposed to be released
> and set to NULL. Normally, this is done by eeh_remove_device(),
> which is called from pcibios_release_device().
> 
> However, if something is holding a kref to the device, it will not
> be released, and the PE will remain. eeh_add_device_late() has
> a check for this which will explictly destroy the PE in this case.
> 
> This check in eeh_add_device_late() occurs after a call to
> eeh_ops->probe(). On PowerNV, probe is a pointer to pnv_eeh_probe(),
> which will exit without probing if there is an existing PE.
> 
> This means that on PowerNV, devices with outstanding krefs will not
> be rediscovered by EEH correctly after a complete hotplug. This is
> affecting CXL (CAPI) devices in the field.
> 
> Put the probe after the kref check so that the PE is destroyed
> and affected devices are correctly rediscovered by EEH.
> 
> Fixes: d91dafc02f42 ("powerpc/eeh: Delay probing EEH device during hotplug")
> Cc: stable at vger.kernel.org
> Cc: Gavin Shan <gwshan at linux.vnet.ibm.com>
> Signed-off-by: Daniel Axtens <dja at axtens.net>
> Acked-by: Gavin Shan <gwshan at linux.vnet.ibm.com>

Applied to powerpc next, thanks.

https://git.kernel.org/powerpc/c/e642d11bdbfe8eb10116

cheers


More information about the Linuxppc-dev mailing list