aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Kiszka <jan.kiszka@siemens.com>2014-06-29 15:55:53 -0400
committerPaolo Bonzini <pbonzini@redhat.com>2014-07-09 12:09:55 -0400
commit62baf44cad3bc6b37115cc21e4228fe53d4f3474 (patch)
tree7b7514f93242b5e0db8c44024dee67a93fd437de
parent9f6226a762c7ae02f6a23a3d4fc552dafa57ea23 (diff)
KVM: nSVM: Do not report CLTS via SVM_EXIT_WRITE_CR0 to L1
CLTS only changes TS which is not monitored by selected CR0 interception. So skip any attempt to translate WRITE_CR0 to CR0_SEL_WRITE for this instruction. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-rw-r--r--arch/x86/kvm/svm.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
index b5e994ad0135..c79766e1f1e0 100644
--- a/arch/x86/kvm/svm.c
+++ b/arch/x86/kvm/svm.c
@@ -4205,7 +4205,8 @@ static int svm_check_intercept(struct kvm_vcpu *vcpu,
4205 if (info->intercept == x86_intercept_cr_write) 4205 if (info->intercept == x86_intercept_cr_write)
4206 icpt_info.exit_code += info->modrm_reg; 4206 icpt_info.exit_code += info->modrm_reg;
4207 4207
4208 if (icpt_info.exit_code != SVM_EXIT_WRITE_CR0) 4208 if (icpt_info.exit_code != SVM_EXIT_WRITE_CR0 ||
4209 info->intercept == x86_intercept_clts)
4209 break; 4210 break;
4210 4211
4211 intercept = svm->nested.intercept; 4212 intercept = svm->nested.intercept;