Message ID | 20240430142434.10471-18-Jonathan.Cameron@huawei.com (mailing list archive) |
---|---|
State | Deferred, archived |
Headers | show |
Series | ACPI/arm64: add support for virtual cpu hotplug | expand |
On 5/1/24 00:24, Jonathan Cameron wrote: > 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> > > --- > V9: No change. > > --- > arch/arm64/Kconfig | 1 + > arch/arm64/kernel/acpi.c | 22 ++++++++++++++++++++++ > 2 files changed, 23 insertions(+) > Reviewed-by: Gavin Shan <gshan@redhat.com>
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