[PATCH] drivers/pci/hotplug: Handle presence detection change properly

Greg KH gregkh at linuxfoundation.org
Tue Dec 20 20:37:09 AEDT 2016


On Tue, Dec 20, 2016 at 05:49:33PM +1100, Gavin Shan wrote:
> The surprise hotplug is driven by interrupt in PowerNV PCI hotplug
> driver. In the interrupt handler, pnv_php_interrupt(), we bail when
> pnv_pci_get_presence_state() returns zero wrongly. It causes the
> presence change event is always ignored incorrectly.
> 
> This fixes the issue by bailing on error (non-zero value) returned
> from pnv_pci_get_presence_state().
> 
> Fixes: 360aebd85a4 ("drivers/pci/hotplug: Support surprise hotplug in powernv driver")
> Cc: stable at vger.kernel.org #v4.9+
> Reported-by: Hank Chang <hankmax0000 at gmail.com>
> Signed-off-by: Gavin Shan <gwshan at linux.vnet.ibm.com>
> Tested-by: Willie Liauw <williel at supermicro.com.tw>
> ---
>  drivers/pci/hotplug/pnv_php.c | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/pci/hotplug/pnv_php.c b/drivers/pci/hotplug/pnv_php.c
> index 56efaf7..38a2309 100644
> --- a/drivers/pci/hotplug/pnv_php.c
> +++ b/drivers/pci/hotplug/pnv_php.c
> @@ -707,8 +707,12 @@ static irqreturn_t pnv_php_interrupt(int irq, void *data)
>  		added = !!(lsts & PCI_EXP_LNKSTA_DLLLA);
>  	} else if (sts & PCI_EXP_SLTSTA_PDC) {
>  		ret = pnv_pci_get_presence_state(php_slot->id, &presence);
> -		if (!ret)
> +		if (ret) {
> +			dev_warn(&pdev->dev, "PCI slot [%s] error %d handling PDC event (0x%04x)\n",
> +				php_slot->name, ret, sts);

What can a user do with this warning?



More information about the Linuxppc-dev mailing list