Messages in this thread | | | Date | Wed, 9 Nov 2016 17:17:28 -0800 | From | Stephen Boyd <> | Subject | Re: [PATCH V3 9/9] PM / OPP: Don't assume platform doesn't have regulators |
| |
On 10/26, Viresh Kumar wrote: > If the regulators aren't set explicitly by the platform, the OPP core > assumes that the platform doesn't have any regulator and uses the > clk-only callback. > > If the platform failed to register a regulator with the core, then this > can turn out to be a dangerous assumption as the OPP core will try to > change clk without changing regulators. > > Handle that properly by making sure that the DT didn't had any entries
s/had/have/
> for supply voltages as well. > > diff --git a/drivers/base/power/opp/core.c b/drivers/base/power/opp/core.c > index 3298fac01bb0..34cd48dfe89e 100644 > --- a/drivers/base/power/opp/core.c > +++ b/drivers/base/power/opp/core.c > @@ -734,7 +734,17 @@ int dev_pm_opp_set_rate(struct device *dev, unsigned long target_freq) > > /* Only frequency scaling */ > if (!regulators) { > - rcu_read_unlock(); > + /* > + * DT contained supply ratings? Consider platform failed to set > + * regulators. > + */ > + if (unlikely(opp->supplies[0].u_volt)) { > + rcu_read_unlock(); > + dev_err(dev, "%s: Regulator not registered with OPP core\n", > + __func__); > + return -EINVAL; > + } > +
Don't we need an rcu_read_unlock() here as well?
> return _generic_set_opp_clk_only(dev, clk, old_freq, freq); > } >
-- Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project
| |