From: Jonathan Cameron <Jonathan.Cameron@huawei.com> To: Thomas Gleixner <tglx@linutronix.de>, Peter Zijlstra <peterz@infradead.org>, <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>, <kvmarm@lists.linux.dev>, <x86@kernel.org>, Russell King <linux@armlinux.org.uk>, "Rafael J . Wysocki" <rafael@kernel.org>, Miguel Luis <miguel.luis@oracle.com>, James Morse <james.morse@arm.com>, Salil Mehta <salil.mehta@huawei.com>, Jean-Philippe Brucker <jean-philippe@linaro.org>, Catalin Marinas <catalin.marinas@arm.com>, Will Deacon <will@kernel.org>, Marc Zyngier <maz@kernel.org>, Hanjun Guo <guohanjun@huawei.com> Cc: Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>, Dave Hansen <dave.hansen@linux.intel.com>, <linuxarm@huawei.com>, <justin.he@arm.com>, <jianyong.wu@arm.com>, Lorenzo Pieralisi <lpieralisi@kernel.org>, Sudeep Holla <sudeep.holla@arm.com> Subject: [PATCH v8 14/16] arm64: Kconfig: Enable hotplug CPU on arm64 if ACPI_PROCESSOR is enabled. Date: Fri, 26 Apr 2024 14:51:24 +0100 [thread overview] Message-ID: <20240426135126.12802-15-Jonathan.Cameron@huawei.com> (raw) In-Reply-To: <20240426135126.12802-1-Jonathan.Cameron@huawei.com> In order to move arch_register_cpu() to be called via the same path for initially present CPUs described by ACPI and hotplugged CPUs ACPI_HOTPLUG_CPU needs to be enabled. The protection against invalid IDs in acpi_map_cpu() is needed as at least one production BIOS is in the wild which reports entries in DSDT (with no _STA method, so assumed enabled and present) that don't match MADT. Tested-by: Miguel Luis <miguel.luis@oracle.com> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> --- v8: If acpi_map_cpu() stub is passed an error code as pcpu, don't pretend it worked. Note that x86 relies on passing an invalid error code in here to indicate a CPU ID needs to be allocated, on ARM64 if we don't get something valid there is nothing we can do about it. --- arch/arm64/Kconfig | 1 + arch/arm64/kernel/acpi.c | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index 7b11c98b3e84..fed7d0d54179 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -5,6 +5,7 @@ config ARM64 select ACPI_CCA_REQUIRED if ACPI select ACPI_GENERIC_GSI if ACPI select ACPI_GTDT if ACPI + select ACPI_HOTPLUG_CPU if ACPI_PROCESSOR select ACPI_IORT if ACPI select ACPI_REDUCED_HARDWARE_ONLY if ACPI select ACPI_MCFG if (ACPI && PCI) diff --git a/arch/arm64/kernel/acpi.c b/arch/arm64/kernel/acpi.c index dba8fcec7f33..fb9368197c74 100644 --- a/arch/arm64/kernel/acpi.c +++ b/arch/arm64/kernel/acpi.c @@ -29,6 +29,7 @@ #include <linux/pgtable.h> #include <acpi/ghes.h> +#include <acpi/processor.h> #include <asm/cputype.h> #include <asm/cpu_ops.h> #include <asm/daifflags.h> @@ -413,6 +414,27 @@ void arch_reserve_mem_area(acpi_physical_address addr, size_t size) memblock_mark_nomap(addr, size); } +#ifdef CONFIG_ACPI_HOTPLUG_CPU +int acpi_map_cpu(acpi_handle handle, phys_cpuid_t physid, u32 apci_id, + int *pcpu) +{ + /* If an error code is passed in this stub can't fix it */ + if (*pcpu < 0) { + pr_warn_once("Unable to map CPU to valid ID\n"); + return *pcpu; + } + + return 0; +} +EXPORT_SYMBOL(acpi_map_cpu); + +int acpi_unmap_cpu(int cpu) +{ + return 0; +} +EXPORT_SYMBOL(acpi_unmap_cpu); +#endif /* CONFIG_ACPI_HOTPLUG_CPU */ + #ifdef CONFIG_ACPI_FFH /* * Implements ARM64 specific callbacks to support ACPI FFH Operation Region as -- 2.39.2
WARNING: multiple messages have this Message-ID (diff)
From: Jonathan Cameron <Jonathan.Cameron@huawei.com> To: Thomas Gleixner <tglx@linutronix.de>, Peter Zijlstra <peterz@infradead.org>, <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>, <kvmarm@lists.linux.dev>, <x86@kernel.org>, Russell King <linux@armlinux.org.uk>, "Rafael J . Wysocki" <rafael@kernel.org>, Miguel Luis <miguel.luis@oracle.com>, James Morse <james.morse@arm.com>, Salil Mehta <salil.mehta@huawei.com>, Jean-Philippe Brucker <jean-philippe@linaro.org>, Catalin Marinas <catalin.marinas@arm.com>, Will Deacon <will@kernel.org>, Marc Zyngier <maz@kernel.org>, Hanjun Guo <guohanjun@huawei.com> Cc: Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>, Dave Hansen <dave.hansen@linux.intel.com>, <linuxarm@huawei.com>, <justin.he@arm.com>, <jianyong.wu@arm.com>, Lorenzo Pieralisi <lpieralisi@kernel.org>, Sudeep Holla <sudeep.holla@arm.com> Subject: [PATCH v8 14/16] arm64: Kconfig: Enable hotplug CPU on arm64 if ACPI_PROCESSOR is enabled. Date: Fri, 26 Apr 2024 14:51:24 +0100 [thread overview] Message-ID: <20240426135126.12802-15-Jonathan.Cameron@huawei.com> (raw) In-Reply-To: <20240426135126.12802-1-Jonathan.Cameron@huawei.com> In order to move arch_register_cpu() to be called via the same path for initially present CPUs described by ACPI and hotplugged CPUs ACPI_HOTPLUG_CPU needs to be enabled. The protection against invalid IDs in acpi_map_cpu() is needed as at least one production BIOS is in the wild which reports entries in DSDT (with no _STA method, so assumed enabled and present) that don't match MADT. Tested-by: Miguel Luis <miguel.luis@oracle.com> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> --- v8: If acpi_map_cpu() stub is passed an error code as pcpu, don't pretend it worked. Note that x86 relies on passing an invalid error code in here to indicate a CPU ID needs to be allocated, on ARM64 if we don't get something valid there is nothing we can do about it. --- arch/arm64/Kconfig | 1 + arch/arm64/kernel/acpi.c | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index 7b11c98b3e84..fed7d0d54179 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -5,6 +5,7 @@ config ARM64 select ACPI_CCA_REQUIRED if ACPI select ACPI_GENERIC_GSI if ACPI select ACPI_GTDT if ACPI + select ACPI_HOTPLUG_CPU if ACPI_PROCESSOR select ACPI_IORT if ACPI select ACPI_REDUCED_HARDWARE_ONLY if ACPI select ACPI_MCFG if (ACPI && PCI) diff --git a/arch/arm64/kernel/acpi.c b/arch/arm64/kernel/acpi.c index dba8fcec7f33..fb9368197c74 100644 --- a/arch/arm64/kernel/acpi.c +++ b/arch/arm64/kernel/acpi.c @@ -29,6 +29,7 @@ #include <linux/pgtable.h> #include <acpi/ghes.h> +#include <acpi/processor.h> #include <asm/cputype.h> #include <asm/cpu_ops.h> #include <asm/daifflags.h> @@ -413,6 +414,27 @@ void arch_reserve_mem_area(acpi_physical_address addr, size_t size) memblock_mark_nomap(addr, size); } +#ifdef CONFIG_ACPI_HOTPLUG_CPU +int acpi_map_cpu(acpi_handle handle, phys_cpuid_t physid, u32 apci_id, + int *pcpu) +{ + /* If an error code is passed in this stub can't fix it */ + if (*pcpu < 0) { + pr_warn_once("Unable to map CPU to valid ID\n"); + return *pcpu; + } + + return 0; +} +EXPORT_SYMBOL(acpi_map_cpu); + +int acpi_unmap_cpu(int cpu) +{ + return 0; +} +EXPORT_SYMBOL(acpi_unmap_cpu); +#endif /* CONFIG_ACPI_HOTPLUG_CPU */ + #ifdef CONFIG_ACPI_FFH /* * Implements ARM64 specific callbacks to support ACPI FFH Operation Region as -- 2.39.2 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2024-04-26 13:58 UTC|newest] Thread overview: 82+ messages / expand[flat|nested] mbox.gz Atom feed top 2024-04-26 13:51 [PATCH v8 00/16] ACPI/arm64: add support for virtual cpu hotplug Jonathan Cameron 2024-04-26 13:51 ` Jonathan Cameron 2024-04-26 13:51 ` [PATCH v8 01/16] ACPI: processor: Simplify initial onlining to use same path for cold and hotplug Jonathan Cameron 2024-04-26 13:51 ` Jonathan Cameron 2024-04-26 16:05 ` Miguel Luis 2024-04-26 16:05 ` Miguel Luis 2024-04-26 17:21 ` Miguel Luis 2024-04-26 17:21 ` Miguel Luis 2024-04-26 17:49 ` Jonathan Cameron 2024-04-26 17:49 ` Jonathan Cameron 2024-04-26 17:57 ` Rafael J. Wysocki 2024-04-26 17:57 ` Rafael J. Wysocki 2024-04-26 18:09 ` Jonathan Cameron 2024-04-26 18:09 ` Jonathan Cameron 2024-04-26 13:51 ` [PATCH v8 02/16] cpu: Do not warn on arch_register_cpu() returning -EPROBE_DEFER Jonathan Cameron 2024-04-26 13:51 ` Jonathan Cameron 2024-04-26 13:51 ` [PATCH v8 03/16] ACPI: processor: Drop duplicated check on _STA (enabled + present) Jonathan Cameron 2024-04-26 13:51 ` Jonathan Cameron 2024-04-26 13:51 ` [PATCH v8 04/16] ACPI: processor: Move checks and availability of acpi_processor earlier Jonathan Cameron 2024-04-26 13:51 ` Jonathan Cameron 2024-04-30 4:17 ` Gavin Shan 2024-04-30 4:17 ` Gavin Shan 2024-04-30 9:28 ` Jonathan Cameron 2024-04-30 9:28 ` Jonathan Cameron 2024-04-30 10:12 ` Rafael J. Wysocki 2024-04-30 10:12 ` Rafael J. Wysocki 2024-04-30 10:13 ` Jonathan Cameron 2024-04-30 10:13 ` Jonathan Cameron 2024-04-30 10:17 ` Rafael J. Wysocki 2024-04-30 10:17 ` Rafael J. Wysocki 2024-04-30 10:45 ` Jonathan Cameron 2024-04-30 10:45 ` Jonathan Cameron 2024-04-30 10:47 ` Rafael J. Wysocki 2024-04-30 10:47 ` Rafael J. Wysocki 2024-04-30 13:42 ` Jonathan Cameron 2024-04-30 13:42 ` Jonathan Cameron 2024-04-26 13:51 ` [PATCH v8 05/16] ACPI: processor: Add acpi_get_processor_handle() helper Jonathan Cameron 2024-04-26 13:51 ` Jonathan Cameron 2024-04-30 4:26 ` Gavin Shan 2024-04-30 4:26 ` Gavin Shan 2024-04-30 11:07 ` Jonathan Cameron 2024-04-30 11:07 ` Jonathan Cameron 2024-04-26 13:51 ` [PATCH v8 06/16] ACPI: processor: Register deferred CPUs from acpi_processor_get_info() Jonathan Cameron 2024-04-26 13:51 ` Jonathan Cameron 2024-04-26 13:51 ` [PATCH v8 07/16] ACPI: scan: switch to flags for acpi_scan_check_and_detach() Jonathan Cameron 2024-04-26 13:51 ` Jonathan Cameron 2024-04-26 13:51 ` [PATCH v8 08/16] ACPI: Add post_eject to struct acpi_scan_handler for cpu hotplug Jonathan Cameron 2024-04-26 13:51 ` Jonathan Cameron 2024-04-26 13:51 ` [PATCH v8 09/16] arm64: acpi: Move get_cpu_for_acpi_id() to a header Jonathan Cameron 2024-04-26 13:51 ` Jonathan Cameron 2024-04-30 16:37 ` Lorenzo Pieralisi 2024-04-30 16:37 ` Lorenzo Pieralisi 2024-04-26 13:51 ` [PATCH v8 10/16] irqchip/gic-v3: Don't return errors from gic_acpi_match_gicc() Jonathan Cameron 2024-04-26 13:51 ` Jonathan Cameron 2024-04-26 15:14 ` Marc Zyngier 2024-04-26 15:14 ` Marc Zyngier 2024-04-26 13:51 ` [PATCH v8 11/16] irqchip/gic-v3: Add support for ACPI's disabled but 'online capable' CPUs Jonathan Cameron 2024-04-26 13:51 ` Jonathan Cameron 2024-04-26 16:26 ` Marc Zyngier 2024-04-26 16:26 ` Marc Zyngier 2024-04-26 18:28 ` Jonathan Cameron 2024-04-26 18:28 ` Jonathan Cameron 2024-04-28 11:28 ` Marc Zyngier 2024-04-28 11:28 ` Marc Zyngier 2024-04-29 9:21 ` Jonathan Cameron 2024-04-29 9:21 ` Jonathan Cameron 2024-04-30 12:15 ` Jonathan Cameron 2024-04-30 12:15 ` Jonathan Cameron 2024-04-26 13:51 ` [PATCH v8 12/16] arm64: psci: Ignore DENIED CPUs Jonathan Cameron 2024-04-26 13:51 ` Jonathan Cameron 2024-04-30 4:29 ` Gavin Shan 2024-04-30 4:29 ` Gavin Shan 2024-04-26 13:51 ` [PATCH v8 13/16] arm64: arch_register_cpu() variant to check if an ACPI handle is now available Jonathan Cameron 2024-04-26 13:51 ` Jonathan Cameron 2024-04-30 4:31 ` Gavin Shan 2024-04-30 4:31 ` Gavin Shan 2024-04-26 13:51 ` Jonathan Cameron [this message] 2024-04-26 13:51 ` [PATCH v8 14/16] arm64: Kconfig: Enable hotplug CPU on arm64 if ACPI_PROCESSOR is enabled Jonathan Cameron 2024-04-26 13:51 ` [PATCH v8 15/16] arm64: document virtual CPU hotplug's expectations Jonathan Cameron 2024-04-26 13:51 ` Jonathan Cameron 2024-04-26 13:51 ` [PATCH v8 16/16] cpumask: Add enabled cpumask for present CPUs that can be brought online Jonathan Cameron 2024-04-26 13:51 ` Jonathan Cameron
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=20240426135126.12802-15-Jonathan.Cameron@huawei.com \ --to=jonathan.cameron@huawei.com \ --cc=bp@alien8.de \ --cc=catalin.marinas@arm.com \ --cc=dave.hansen@linux.intel.com \ --cc=guohanjun@huawei.com \ --cc=james.morse@arm.com \ --cc=jean-philippe@linaro.org \ --cc=jianyong.wu@arm.com \ --cc=justin.he@arm.com \ --cc=kvmarm@lists.linux.dev \ --cc=linux-acpi@vger.kernel.org \ --cc=linux-arch@vger.kernel.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-pm@vger.kernel.org \ --cc=linux@armlinux.org.uk \ --cc=linuxarm@huawei.com \ --cc=loongarch@lists.linux.dev \ --cc=lpieralisi@kernel.org \ --cc=maz@kernel.org \ --cc=miguel.luis@oracle.com \ --cc=mingo@redhat.com \ --cc=peterz@infradead.org \ --cc=rafael@kernel.org \ --cc=salil.mehta@huawei.com \ --cc=sudeep.holla@arm.com \ --cc=tglx@linutronix.de \ --cc=will@kernel.org \ --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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.