diff --git a/include/linux/sched.h b/include/linux/sched.h index e41c704d2fe5..baa72f19cc65 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -550,7 +550,7 @@ static inline int hh_vcpu_populate_affinity_info(u32 cpu_index, u64 cap_id) #endif /* CONFIG_QCOM_HYP_CORE_CTL */ #ifdef CONFIG_SCHED_WALT -extern void sched_exit(struct task_struct *p); +extern void walt_task_dead(struct task_struct *p); extern int register_cpu_cycle_counter_cb(struct cpu_cycle_counter_cb *cb); extern void @@ -626,7 +626,7 @@ struct walt_task_struct { }; #else -static inline void sched_exit(struct task_struct *p) { } +static inline void walt_task_dead(struct task_struct *p) { } static inline int register_cpu_cycle_counter_cb(struct cpu_cycle_counter_cb *cb) diff --git a/kernel/exit.c b/kernel/exit.c index 08df9121b6a3..22dfaac9e48c 100644 --- a/kernel/exit.c +++ b/kernel/exit.c @@ -748,7 +748,6 @@ void __noreturn do_exit(long code) } exit_signals(tsk); /* sets PF_EXITING */ - sched_exit(tsk); if (unlikely(in_atomic())) { pr_info("note: %s[%d] exited with preempt_count %d\n", diff --git a/kernel/sched/core.c b/kernel/sched/core.c index df909a91870c..006c5b9c76de 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -3348,6 +3348,7 @@ static struct rq *finish_task_switch(struct task_struct *prev) */ kprobe_flush_task(prev); + walt_task_dead(prev); /* Task is done with its stack. */ put_task_stack(prev); diff --git a/kernel/sched/walt.c b/kernel/sched/walt.c index 8b34b0880fc7..86686c10d113 100644 --- a/kernel/sched/walt.c +++ b/kernel/sched/walt.c @@ -61,8 +61,6 @@ int __weak sched_unisolate_cpu(int cpu) { return 0; } int __weak sched_unisolate_cpu_unlocked(int cpu) { return 0; } -void __weak sched_exit(struct task_struct *p) { } - int __weak register_cpu_cycle_counter_cb(struct cpu_cycle_counter_cb *cb) { return 0; @@ -212,6 +210,8 @@ void __weak walt_sched_init_rq(struct rq *rq) { } void __weak walt_update_cluster_topology(void) { } +void __weak walt_task_dead(struct task_struct *p) { } + #if defined(CONFIG_UCLAMP_TASK_GROUP) void __weak walt_init_sched_boost(struct task_group *tg) { } #endif diff --git a/kernel/sched/walt.h b/kernel/sched/walt.h index 609ee8e2b0a2..7f67fc834ff2 100644 --- a/kernel/sched/walt.h +++ b/kernel/sched/walt.h @@ -126,11 +126,6 @@ static inline int sched_cpu_high_irqload(int cpu) return cpu_rq(cpu)->wrq.high_irqload; } -static inline int exiting_task(struct task_struct *p) -{ - return (p->wts.sum_history[0] == EXITING_TASK_MARKER); -} - static inline u64 scale_load_to_freq(u64 load, unsigned int src_freq, unsigned int dst_freq) {