From: Jan Beulich Date: Mon, 17 Jun 2019 15:38:35 +0000 (+0200) Subject: x86/x2APIC: tighten check in cluster mode IPI sending X-Git-Tag: archive/raspbian/4.14.0+80-gd101b417b7-1+rpi1^2~63^2~2018 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=2ac48fd52d846a8c3949373aa0d776c6cb5452db;p=xen.git x86/x2APIC: tighten check in cluster mode IPI sending It is only of limited use to check the full accumulated 32-bit value, because the high halves are the cluster ID. What needs to be non-zero is the bit map at the bottom, or else APIC errors will result. Signed-off-by: Jan Beulich Reviewed-by: Andrew Cooper --- diff --git a/xen/arch/x86/genapic/x2apic.c b/xen/arch/x86/genapic/x2apic.c index 334dae527e..74907e6002 100644 --- a/xen/arch/x86/genapic/x2apic.c +++ b/xen/arch/x86/genapic/x2apic.c @@ -154,7 +154,7 @@ static void send_IPI_mask_x2apic_cluster(const cpumask_t *cpumask, int vector) msr_content |= per_cpu(cpu_2_logical_apicid, cpu); } - BUG_ON(!msr_content); + BUG_ON(!(msr_content & 0xffff)); msr_content = (msr_content << 32) | APIC_DM_FIXED | APIC_DEST_LOGICAL | vector; apic_wrmsr(APIC_ICR, msr_content);