** Description changed:

+ SRU Justification:
+ 
+ [ Impact ]
+ 
+  * For non-VFs, function zpci_bus_is_isolated_vf() should return false,
+    because they aren't VFs.
+    While zpci_iov_find_parent_pf() specifically checks if a function is a VF,
+    it then simply returns that there is no parent.
+ 
+  * The simplistic check for a parent then leads to these functions being
+    confused with isolated VFs, and isolating them on their own domain even
+    if sibling PFs should share the domain.
+ 
+ [ Fix ]
+ 
+  * This is fixed by explicitly checking if a function is not a VF.
+    (Notice that at this point the case where RIDs are ignored is already
+     handled - and in this case all PCI functions get isolated by being
+     properly detected in zpci_bus_is_multifunction_root().)
+ 
+  * 8691abd3afaa "s390/pci: Fix zpci_bus_is_isolated_vf() for non-VFs"
+ 
+ [ Test Plan ]
+ 
+  * Setup Ubuntu Server (24.04/24.10) for s390x on an IBM z17
+    or LinuxONE 5 LPAR.
+ 
+  * Have at least two PCIe adapters that support PF/VF (like RoCE Express)
+    available in that LPAR.
+ 
+  * Attach multiple PFs of a PF access mode device (notice that this is only
+    possible with z17 and L1-5 hardware), such as the two PFs of a NETD
+    to the same LPAR. 
+ 
+  * Observe that they are put into separate PCI domains
+    instead of sharing the same domain as expected by drivers.
+ 
+  * Due to lack of hardware, the verification will be conducted by IBM.
+ 
+  * The fix was discussed upstream and flagged a stable kernel update.
+ 
+ [ Where problems could occur ]
+ 
+  * The modification is limited to one additional if statement
+    across two lines) in function zpci_bus_is_isolated_vf()
+    in file arch/s390/pci/pci_bus.c.
+ 
+  * Hence the modification will be limited to the s390x-specific parts of
+    the PCI code in the kernel (sometimes refers to as zPCI),
+    and will NOT impact any other architecture!
+ 
+  * If add. if-statement is not correct and a wrong bool is returned,
+    function zpci_bus_is_isolated_vf() might report and incorrect zpci_bus
+    status. Either isolated  when it's not or not-isolated when it really is.
+ 
+  * And since the new if statement got inserted before the already existing
+   'if (!pdev)', the latter code in function zpci_bus_is_isolated_vf()
+    might be accidentally skipped.
+ 
+  * All this might lead to a similar confusion of the functions in regard to
+    isolated VFs status and whether isolating them on their own domain even
+    or not, hence proper testing is needed.
+ 
+ [ Other Info ]
+ 
+  * Since the commit got upstream accepted with v6.15-rc1,
+    'Questing' is not affected.
+ 
+  * Plucky got fixed with
+    https://bugs.launchpad.net/bugs/2108854
+    (cherry-picked as 
https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/plucky/commit/?id=58412b2aa12aa43c90d5414e22898a041ec05e8a)
+ 
+  * Hence the only remaining affected releases, that contain the offending
+    commit ("s390/pci: Fix handling of isolated VFs"), are oracular and noble.
+ 
+  * Since this issue does not happen (thus cannot be recreated nor tested)
+    on the IBM Z hardware we have in Canonical, the verification(s) will be
+    done by IBM on most recent hardware.
+ __________
+ 
  s390/pci: Fix zpci_bus_is_isolated_vf() for non-VFs
  
- Commit: 
+ Commit:
  8691abd3afaadd816a298503ec1a759df1305d2e
  -------------------------
  
-               For non-VFs, zpci_bus_is_isolated_vf() should return false 
because they
-               aren't VFs. While zpci_iov_find_parent_pf() specifically checks 
if
-               a function is a VF, it then simply returns that there is no 
parent. The
-               simplistic check for a parent then leads to these functions 
being
-               confused with isolated VFs and isolating them on their own 
domain even
-               if sibling PFs should share the domain.
+               For non-VFs, zpci_bus_is_isolated_vf() should return false 
because they
+               aren't VFs. While zpci_iov_find_parent_pf() specifically checks 
if
+               a function is a VF, it then simply returns that there is no 
parent. The
+               simplistic check for a parent then leads to these functions 
being
+               confused with isolated VFs and isolating them on their own 
domain even
+               if sibling PFs should share the domain.
  
-               Fix this by explicitly checking if a function is not a VF. Note 
also
-               that at this point the case where RIDs are ignored is already 
handled
-               and in this case all PCI functions get isolated by being 
detected in
-               zpci_bus_is_multifunction_root().
+               Fix this by explicitly checking if a function is not a VF. Note 
also
+               that at this point the case where RIDs are ignored is already 
handled
+               and in this case all PCI functions get isolated by being 
detected in
+               zpci_bus_is_multifunction_root().
  
-               Cc: [email protected]
-               Fixes: 2844ddbd540f ("s390/pci: Fix handling of isolated VFs")
-               Signed-off-by: Niklas Schnelle <[email protected]>
-               Reviewed-by: Halil Pasic <[email protected]>
-               Signed-off-by: Vasily Gorbik <[email protected]>
+               Cc: [email protected]
+               Fixes: 2844ddbd540f ("s390/pci: Fix handling of isolated VFs")
+               Signed-off-by: Niklas Schnelle <[email protected]>
+               Reviewed-by: Halil Pasic <[email protected]>
+               Signed-off-by: Vasily Gorbik <[email protected]>

** Changed in: ubuntu-z-systems
       Status: Triaged => Confirmed

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2111599

Title:
  [UBUNTU 24.04] s390/pci: Fix zpci_bus_is_isolated_vf() for non-VF

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu-z-systems/+bug/2111599/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to