diff options
| author | Jan Kiszka <jan.kiszka@siemens.com> | 2014-06-29 15:55:53 -0400 |
|---|---|---|
| committer | Paolo Bonzini <pbonzini@redhat.com> | 2014-07-09 12:09:55 -0400 |
| commit | 62baf44cad3bc6b37115cc21e4228fe53d4f3474 (patch) | |
| tree | 7b7514f93242b5e0db8c44024dee67a93fd437de | |
| parent | 9f6226a762c7ae02f6a23a3d4fc552dafa57ea23 (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.c | 3 |
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; |
