diff --git a/drivers/cpufreq/cpufreq_interactive.c b/drivers/cpufreq/cpufreq_interactive.c index c7e6c8e999c5..f0c2dbfac93a 100644 --- a/drivers/cpufreq/cpufreq_interactive.c +++ b/drivers/cpufreq/cpufreq_interactive.c @@ -421,6 +421,7 @@ static void cpufreq_interactive_timer(unsigned long data) unsigned int index; unsigned long flags; u64 max_fvtime; + struct cpufreq_govinfo int_info; if (!down_read_trylock(&pcpu->enable_sem)) return; @@ -459,8 +460,15 @@ static void cpufreq_interactive_timer(unsigned long data) do_div(cputime_speedadj, delta_time); } - spin_lock_irqsave(&pcpu->target_freq_lock, flags); loadadjfreq = (unsigned int)cputime_speedadj * 100; + + int_info.cpu = data; + int_info.load = loadadjfreq / pcpu->policy->max; + int_info.sampling_rate_us = tunables->timer_rate; + atomic_notifier_call_chain(&cpufreq_govinfo_notifier_list, + CPUFREQ_LOAD_CHANGE, &int_info); + + spin_lock_irqsave(&pcpu->target_freq_lock, flags); cpu_load = loadadjfreq / pcpu->policy->cur; tunables->boosted = tunables->boost_val || now < tunables->boostpulse_endtime;