diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index b2d70a8fb44a..4e7d93e9f8b6 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -2840,6 +2840,7 @@ unsigned int power_cost_at_freq(int cpu, unsigned int freq) static unsigned int power_cost(struct task_struct *p, int cpu) { unsigned int demand; + unsigned int cur_freq = cpu_rq(cpu)->cur_freq; if (!sysctl_sched_enable_power_aware || sched_use_pelt) return cpu_rq(cpu)->capacity; @@ -2851,6 +2852,8 @@ static unsigned int power_cost(struct task_struct *p, int cpu) demand *= cpu_rq(cpu)->max_possible_freq; demand /= 100; /* khz needed */ + demand = max(cur_freq, demand); + return power_cost_at_freq(cpu, demand); }