Add TDX intra-host migration support
From: | Ryan Afranji <afranji-AT-google.com> | |
To: | kvm-AT-vger.kernel.org, linux-kernel-AT-vger.kernel.org, x86-AT-kernel.org | |
Subject: | [RFC PATCH v2 00/10] Add TDX intra-host migration support | |
Date: | Wed, 11 Jun 2025 21:16:27 +0000 | |
Message-ID: | <cover.1749672978.git.afranji@google.com> | |
Cc: | sagis-AT-google.com, bp-AT-alien8.de, chao.p.peng-AT-linux.intel.com, dave.hansen-AT-linux.intel.com, dmatlack-AT-google.com, erdemaktas-AT-google.com, isaku.yamahata-AT-intel.com, kai.huang-AT-intel.com, mingo-AT-redhat.com, pbonzini-AT-redhat.com, seanjc-AT-google.com, tglx-AT-linutronix.de, zhi.wang.linux-AT-gmail.com, ackerleytng-AT-google.com, andrew.jones-AT-linux.dev, david-AT-redhat.com, hpa-AT-zytor.com, kirill.shutemov-AT-linux.intel.com, linux-kselftest-AT-vger.kernel.org, tabba-AT-google.com, vannapurve-AT-google.com, yan.y.zhao-AT-intel.com, rick.p.edgecombe-AT-intel.com, Ryan Afranji <afranji-AT-google.com> | |
Archive-link: | Article |
Hello, This is RFC v2 for the TDX intra-host migration patch series. It addresses comments in RFC v1 [1] and is rebased onto the latest kvm/next (v6.16-rc1). This patchset was built on top of the latest TDX selftests [2] and gmem linking [3] RFC patch series. Here is the series stitched together for your convenience: https://github.com/googleprodkernel/linux-cc/tree/tdx-cop... Changes from RFC v1: + Added patch to prevent deadlock warnings by re-ordering locking order. + Added patch to allow vCPUs to be created for uninitialized VMs. + Minor optimizations to TDX intra-host migration core logic. + Moved lapic state transfer into TDX intra-host migration core logic. + Added logic to handle posted interrupts that are injected during migration. + Added selftests. + Addressed comments from RFC v1. + Various small changes to make patchset compatible with latest version of kvm/next. [1] https://lore.kernel.org/lkml/20230407201921.2703758-2-sag... [2] https://lore.kernel.org/lkml/20250414214801.2693294-2-sag... [3] https://lore.kernel.org/all/cover.1747368092.git.afranji@... Ackerley Tng (2): KVM: selftests: Add TDX support for ucalls KVM: selftests: Add irqfd/interrupts test for TDX with migration Ryan Afranji (3): KVM: x86: Adjust locking order in move_enc_context_from KVM: TDX: Allow vCPUs to be created for migration KVM: selftests: Refactor userspace_mem_region creation out of vm_mem_add Sagi Shahar (5): KVM: Split tdp_mmu_pages to mirror and direct counters KVM: TDX: Add base implementation for tdx_vm_move_enc_context_from KVM: TDX: Implement moving mirror pages between 2 TDs KVM: TDX: Add core logic for TDX intra-host migration KVM: selftests: TDX: Add tests for TDX in-place migration arch/x86/include/asm/kvm_host.h | 7 +- arch/x86/kvm/mmu.h | 2 + arch/x86/kvm/mmu/mmu.c | 66 ++++ arch/x86/kvm/mmu/tdp_mmu.c | 72 +++- arch/x86/kvm/mmu/tdp_mmu.h | 6 + arch/x86/kvm/svm/sev.c | 13 +- arch/x86/kvm/vmx/main.c | 12 +- arch/x86/kvm/vmx/tdx.c | 236 +++++++++++- arch/x86/kvm/vmx/x86_ops.h | 1 + arch/x86/kvm/x86.c | 14 +- tools/testing/selftests/kvm/Makefile.kvm | 2 + .../testing/selftests/kvm/include/kvm_util.h | 25 ++ .../selftests/kvm/include/x86/tdx/tdx_util.h | 3 + .../selftests/kvm/include/x86/tdx/test_util.h | 5 + .../testing/selftests/kvm/include/x86/ucall.h | 4 +- tools/testing/selftests/kvm/lib/kvm_util.c | 222 ++++++++---- .../testing/selftests/kvm/lib/ucall_common.c | 2 +- .../selftests/kvm/lib/x86/tdx/tdx_util.c | 63 +++- .../selftests/kvm/lib/x86/tdx/test_util.c | 17 + tools/testing/selftests/kvm/lib/x86/ucall.c | 108 ++++-- .../kvm/x86/tdx_irqfd_migrate_test.c | 264 ++++++++++++++ .../selftests/kvm/x86/tdx_migrate_tests.c | 337 ++++++++++++++++++ 22 files changed, 1349 insertions(+), 132 deletions(-) create mode 100644 tools/testing/selftests/kvm/x86/tdx_irqfd_migrate_test.c create mode 100644 tools/testing/selftests/kvm/x86/tdx_migrate_tests.c -- 2.50.0.rc1.591.g9c95f17f64-goog