[SRU][F][PATCH 0/1] zPCI device hot-plug during boot may result in unusable device (LP: 1893778)
frank.heimes at canonical.com
frank.heimes at canonical.com
Thu Sep 3 09:57:12 UTC 2020
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
More information about the kernel-team
mailing list