From: Jan Beulich Date: Wed, 14 Oct 2020 12:05:10 +0000 (+0200) Subject: x86/vLAPIC: vlapic_init() runs only once for a vCPU X-Git-Tag: archive/raspbian/4.16.0+51-g0941d6cb-1+rpi1~2^2~42^2~1511 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=875248527906e6e98812d3ff844bcccbdd594768;p=xen.git x86/vLAPIC: vlapic_init() runs only once for a vCPU Hence there's no need to guard allocation / mapping by checks whether the same action has been done before. I assume this was a transient change which should have been undone before 509529e99148 ("x86 hvm: Xen interface and implementation for virtual S3") got committed. While touching this code, drop the pretty useless dprintk()-s. Signed-off-by: Jan Beulich Reviewed-by: Andrew Cooper --- diff --git a/xen/arch/x86/hvm/vlapic.c b/xen/arch/x86/hvm/vlapic.c index 59660a8af4..5e21fb4937 100644 --- a/xen/arch/x86/hvm/vlapic.c +++ b/xen/arch/x86/hvm/vlapic.c @@ -1610,27 +1610,17 @@ int vlapic_init(struct vcpu *v) vlapic->pt.source = PTSRC_lapic; - if (vlapic->regs_page == NULL) - { - vlapic->regs_page = alloc_domheap_page(v->domain, MEMF_no_owner); - if ( vlapic->regs_page == NULL ) - { - dprintk(XENLOG_ERR, "alloc vlapic regs error: %d/%d\n", - v->domain->domain_id, v->vcpu_id); - return -ENOMEM; - } - } - if (vlapic->regs == NULL) + vlapic->regs_page = alloc_domheap_page(v->domain, MEMF_no_owner); + if ( !vlapic->regs_page ) + return -ENOMEM; + + vlapic->regs = __map_domain_page_global(vlapic->regs_page); + if ( vlapic->regs == NULL ) { - vlapic->regs = __map_domain_page_global(vlapic->regs_page); - if ( vlapic->regs == NULL ) - { - free_domheap_page(vlapic->regs_page); - dprintk(XENLOG_ERR, "map vlapic regs error: %d/%d\n", - v->domain->domain_id, v->vcpu_id); - return -ENOMEM; - } + free_domheap_page(vlapic->regs_page); + return -ENOMEM; } + clear_page(vlapic->regs); vlapic_reset(vlapic);