[SRU][F][PATCH 0/1] Hipersocket page allocation failure on Ubuntu 20.04 based SSC environments (LP: 1959529)

frank.heimes at canonical.com frank.heimes at canonical.com
Fri Feb 4 06:47:53 UTC 2022


BugLink: https://bugs.launchpad.net/bugs/1959529

SRU Justification:

[Impact]

* On IBM IDAA environments (SSC) hipersocket page allocation failures can occur
  on Ubuntu Server 20.04 based SSC
  (and presumably on regular LPAR installation, too)

* This happens on kernel 5.4.0-73-generic, probably on all 5.4 kernels.

* Error messages like the following can be found at the logs:
  "kworker/u760:28: page allocation failure"

* The IBM LTC Networking team has identified that this is caused by the missing
  upstream commit: 714c9108851743bb718fbc1bfb81290f12a53854.

* This commit got upstream accepted with v5.7, but is not included in 5.4.

[Fix]

* upstream (since v5.7):
  714c9108851743bb718fbc1bfb81290f12a53854 714c91088517 "s390/qeth: use memory reserves to back RX buffers"
  https://launchpadlibrarian.net/583947110/0001-s390-qeth-use-memory-reserves-to-back-RX-buffers_backport.patch

* The upstream commit does not apply cleanly on focal master-next by just
  cherry-picking it, due to different driver code and context,
  hence the need of the backport.

[Test Case]

* An IBM Z or LinuxONE III SSC environment is needed that is attached to a
  Hipersocket (virtual network) and with that one or more (Hipersocket-based)
  qeth device.

* LPAR needs to run Ubuntu Server 20.04 with kernel 5.4.

* Now drive heavy network traffic over this (Hipersocket-based) qeth device,
  e.g. using stress-ng.

* Monitor the logs for:
  "kworker/u760:28: page allocation failure: order:0, mode:0xa20(GFP_ATOMIC),
   nodemask=(null),cpuset=/,mems_allowed=0"
* Due to the special environment, test and verification is done by IBM.

[Regression Potential / What can go wrong]

* The patch changes only two lines in the qeth buffer pool code.
  they are therefore quite traceable.

* The page allocation is changed by calling alloc_page differently.
  The second change is the adjustment of the pointer due to the above.

* If the new way of allocation is errorneous, it will either be identified
  at compile time or at verification of this bug.

* Because of that a test kernel was build at PPA:
  https://launchpad.net/~fheimes/+archive/ubuntu/lp1959529
  to identify any build/compile issues.

* Since the original upstream commit is already in kernel v5.7,
  is was already tested to some extend in groovy and all newer releases.

* This patch changes s390x-specific qeth driver code only in:
  drivers/s390/net/qeth_core_main.c

[Other]

* All Ubuntu releases of groovy newer have this patch/commit included,
  hence this SRU is for focal only.

Julian Wiedmann (1):
  s390/qeth: use memory reserves to back RX buffers

 drivers/s390/net/qeth_core_main.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

-- 
2.25.1




More information about the kernel-team mailing list