linux-ia64.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
To: linux-pm@vger.kernel.org, loongarch@lists.linux.dev,
	linux-acpi@vger.kernel.org, linux-arch@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-riscv@lists.infradead.org, kvmarm@lists.linux.dev,
	x86@kernel.org, linux-csky@vger.kernel.org,
	linux-doc@vger.kernel.org, linux-ia64@vger.kernel.org,
	linux-parisc@vger.kernel.org
Cc: Salil Mehta <salil.mehta@huawei.com>,
	Jean-Philippe Brucker <jean-philippe@linaro.org>,
	jianyong.wu@arm.com, justin.he@arm.com,
	James Morse <james.morse@arm.com>,
	Huacai Chen <chenhuacai@kernel.org>,
	WANG Xuerui <kernel@xen0n.name>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H. Peter Anvin" <hpa@zytor.com>,
	"Rafael J. Wysocki" <rafael@kernel.org>,
	Len Brown <lenb@kernel.org>,
	Paul Walmsley <paul.walmsley@sifive.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Albert Ou <aou@eecs.berkeley.edu>
Subject: [PATCH 05/39] ACPI: Move ACPI_HOTPLUG_CPU to be disabled on arm64 and riscv
Date: Tue, 24 Oct 2023 16:16:35 +0100	[thread overview]
Message-ID: <E1qvJ91-00AqPG-0U@rmk-PC.armlinux.org.uk> (raw)
In-Reply-To: <ZTffkAdOqL2pI2la@shell.armlinux.org.uk>

From: James Morse <james.morse@arm.com>

Neither arm64 nor riscv support physical hotadd of CPUs that were not
present at boot. For arm64 much of the platform description is in static
tables which do not have update methods. arm64 does support HOTPLUG_CPU,
which is backed by a firmware interface to turn CPUs on and off.

acpi_processor_hotadd_init() and acpi_processor_remove() are for adding
and removing CPUs that were not present at boot. arm64 systems that do this
are not supported as there is currently insufficient information in the
platform description. (e.g. did the GICR get removed too?)

arm64 currently relies on the MADT enabled flag check in map_gicc_mpidr()
to prevent CPUs that were not described as present at boot from being
added to the system. Similarly, riscv relies on the same check in
map_rintc_hartid(). Both architectures also rely on the weak 'always fails'
definitions of acpi_map_cpu() and arch_register_cpu().

Subsequent changes will redefine ACPI_HOTPLUG_CPU as making possible
CPUs present. Neither arm64 nor riscv support this.

Disable ACPI_HOTPLUG_CPU for arm64 and riscv by removing 'default y' and
selecting it on the other three ACPI architectures. This allows the weak
definitions of some symbols to be removed.

Signed-off-by: James Morse <james.morse@arm.com>
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
---
Changes since RFC:
 * Expanded conditions to avoid ACPI_HOTPLUG_CPU being enabled when
   HOTPLUG_CPU isn't.
---
 arch/ia64/Kconfig             |  1 +
 arch/loongarch/Kconfig        |  1 +
 arch/x86/Kconfig              |  1 +
 drivers/acpi/Kconfig          |  1 -
 drivers/acpi/acpi_processor.c | 18 ------------------
 5 files changed, 3 insertions(+), 19 deletions(-)

diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig
index 53faa122b0f4..a3bfd42467ab 100644
--- a/arch/ia64/Kconfig
+++ b/arch/ia64/Kconfig
@@ -16,6 +16,7 @@ config IA64
 	select ARCH_MIGHT_HAVE_PC_PARPORT
 	select ARCH_MIGHT_HAVE_PC_SERIO
 	select ACPI
+	select ACPI_HOTPLUG_CPU if ACPI_PROCESSOR && HOTPLUG_CPU
 	select ACPI_NUMA if NUMA
 	select ARCH_ENABLE_MEMORY_HOTPLUG
 	select ARCH_ENABLE_MEMORY_HOTREMOVE
diff --git a/arch/loongarch/Kconfig b/arch/loongarch/Kconfig
index e14396a2ddcb..2bddd202470e 100644
--- a/arch/loongarch/Kconfig
+++ b/arch/loongarch/Kconfig
@@ -5,6 +5,7 @@ config LOONGARCH
 	select ACPI
 	select ACPI_GENERIC_GSI if ACPI
 	select ACPI_MCFG if ACPI
+	select ACPI_HOTPLUG_CPU if ACPI_PROCESSOR && HOTPLUG_CPU
 	select ACPI_PPTT if ACPI
 	select ACPI_SYSTEM_POWER_STATES_SUPPORT	if ACPI
 	select ARCH_BINFMT_ELF_STATE
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 66bfabae8814..18729edc879d 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -60,6 +60,7 @@ config X86
 	#
 	select ACPI_LEGACY_TABLES_LOOKUP	if ACPI
 	select ACPI_SYSTEM_POWER_STATES_SUPPORT	if ACPI
