APPLIED: [SRU][F][PATCH 0/1] zPCI device hot-plug during boot may result in unusable device (LP: 1893778)
Khaled Elmously
khalid.elmously at canonical.com
Wed Sep 16 04:01:52 UTC 2020
On 2020-09-03 11:57:12 , frank.heimes at canonical.com wrote:
> BugLink: https://bugs.launchpad.net/bugs/1893778
>
> SRU Justification:
>
> [Impact]
>
> * If a PCI device (incl. virtio-pci) is hot-plugged during boot-up on s390x, it can be detected as an entry in CLP List PCI functions and via the hot-plug event.
>
> * (This is basically equivalent to boot time probing on other architectures.)
>
> * In such a case the hot-plug event will be stale, but Linux still tries to add and enable the device which leads to:
>
> * a) a duplicate entry in zPCI internal device list
>
> * b) an attempt to enable the device with a stale function handle
>
> * In case b) the device will be placed in error state which makes it unusable.
>
> [Fix]
>
> * b76fee1bc56c31a9d2a49592810eba30cc06d61a b76fee1bc56c "s390/pci: ignore stale configuration request event"
>
> [Test Case]
>
> * Setup an Ubuntu Server 20.04 (focal) Linux operating system on an IBM Z or LinuxONE III LPAR.
>
> * It's now easiest to test on KVM using virtio-pci (on s390x).
>
> * Start a test virtual machine: sudo virsh start <test-guest>
>
> * Attach and hotplug a virtio-pci device: sudo virsh attach-device <test-guest> hotplug_pci_block.xml
>
> * Where hotplug_pci_block.xml looks like:
> <disk device="disk" type="file">
> <driver name="qemu" type="raw" />
> <address type="pci">
> <zpci fid="4660" uid="4660" />
> </address>
> <source file="testdisk.img" />
> <target bus="virtio" dev="vdt" />
> </disk>
>
> [Regression Potential]
>
> * The regression risk is moderate, since the modification is very limited and therefore manageable (additional if statement - two lines of code) and easily testable on KVM using virtio-pci.
>
> * The changes are in the zPCI event code, so in worst-case it can happen that the event handling get harmed which may break zPCI entirely, affecting all PCI devices incl. virtio-pci (on s390x).
>
> * A bug in PCI 'availability' handling also just lead to wrong states of PCI devices which make them unavailable, hence unusable.
>
> * Notice that zPCI is the s390x-specific PCI implementation, modifications here do not affect any other architecture.
>
> * And zPCI devices are less wide-spread compared to ccw devices on s390x.
>
> * On top a test kernel was build and made available for further testing atesting can be easily done with virtio-pci on KVM.
>
> [Other]
>
> * The fix/patch got upstream accepted with kernel v5.9-rc2.
>
> * But it landed already in groovy's proposed kernel 5.8 (Ubuntu-5.8.0-18.19), due to 'Groovy update: v5.8.4 upstream stable release' that is handled in LP 1893048.
>
> * Hence this fix/patch need to be applied to focal only.
>
> Niklas Schnelle (1):
> s390/pci: ignore stale configuration request event
>
> arch/s390/pci/pci_event.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> --
> 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