[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 1/1] x86/acpi: Don't limit CPUs to 1 for Xen PV guests due to disabled ACPI
- To: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
- From: Petr Vaněk <arkamar@xxxxxxxx>
- Date: Mon, 7 Apr 2025 15:24:27 +0200
- Cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, arkamar@xxxxxxxx, Juergen Gross <jgross@xxxxxxxx>, linux-kernel@xxxxxxxxxxxxxxx, stable@xxxxxxxxxxxxxxx, x86@xxxxxxxxxx, xen-devel@xxxxxxxxxxxxxxxxxxxx, linux-acpi@xxxxxxxxxxxxxxx
- Delivery-date: Mon, 07 Apr 2025 13:25:11 +0000
- Ironport-data: A9a23:ws5s2qz7AqqBuXO7cth6t+fKxyrEfRIJ4+MujC+fZmUNrF6WrkVWz 2YcUD+PPf2JZzTyKtF+aoywo0pVusOEyNRnSgNu+FhgHilAwSbn6XV1DatS0we6dJCroJdPt p1GAjX4BJlpCCKa/1H1b+WJQUBUjcmgXqD7BPPPJhd/TAplTDZJoR94kobVuKYx6TSCK13L4 I6aT/H3Ygf/hmYoaj1Mt8pvlTs21BjMkGJF1rABTa8T1LPuvyF9JI4SI6i3M0z5TuF8dsamR /zOxa2O5WjQ+REgELuNyt4XpWVXKlJ6FVHmZkt+A8BOsDAbzsAB+vpT2M4nVKtio27hc+ZZk 4wR6MPqGW/FCYWX8AgVe0Ew/yiTpsSq8pefSZS0mZT7I0Er7xIAahihZa07FdRwxwp5PY1B3 d4fIygqbwmMveWJn6nkQOR83OVzPuC+aevzulk4pd3YJfkjBIvGX72TvJlT0TEsnN1LW/3MD yYbQWYxKk6dPlsVYAhRV89WcOSA3xETdxVRslGcoKMty2HPyAVqlrP/WDbQUofTH5QJwRbF+ woq+UzhIhcxF/GZ9AOB2Xe2t77I3gj/G9srQejQGvlCxQf7KnYoIBQMVlK+qOORg1K6UskZI F580iMoobI/6wqgSd7lUgfjiHWFogQdS5xbFOhSwBHdlILX7hyfC2xCSSROAPQ6u8smbTgr0 EKVhdTvBCwpvLD9YWKQ8PKYoC2/PQARLHQefmkUQA0d+d7hrYovyBXVQb5LEqGvicbuMSrt2 D3Mpy87750XjMgWx+Cy9kjGqyyjq4KPTQMv4AjTGGW/4WtRYI+jepzt6lXB6/tEBJiWQ0PHv 3UencWaqucUAvmljzCESuEANK+m6uzDMzDGh1NrWZ47+FyQF2WLId4WumwjYh0zbYBbJFcFf XPuhO+Y37cLVFPCUEO9S9/Z5xgCpUQ4KenYaw==
- Ironport-hdrordr: A9a23:wZCehaMFyYxuqsBcTsyjsMiBIKoaSvp037Dk7SxMoHtuA6ulfq GV7ZAmPHDP5gr5NEtLpTnEAtjifZq+z+8R3WByB9aftWDd0QPCEGgh1/qB/9SKIULDH4BmuJ uIC5IfNOHN
- Ironport-phdr: A9a23:BaswThdmsij45968CuU390jxlGM+7djLVj580XLHo4xHfqnrxZn+J kuXvawr0ASTG92DoKgc07CG+4nbGkU+or+5+EgYd5JNUxJXwe43pCcHROOjNwjQAcWuURYHG t9fXkRu5XCxPBsdMs//Y1rPvi/6tmZKSV3wOgVvO+v6BJPZgdip2OCu4Z3TZBhDiCagbb9oI xi7oxvdutMKjYd+Jao91AfFrmdWd+lV2GhlOU+dkxHg68i/+5Ju7z5esO87+c5aVqX6caU4T bhGAzkjLms4+s7luwTdQAWW/ncSXX0YnRVRDwXb4x/0Q4/9vSTmuOVz3imaJtD2QqsvWTu+9 adrSQTnhzkBOjUk7WzYkM1wjKZcoBK8uxxyxpPfbY+JOPZieK7WYMgXTnRdUMlPSyNBA5u8b 4oRAOoHIeZYtJT2q18XoRejGQWgGObjxzlVjXH0wKI6yfwsHwHY0gE+AtwAvnfaotL3O6ccX u+60KbGwC7fb/5Vwzrx9JLFfgwjrPyKQLl+cdDRyU4qFw7dlFuft5DlPymI3esCqWeb6fRlV eGygGMgsQ5xuDuvyd0piobTnIIY0UrL9Tl9wIkvPt20UlJ0YN+9HZZWqiqVOJd4TNk4TGF0p CY11KcGuZijcSQX1JgqyB7RZ+GDfoaI/x/uSOafLzh3iX9meb+yiBm//0ijx+DiWce501RHo yREn9TMuX0Byh/e58qGR/dg/Uqs3yuE2QPL6uxcLk05lLDXJ4Ahz7MwjJYfr1rPEy3slEj0j KKablso9vWm5uj9fLnquIOQO5VqhgzxLqgigMiyDOU+PwMTRWaU4/6826fm/UDhRbVKieA5n bfBvZDBIMQbura5AwhI0oY/8xq/Dymp0NAfnXQfI1JFfQuLj5PsO1HSOPD0EOqzj06wnzh1w fDGIqfhAojILnTZjLjgfK5x609ayAUt0dBS/51ZB7AbLP7tWkL8tMbUAgEnPwG22erqCtVw2 psbWW2VA6+ZNK3SsUWP5uIqO+SDfpUVuDXnJPgg/fHul2Q0lkUBfamtx5QXc2q0EehnIkmBe 3rjns8BEXsWvgo5VOHlkkeCUT1JaHa3Ra08/Co2B5i6DYfHXI+tm6aN0zu6H5FOfGBJFkiME Wv0d4WDQ/oDciSSLdJ7kjMaW7mtUZMu1RaptA/i1bVnNOTZ9zYEupLiyNh1/ezTlB4o+TNoC MSd1nmBT3tokWMQWz82wKd/rFRyy1qA0KV1mP9YGsJJ5/NPTAg6MYTQz+tgC9D9Qg7BZMuGS E66QtW6BjE8Vs4xw9AKY0dyANiiihHD3yy3A78JjbyLA5o08qPT3nTrOsly1W7K1LM9gFk+X stPKWqmi7Zw9gfNAY7FiliWmLi0dasC2C7A72ODzWuVvEFESw58S6rEUm4ZZkvOt9T54UHCQ KGyBrQ7KAdBztSCKqRSZt3zkVpGXOvjOMjZY2+pmWewCgyIxrSXbIrxYGgdxzjdCFManAwJ4 XmGMg0+Cj+7o23CFDxuCU7vY0T0/Ol6qXO7SFI0zg6TY0J7y7W14h8ViOeCS/McwL0Eoj0tq zZqE1an2dLZFd6AqxBmfKVGbtMx+E1H2n7BtwxhIpygKLhvhlofcwRxokPv2Ax7CoZensgwq nMl0g5yJLmG0FNOaTyYx4r8Or7JJWno+hCgdarW1kvZ0NaM9adcoMg//mnjuwSgDQIN93hmw 99YyTPI+prOHCIWUJTsTlww8Rlq4b3XNHoT/YTRgEVhLbP8jDbEeNFhUOI/yR+lds13Ob+AH RS0GN9MVJvmE/Ajh1X8NkFMB+tV7qNhepr+L5O7
- List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
Xen disables ACPI for PV guests in DomU, which causes acpi_mps_check()
to return 1 when CONFIG_X86_MPPARSE is not set. As a result, APIC is
disabled and the guest is later limited to a single vCPU, despite being
configured with more.
This regression was introduced in version 6.9 in commit 7c0edad3643f
("x86/cpu/topology: Rework possible CPU management"), which added an
early check that limits CPUs to 1 if apic_is_disabled.
This patch updates acpi_mps_check() logic to return 0 early when running
as a Xen PV guest in DomU, preventing APIC from being disabled in this
specific case and restoring correct multi-vCPU behaviour.
Fixes: 7c0edad3643f ("x86/cpu/topology: Rework possible CPU management")
Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
Cc: x86@xxxxxxxxxx
Cc: xen-devel@xxxxxxxxxxxxxxxxxxxx
Cc: stable@xxxxxxxxxxxxxxx # 6.9+
Signed-off-by: Petr Vaněk <arkamar@xxxxxxxx>
---
arch/x86/kernel/acpi/boot.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
index dae6a73be40e..9fa321a95eb3 100644
--- a/arch/x86/kernel/acpi/boot.c
+++ b/arch/x86/kernel/acpi/boot.c
@@ -23,6 +23,8 @@
#include <linux/serial_core.h>
#include <linux/pgtable.h>
+#include <xen/xen.h>
+
#include <asm/e820/api.h>
#include <asm/irqdomain.h>
#include <asm/pci_x86.h>
@@ -1729,6 +1731,15 @@ int __init acpi_mps_check(void)
{
#if defined(CONFIG_X86_LOCAL_APIC) && !defined(CONFIG_X86_MPPARSE)
/* mptable code is not built-in*/
+
+ /*
+ * Xen disables ACPI in PV DomU guests but it still emulates APIC and
+ * supports SMP. Returning early here ensures that APIC is not disabled
+ * unnecessarily and the guest is not limited to a single vCPU.
+ */
+ if (xen_pv_domain() && !xen_initial_domain())
+ return 0;
+
if (acpi_disabled || acpi_noirq) {
pr_warn("MPS support code is not built-in, using acpi=off or
acpi=noirq or pci=noacpi may have problem\n");
return 1;
--
2.48.1
|