+	select ACPI_HOTPLUG_CPU			if ACPI_PROCESSOR && HOTPLUG_CPU
 	select ARCH_32BIT_OFF_T			if X86_32
 	select ARCH_CLOCKSOURCE_INIT
 	select ARCH_CORRECT_STACKTRACE_ON_KRETPROBE
diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig
index cee82b473dc5..8456d48ba702 100644
--- a/drivers/acpi/Kconfig
+++ b/drivers/acpi/Kconfig
@@ -309,7 +309,6 @@ config ACPI_HOTPLUG_CPU
 	bool
 	depends on ACPI_PROCESSOR && HOTPLUG_CPU
 	select ACPI_CONTAINER
-	default y
 
 config ACPI_PROCESSOR_AGGREGATOR
 	tristate "Processor Aggregator"
diff --git a/drivers/acpi/acpi_processor.c b/drivers/acpi/acpi_processor.c
index 0f5218e361df..4fe2ef54088c 100644
--- a/drivers/acpi/acpi_processor.c
+++ b/drivers/acpi/acpi_processor.c
@@ -184,24 +184,6 @@ static void __init acpi_pcc_cpufreq_init(void) {}
 
 /* Initialization */
 #ifdef CONFIG_ACPI_HOTPLUG_CPU
-int __weak acpi_map_cpu(acpi_handle handle,
-		phys_cpuid_t physid, u32 acpi_id, int *pcpu)
-{
-	return -ENODEV;
-}
-
-int __weak acpi_unmap_cpu(int cpu)
-{
-	return -ENODEV;
-}
-
-int __weak arch_register_cpu(int cpu)
-{
-	return -ENODEV;
-}
-
-void __weak arch_unregister_cpu(int cpu) {}
-
 static int acpi_processor_hotadd_init(struct acpi_processor *pr)
 {
 	unsigned long long sta;
-- 
2.30.2


  parent reply	other threads:[~2023-10-24 15:18 UTC|newest]

Thread overview: 58+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-24 15:15 [RFC PATCH v3 00/39] ACPI/arm64: add support for virtual cpuhotplug Russell King (Oracle)
2023-10-24 15:16 ` [PATCH 01/39] parisc: simplify smp_prepare_boot_cpu() Russell King (Oracle)
2023-10-24 15:16 ` [PATCH 02/39] ACPI: Use the acpi_device_is_present() helper in more places Russell King
2023-10-24 15:16 ` [PATCH 03/39] ACPI: Rename acpi_scan_device_not_present() to be about enumeration Russell King
2023-10-24 15:16 ` [PATCH 04/39] arm64, irqchip/gic-v3, ACPI: Move MADT GICC enabled check into a helper Russell King
2023-10-24 15:16 ` Russell King [this message]
2023-10-24 15:16 ` [PATCH 06/39] drivers: base: Use present CPUs in GENERIC_CPU_DEVICES Russell King
2023-10-24 15:16 ` [PATCH 07/39] drivers: base: Allow parts of GENERIC_CPU_DEVICES to be overridden Russell King
2023-10-24 15:16 ` [PATCH 08/39] drivers: base: Move cpu_dev_init() after node_dev_init() Russell King
2023-10-24 15:16 ` [PATCH 09/39] drivers: base: remove unnecessary call to register_cpu_under_node() Russell King (Oracle)
2023-10-24 15:17 ` [PATCH 10/39] drivers: base: Print a warning instead of panic() when register_cpu() fails Russell King
2023-10-24 15:17 ` [PATCH 11/39] arm64: setup: Switch over to GENERIC_CPU_DEVICES using arch_register_cpu() Russell King
2023-10-24 15:17 ` [PATCH 12/39] ia64/topology: Switch over to GENERIC_CPU_DEVICES Russell King
2023-10-24 15:17 ` [PATCH 13/39] x86: intel_epb: Don't rely on link order Russell King
2023-10-24 15:17 ` [PATCH 14/39] x86/topology: Switch over to GENERIC_CPU_DEVICES Russell King
2023-10-24 15:17 ` [PATCH 15/39] LoongArch: " Russell King
2023-10-24 15:17 ` [PATCH 16/39] riscv: " Russell King
2023-10-24 15:17 ` [PATCH 17/39] arch_topology: Make register_cpu_capacity_sysctl() tolerant to late CPUs Russell King
2023-10-24 15:17 ` [PATCH 18/39] ACPI: Only enumerate enabled (or functional) devices Russell King
2023-10-24 18:07   ` Rafael J. Wysocki
2023-10-24 15:17 ` [PATCH 19/39] ACPI: processor: Add support for processors described as container packages Russell King
2023-10-24 15:17 ` [PATCH 20/39] ACPI: processor: Register CPUs that are online, but not described in the DSDT Russell King
2023-10-24 15:17 ` [PATCH 21/39] ACPI: processor: Register all CPUs from acpi_processor_get_info() Russell King
2023-10-24 15:18 ` [PATCH 22/39] ACPI: Rename ACPI_HOTPLUG_CPU to include 'present' Russell King
2023-10-24 15:18 ` [PATCH 23/39] drivers: base: Implement weak arch_unregister_cpu() Russell King
2023-10-24 15:18 ` [PATCH 24/39] ACPI: Move acpi_bus_trim_one() before acpi_scan_hot_remove() Russell King
2023-10-24 15:18 ` [PATCH 25/39] ACPI: Rename acpi_processor_hotadd_init and remove pre-processor guards Russell King
2023-10-24 15:18 ` [PATCH 26/39] ACPI: Add post_eject to struct acpi_scan_handler for cpu hotplug Russell King
2023-10-24 15:18 ` [PATCH 27/39] ACPI: Check _STA present bit before making CPUs not present Russell King
2023-10-24 15:18 ` [PATCH 28/39] ACPI: Warn when the present bit changes but the feature is not enabled Russell King
2023-10-24 15:18 ` [PATCH 29/39] LoongArch: Use the __weak version of arch_unregister_cpu() Russell King
2023-10-24 15:18 ` [PATCH 30/39] arm64: acpi: Move get_cpu_for_acpi_id() to a header Russell King
2023-10-24 15:18 ` [PATCH 31/39] ACPICA: Add new MADT GICC flags fields Russell King
2023-10-24 15:18 ` [PATCH 32/39] irqchip/gic-v3: Don't return errors from gic_acpi_match_gicc() Russell King
2023-10-24 15:18 ` [PATCH 33/39] irqchip/gic-v3: Add support for ACPI's disabled but 'online capable' CPUs Russell King
2023-10-24 15:19 ` [PATCH 34/39] arm64: psci: Ignore DENIED CPUs Russell King
2023-11-16  7:45   ` Jianyong Wu
2023-11-20  9:24     ` Russell King (Oracle)
2023-11-20  9:36       ` Jianyong Wu
2023-11-20  9:58         ` Russell King (Oracle)
2023-11-21  1:44           ` Jianyong Wu
2023-10-24 15:19 ` [PATCH 35/39] ACPI: add support to register CPUs based on the _STA enabled bit Russell King
2023-10-24 15:19 ` [PATCH 36/39] arm64: document virtual CPU hotplug's expectations Russell King
2023-10-24 15:19 ` [PATCH 37/39] ACPI: Add _OSC bits to advertise OS support for toggling CPU present/enabled Russell King
2023-10-24 15:19 ` [PATCH 38/39] cpumask: Add enabled cpumask for present CPUs that can be brought online Russell King
2023-10-24 15:32   ` Andy Shevchenko
2023-10-24 16:02   ` Greg Kroah-Hartman
2023-10-24 16:05     ` Russell King (Oracle)
2023-10-24 15:19 ` [PATCH 39/39] ACPI: processor: Only call arch_unregister_cpu() if HOTPLUG_CPU is selected Russell King
2023-10-24 16:31 ` [RFC PATCH v3 00/39] ACPI/arm64: add support for virtual cpuhotplug Russell King (Oracle)
2023-10-24 18:26 ` Rafael J. Wysocki
2023-10-24 19:28   ` Russell King (Oracle)
2023-12-04 18:23   ` Russell King (Oracle)
2023-12-12 19:58     ` Russell King (Oracle)
2023-12-12 20:05       ` Rafael J. Wysocki
2023-12-12 20:16         ` Russell King (Oracle)
2023-10-30 16:41 ` Miguel Luis
2023-10-30 17:51   ` Russell King (Oracle)

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=E1qvJ91-00AqPG-0U@rmk-PC.armlinux.org.uk \
    --to=rmk+kernel@armlinux.org.uk \
    --cc=aou@eecs.berkeley.edu \
    --cc=bp@alien8.de \
    --cc=chenhuacai@kernel.org \
    --cc=dave.hansen@linux.intel.com \
    --cc=hpa@zytor.com \
    --cc=james.morse@arm.com \
    --cc=jean-philippe@linaro.org \
    --cc=jianyong.wu@arm.com \
    --cc=justin.he@arm.com \
    --cc=kernel@xen0n.name \
    --cc=kvmarm@lists.linux.dev \
    --cc=lenb@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-csky@vger.kernel.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-ia64@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-parisc@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=linux-riscv@lists.infradead.org \
    --cc=loongarch@lists.linux.dev \
    --cc=mingo@redhat.com \
    --cc=palmer@dabbelt.com \
    --cc=paul.walmsley@sifive.com \
    --cc=rafael@kernel.org \
    --cc=salil.mehta@huawei.com \
    --cc=tglx@linutronix.de \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).