aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/kvm/svm.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/kvm/svm.c')
-rw-r--r--drivers/kvm/svm.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/drivers/kvm/svm.c b/drivers/kvm/svm.c
index 85f61dd1e936..83da4ea150a3 100644
--- a/drivers/kvm/svm.c
+++ b/drivers/kvm/svm.c
@@ -528,7 +528,13 @@ static void init_vmcb(struct vmcb *vmcb)
528 save->cs.attrib = SVM_SELECTOR_READ_MASK | SVM_SELECTOR_P_MASK | 528 save->cs.attrib = SVM_SELECTOR_READ_MASK | SVM_SELECTOR_P_MASK |
529 SVM_SELECTOR_S_MASK | SVM_SELECTOR_CODE_MASK; 529 SVM_SELECTOR_S_MASK | SVM_SELECTOR_CODE_MASK;
530 save->cs.limit = 0xffff; 530 save->cs.limit = 0xffff;
531 save->cs.base = 0xffff0000; 531 /*
532 * cs.base should really be 0xffff0000, but vmx can't handle that, so
533 * be consistent with it.
534 *
535 * Replace when we have real mode working for vmx.
536 */
537 save->cs.base = 0xf0000;
532 538
533 save->gdtr.limit = 0xffff; 539 save->gdtr.limit = 0xffff;
534 save->idtr.limit = 0xffff; 540 save->idtr.limit = 0xffff;
@@ -603,6 +609,10 @@ static void svm_vcpu_put(struct kvm_vcpu *vcpu)
603 put_cpu(); 609 put_cpu();
604} 610}
605 611
612static void svm_vcpu_decache(struct kvm_vcpu *vcpu)
613{
614}
615
606static void svm_cache_regs(struct kvm_vcpu *vcpu) 616static void svm_cache_regs(struct kvm_vcpu *vcpu)
607{ 617{
608 vcpu->regs[VCPU_REGS_RAX] = vcpu->svm->vmcb->save.rax; 618 vcpu->regs[VCPU_REGS_RAX] = vcpu->svm->vmcb->save.rax;
@@ -723,7 +733,7 @@ static void svm_set_cr0(struct kvm_vcpu *vcpu, unsigned long cr0)
723 } 733 }
724#endif 734#endif
725 vcpu->svm->cr0 = cr0; 735 vcpu->svm->cr0 = cr0;
726 vcpu->svm->vmcb->save.cr0 = cr0 | CR0_PG_MASK; 736 vcpu->svm->vmcb->save.cr0 = cr0 | CR0_PG_MASK | CR0_WP_MASK;
727 vcpu->cr0 = cr0; 737 vcpu->cr0 = cr0;
728} 738}
729 739
@@ -1671,6 +1681,7 @@ static struct kvm_arch_ops svm_arch_ops = {
1671 1681
1672 .vcpu_load = svm_vcpu_load, 1682 .vcpu_load = svm_vcpu_load,
1673 .vcpu_put = svm_vcpu_put, 1683 .vcpu_put = svm_vcpu_put,
1684 .vcpu_decache = svm_vcpu_decache,
1674 1685
1675 .set_guest_debug = svm_guest_debug, 1686 .set_guest_debug = svm_guest_debug,
1676 .get_msr = svm_get_msr, 1687 .get_msr = svm_get_msr,