]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
ACPI: CPPC: Perform fast check switch only for online CPUs
authorGautham R. Shenoy <gautham.shenoy@amd.com>
Fri, 7 Nov 2025 07:41:43 +0000 (13:11 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 24 Nov 2025 09:35:53 +0000 (10:35 +0100)
[ Upstream commit 8821c8e80a65bc4eb73daf63b34aac6b8ad69461 ]

per_cpu(cpc_desc_ptr, cpu) object is initialized for only the online
CPUs via acpi_soft_cpu_online() --> __acpi_processor_start() -->
acpi_cppc_processor_probe().

However the function cppc_allow_fast_switch() checks for the validity
of the _CPC object for all the present CPUs. This breaks when the
kernel is booted with "nosmt=force".

Check fast_switch capability only on online CPUs

Fixes: 15eece6c5b05 ("ACPI: CPPC: Fix NULL pointer dereference when nosmp is used")
Reviewed-by: "Mario Limonciello (AMD) (kernel.org)" <superm1@kernel.org>
Signed-off-by: Gautham R. Shenoy <gautham.shenoy@amd.com>
Link: https://patch.msgid.link/20251107074145.2340-4-gautham.shenoy@amd.com
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/acpi/cppc_acpi.c

index 3ce5bb87d25b7f1e5b27f25accf51de502129c99..c4a1fee4b487342dca2552c767c0960948313fb0 100644 (file)
@@ -463,7 +463,7 @@ bool cppc_allow_fast_switch(void)
        struct cpc_desc *cpc_ptr;
        int cpu;
 
-       for_each_present_cpu(cpu) {
+       for_each_online_cpu(cpu) {
                cpc_ptr = per_cpu(cpc_desc_ptr, cpu);
                desired_reg = &cpc_ptr->cpc_regs[DESIRED_PERF];
                if (!CPC_IN_SYSTEM_MEMORY(desired_reg) &&