FAILED: patch "[PATCH] cpufreq: conservative: Take limits changes into account" failed to apply to 4.9-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 4.9-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 ------------------
Quoted 1 line
From
da5e79bc70b84971d2b3a55fb252e34e51d81d48Mon Sep 17 00:00:00 2001
From: "Rafael J. Wysocki" <[email protected]>
Date: Mon, 15 Oct 2018 23:21:05 +0200
Subject: [PATCH] cpufreq: conservative: Take limits changes into account
properly
If the policy limits change between invocations of cs_dbs_update(), the requested frequency value stored in dbs_info may not be updated and the function may use a stale value of it next time. Moreover, if idle periods are takem into account by cs_dbs_update(), the requested frequency value stored in dbs_info may be below the min policy limit, which is incorrect.
To fix these problems, always update the requested frequency value in dbs_info along with the local copy of it when the previous requested frequency is beyond the policy limits and avoid decreasing the requested frequency below the min policy limit when taking idle periods into account.
drivers/cpufreq/cpufreq_conservative.c +4 -2
@@ -80,8 +80,10 @@ static unsigned int cs_dbs_update(struct cpufreq_policy *policy)* changed in the meantime, so fall back to current frequency in that * case. */ -if (requested_freq > policy->max || requested_freq < policy->min) +if (requested_freq > policy->max || requested_freq < policy->min) { requested_freq = policy->cur; + dbs_info->requested_freq = requested_freq; + } freq_step =get_freq_step (cs_tuners, policy);
@@ -92,7 +94,7 @@ static unsigned int cs_dbs_update(struct cpufreq_policy *policy)if (policy_dbs->idle_periods <UINT_MAX ) {unsigned int freq_steps = policy_dbs->idle_periods * freq_step; -if (requested_freq > freq_steps) +if (requested_freq > policy->min + freq_steps) requested_freq -= freq_steps;else requested_freq = policy->min;