x86/xen/smp_pv: Count number of vCPUs early
authorThomas Gleixner <tglx@linutronix.de>
Tue, 13 Feb 2024 21:06:00 +0000 (22:06 +0100)
committerThomas Gleixner <tglx@linutronix.de>
Thu, 15 Feb 2024 21:07:44 +0000 (22:07 +0100)
commitc8f808231f1fb63553f90d4b3796cb6804d1e693
tree93ea4ada541ca2fab34a9ef7af9b1a3adf8a6922
parentea2dd8a5d4361ef0b000196043fa407f05b16f1d
x86/xen/smp_pv: Count number of vCPUs early

XEN/PV has a completely broken vCPU enumeration scheme, which just works by
chance and provides zero topology information. Each vCPU ends up being a
single core package.

Dom0 provides MADT which can be used for topology information, but that
table is the unmodified host table, which means that there can be more CPUs
registered than the number of vCPUs XEN provides for the dom0 guest.

DomU does not have ACPI and both rely on counting the possible vCPUs via an
hypercall.

To prepare for using CPUID topology information either via MADT or via fake
APIC IDs count the number of possible CPUs during early boot and adjust
nr_cpu_ids() accordingly.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Tested-by: Michael Kelley <mhklinux@outlook.com>
Tested-by: Sohil Mehta <sohil.mehta@intel.com>
Link: https://lore.kernel.org/r/20240213210252.571795063@linutronix.de
arch/x86/xen/enlighten_pv.c
arch/x86/xen/smp.h
arch/x86/xen/smp_pv.c