On Sun, Apr 06, 2025 at 12:08:29PM +0200, Thomas Gleixner wrote: > On Sat, Apr 05 2025 at 20:16, Petr Vaněk wrote: > > > Xen PV guests in DomU have APIC disabled by design, which causes > > topology_apply_cmdline_limits_early() to limit the number of possible > > CPUs to 1, regardless of the configured number of vCPUs. > > PV guests have a APIC emulation and there is no code which actually > disables the APIC by design unconditionally. There is one way though, > which disables the APIC indirectly.
It seems I have got a bit lost in APIC/ACPI abbreviations. Sorry. > xen_arch_setup() disables ACPI, which in turn causes acpi_mps_check() to > return 1, which disables the APIC. This only happens when the kernel > configuration has: > > CONFIG_X86_MPPARSE=n > CONFIG_ACPI=y > > If you enable MPPARSE the problem goes away, no? Yes, it goes away. > > + /* 'maxcpus=0' 'nosmp' 'nolapic' > > + * > > + * The apic_is_disabled check is ignored for Xen PV domains because Xen > > + * disables ACPI in unprivileged PV DomU guests, which would otherwise > > limit > > + * CPUs to 1, even if multiple vCPUs were configured. > > This is the wrong place as it invalidates the effect of 'nolapic' on the > kernel command line for XEN PV. > > You actually explain in the comment that XEN disables ACPI, so why are > you slapping this xen check into this code instead of doing the obvious > and prevent acpi_mps_check() to cause havoc? Thank you for your explanation and suggestion. I will correct acpi_mps_check() in following patch. Thanks, Petr