Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9af2c232 authored by Maria Yu's avatar Maria Yu Committed by Lingutla Chandrasekhar
Browse files

cpufreq: schedutil: Queue sugov irq work on policy online cpu



Got never update frequency if scheduled the irq
work on an offlined cpu and it will always pending.
Queue sugov irq work on any online cpu if current
cpu is offline.

Change-Id: I33fc691917b5866488b6aeb11ed902a2753130b2
Signed-off-by: default avatarMaria Yu <aiquny@codeaurora.org>
[clingutla@codeaurora.org: Moved 'walt_irq_work_queue' to 'sched.h'
 for multiple callers]
Signed-off-by: default avatarLingutla Chandrasekhar <clingutla@codeaurora.org>
parent 5b478488
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -263,7 +263,7 @@ static void sugov_deferred_update(struct sugov_policy *sg_policy, u64 time,

	if (use_pelt())
		sg_policy->work_in_progress = true;
	irq_work_queue(&sg_policy->irq_work);
	walt_irq_work_queue(&sg_policy->irq_work);
}

#define TARGET_LOAD 80
+15 −0
Original line number Diff line number Diff line
@@ -3368,3 +3368,18 @@ extern void walt_init_sched_boost(struct task_group *tg);
#else
static inline void walt_init_sched_boost(struct task_group *tg) {}
#endif

#ifdef CONFIG_SCHED_WALT
static inline void walt_irq_work_queue(struct irq_work *work)
{
	if (likely(cpu_online(raw_smp_processor_id())))
		irq_work_queue(work);
	else
		irq_work_queue_on(work, cpumask_any(cpu_online_mask));
}
#else
static inline void walt_irq_work_queue(struct irq_work *work)
{
	irq_work_queue(work);
}
#endif