| @@ -5752,6 +5752,8 @@ static inline struct task_struct *pick_task(struct rq *rq) · 5751 unmodified lines |
| 5752 | | 5752 | |
| 5753 | extern void task_vruntime_update(struct rq *rq, struct task_struct *p, bool in_fi); | 5753 | extern void task_vruntime_update(struct rq *rq, struct task_struct *p, bool in_fi); |
| 5754 | | 5754 | |
| | 5755 | static void queue_core_balance(struct rq *rq); |
| | 5756 | |
| 5755 | static struct task_struct * | 5757 | static struct task_struct * |
| 5756 | pick_next_task(struct rq *rq, struct task_struct *prev, struct rq_flags *rf) | 5758 | pick_next_task(struct rq *rq, struct task_struct *prev, struct rq_flags *rf) |
| 5757 | { | 5759 | { |
| @@ -5801,7 +5803,7 @@ pick_next_task(struct rq *rq, struct task_struct *prev, struct rq_flags *rf) · 43 unmodified lines |
| 5801 | } | 5803 | } |
| 5802 | | 5804 | |
| 5803 | rq->core_pick = NULL; | 5805 | rq->core_pick = NULL; |
| 5804 | return next; | 5806 | goto out; |
| 5805 | } | 5807 | } |
| 5806 | | 5808 | |
| 5807 | put_prev_task_balance(rq, prev, rf); | 5809 | put_prev_task_balance(rq, prev, rf); |
| @@ -5851,7 +5853,7 @@ pick_next_task(struct rq *rq, struct task_struct *prev, struct rq_flags *rf) · 43 unmodified lines |
| 5851 | */ | 5853 | */ |
| 5852 | WARN_ON_ONCE(fi_before); | 5854 | WARN_ON_ONCE(fi_before); |
| 5853 | task_vruntime_update(rq, next, false); | 5855 | task_vruntime_update(rq, next, false); |
| 5854 | goto done; | 5856 | goto out_set_next; |
| 5855 | } | 5857 | } |
| 5856 | } | 5858 | } |
| 5857 | | 5859 | |
| @@ -5970,8 +5972,12 @@ pick_next_task(struct rq *rq, struct task_struct *prev, struct rq_flags *rf) · 112 unmodified lines |
| 5970 | resched_curr(rq_i); | 5972 | resched_curr(rq_i); |
| 5971 | } | 5973 | } |
| 5972 | | 5974 | |
| 5973 | done: | 5975 | out_set_next: |
| 5974 | set_next_task(rq, next); | 5976 | set_next_task(rq, next); |
| | 5977 | out: |
| | 5978 | if (rq->core->core_forceidle_count && next == rq->idle) |
| | 5979 | queue_core_balance(rq); |
| | 5980 | |
| 5975 | return next; | 5981 | return next; |
| 5976 | } | 5982 | } |
| 5977 | | 5983 | |
| @@ -6000,7 +6006,7 @@ static bool try_steal_cookie(int this, int that) · 22 unmodified lines |
| 6000 | if (p == src->core_pick || p == src->curr) | 6006 | if (p == src->core_pick || p == src->curr) |
| 6001 | goto next; | 6007 | goto next; |
| 6002 | | 6008 | |
| 6003 | if (!cpumask_test_cpu(this, &p->cpus_mask)) | 6009 | if (!is_cpu_allowed(p, this)) |
| 6004 | goto next; | 6010 | goto next; |
| 6005 | | 6011 | |
| 6006 | if (p->core_occupation > dst->idle->core_occupation) | 6012 | if (p->core_occupation > dst->idle->core_occupation) |
| @@ -6066,7 +6072,7 @@ static void sched_core_balance(struct rq *rq) · 59 unmodified lines |
| 6066 | | 6072 | |
| 6067 | static DEFINE_PER_CPU(struct callback_head, core_balance_head); | 6073 | static DEFINE_PER_CPU(struct callback_head, core_balance_head); |
| 6068 | | 6074 | |
| 6069 | void queue_core_balance(struct rq *rq) | 6075 | static void queue_core_balance(struct rq *rq) |
| 6070 | { | 6076 | { |
| 6071 | if (!sched_core_enabled(rq)) | 6077 | if (!sched_core_enabled(rq)) |
| 6072 | return; | 6078 | return; |