Re: [RFC PATCH 18/19] cpufreq: remove transition_lock

From: Juri Lelli
Date: Thu Jan 14 2016 - 08:52:09 EST


On 14/01/16 16:02, Viresh Kumar wrote:
> On 13-01-16, 10:21, Michael Turquette wrote:
> > Quoting Viresh Kumar (2016-01-12 22:31:48)
> > > On 12-01-16, 16:54, Michael Turquette wrote:
> > > > __cpufreq_driver_target should be using a per-policy lock.
> > >
> > > It doesn't :)
> >
> > It should.
>
> I thought we wanted the routine doing DVFS to not sleep as it will be
> called from scheduler ?
>
> Looks fine otherwise. But yeah, the series is still incomplete in the
> sense that there is no lock today around __cpufreq_driver_target().
>

I was under the impression that the purpose of having
__cpufreq_driver_target() exported outside cpufreq.c was working due to
the fact that users implement their own locking.

That's why I put the following comment in this patch.

/*
* Callers must ensure proper mutual exclusion on policy (for transition_
* ongoing/transition_task handling). While holding policy->rwsem is
* sufficient, other schemes might work as well (e.g., cpufreq_governor.c
* holds timer_mutex while entering the path that generates transitions).
*/

>From what I can see ondemand and conservative (via governor) seem to use
timer_mutex; userspace userspace_mutex instead. Do they serve different
purposes instead? How do we currently serialize operations on policy
when using __cpufreq_driver_target() directly otherwise?

Thanks,

- Juri