diff mbox

KVM: nSVM: Do not report CLTS via SVM_EXIT_WRITE_CR0 to L1

Message ID 53B06F49.8020100@web.de (mailing list archive)
State New, archived
Headers show

Commit Message

Jan Kiszka June 29, 2014, 7:55 p.m. UTC
From: Jan Kiszka <jan.kiszka@siemens.com>

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>
---
 arch/x86/kvm/svm.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Joerg Roedel July 1, 2014, 3:14 p.m. UTC | #1
On Sun, Jun 29, 2014 at 09:55:53PM +0200, Jan Kiszka wrote:
> From: Jan Kiszka <jan.kiszka@siemens.com>
> 
> 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>

Reviewed-by: Joerg Roedel <jroedel@suse.de>
Acked-by: Joerg Roedel <jroedel@suse.de>


--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
index b5e994a..c79766e1 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,
 		if (info->intercept == x86_intercept_cr_write)
 			icpt_info.exit_code += info->modrm_reg;

-		if (icpt_info.exit_code != SVM_EXIT_WRITE_CR0)
+		if (icpt_info.exit_code != SVM_EXIT_WRITE_CR0 ||
+		    info->intercept == x86_intercept_clts)
 			break;

 		intercept = svm->nested.intercept;