[9820] sched: core: fix bug that rt could not be binded to little
authorYoungtae Lee <yt0729.lee@samsung.com>
Wed, 28 Jun 2017 10:35:54 +0000 (03:35 -0700)
committerCosmin Tanislav <demonsingur@gmail.com>
Mon, 22 Apr 2024 17:24:54 +0000 (20:24 +0300)
Current rt little binding code is working
when target task is on runqueue. Remove this condition
to all rt tasks bind to little.

Change-Id: I2f1883e2e8dffef25920848f6ef87b38a231ff0c
Signed-off-by: Youngtae Lee <yt0729.lee@samsung.com>
kernel/sched/core.c

index 625be667604728ecffdeb00461a73360e39e149d..d26941aa5af91c83eaf9a9cc7f394368c5f672ba 100644 (file)
@@ -4307,6 +4307,15 @@ change:
        if (running)
                set_curr_task(rq, p);
 
+       if (p->sched_class == &rt_sched_class) {
+               struct cpumask mask;
+
+               cpumask_andnot(&mask, &p->cpus_allowed, cpu_coregroup_mask(4));
+               cpumask_andnot(&mask, &p->cpus_allowed, cpu_coregroup_mask(6));
+               if (!cpumask_empty(&mask))
+                       do_set_cpus_allowed(p, &mask);
+       }
+
        check_class_changed(rq, p, prev_class, oldprio);
 
        /* Avoid rq from going away on us: */