File tree Expand file tree Collapse file tree 1 file changed +8
-3
lines changed Expand file tree Collapse file tree 1 file changed +8
-3
lines changed Original file line number Diff line number Diff line change @@ -312,7 +312,11 @@ int svm_set_efer(struct kvm_vcpu *vcpu, u64 efer)
312
312
return ret ;
313
313
}
314
314
315
- if (svm_gp_erratum_intercept )
315
+ /*
316
+ * Never intercept #GP for SEV guests, KVM can't
317
+ * decrypt guest memory to workaround the erratum.
318
+ */
319
+ if (svm_gp_erratum_intercept && !sev_guest (vcpu -> kvm ))
316
320
set_exception_intercept (svm , GP_VECTOR );
317
321
}
318
322
}
@@ -1010,9 +1014,10 @@ static void init_vmcb(struct kvm_vcpu *vcpu)
1010
1014
* Guest access to VMware backdoor ports could legitimately
1011
1015
* trigger #GP because of TSS I/O permission bitmap.
1012
1016
* We intercept those #GP and allow access to them anyway
1013
- * as VMware does.
1017
+ * as VMware does. Don't intercept #GP for SEV guests as KVM can't
1018
+ * decrypt guest memory to decode the faulting instruction.
1014
1019
*/
1015
- if (enable_vmware_backdoor )
1020
+ if (enable_vmware_backdoor && ! sev_guest ( vcpu -> kvm ) )
1016
1021
set_exception_intercept (svm , GP_VECTOR );
1017
1022
1018
1023
svm_set_intercept (svm , INTERCEPT_INTR );
You can’t perform that action at this time.
0 commit comments