KVM: x86: Remove useless regs_page pointer from kvm_lapic
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>
This commit is contained in:
committed by
Marcelo Tosatti
parent
c8ce057eaf
commit
afc20184b7
@@ -871,8 +871,8 @@ void kvm_free_lapic(struct kvm_vcpu *vcpu)
|
|||||||
|
|
||||||
hrtimer_cancel(&vcpu->arch.apic->lapic_timer.timer);
|
hrtimer_cancel(&vcpu->arch.apic->lapic_timer.timer);
|
||||||
|
|
||||||
if (vcpu->arch.apic->regs_page)
|
if (vcpu->arch.apic->regs)
|
||||||
__free_page(vcpu->arch.apic->regs_page);
|
free_page((unsigned long)vcpu->arch.apic->regs);
|
||||||
|
|
||||||
kfree(vcpu->arch.apic);
|
kfree(vcpu->arch.apic);
|
||||||
}
|
}
|
||||||
@@ -1061,13 +1061,12 @@ int kvm_create_lapic(struct kvm_vcpu *vcpu)
|
|||||||
|
|
||||||
vcpu->arch.apic = apic;
|
vcpu->arch.apic = apic;
|
||||||
|
|
||||||
apic->regs_page = alloc_page(GFP_KERNEL|__GFP_ZERO);
|
apic->regs = (void *)get_zeroed_page(GFP_KERNEL);
|
||||||
if (apic->regs_page == NULL) {
|
if (!apic->regs) {
|
||||||
printk(KERN_ERR "malloc apic regs error for vcpu %x\n",
|
printk(KERN_ERR "malloc apic regs error for vcpu %x\n",
|
||||||
vcpu->vcpu_id);
|
vcpu->vcpu_id);
|
||||||
goto nomem_free_apic;
|
goto nomem_free_apic;
|
||||||
}
|
}
|
||||||
apic->regs = page_address(apic->regs_page);
|
|
||||||
apic->vcpu = vcpu;
|
apic->vcpu = vcpu;
|
||||||
|
|
||||||
hrtimer_init(&apic->lapic_timer.timer, CLOCK_MONOTONIC,
|
hrtimer_init(&apic->lapic_timer.timer, CLOCK_MONOTONIC,
|
||||||
|
@@ -13,7 +13,6 @@ struct kvm_lapic {
|
|||||||
u32 divide_count;
|
u32 divide_count;
|
||||||
struct kvm_vcpu *vcpu;
|
struct kvm_vcpu *vcpu;
|
||||||
bool irr_pending;
|
bool irr_pending;
|
||||||
struct page *regs_page;
|
|
||||||
void *regs;
|
void *regs;
|
||||||
gpa_t vapic_addr;
|
gpa_t vapic_addr;
|
||||||
struct page *vapic_page;
|
struct page *vapic_page;
|
||||||
|
@@ -2821,7 +2821,7 @@ static int vmx_vcpu_reset(struct kvm_vcpu *vcpu)
|
|||||||
vmcs_write64(VIRTUAL_APIC_PAGE_ADDR, 0);
|
vmcs_write64(VIRTUAL_APIC_PAGE_ADDR, 0);
|
||||||
if (vm_need_tpr_shadow(vmx->vcpu.kvm))
|
if (vm_need_tpr_shadow(vmx->vcpu.kvm))
|
||||||
vmcs_write64(VIRTUAL_APIC_PAGE_ADDR,
|
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);
|
vmcs_write32(TPR_THRESHOLD, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user