[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