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

From: Stephen Boyd
Date: Thu Jan 19 2017 - 15:10:40 EST


On 01/13, Viresh Kumar wrote:
> On 13-01-17, 00:52, Stephen Boyd wrote:
> > 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.
>
> dev_pm_opp_remove() is one such option, which can remove OPPs
> individually. Over that, while remove tables we remove all the OPPs
> one by one. So that really does happen.
>
> > 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.
>
> That is being protected with this patch now and the drivers can use
> them freely.
>
> > TL;DR
> > letting drivers use OPP pointers outside of the OPP core feels
> > racy.
>
> Hmm, we don't update the OPP a lot after creating it today. But that's
> a different problem to solve, if we really see a race there.
>

Ok. We still have work to do to fix the race between drivers
using dev_pm_opp pointers and other drivers updating the data
those pointers point to like voltage, enable/disable, etc. This
isn't making anything worse than it already is though, so:

Reviewed-by: Stephen Boyd <sboyd@xxxxxxxxxxxxxx>

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