diff options
Diffstat (limited to 'patches/sched-migrate_enable-Use-select_fallback_rq.patch')
-rw-r--r-- | patches/sched-migrate_enable-Use-select_fallback_rq.patch | 56 |
1 files changed, 0 insertions, 56 deletions
diff --git a/patches/sched-migrate_enable-Use-select_fallback_rq.patch b/patches/sched-migrate_enable-Use-select_fallback_rq.patch deleted file mode 100644 index 0fa7ee96462f..000000000000 --- a/patches/sched-migrate_enable-Use-select_fallback_rq.patch +++ /dev/null @@ -1,56 +0,0 @@ -From: Scott Wood <swood@redhat.com> -Date: Sat, 12 Oct 2019 01:52:12 -0500 -Subject: [PATCH] sched: migrate_enable: Use select_fallback_rq() - -migrate_enable() currently open-codes a variant of select_fallback_rq(). -However, it does not have the "No more Mr. Nice Guy" fallback and thus -it will pass an invalid CPU to the migration thread if cpus_mask only -contains a CPU that is !active. - -Signed-off-by: Scott Wood <swood@redhat.com> -Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> ---- - kernel/sched/core.c | 25 ++++++++++--------------- - 1 file changed, 10 insertions(+), 15 deletions(-) - ---- a/kernel/sched/core.c -+++ b/kernel/sched/core.c -@@ -7405,6 +7405,7 @@ void migrate_enable(void) - if (p->migrate_disable_update) { - struct rq *rq; - struct rq_flags rf; -+ int cpu = task_cpu(p); - - rq = task_rq_lock(p, &rf); - update_rq_clock(rq); -@@ -7414,21 +7415,15 @@ void migrate_enable(void) - - p->migrate_disable_update = 0; - -- WARN_ON(smp_processor_id() != task_cpu(p)); -- if (!cpumask_test_cpu(task_cpu(p), &p->cpus_mask)) { -- const struct cpumask *cpu_valid_mask = cpu_active_mask; -- struct migration_arg arg; -- unsigned int dest_cpu; -- -- if (p->flags & PF_KTHREAD) { -- /* -- * Kernel threads are allowed on online && !active CPUs -- */ -- cpu_valid_mask = cpu_online_mask; -- } -- dest_cpu = cpumask_any_and(cpu_valid_mask, &p->cpus_mask); -- arg.task = p; -- arg.dest_cpu = dest_cpu; -+ WARN_ON(smp_processor_id() != cpu); -+ if (!cpumask_test_cpu(cpu, &p->cpus_mask)) { -+ struct migration_arg arg = { p }; -+ struct rq_flags rf; -+ -+ rq = task_rq_lock(p, &rf); -+ update_rq_clock(rq); -+ arg.dest_cpu = select_fallback_rq(cpu, p); -+ task_rq_unlock(rq, p, &rf); - - unpin_current_cpu(); - preempt_lazy_enable(); |