lkml.org 
[lkml]   [2023]   [Oct]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 05/39] ACPI: Move ACPI_HOTPLUG_CPU to be disabled on arm64 and riscv
    Date
    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
    \
     
     \ /
      Last update: 2023-10-24 17:19    [W:4.255 / U:0.084 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site