[V2] cpufreq: Disallow ->resolve_freq() for drivers providing ->target_index()

Message ID 20160722151327.GP3122@ubuntu
State New
Headers show

Commit Message

Viresh Kumar July 22, 2016, 3:13 p.m.
On 21-07-16, 17:34, Steve Muckle wrote:
> On Fri, Jul 22, 2016 at 02:18:54AM +0200, Rafael J. Wysocki wrote:

> > > My thinking was that one of these two would be preferable:

> > >

> > > - Forcing ->target() drivers to install a ->resolve_freq callback,

> > >   enforcing this at cpufreq driver init time.

> > 

> > That would have been possible, but your series didn't do that.

> > 

> > >   My understanding is

> > >   ->target() drivers are deprecated anyway

> > 

> > No, they aren't.

> 

> Ok. I didn't follow Documentation/cpu-freq/cpu-drivers.txt section 1.5

> then - it suggests something about target() is deprecated, perhaps it's

> out of date.


They are kind of deprecated for the new uesrs, but we still have
handful of users of it.

> Sorry, that should've been "check that either ->target_index() or

> ->resolve_freq() is implemented." 

> 

> Implementing resolve_freq for the target() drivers and requiring it at

> driver init time is probably the better way to go though. Perhaps I can

> work on this at some point.


As I said earlier as well in one of the emails, if you are worried
about the extra 'if' check in the hot path, then wouldn't this fix it
for you?


-- 
viresh
--
To unsubscribe from this list: send the line "unsubscribe linux-pm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Viresh Kumar July 22, 2016, 9:09 p.m. | #1
On 22-07-16, 23:11, Rafael J. Wysocki wrote:
> No, they aren't deprecated, not even sort of.

> 

> Of course, stuff that can use frequency tables should implement ->target_index,

> because there's no valid reason for it not to do that.

> 

> However, there are cases (and not legacy) where frequency tables are simply

> impractical and those drivers have no choice but to implement ->target.

> 

> And if you want to try to force them into the frequency tables model

> regardless, then think twice, because I'm not going to let you do that.


No I am not :)

Perhaps this was just mis-worded in the Documentation then.

-- 
viresh
--
To unsubscribe from this list: send the line "unsubscribe linux-pm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
index 3dd4884c6f9e..91d8ec4c8eb7 100644
--- a/drivers/cpufreq/cpufreq.c
+++ b/drivers/cpufreq/cpufreq.c
@@ -517,7 +517,7 @@  unsigned int cpufreq_driver_resolve_freq(struct cpufreq_policy *policy,
                return policy->freq_table[idx].frequency;
        }
 
-       if (cpufreq_driver->resolve_freq)
+       if (likely(cpufreq_driver->resolve_freq))
                return cpufreq_driver->resolve_freq(policy, target_freq);
 
        return target_freq;