diff options
author | Pavankumar Kondeti <pkondeti@codeaurora.org> | 2019-02-28 10:40:39 +0530 |
---|---|---|
committer | Georg Veichtlbauer <georg@vware.at> | 2023-07-16 12:47:42 +0200 |
commit | 13e66175965635ed74c948f232a32033230cc5d0 (patch) | |
tree | 24dfc122ae53e0d64147393ed2a1aa102dbbfcb7 /kernel/sched/core.c | |
parent | 602bf4096dabb119eb3e176353c4607030fbb1c7 (diff) |
cpuset: Restore tasks affinity while moving across cpusets
When tasks move across cpusets, the current affinity settings
are lost. Cache the task affinity and restore it during cpuset
migration. The restoring happens only when the cached affinity
is subset of the current cpuset settings.
Change-Id: I6c2ec1d5e3d994e176926d94b9e0cc92418020cc
Signed-off-by: Pavankumar Kondeti <pkondeti@codeaurora.org>
Diffstat (limited to 'kernel/sched/core.c')
-rw-r--r-- | kernel/sched/core.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 18afb0fe2704..b33433586774 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -4921,6 +4921,9 @@ again: retval = -EINVAL; } + if (!retval && !(p->flags & PF_KTHREAD)) + cpumask_and(&p->cpus_requested, in_mask, cpu_possible_mask); + out_free_new_mask: free_cpumask_var(new_mask); out_free_cpus_allowed: @@ -8344,6 +8347,7 @@ void __init sched_init_smp(void) /* Move init over to a non-isolated CPU */ if (set_cpus_allowed_ptr(current, non_isolated_cpus) < 0) BUG(); + cpumask_copy(¤t->cpus_requested, cpu_possible_mask); sched_init_granularity(); free_cpumask_var(non_isolated_cpus); |