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