lkml.org 
[lkml]   [2016]   [Nov]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [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

    \
     
     \ /
      Last update: 2016-11-10 02:20    [W:5.778 / U:0.344 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site