x86/xen/smp_pv: Register the boot CPU APIC properly
authorThomas Gleixner <tglx@linutronix.de>
Thu, 2 May 2024 14:39:47 +0000 (16:39 +0200)
committerJuergen Gross <jgross@suse.com>
Thu, 2 May 2024 16:01:43 +0000 (18:01 +0200)
commit8a95db3bf8a32186fe448b1a934afbd5f1da0263
treed83de044935a15edc860b41c182a8397ee54a805
parente67572cd2204894179d89bd7b984072f19313b03
x86/xen/smp_pv: Register the boot CPU APIC properly

The topology core expects the boot APIC to be registered from earhy APIC
detection first and then again when the firmware tables are evaluated. This
is used for detecting the real BSP CPU on a kexec kernel.

The recent conversion of XEN/PV to register fake APIC IDs failed to
register the boot CPU APIC correctly as it only registers it once. This
causes the BSP detection mechanism to trigger wrongly:

   CPU topo: Boot CPU APIC ID not the first enumerated APIC ID: 0 > 1

Additionally this results in one CPU being ignored.

Register the boot CPU APIC twice so that the XEN/PV fake enumeration
behaves like real firmware.

Reported-by: Juergen Gross <jgross@suse.com>
Fixes: e75307023466 ("x86/xen/smp_pv: Register fake APICs")
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Tested-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Juergen Gross <jgross@suse.com>
Link: https://lore.kernel.org/r/87a5l8s2fg.ffs@tglx
Signed-off-by: Juergen Gross <jgross@suse.com>
arch/x86/xen/smp_pv.c