aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/kvm/kvm_main.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/kvm/kvm_main.c')
-rw-r--r--drivers/kvm/kvm_main.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/drivers/kvm/kvm_main.c b/drivers/kvm/kvm_main.c
index 326fa79fbebf..5d8febe580de 100644
--- a/drivers/kvm/kvm_main.c
+++ b/drivers/kvm/kvm_main.c
@@ -82,7 +82,10 @@ static struct dentry *debugfs_dir;
82 82
83#define MAX_IO_MSRS 256 83#define MAX_IO_MSRS 256
84 84
85#define CR0_RESEVED_BITS 0xffffffff1ffaffc0ULL 85#define CR0_RESERVED_BITS \
86 (~(unsigned long)(X86_CR0_PE | X86_CR0_MP | X86_CR0_EM | X86_CR0_TS \
87 | X86_CR0_ET | X86_CR0_NE | X86_CR0_WP | X86_CR0_AM \
88 | X86_CR0_NW | X86_CR0_CD | X86_CR0_PG))
86#define LMSW_GUEST_MASK 0x0eULL 89#define LMSW_GUEST_MASK 0x0eULL
87#define CR4_RESEVED_BITS (~((1ULL << 11) - 1)) 90#define CR4_RESEVED_BITS (~((1ULL << 11) - 1))
88#define CR8_RESEVED_BITS (~0x0fULL) 91#define CR8_RESEVED_BITS (~0x0fULL)
@@ -466,27 +469,27 @@ out:
466 469
467void set_cr0(struct kvm_vcpu *vcpu, unsigned long cr0) 470void set_cr0(struct kvm_vcpu *vcpu, unsigned long cr0)
468{ 471{
469 if (cr0 & CR0_RESEVED_BITS) { 472 if (cr0 & CR0_RESERVED_BITS) {
470 printk(KERN_DEBUG "set_cr0: 0x%lx #GP, reserved bits 0x%lx\n", 473 printk(KERN_DEBUG "set_cr0: 0x%lx #GP, reserved bits 0x%lx\n",
471 cr0, vcpu->cr0); 474 cr0, vcpu->cr0);
472 inject_gp(vcpu); 475 inject_gp(vcpu);
473 return; 476 return;
474 } 477 }
475 478
476 if ((cr0 & CR0_NW_MASK) && !(cr0 & CR0_CD_MASK)) { 479 if ((cr0 & X86_CR0_NW) && !(cr0 & X86_CR0_CD)) {
477 printk(KERN_DEBUG "set_cr0: #GP, CD == 0 && NW == 1\n"); 480 printk(KERN_DEBUG "set_cr0: #GP, CD == 0 && NW == 1\n");
478 inject_gp(vcpu); 481 inject_gp(vcpu);
479 return; 482 return;
480 } 483 }
481 484
482 if ((cr0 & CR0_PG_MASK) && !(cr0 & CR0_PE_MASK)) { 485 if ((cr0 & X86_CR0_PG) && !(cr0 & X86_CR0_PE)) {
483 printk(KERN_DEBUG "set_cr0: #GP, set PG flag " 486 printk(KERN_DEBUG "set_cr0: #GP, set PG flag "
484 "and a clear PE flag\n"); 487 "and a clear PE flag\n");
485 inject_gp(vcpu); 488 inject_gp(vcpu);
486 return; 489 return;
487 } 490 }
488 491
489 if (!is_paging(vcpu) && (cr0 & CR0_PG_MASK)) { 492 if (!is_paging(vcpu) && (cr0 & X86_CR0_PG)) {
490#ifdef CONFIG_X86_64 493#ifdef CONFIG_X86_64
491 if ((vcpu->shadow_efer & EFER_LME)) { 494 if ((vcpu->shadow_efer & EFER_LME)) {
492 int cs_db, cs_l; 495 int cs_db, cs_l;
@@ -1158,7 +1161,7 @@ int emulate_clts(struct kvm_vcpu *vcpu)
1158{ 1161{
1159 unsigned long cr0; 1162 unsigned long cr0;
1160 1163
1161 cr0 = vcpu->cr0 & ~CR0_TS_MASK; 1164 cr0 = vcpu->cr0 & ~X86_CR0_TS;
1162 kvm_arch_ops->set_cr0(vcpu, cr0); 1165 kvm_arch_ops->set_cr0(vcpu, cr0);
1163 return X86EMUL_CONTINUE; 1166 return X86EMUL_CONTINUE;
1164} 1167}