KVM: x86: Remove useless regs_page pointer from kvm_lapic
authorTakuya Yoshikawa <yoshikawa.takuya@oss.ntt.co.jp>
Sat, 5 Mar 2011 03:40:20 +0000 (12:40 +0900)
committerMarcelo Tosatti <mtosatti@redhat.com>
Thu, 17 Mar 2011 16:08:33 +0000 (13:08 -0300)
Access to this page is mostly done through the regs member which holds
the address to this page.  The exceptions are in vmx_vcpu_reset() and
kvm_free_lapic() and these both can easily be converted to using regs.

Signed-off-by: Takuya Yoshikawa <yoshikawa.takuya@oss.ntt.co.jp>
Signed-off-by: Avi Kivity <avi@redhat.com>
arch/x86/kvm/lapic.c
arch/x86/kvm/lapic.h
arch/x86/kvm/vmx.c

index 0171e66..2b2255b 100644 (file)
@@ -871,8 +871,8 @@ void kvm_free_lapic(struct kvm_vcpu *vcpu)
 
        hrtimer_cancel(&vcpu->arch.apic->lapic_timer.timer);
 
-       if (vcpu->arch.apic->regs_page)
-               __free_page(vcpu->arch.apic->regs_page);
+       if (vcpu->arch.apic->regs)
+               free_page((unsigned long)vcpu->arch.apic->regs);
 
        kfree(vcpu->arch.apic);
 }
@@ -1061,13 +1061,12 @@ int kvm_create_lapic(struct kvm_vcpu *vcpu)
 
        vcpu->arch.apic = apic;
 
-       apic->regs_page = alloc_page(GFP_KERNEL|__GFP_ZERO);
-       if (apic->regs_page == NULL) {
+       apic->regs = (void *)get_zeroed_page(GFP_KERNEL);
+       if (!apic->regs) {
                printk(KERN_ERR "malloc apic regs error for vcpu %x\n",
                       vcpu->vcpu_id);
                goto nomem_free_apic;
        }
-       apic->regs = page_address(apic->regs_page);
        apic->vcpu = vcpu;
 
        hrtimer_init(&apic->lapic_timer.timer, CLOCK_MONOTONIC,
index f5fe32c..52c9e6b 100644 (file)
@@ -13,7 +13,6 @@ struct kvm_lapic {
        u32 divide_count;
        struct kvm_vcpu *vcpu;
        bool irr_pending;
-       struct page *regs_page;
        void *regs;
        gpa_t vapic_addr;
        struct page *vapic_page;
index e2b8c6b..3febb76 100644 (file)
@@ -2821,7 +2821,7 @@ static int vmx_vcpu_reset(struct kvm_vcpu *vcpu)
                vmcs_write64(VIRTUAL_APIC_PAGE_ADDR, 0);
                if (vm_need_tpr_shadow(vmx->vcpu.kvm))
                        vmcs_write64(VIRTUAL_APIC_PAGE_ADDR,
-                               page_to_phys(vmx->vcpu.arch.apic->regs_page));
+                                    __pa(vmx->vcpu.arch.apic->regs));
                vmcs_write32(TPR_THRESHOLD, 0);
        }