Compared to v2 this one has no large changes other than the updated SEAMCALL API. The small ones include: - updated SEAMCALL API - various bugfixes from Yan - EPT A/D bits are now required - Disable PML for TD guests and various conflicts with earlier parts. Isaku Yamahata (17): x86/virt/tdx: Add SEAMCALL wrapper tdh_mem_sept_add() to add SEPT pages x86/virt/tdx: Add SEAMCALL wrappers to add TD private pages x86/virt/tdx: Add SEAMCALL wrappers to manage TDX TLB tracking x86/virt/tdx: Add SEAMCALL wrappers to remove a TD private page x86/virt/tdx: Add SEAMCALL wrappers for TD measurement of initial contents KVM: x86/tdp_mmu: Add a helper function to walk down the TDP MMU KVM: TDX: Add accessors VMX VMCS helpers KVM: TDX: Set gfn_direct_bits to shared bit KVM: TDX: Require TDP MMU, mmio caching and EPT A/D bits for TDX KVM: x86/mmu: Add setter for shadow_mmio_value KVM: TDX: Set per-VM shadow_mmio_value to 0 KVM: TDX: Handle TLB tracking for TDX KVM: TDX: Implement hooks to propagate changes of TDP MMU mirror page table KVM: TDX: Implement hook to get max mapping level of private pages KVM: TDX: Add an ioctl to create initial guest memory KVM: TDX: Finalize VM initialization KVM: TDX: Handle vCPU dissociation Paolo Bonzini (1): KVM: TDX: Skip updating CPU dirty logging request for TDs Rick Edgecombe (3): KVM: x86/mmu: Implement memslot deletion for TDX KVM: VMX: Teach EPT violation helper about private mem KVM: x86/mmu: Export kvm_tdp_map_page() Sean Christopherson (2): KVM: VMX: Split out guts of EPT violation to common/exposed function KVM: TDX: Add load_mmu_pgd method for TDX Yan Zhao (6): KVM: x86/mmu: Do not enable page track for TD guest KVM: x86/mmu: Bail out kvm_tdp_map_page() when VM dead KVM: Add parameter "kvm" to kvm_cpu_dirty_log_size() and its callers KVM: x86/mmu: Add parameter "kvm" to kvm_mmu_page_ad_need_write_protect() KVM: x86: Make cpu_dirty_log_size a per-VM value KVM: TDX: Handle SEPT zap error due to page add error in premap arch/x86/include/asm/kvm_host.h | 12 +- arch/x86/include/asm/tdx.h | 15 +- arch/x86/include/asm/vmx.h | 1 + arch/x86/include/uapi/asm/kvm.h | 10 + arch/x86/kvm/mmu.h | 4 + arch/x86/kvm/mmu/mmu.c | 17 +- arch/x86/kvm/mmu/mmu_internal.h | 5 +- arch/x86/kvm/mmu/page_track.c | 3 + arch/x86/kvm/mmu/spte.c | 10 +- arch/x86/kvm/mmu/tdp_mmu.c | 49 ++- arch/x86/kvm/vmx/common.h | 43 ++ arch/x86/kvm/vmx/main.c | 119 ++++- arch/x86/kvm/vmx/tdx.c | 745 +++++++++++++++++++++++++++++++- arch/x86/kvm/vmx/tdx.h | 93 ++++ arch/x86/kvm/vmx/tdx_arch.h | 23 + arch/x86/kvm/vmx/vmx.c | 31 +- arch/x86/kvm/vmx/x86_ops.h | 51 +++ arch/x86/kvm/x86.c | 6 +- arch/x86/virt/vmx/tdx/tdx.c | 139 ++++++ arch/x86/virt/vmx/tdx/tdx.h | 8 + include/linux/kvm_dirty_ring.h | 11 +- virt/kvm/dirty_ring.c | 11 +- virt/kvm/kvm_main.c | 5 +- 23 files changed, 1326 insertions(+), 85 deletions(-) create mode 100644 arch/x86/kvm/vmx/common.h -- 2.43.5