[SRU][N][PULL] L2 Guest migration: continuously dumping while running NFS guest migration

frank.heimes at canonical.com frank.heimes at canonical.com
Mon Sep 2 08:39:41 UTC 2024


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

SRU Justification:

[ Impact ]

 * While doing ISST testing it turned out that a 2nd level (KVM)
   guest (aka VM) continuously dumped when running an NFS
   guest migration.

[ Test Plan ]

 * Setup two IBM Power 10 system (with firmware 1060, that offers
   support for KVM) with Ubuntu Server 24.04 for ppc64el.

 * Setup qemu/KVM on both on these system to allow guest migration.

 * Setup a KVM guest and place its disk on an NFS volume.

 * Now initiate a guest migration.

 * Without the two patches the initiator system will start to dump.

 * Since this setup requires a special firmware level,
   the verification will be done by the IBM Power team.

[ Where problems could occur ]

 * Although the patch set looks huge,
   the patches themselves are relatively small and less invasive
   and I would consider them mainly as fixes.

 * kvmppc_set_one_reg_hv() wrongly get() the value instead of
   set() for MMCR3.

 * And The kvmppc_get_one_reg_hv() for SDAR is wrongly getting
   the SIAR instead of SDAR - which is quite traceable.

 * Then a one-reg interface for DEXCR register KVM_REG_PPC_DEXCR
   is introduced. Here issues can happen if the initialization
   is done wrong or in the case statement.
   A fix was added to keep nested guest DEXCR in sync.
   The guest state element defined for DEXCR was already there,
   but not really considered - this is fixed now (DEXCR GSID).
   If initialization was done wrong or code in case stmt,
   this can harm the guest state.
   Guest state may get out of sync.

 * Another one-reg register identifier was introduced
   that is used to read and set the virtual HASHKEYR
   for the guest during enter/exit with KVM_REG_PPC_HASHKEYR.
   Again initialization and the case code are critical.
   Code was added to keep nested guest HASHKEYR in sync.
   Again the state element defined for HASHKEYR was there,
   but not considered, what is fixed now (HASHKEYR GSID)
   If initialization was done wrong or code in case stmt,
   this can harm the guest state.
   This can harm the L2 guest during enter or exit.

 * Again another one-reg identifier was introduced
   that is used to read and set the virtual HASHPKEYR
   for the guest during enter/exit with KVM_REG_PPC_HASHPKEYR.
   And again the guest state element defined for HASHPKEYR
   was there but ignored which is now fixed (HASHPKEYR GSID).
   If initialization was done wrong or code in case stmt,
   this can harm the guest state.
   This can harm the L2 guest during enter or exit.

[ Other Info ]

 * Since (nested) KVM support is new on P10,
   this does not affect older Power generation
   (P9 is the only other hw generation that is supported by 24.04,
   but it only supports native virtualization).

 * Both patches are upstream accepted since v6.11(-rc1),
   hence will be in oracular
   and are also upstream tagged as stable updates.

 * Since the required firmware FW1060 is relatively new,
   we can assume that not many user ran into this issue yet.

The following changes since commit 219da5546e11baa4a535f6dfbc872a105c8d0892:

  md: fix deadlock between mddev_suspend and flush bio (2024-08-30 08:44:25 +0200)

are available in the Git repository at:

  https://git.launchpad.net/~fheimes/+git/lp2076406/ 5b3b9fba52edd3f48596bb32771a1c0ebaa1a093

for you to fetch changes up to 5b3b9fba52edd3f48596bb32771a1c0ebaa1a093:

  KVM: PPC: Book3S HV nestedv2: Keep nested guest HASHPKEYR in sync (2024-08-30 15:26:52 +0200)

----------------------------------------------------------------
Shivaprasad G Bhat (8):
      KVM: PPC: Book3S HV: Fix the set_one_reg for MMCR3
      KVM: PPC: Book3S HV: Fix the get_one_reg of SDAR
      KVM: PPC: Book3S HV: Add one-reg interface for DEXCR register
      KVM: PPC: Book3S HV nestedv2: Keep nested guest DEXCR in sync
      KVM: PPC: Book3S HV: Add one-reg interface for HASHKEYR register
      KVM: PPC: Book3S HV nestedv2: Keep nested guest HASHKEYR in sync
      KVM: PPC: Book3S HV: Add one-reg interface for HASHPKEYR register
      KVM: PPC: Book3S HV nestedv2: Keep nested guest HASHPKEYR in sync

 Documentation/virt/kvm/api.rst        |  3 +++
 arch/powerpc/include/asm/kvm_host.h   |  3 +++
 arch/powerpc/include/uapi/asm/kvm.h   |  3 +++
 arch/powerpc/kvm/book3s_hv.c          | 22 ++++++++++++++++++++--
 arch/powerpc/kvm/book3s_hv.h          |  3 +++
 arch/powerpc/kvm/book3s_hv_nestedv2.c | 18 ++++++++++++++++++
 6 files changed, 50 insertions(+), 2 deletions(-)



More information about the kernel-team mailing list