From: Sean Christopherson <seanjc@google.com>
To: Michael Roth <michael.roth@amd.com>
Cc: "Paolo Bonzini" <pbonzini@redhat.com>,
kvm@vger.kernel.org, linux-kernel@vger.kernel.org,
"Ackerley Tng" <ackerleytng@google.com>,
"Hyunwoo Kim" <imv4bel@gmail.com>,
"Tom Lendacky" <thomas.lendacky@amd.com>,
"Jörg Rödel" <joro@8bytes.org>, "Fuad Tabba" <tabba@google.com>
Subject: Re: [PATCH v3 10/12] KVM: SEV: Forcefully invalidate SNP VMSA if its backing gmem page is zapped
Date: Tue, 7 Jul 2026 08:58:00 -0700 [thread overview]
Message-ID: <ak0iCL0GPC8S_Urm@google.com> (raw)
In-Reply-To: <kpmoqofdihxpnhj6yxkuppaepy432h6hh4c53wzptbilzfvqa2@vwboboldkb5x>
On Wed, Jul 01, 2026, Michael Roth wrote:
> On Tue, Jun 30, 2026 at 03:26:05PM -0700, Sean Christopherson wrote:
> > ---
> > arch/x86/include/asm/kvm-x86-ops.h | 2 +
> > arch/x86/include/asm/kvm_host.h | 4 ++
> > arch/x86/kvm/mmu/mmu.c | 5 ++
> > arch/x86/kvm/svm/sev.c | 79 +++++++++++++++++++++++++-----
> > arch/x86/kvm/svm/svm.c | 2 +
> > arch/x86/kvm/svm/svm.h | 2 +
> > arch/x86/kvm/x86.c | 6 +++
> > include/linux/kvm_host.h | 1 +
> > virt/kvm/guest_memfd.c | 4 ++
> > 9 files changed, 94 insertions(+), 11 deletions(-)
> >
> ...
> > diff --git a/arch/x86/kvm/svm/svm.h b/arch/x86/kvm/svm/svm.h
> > index cf7c1a437f38..123e7bf687ef 100644
> > --- a/arch/x86/kvm/svm/svm.h
> > +++ b/arch/x86/kvm/svm/svm.h
> > @@ -996,6 +996,7 @@ static inline struct page *snp_safe_alloc_page(void)
> > {
> > return snp_safe_alloc_page_node(numa_node_id(), GFP_KERNEL_ACCOUNT);
> > }
> > +void sev_snp_reload_vmsa(struct kvm_vcpu *vcpu);
> >
> > int sev_vcpu_create(struct kvm_vcpu *vcpu);
> > void sev_free_vcpu(struct kvm_vcpu *vcpu);
> > @@ -1009,6 +1010,7 @@ int sev_dev_get_attr(u32 group, u64 attr, u64 *val);
> > extern unsigned int max_sev_asid;
> > void sev_handle_rmp_fault(struct kvm_vcpu *vcpu, gpa_t gpa, u64 error_code);
> > int sev_gmem_prepare(struct kvm *kvm, kvm_pfn_t pfn, gfn_t gfn, int max_order);
> > +void sev_gmem_invalidate_range(struct kvm *kvm, struct kvm_gfn_range *range);
> > void sev_gmem_reclaim_memory(kvm_pfn_t start, kvm_pfn_t end);
> > int sev_gmem_max_mapping_level(struct kvm *kvm, kvm_pfn_t pfn, bool is_private);
> > struct vmcb_save_area *sev_decrypt_vmsa(struct kvm_vcpu *vcpu);
> > diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
> > index bc0c3163f4a3..0bb50997c0e3 100644
> > --- a/arch/x86/kvm/x86.c
> > +++ b/arch/x86/kvm/x86.c
> > @@ -8170,6 +8170,8 @@ static int vcpu_enter_guest(struct kvm_vcpu *vcpu)
> > goto out;
> > }
> > }
> > + if (kvm_check_request(KVM_REQ_VMSA_PAGE_RELOAD, vcpu))
> > + kvm_x86_call(reload_vmsa)(vcpu);
>
> VMSA is SVM/SEV-specific, and while the event/handling might be SEV-specific,
It's not just SEV specific, it's SEV-ES+ specific. Splitting hairs, but IMO
the distinction matters because while there is a "save area" for SVM and SEV
vCPUs, they don't have a dedicated, separata VMSA.
> would it make sense to make the kvm_x86_op generic at least?
>
> 'reload_guest_save_area' maybe?
I think I'd prefer to keep the extra-ugly vmsa terminology? We've already bled
gory details into common x86, and I don't see an easy way around that. IMO, at
that point, any abstraction does more harm than good.
E.g. reload_guest_save_area() is more like to be misread as "reload the save state
from KVM's vCPU state". Hmm, though by that argument, reload_vmsa_page() would
be even better.
next prev parent reply other threads:[~2026-07-07 15:58 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-30 22:25 [PATCH v3 00/12] KVM: SEV: Fix RMP #PF due to freeing in-use VMSA Sean Christopherson
2026-06-30 22:25 ` [PATCH v3 01/12] KVM: SEV: Track the GPA of the guest-controlled VMSA used for SNP guests Sean Christopherson
2026-07-01 19:33 ` Michael Roth
2026-06-30 22:25 ` [PATCH v3 02/12] KVM: SEV: Extract loading of guest-provided VMSA to a separate helper Sean Christopherson
2026-07-01 19:34 ` Michael Roth
2026-06-30 22:25 ` [PATCH v3 03/12] KVM: SEV: Mark vCPU RUNNABLE after AP_CREATE, even if VMSA is unusable Sean Christopherson
2026-07-01 19:36 ` Michael Roth
2026-06-30 22:25 ` [PATCH v3 04/12] KVM: Rename .gmem_invalidate() to .gmem_reclaim_memory() Sean Christopherson
2026-06-30 22:39 ` sashiko-bot
2026-07-01 19:41 ` Michael Roth
2026-06-30 22:26 ` [PATCH v3 05/12] KVM: x86: Serialize writes to disabled_quirks using kvm->lock Sean Christopherson
2026-07-01 21:59 ` Michael Roth
2026-06-30 22:26 ` [PATCH v3 06/12] KVM: x86: Ensure runtime reads of disabled_quirks are resolved once Sean Christopherson
2026-07-01 22:00 ` Michael Roth
2026-06-30 22:26 ` [PATCH v3 07/12] KVM: x86/mmu: Fold kvm_mmu_zap_memslot() into kvm_arch_flush_shadow_memslot() Sean Christopherson
2026-07-01 22:04 ` Michael Roth
2026-06-30 22:26 ` [PATCH v3 08/12] KVM: x86/mmu: Split kvm_mmu_zap_all_fast() into "front" and "back" halves Sean Christopherson
2026-07-01 22:07 ` Michael Roth
2026-06-30 22:26 ` [PATCH v3 09/12] KVM: x86/mmu: Use split "zap all fast" helpers when invalidating memslot Sean Christopherson
2026-07-01 22:19 ` Michael Roth
2026-06-30 22:26 ` [PATCH v3 10/12] KVM: SEV: Forcefully invalidate SNP VMSA if its backing gmem page is zapped Sean Christopherson
2026-07-01 21:56 ` Michael Roth
2026-07-07 15:58 ` Sean Christopherson [this message]
2026-06-30 22:26 ` [PATCH v3 11/12] KVM: x86: Guard .gmem_prepare() declarations with HAVE_KVM_GMEM_PREPARE=y Sean Christopherson
2026-07-01 22:42 ` Michael Roth
2026-07-06 23:16 ` Sean Christopherson
2026-06-30 22:26 ` [PATCH v3 12/12] KVM: SEV: Mark vCPU has having guest-provided VMSA even if its invalid Sean Christopherson
2026-07-01 22:47 ` Michael Roth
2026-07-07 16:58 ` [PATCH v3 00/12] KVM: SEV: Fix RMP #PF due to freeing in-use VMSA Tom Lendacky
2026-07-07 21:20 ` Sean Christopherson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ak0iCL0GPC8S_Urm@google.com \
--to=seanjc@google.com \
--cc=ackerleytng@google.com \
--cc=imv4bel@gmail.com \
--cc=joro@8bytes.org \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=michael.roth@amd.com \
--cc=pbonzini@redhat.com \
--cc=tabba@google.com \
--cc=thomas.lendacky@amd.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.