diff options
Diffstat (limited to 'drivers/kvm')
-rw-r--r-- | drivers/kvm/kvm.h | 2 | ||||
-rw-r--r-- | drivers/kvm/kvm_main.c | 2 | ||||
-rw-r--r-- | drivers/kvm/svm.c | 1 | ||||
-rw-r--r-- | drivers/kvm/vmx.c | 17 |
4 files changed, 1 insertions, 21 deletions
diff --git a/drivers/kvm/kvm.h b/drivers/kvm/kvm.h index a4331da816d0..7361c45d70c9 100644 --- a/drivers/kvm/kvm.h +++ b/drivers/kvm/kvm.h | |||
@@ -383,8 +383,6 @@ struct kvm_arch_ops { | |||
383 | void (*get_cs_db_l_bits)(struct kvm_vcpu *vcpu, int *db, int *l); | 383 | void (*get_cs_db_l_bits)(struct kvm_vcpu *vcpu, int *db, int *l); |
384 | void (*decache_cr0_cr4_guest_bits)(struct kvm_vcpu *vcpu); | 384 | void (*decache_cr0_cr4_guest_bits)(struct kvm_vcpu *vcpu); |
385 | void (*set_cr0)(struct kvm_vcpu *vcpu, unsigned long cr0); | 385 | void (*set_cr0)(struct kvm_vcpu *vcpu, unsigned long cr0); |
386 | void (*set_cr0_no_modeswitch)(struct kvm_vcpu *vcpu, | ||
387 | unsigned long cr0); | ||
388 | void (*set_cr3)(struct kvm_vcpu *vcpu, unsigned long cr3); | 386 | void (*set_cr3)(struct kvm_vcpu *vcpu, unsigned long cr3); |
389 | void (*set_cr4)(struct kvm_vcpu *vcpu, unsigned long cr4); | 387 | void (*set_cr4)(struct kvm_vcpu *vcpu, unsigned long cr4); |
390 | void (*set_efer)(struct kvm_vcpu *vcpu, u64 efer); | 388 | void (*set_efer)(struct kvm_vcpu *vcpu, u64 efer); |
diff --git a/drivers/kvm/kvm_main.c b/drivers/kvm/kvm_main.c index 205998c141fb..b998bc68e9f2 100644 --- a/drivers/kvm/kvm_main.c +++ b/drivers/kvm/kvm_main.c | |||
@@ -1936,7 +1936,7 @@ static int kvm_vcpu_ioctl_set_sregs(struct kvm_vcpu *vcpu, | |||
1936 | kvm_arch_ops->decache_cr0_cr4_guest_bits(vcpu); | 1936 | kvm_arch_ops->decache_cr0_cr4_guest_bits(vcpu); |
1937 | 1937 | ||
1938 | mmu_reset_needed |= vcpu->cr0 != sregs->cr0; | 1938 | mmu_reset_needed |= vcpu->cr0 != sregs->cr0; |
1939 | kvm_arch_ops->set_cr0_no_modeswitch(vcpu, sregs->cr0); | 1939 | kvm_arch_ops->set_cr0(vcpu, sregs->cr0); |
1940 | 1940 | ||
1941 | mmu_reset_needed |= vcpu->cr4 != sregs->cr4; | 1941 | mmu_reset_needed |= vcpu->cr4 != sregs->cr4; |
1942 | kvm_arch_ops->set_cr4(vcpu, sregs->cr4); | 1942 | kvm_arch_ops->set_cr4(vcpu, sregs->cr4); |
diff --git a/drivers/kvm/svm.c b/drivers/kvm/svm.c index 64afc5cf890d..d3cc1157d23b 100644 --- a/drivers/kvm/svm.c +++ b/drivers/kvm/svm.c | |||
@@ -1716,7 +1716,6 @@ static struct kvm_arch_ops svm_arch_ops = { | |||
1716 | .get_cs_db_l_bits = svm_get_cs_db_l_bits, | 1716 | .get_cs_db_l_bits = svm_get_cs_db_l_bits, |
1717 | .decache_cr0_cr4_guest_bits = svm_decache_cr0_cr4_guest_bits, | 1717 | .decache_cr0_cr4_guest_bits = svm_decache_cr0_cr4_guest_bits, |
1718 | .set_cr0 = svm_set_cr0, | 1718 | .set_cr0 = svm_set_cr0, |
1719 | .set_cr0_no_modeswitch = svm_set_cr0, | ||
1720 | .set_cr3 = svm_set_cr3, | 1719 | .set_cr3 = svm_set_cr3, |
1721 | .set_cr4 = svm_set_cr4, | 1720 | .set_cr4 = svm_set_cr4, |
1722 | .set_efer = svm_set_efer, | 1721 | .set_efer = svm_set_efer, |
diff --git a/drivers/kvm/vmx.c b/drivers/kvm/vmx.c index aa7e2ba6fb5a..027a9625ef90 100644 --- a/drivers/kvm/vmx.c +++ b/drivers/kvm/vmx.c | |||
@@ -788,22 +788,6 @@ static void vmx_set_cr0(struct kvm_vcpu *vcpu, unsigned long cr0) | |||
788 | vcpu->cr0 = cr0; | 788 | vcpu->cr0 = cr0; |
789 | } | 789 | } |
790 | 790 | ||
791 | /* | ||
792 | * Used when restoring the VM to avoid corrupting segment registers | ||
793 | */ | ||
794 | static void vmx_set_cr0_no_modeswitch(struct kvm_vcpu *vcpu, unsigned long cr0) | ||
795 | { | ||
796 | if (!vcpu->rmode.active && !(cr0 & CR0_PE_MASK)) | ||
797 | enter_rmode(vcpu); | ||
798 | |||
799 | vcpu->rmode.active = ((cr0 & CR0_PE_MASK) == 0); | ||
800 | update_exception_bitmap(vcpu); | ||
801 | vmcs_writel(CR0_READ_SHADOW, cr0); | ||
802 | vmcs_writel(GUEST_CR0, | ||
803 | (cr0 & ~KVM_GUEST_CR0_MASK) | KVM_VM_CR0_ALWAYS_ON); | ||
804 | vcpu->cr0 = cr0; | ||
805 | } | ||
806 | |||
807 | static void vmx_set_cr3(struct kvm_vcpu *vcpu, unsigned long cr3) | 791 | static void vmx_set_cr3(struct kvm_vcpu *vcpu, unsigned long cr3) |
808 | { | 792 | { |
809 | vmcs_writel(GUEST_CR3, cr3); | 793 | vmcs_writel(GUEST_CR3, cr3); |
@@ -2069,7 +2053,6 @@ static struct kvm_arch_ops vmx_arch_ops = { | |||
2069 | .get_cs_db_l_bits = vmx_get_cs_db_l_bits, | 2053 | .get_cs_db_l_bits = vmx_get_cs_db_l_bits, |
2070 | .decache_cr0_cr4_guest_bits = vmx_decache_cr0_cr4_guest_bits, | 2054 | .decache_cr0_cr4_guest_bits = vmx_decache_cr0_cr4_guest_bits, |
2071 | .set_cr0 = vmx_set_cr0, | 2055 | .set_cr0 = vmx_set_cr0, |
2072 | .set_cr0_no_modeswitch = vmx_set_cr0_no_modeswitch, | ||
2073 | .set_cr3 = vmx_set_cr3, | 2056 | .set_cr3 = vmx_set_cr3, |
2074 | .set_cr4 = vmx_set_cr4, | 2057 | .set_cr4 = vmx_set_cr4, |
2075 | #ifdef CONFIG_X86_64 | 2058 | #ifdef CONFIG_X86_64 |