[SRU][J][I][F][PATCH 0/1] KVM nesting support leaks too much memory, might result in stalls during cleanup (LP: 1974017)

frank.heimes at canonical.com frank.heimes at canonical.com
Thu May 19 06:39:22 UTC 2022


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

SRU Justification:

[Impact] 

 * If running KVM with nesting support (e.g. 'kvm.nested=1' on the kernel
   command line), the shadow page table code will produce too many entries
   in the shadow code.

 * The below mentioned upstream fix will prevent the entries from being
   piled up, by checking for existing entries at insert time.

 * This measurably reduces the list length and is faster than traversing
   the list at shutdown time only.

[Fix]

 * a06afe8383080c630a7a528b8382fc6bb4925b61 a06afe838308
   "KVM: s390: vsie/gmap: reduce gmap_rmap overhead"

[Test Plan]

 * A IBM zSystems or LinuxONE LPAR on a z13 or newer is needed.

 * Ubuntu focal, impish or jammy needs to be installed
   and the Ubuntu LPAR setup as (1st level) KVM host,
   allowing nested virtualization.

 * Now setup one (or more) KVM virtual machines,
   with similar Ubuntu releases,
   and define one or more of them again as (2nd level) KVM host.

 * Define several KVM virtual machines on this (2nd level) KVM host
   in a memory constraint fashion,
   so that a lot of memory mapping is caused.

 * Let such a system run for a while under load.

 * Now shutdown one (or more) 2nd level VMs and notice the
   time it takes.

 * With the patch in place this time should be considerably
   quicker than without.

 * The result is reduced mapping (gmap_rmap) overhead,
   less danger of leaking memory
   and a better responding system.

[Where problems could occur]

 * In case wrong entries are freed up this will harm the virtual
   memory management and may even lead to crashes.

 * In case the pointer handling is not done properly,
   again crashes may occur.

 * But with net just five new lines the patch is pretty short, readable
   and the modifications traceable in arch/s390/mm/gmap.c only.

 * The changes are limited to s390/mm only,
   hence don't affect other architectures.

[Other Info]
 
 * The commit was upstream accepted in v5.18-rc6.

 * Since the planned target kernel for kinetic is 5.19,
   the kinetic kernel does not need to be patched.

 * Hence the SRUs are for jammy, impish and focal.

Christian Borntraeger (1):
  KVM: s390: vsie/gmap: reduce gmap_rmap overhead

 arch/s390/mm/gmap.c | 7 +++++++
 1 file changed, 7 insertions(+)

-- 
2.25.1




More information about the kernel-team mailing list