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