[lkml]   [2012]   [Jan]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    Patch in this message
    Subject[PATCH 2/2] cpufreq: update lpj only if frequency has changed
    During scaling up of cpu frequency, loops_per_jiffy
    is updated upon invoking PRECHANGE notifier.
    If setting to new frequency fails in cpufreq driver,
    lpj is left at incorrect value.

    Hence update lpj only if cpu frequency is changed,
    i.e. upon invoking POSTCHANGE notifier.

    Penalty would be that during time period between
    changing cpu frequency & invocation of POSTCHANGE
    notifier, udelay(x) may not gurantee minimal delay
    of 'x' us for frequency scaling up operation.

    Perhaps a better solution would be to define
    CPUFREQ_ABORTCHANGE & handle accordingly, but then
    it would be more intrusive (using ABORTCHANGE may
    help drivers also; if any has registered notifier
    and expect POST for a PRECHANGE, their needs can
    be taken care using ABORT)

    Signed-off-by: Afzal Mohammed <>
    drivers/cpufreq/cpufreq.c | 3 +--
    1 files changed, 1 insertions(+), 2 deletions(-)

    diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
    index 987a165..2f5801a 100644
    --- a/drivers/cpufreq/cpufreq.c
    +++ b/drivers/cpufreq/cpufreq.c
    @@ -204,8 +204,7 @@ static void adjust_jiffies(unsigned long val, struct cpufreq_freqs *ci)
    pr_debug("saving %lu as reference value for loops_per_jiffy; "
    "freq is %u kHz\n", l_p_j_ref, l_p_j_ref_freq);
    - if ((val == CPUFREQ_PRECHANGE && ci->old < ci->new) ||
    - (val == CPUFREQ_POSTCHANGE && ci->old > ci->new) ||
    + if ((val == CPUFREQ_POSTCHANGE && ci->old != ci->new) ||
    loops_per_jiffy = cpufreq_scale(l_p_j_ref, l_p_j_ref_freq,

     \ /
      Last update: 2012-01-04 06:35    [W:0.041 / U:14.660 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site