Skip to contentSkip to conversation

FAILED: patch "[PATCH] thermal/drivers/cpufreq_cooling: Update cpufreq_state only if" failed to apply to 5.4-stable tree

PATCH In review [email protected] 2 participants 3 messages Dec 28, 2020 – Dec 30, 2020

Subsystems (3)
lore
Share & tools
lore

[email protected]

author maintainer
#0 lore raw

The patch below does not apply to the 5.4-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.

thanks,

greg k-h

------------------ original commit in Linus's tree ------------------

From 236761f19a4f373354f1dcf399b57753f1f4b871 Mon Sep 17 00:00:00 2001
From: Zhuguangqing <[email protected]>
Date: Fri, 6 Nov 2020 17:22:43 +0800
Subject: [PATCH] thermal/drivers/cpufreq_cooling: Update cpufreq_state only if
state has changed

If state has not changed successfully and we updated cpufreq_state, next time when the new state is equal to cpufreq_state (not changed successfully last time), we will return directly and miss a freq_qos_update_request() that should have been.

Fixes 5130802ddbb1 ("thermal: cpu_cooling: Switch to QoS requests for freq limits")
Cc v5.4+ <[email protected]> # v5.4+
drivers/thermal/cpufreq_cooling.c +1 -3
index cc2959f22f01..612f063c1cfc 100644
@@ -438,13 +438,11 @@ static int cpufreq_set_cur_state(struct thermal_cooling_device *cdev,
 	if (cpufreq_cdev->cpufreq_state == state)
 		return 0;
 
-	cpufreq_cdev->cpufreq_state = state;
-
 	frequency = get_state_freq(cpufreq_cdev, state);
 
 	ret = freq_qos_update_request(&cpufreq_cdev->qos_req, frequency);
-
 	if (ret > 0) {
+		cpufreq_cdev->cpufreq_state = state;
 		cpus = cpufreq_cdev->policy->cpus;
 		max_capacity = arch_scale_cpu_capacity(cpumask_first(cpus));
 		capacity = frequency * max_capacity;
maintainer
#1 lore raw

PATCH 1/1 thermal/drivers/cpu_cooling: Update cpufreq_state only if state has changed

From: Zhuguangqing <[email protected]>

[ Upstream commit 236761f19a4f373354f1dcf399b57753f1f4b871 ]

If state has not changed successfully and we updated cpufreq_state, next time when the new state is equal to cpufreq_state (not changed successfully last time), we will return directly and miss a freq_qos_update_request() that should have been.

Fixes 5130802ddbb1 ("thermal: cpu_cooling: Switch to QoS requests for freq limits")
Cc v5.4+ <[email protected]> # v5.4+
[ Viresh: Redo the patch for 5.4 stable kernel ]
---
 drivers/thermal/cpu_cooling.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)
drivers/thermal/cpu_cooling.c +6 -3
index c37886a26712..9d24bc05df0d 100644
@@ -320,6 +320,7 @@ static int cpufreq_set_cur_state(struct thermal_cooling_device *cdev,
 				 unsigned long state)
 {
 	struct cpufreq_cooling_device *cpufreq_cdev = cdev->devdata;
+	int ret;
 
 	/* Request state should be less than max_level */
 	if (WARN_ON(state > cpufreq_cdev->max_level))
@@ -329,10 +330,12 @@ static int cpufreq_set_cur_state(struct thermal_cooling_device *cdev,
 	if (cpufreq_cdev->cpufreq_state == state)
 		return 0;
 
-	cpufreq_cdev->cpufreq_state = state;
+	ret = freq_qos_update_request(&cpufreq_cdev->qos_req,
+			cpufreq_cdev->freq_table[state].frequency);
+	if (ret > 0)
+		cpufreq_cdev->cpufreq_state = state;
 
-	return freq_qos_update_request(&cpufreq_cdev->qos_req,
-				cpufreq_cdev->freq_table[state].frequency);
+	return ret;
 }
 
 /**
Signature · 1 line
2.25.0.rc1.19.g042ed3e048af
author maintainer
#2 lore raw

Re: [PATCH for 5.4 stable] thermal/drivers/cpu_cooling: Update cpufreq_state only if state has changed

Quoted 17 lines · Viresh Kumar

From: Zhuguangqing <[email protected]>

[ Upstream commit 236761f19a4f373354f1dcf399b57753f1f4b871 ]

If state has not changed successfully and we updated cpufreq_state, next time when the new state is equal to cpufreq_state (not changed successfully last time), we will return directly and miss a freq_qos_update_request() that should have been.

Fixes 5130802ddbb1 ("thermal: cpu_cooling: Switch to QoS requests for freq limits")
Cc v5.4+ <[email protected]> # v5.4+
[ Viresh: Redo the patch for 5.4 stable kernel ]
Quoted 3 lines
---
 drivers/thermal/cpu_cooling.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

Now applied, thanks.

greg k-h