Messages in this thread | | | Date | Thu, 20 Jan 2022 14:30:13 +0000 | Subject | Re: [PATCH 3/9] KVM: SVM: Don't intercept #GP for SEV guests | From | Liam Merwick <> |
| |
On 20/01/2022 01:07, Sean Christopherson wrote: > Never intercept #GP for SEV guests as reading SEV guest private memory > will return cyphertext, i.e. emulating on #GP can't work as intended. >
"ciphertext" seems to be the convention.
> Cc: stable@vger.kernel.org > Cc: Tom Lendacky <thomas.lendacky@amd.com> > Cc: Brijesh Singh <brijesh.singh@amd.com> > Signed-off-by: Sean Christopherson <seanjc@google.com>
Reviewed-by: Liam Merwick <liam.merwick@oracle.com>
> --- > arch/x86/kvm/svm/svm.c | 11 ++++++++--- > 1 file changed, 8 insertions(+), 3 deletions(-) > > diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c > index 85703145eb0a..edea52be6c01 100644 > --- a/arch/x86/kvm/svm/svm.c > +++ b/arch/x86/kvm/svm/svm.c > @@ -312,7 +312,11 @@ int svm_set_efer(struct kvm_vcpu *vcpu, u64 efer) > return ret; > } > > - if (svm_gp_erratum_intercept) > + /* > + * Never intercept #GP for SEV guests, KVM can't > + * decrypt guest memory to workaround the erratum. > + */ > + if (svm_gp_erratum_intercept && !sev_guest(vcpu->kvm)) > set_exception_intercept(svm, GP_VECTOR); > } > } > @@ -1010,9 +1014,10 @@ static void init_vmcb(struct kvm_vcpu *vcpu) > * Guest access to VMware backdoor ports could legitimately > * trigger #GP because of TSS I/O permission bitmap. > * We intercept those #GP and allow access to them anyway > - * as VMware does. > + * as VMware does. Don't intercept #GP for SEV guests as KVM can't > + * decrypt guest memory to decode the faulting instruction. > */ > - if (enable_vmware_backdoor) > + if (enable_vmware_backdoor && !sev_guest(vcpu->kvm)) > set_exception_intercept(svm, GP_VECTOR); > > svm_set_intercept(svm, INTERCEPT_INTR);
| |