** Description changed: + SRU Justification: + ================== + + [Impact] + + * With zpci_disable() working, 'lockdep' detected a potential deadlock + (in the s390x zPCI subsystem). + + * The deadlock is between recovering a PCI function via the + /sys/bus/pci/devices/<dev>/recover attribute vs powering it off via + /sys/bus/pci/slots/<slot>/power. + + [Fix] + + * Backport 1: https://launchpadlibrarian.net/479554961/0001-s390-pci- + Recover-handle-in-clp_set_pci_fn.patch + + * Backport 2: https://launchpadlibrarian.net/478714295/0001-s390-pci- + Fix-possible-deadlock-in-recover_store.patch + + [Test Case] + + * It's best to (re-)test using the kernel's locking validator, also + known as 'lockdep'. + + * Since this potential deadlock was identified by lockdep. + + [Regression Potential] + + * The regression potential can be considered as moderate, since: + + * It is purely s390x specific code (arch/s390/include/asm/pci.h and + arch/s390/pci/{pci.c,pci_clp.c,pci_sysfs.c}). + + * It only affects the zPCI, the s390x specific PCI code layer. + + * PCI cards available for s390x are optional cards (RoCE and zEDC) and + not very wide-spread. + + * The states between such a deadlock can happen (recover and power off) + are non standard and usually undesired states. + + * The patches are upstream accepted since 5.6 and already landed in eoan + and focal. + + [Other Info] + + * Patches 17cdec960cf7 "s390/pci: Recover handle in clp_set_pci_fn()" + and 576c75e36c68 "s390/pci: Fix possible deadlock in recover_store()" + are upstream accepted since kernel 5.6, but they don't apply cleanly on + bionic master-next, hence backports are needed: + + * 0001-s390-pci-Recover-handle-in-clp_set_pci_fn.patch is a backport of + 17cdec960cf776b20b1fb08c622221babe591d51 17cdec960cf7 "s390/pci: Recover + handle in clp_set_pci_fn()" + + * 0001-s390-pci-Fix-possible-deadlock-in-recover_store.patch is a + backport of 576c75e36c689bec6a940e807bae27291ab0c0de 576c75e36c68 + "s390/pci: Fix possible deadlock in recover_store()" + + * Both patches/commits already landed in focal (with LP 1863768) and in eoan (with LP 1868324). + __________ + This Bug tracks the necessary backport for the Linux Kernel to enable proper reset/recovery of PCI Functions in the error state. There is a related fix to s390-tools but the relevant zpcictl command is not part of Ubuntu 18.04 Upstream this includes the following commits: In the Kernel: 17cdec960cf776b20b1fb08c622221babe591d51 s390/pci: Recover handle in clp_set_pci_fn() Backport patch attached. - 576c75e36c689bec6a940e807bae27291ab0c0de s390/pci: Fix possible deadlock in recover_store() applies cleanly but for the second a small backport change is necessary. These fixes are already in 20.04 but need also be applied to 18.04.
** Changed in: linux (Ubuntu Bionic) Status: Confirmed => In Progress ** Changed in: ubuntu-z-systems Status: Confirmed => In Progress -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1870320 Title: [UBUNTU 18.04] zpcictl --reset - contribution for kernel To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu-z-systems/+bug/1870320/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs