Loading kernel/sched/core.c +2 −1 Original line number Diff line number Diff line Loading @@ -2486,7 +2486,8 @@ static void ttwu_queue(struct task_struct *p, int cpu, int wake_flags) struct rq_flags rf; #if defined(CONFIG_SMP) if (sched_feat(TTWU_QUEUE) && !cpus_share_cache(smp_processor_id(), cpu)) { if ((sched_feat(TTWU_QUEUE) && !cpus_share_cache(smp_processor_id(), cpu)) || walt_want_remote_wakeup()) { sched_clock_cpu(cpu); /* Sync clocks across CPUs */ ttwu_queue_remote(p, cpu, wake_flags); return; Loading kernel/sched/fair.c +6 −9 Original line number Diff line number Diff line Loading @@ -6890,7 +6890,6 @@ enum fastpaths { NONE = 0, SYNC_WAKEUP, PREV_CPU_FASTPATH, MANY_WAKEUP, }; static void find_best_target(struct sched_domain *sd, cpumask_t *cpus, Loading Loading @@ -7686,8 +7685,13 @@ static int find_energy_efficient_cpu(struct task_struct *p, int prev_cpu, int delta = 0; int task_boost = per_task_boost(p); int boosted = (schedtune_task_boost(p) > 0) || (task_boost > 0); int start_cpu = get_start_cpu(p); int start_cpu; if (is_many_wakeup(sibling_count_hint) && prev_cpu != cpu && cpumask_test_cpu(prev_cpu, &p->cpus_allowed)) return prev_cpu; start_cpu = get_start_cpu(p); if (start_cpu < 0) goto eas_not_ready; Loading @@ -7714,13 +7718,6 @@ static int find_energy_efficient_cpu(struct task_struct *p, int prev_cpu, goto done; } if (is_many_wakeup(sibling_count_hint) && prev_cpu != cpu && bias_to_this_cpu(p, prev_cpu, start_cpu)) { best_energy_cpu = prev_cpu; fbt_env.fastpath = MANY_WAKEUP; goto done; } rcu_read_lock(); pd = rcu_dereference(rd->pd); if (!pd) Loading kernel/sched/sched.h +10 −0 Original line number Diff line number Diff line Loading @@ -2740,6 +2740,12 @@ enum sched_boost_policy { #ifdef CONFIG_SCHED_WALT #define WALT_MANY_WAKEUP_DEFAULT 1000 static inline bool walt_want_remote_wakeup(void) { return sysctl_sched_many_wakeup_threshold < WALT_MANY_WAKEUP_DEFAULT; } static inline int cluster_first_cpu(struct sched_cluster *cluster) { return cpumask_first(&cluster->cpus); Loading Loading @@ -3188,6 +3194,10 @@ static inline unsigned int power_cost(int cpu, u64 demand) #endif static inline void note_task_waking(struct task_struct *p, u64 wallclock) { } static inline bool walt_want_remote_wakeup(void) { return false; } #endif /* CONFIG_SCHED_WALT */ struct sched_avg_stats { Loading kernel/sched/walt.c +1 −1 Original line number Diff line number Diff line Loading @@ -1026,7 +1026,7 @@ unsigned int max_possible_efficiency = 1; unsigned int min_possible_efficiency = UINT_MAX; unsigned int sysctl_sched_conservative_pl; unsigned int sysctl_sched_many_wakeup_threshold = 1000; unsigned int sysctl_sched_many_wakeup_threshold = WALT_MANY_WAKEUP_DEFAULT; #define INC_STEP 8 #define DEC_STEP 2 Loading Loading
kernel/sched/core.c +2 −1 Original line number Diff line number Diff line Loading @@ -2486,7 +2486,8 @@ static void ttwu_queue(struct task_struct *p, int cpu, int wake_flags) struct rq_flags rf; #if defined(CONFIG_SMP) if (sched_feat(TTWU_QUEUE) && !cpus_share_cache(smp_processor_id(), cpu)) { if ((sched_feat(TTWU_QUEUE) && !cpus_share_cache(smp_processor_id(), cpu)) || walt_want_remote_wakeup()) { sched_clock_cpu(cpu); /* Sync clocks across CPUs */ ttwu_queue_remote(p, cpu, wake_flags); return; Loading
kernel/sched/fair.c +6 −9 Original line number Diff line number Diff line Loading @@ -6890,7 +6890,6 @@ enum fastpaths { NONE = 0, SYNC_WAKEUP, PREV_CPU_FASTPATH, MANY_WAKEUP, }; static void find_best_target(struct sched_domain *sd, cpumask_t *cpus, Loading Loading @@ -7686,8 +7685,13 @@ static int find_energy_efficient_cpu(struct task_struct *p, int prev_cpu, int delta = 0; int task_boost = per_task_boost(p); int boosted = (schedtune_task_boost(p) > 0) || (task_boost > 0); int start_cpu = get_start_cpu(p); int start_cpu; if (is_many_wakeup(sibling_count_hint) && prev_cpu != cpu && cpumask_test_cpu(prev_cpu, &p->cpus_allowed)) return prev_cpu; start_cpu = get_start_cpu(p); if (start_cpu < 0) goto eas_not_ready; Loading @@ -7714,13 +7718,6 @@ static int find_energy_efficient_cpu(struct task_struct *p, int prev_cpu, goto done; } if (is_many_wakeup(sibling_count_hint) && prev_cpu != cpu && bias_to_this_cpu(p, prev_cpu, start_cpu)) { best_energy_cpu = prev_cpu; fbt_env.fastpath = MANY_WAKEUP; goto done; } rcu_read_lock(); pd = rcu_dereference(rd->pd); if (!pd) Loading
kernel/sched/sched.h +10 −0 Original line number Diff line number Diff line Loading @@ -2740,6 +2740,12 @@ enum sched_boost_policy { #ifdef CONFIG_SCHED_WALT #define WALT_MANY_WAKEUP_DEFAULT 1000 static inline bool walt_want_remote_wakeup(void) { return sysctl_sched_many_wakeup_threshold < WALT_MANY_WAKEUP_DEFAULT; } static inline int cluster_first_cpu(struct sched_cluster *cluster) { return cpumask_first(&cluster->cpus); Loading Loading @@ -3188,6 +3194,10 @@ static inline unsigned int power_cost(int cpu, u64 demand) #endif static inline void note_task_waking(struct task_struct *p, u64 wallclock) { } static inline bool walt_want_remote_wakeup(void) { return false; } #endif /* CONFIG_SCHED_WALT */ struct sched_avg_stats { Loading
kernel/sched/walt.c +1 −1 Original line number Diff line number Diff line Loading @@ -1026,7 +1026,7 @@ unsigned int max_possible_efficiency = 1; unsigned int min_possible_efficiency = UINT_MAX; unsigned int sysctl_sched_conservative_pl; unsigned int sysctl_sched_many_wakeup_threshold = 1000; unsigned int sysctl_sched_many_wakeup_threshold = WALT_MANY_WAKEUP_DEFAULT; #define INC_STEP 8 #define DEC_STEP 2 Loading