Skip to content

Commit d405ec2

Browse files
committed
ACPI: processor: perflib: Move problematic pr->performance check
Commit d33bd88 ("ACPI: processor: perflib: Fix initial _PPC limit application") added a pr->performance check that prevents the frequency QoS request from being added when the given processor has no performance object. Unfortunately, this causes a WARN() in freq_qos_remove_request() to trigger on an attempt to take the given CPU offline later because the frequency QoS object has not been added for it due to the missing performance object. Address this by moving the pr->performance check before calling acpi_processor_get_platform_limit() so it only prevents a limit from being set for the CPU if the performance object is not present. This way, the frequency QoS request is added as it was before the above commit and it is present all the time along with the CPU's cpufreq policy regardless of whether or not the CPU is online. Fixes: d33bd88 ("ACPI: processor: perflib: Fix initial _PPC limit application") Tested-by: Rafael J. Wysocki <[email protected]> Cc: 5.4+ <[email protected]> # 5.4+ Signed-off-by: Rafael J. Wysocki <[email protected]> Link: https://patch.msgid.link/[email protected]
1 parent 8f5ae30 commit d405ec2

File tree

1 file changed

+4
-1
lines changed

1 file changed

+4
-1
lines changed

drivers/acpi/processor_perflib.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ void acpi_processor_ppc_init(struct cpufreq_policy *policy)
180180
struct acpi_processor *pr = per_cpu(processors, cpu);
181181
int ret;
182182

183-
if (!pr || !pr->performance)
183+
if (!pr)
184184
continue;
185185

186186
/*
@@ -197,6 +197,9 @@ void acpi_processor_ppc_init(struct cpufreq_policy *policy)
197197
pr_err("Failed to add freq constraint for CPU%d (%d)\n",
198198
cpu, ret);
199199

200+
if (!pr->performance)
201+
continue;
202+
200203
ret = acpi_processor_get_platform_limit(pr);
201204
if (ret)
202205
pr_err("Failed to update freq constraint for CPU%d (%d)\n",

0 commit comments

Comments
 (0)