Skip to content

Commit 901f97c

Browse files
sixtakuExactExampl
authored andcommitted
sched/walt: Avoid walt irq work in offlined cpu
Avoid walt irq work in offlined cpu. Change-Id: Ia4410562f66bfa57daa15d8c0a785a2c7a95f2a0 Signed-off-by: Maria Yu <aiquny@codeaurora.org> (cherry picked from commit 702cec976c863388c784eff37a71fa3ee8bb84d7)
1 parent 9a58193 commit 901f97c

2 files changed

Lines changed: 12 additions & 2 deletions

File tree

kernel/sched/sched.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2945,3 +2945,13 @@ find_first_cpu_bit(struct task_struct *p, const cpumask_t *search_cpus,
29452945
#else
29462946
#define find_first_cpu_bit(...) -1
29472947
#endif
2948+
2949+
#ifdef CONFIG_SMP
2950+
static inline void sched_irq_work_queue(struct irq_work *work)
2951+
{
2952+
if (likely(cpu_online(raw_smp_processor_id())))
2953+
irq_work_queue(work);
2954+
else
2955+
irq_work_queue_on(work, cpumask_any(cpu_online_mask));
2956+
}
2957+
#endif

kernel/sched/walt.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -878,7 +878,7 @@ void fixup_busy_time(struct task_struct *p, int new_cpu)
878878
if (!same_freq_domain(new_cpu, task_cpu(p))) {
879879
src_rq->notif_pending = true;
880880
dest_rq->notif_pending = true;
881-
irq_work_queue(&walt_migration_irq_work);
881+
sched_irq_work_queue(&walt_migration_irq_work);
882882
}
883883

884884
if (p == src_rq->ed_task) {
@@ -1941,7 +1941,7 @@ static inline void run_walt_irq_work(u64 old_window_start, struct rq *rq)
19411941
result = atomic64_cmpxchg(&walt_irq_work_lastq_ws, old_window_start,
19421942
rq->window_start);
19431943
if (result == old_window_start)
1944-
irq_work_queue(&walt_cpufreq_irq_work);
1944+
sched_irq_work_queue(&walt_cpufreq_irq_work);
19451945
}
19461946

19471947
/* Reflect task activity on its demand and cpu's busy time statistics */

0 commit comments

Comments
 (0)