Thread (58 messages) 58 messages, 6 authors, 2024-03-20

Re: [PATCH v11 09/35] KVM: x86: Determine shared/private faults based on vm_type

From: Michael Roth <hidden>
Date: 2024-02-12 16:48:39
Also in: kvm, linux-crypto, linux-mm, lkml

On Mon, Feb 12, 2024 at 08:27:21AM -0800, Sean Christopherson wrote:
On Mon, Feb 12, 2024, Paolo Bonzini wrote:
quoted
On Sat, Dec 30, 2023 at 6:24 PM Michael Roth [off-list ref] wrote:
quoted
For KVM_X86_SNP_VM, only the PFERR_GUEST_ENC_MASK flag is needed to
determine with an #NPF is due to a private/shared access by the guest.
Implement that handling here. Also add handling needed to deal with
SNP guests which in some cases will make MMIO accesses with the
encryption bit.

Signed-off-by: Michael Roth <redacted>
---
 arch/x86/kvm/mmu/mmu.c          | 12 ++++++++++--
 arch/x86/kvm/mmu/mmu_internal.h | 20 +++++++++++++++++++-
 2 files changed, 29 insertions(+), 3 deletions(-)
diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c
index d3fbfe0686a0..61213f6648a1 100644
--- a/arch/x86/kvm/mmu/mmu.c
+++ b/arch/x86/kvm/mmu/mmu.c
@@ -4331,6 +4331,7 @@ static int kvm_faultin_pfn_private(struct kvm_vcpu *vcpu,
 static int __kvm_faultin_pfn(struct kvm_vcpu *vcpu, struct kvm_page_fault *fault)
 {
        struct kvm_memory_slot *slot = fault->slot;
+       bool private_fault = fault->is_private;
I think it's nicer to just make the fault !is_private in
kvm_mmu_do_page_fault().
Yeah.  I'm starting to recall more of this discussion.  This is one of the reasons
I suggested/requested stuffing the error code to piggy-back the new SNP bit; doing
so allows is_private to be computed from the get-go without needing any vendor
specific hooks.
Makes sense to me. Based on your suggestion here:

  https://lore.kernel.org/kvm/ZcUO5sFEAIH68JIA@google.com/ (local)

I was planning to drop this patch and adopt the TDX implementation:

  https://github.com/intel/tdx/commit/3717a903ef453aa7b62e7eb65f230566b7f158d4

-Mike
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help