APPLIED: [SRU][G][PATCH 1/1] s390/pci: fix hot-plug of PCI function missing bus

Ian May ian.may at canonical.com
Tue Dec 8 15:59:54 UTC 2020


Applied to groovy/linux

Thanks,
Ian

On 2020-12-02 17:48:10 , frank.heimes at canonical.com wrote:
> From: Niklas Schnelle <schnelle at linux.ibm.com>
> 
> BugLink: https://bugs.launchpad.net/bugs/1903682
> 
> Under some circumstances in particular with "Reconfigure I/O Path"
> a zPCI function may first appear in Standby through a PCI event with
> PEC 0x0302 which initially makes it visible to the zPCI subsystem,
> Only after that is it configured with a zPCI event  with PEC 0x0301.
> If the zbus is still missing a PCI function zero (devfn == 0) when the
> PCI event 0x0301 is handled zdev->zbus->bus is still NULL and gets
> dereferenced in common code.
> Check for this case and enable but don't scan the zPCI function.
> This matches what would happen if we immediately got the 0x0301
> configuration request or the function was included in CLP List PCI.
> In all cases the PCI functions with devfn != 0 will be scanned once
> function 0 appears.
> 
> Fixes: 3047766bc6ec ("s390/pci: fix enabling a reserved PCI function")
> Cc: <stable at vger.kernel.org> # 5.8
> Signed-off-by: Niklas Schnelle <schnelle at linux.ibm.com>
> Acked-by: Pierre Morel <pmorel at linux.ibm.com>
> Signed-off-by: Heiko Carstens <hca at linux.ibm.com>
> (cherry picked from commit 0b2ca2c7d0c9e2731d01b6c862375d44a7e13923)
> Signed-off-by: Frank Heimes <frank.heimes at canonical.com>
> ---
>  arch/s390/pci/pci_event.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/arch/s390/pci/pci_event.c b/arch/s390/pci/pci_event.c
> index d9ae7456dd4c..40a569b548cc 100644
> --- a/arch/s390/pci/pci_event.c
> +++ b/arch/s390/pci/pci_event.c
> @@ -101,6 +101,10 @@ static void __zpci_event_availability(struct zpci_ccdf_avail *ccdf)
>  		if (ret)
>  			break;
>  
> +		/* the PCI function will be scanned once function 0 appears */
> +		if (!zdev->zbus->bus)
> +			break;
> +
>  		pdev = pci_scan_single_device(zdev->zbus->bus, zdev->devfn);
>  		if (!pdev)
>  			break;
> -- 
> 2.25.1
> 
> 
> -- 
> kernel-team mailing list
> kernel-team at lists.ubuntu.com
> https://lists.ubuntu.com/mailman/listinfo/kernel-team



More information about the kernel-team mailing list