diff options
-rw-r--r-- | kernel/sched/cpudeadline.c | 4 | ||||
-rw-r--r-- | kernel/sched/deadline.c | 7 |
2 files changed, 8 insertions, 3 deletions
diff --git a/kernel/sched/cpudeadline.c b/kernel/sched/cpudeadline.c index bd95963dae80..539ca3ce071b 100644 --- a/kernel/sched/cpudeadline.c +++ b/kernel/sched/cpudeadline.c | |||
@@ -107,9 +107,7 @@ int cpudl_find(struct cpudl *cp, struct task_struct *p, | |||
107 | int best_cpu = -1; | 107 | int best_cpu = -1; |
108 | const struct sched_dl_entity *dl_se = &p->dl; | 108 | const struct sched_dl_entity *dl_se = &p->dl; |
109 | 109 | ||
110 | if (later_mask && cpumask_and(later_mask, cp->free_cpus, | 110 | if (later_mask && cpumask_and(later_mask, later_mask, cp->free_cpus)) { |
111 | &p->cpus_allowed) && cpumask_and(later_mask, | ||
112 | later_mask, cpu_active_mask)) { | ||
113 | best_cpu = cpumask_any(later_mask); | 111 | best_cpu = cpumask_any(later_mask); |
114 | goto out; | 112 | goto out; |
115 | } else if (cpumask_test_cpu(cpudl_maximum(cp), &p->cpus_allowed) && | 113 | } else if (cpumask_test_cpu(cpudl_maximum(cp), &p->cpus_allowed) && |
diff --git a/kernel/sched/deadline.c b/kernel/sched/deadline.c index efb94124420d..abfaf3d9a29f 100644 --- a/kernel/sched/deadline.c +++ b/kernel/sched/deadline.c | |||
@@ -1164,6 +1164,13 @@ static int find_later_rq(struct task_struct *task) | |||
1164 | if (task->nr_cpus_allowed == 1) | 1164 | if (task->nr_cpus_allowed == 1) |
1165 | return -1; | 1165 | return -1; |
1166 | 1166 | ||
1167 | /* | ||
1168 | * We have to consider system topology and task affinity | ||
1169 | * first, then we can look for a suitable cpu. | ||
1170 | */ | ||
1171 | cpumask_copy(later_mask, task_rq(task)->rd->span); | ||
1172 | cpumask_and(later_mask, later_mask, cpu_active_mask); | ||
1173 | cpumask_and(later_mask, later_mask, &task->cpus_allowed); | ||
1167 | best_cpu = cpudl_find(&task_rq(task)->rd->cpudl, | 1174 | best_cpu = cpudl_find(&task_rq(task)->rd->cpudl, |
1168 | task, later_mask); | 1175 | task, later_mask); |
1169 | if (best_cpu == -1) | 1176 | if (best_cpu == -1) |