Re: [PATCH 06/12] PM / OPP: Add 'struct kref' to struct dev_pm_opp

From: Stephen Boyd
Date: Fri Jan 13 2017 - 03:53:06 EST


On 01/10, Viresh Kumar wrote:
> On 09-01-17, 15:44, Stephen Boyd wrote:
> > On 12/07, Viresh Kumar wrote:
> > > Add kref to struct dev_pm_opp for easier accounting of the OPPs.
> > >
> > > Note that the OPPs are freed under the opp_table->lock mutex only.
> >
> > I'm lost. Why add another level of krefs?
>
> Heh. The earlier krefs were for the OPP table itself, so that it gets freed once
> there are no more users of it.
>
> The kref introduced now is for individual OPPs, so that they don't disappear
> while being used and gets freed once all are done.
>
> Also note that the OPP table will get freed only after all the OPPs are freed,
> plus there are no more users left, like platform code which might have set
> suppoerted-hw property.
>

What still doesn't make sense is how an individual OPP could go
away without the table that the OPP lives in also going away. If
an OPP is going away while a driver has a reference to it, then
the driver using that OPP should probably not be using it. TL;DR
letting drivers use OPP pointers outside of the OPP core feels
racy.

--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project