[PATCH] cpufreq: arm_big_little: fix frequency check when bL switcher is active
From: Jon Medhurst (Tixy)
Date: Fri Oct 02 2015 - 13:39:03 EST
The check for correct frequency being set in bL_cpufreq_set_rate is
broken when the big.LITTLE switcher is active, for two reasons.
1. The 'new_rate' variable gets overwritten before the test by the
code calculating the frequency of the old cluster.
2. The frequency returned by bL_cpufreq_get_rate will be the virtual
frequency, not the actual one the intended version of new_rate contains.
This means the function always returns an error causing an endless
stream of: "cpufreq: __target_index: Failed to change cpu frequency: -5"
As the comment for the test indicates that it is temporary and limited
lets not bother fixing it to work when the bL switcher is active and
instead just bypass the test in that case.
Fixes: 0a95e630b49a ("cpufreq: arm_big_little: check if the frequency is set correctly")
Signed-off-by: Jon Medhurst <tixy@xxxxxxxxxx>
---
drivers/cpufreq/arm_big_little.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/cpufreq/arm_big_little.c b/drivers/cpufreq/arm_big_little.c
index f1e42f8..71deddb 100644
--- a/drivers/cpufreq/arm_big_little.c
+++ b/drivers/cpufreq/arm_big_little.c
@@ -196,7 +196,7 @@ bL_cpufreq_set_rate(u32 cpu, u32 old_cluster, u32 new_cluster, u32 rate)
* be reading only the cached value anyway. This needs to be removed
* once clk core is fixed.
*/
- if (bL_cpufreq_get_rate(cpu) != new_rate)
+ if (!bLs && bL_cpufreq_get_rate(cpu) != new_rate)
return -EIO;
return 0;
}
--
2.1.4
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/