The commit 851a723e45d1c("sched: Always clear user_cpus_ptr in do_set_cpus_allowed()") would clear the user_cpus_ptr when call the do_set_cpus_allowed. In order to determine whether the user_cpus_ptr is taking effect, it is better to print the task's user_cpus_ptr. For top-cpuset: ums9621_1h10:/ # while true; do done& [1] 6786 ums9621_1h10:/ # cat /proc/6786/status | grep Cpus Cpus_allowed: ff Cpus_allowed_list: 0-7 Cpus_user_allowed: (null) Cpus_user_allowed_list: (null) bind the task to 6-7: ums9621_1h10:/ # taskset -p c0 6786 pid 6786's current affinity mask: ff pid 6786's new affinity mask: c0 ums9621_1h10:/ # cat /proc/6786/status | grep Cpus Cpus_allowed: c0 Cpus_allowed_list: 6-7 Cpus_user_allowed: c0 Cpus_user_allowed_list: 6-7 Offline cpu7: ums9621_1h10:/ # echo 0 > /sys/devices/system/cpu/cpu7/online ums9621_1h10:/ # cat /proc/6786/status | grep Cpus Cpus_allowed: c0 Cpus_allowed_list: 6-7 Cpus_user_allowed: c0 Cpus_user_allowed_list: 6-7 Offline cpu6, and then the do_set_cpus_allowed will clear the user_ptr: ums9621_1h10:/ # echo 0 > /sys/devices/system/cpu/cpu6/online ums9621_1h10:/ # cat /proc/6786/status | grep Cpus Cpus_allowed: ff Cpus_allowed_list: 0-7 Cpus_user_allowed: (null) Cpus_user_allowed_list: (null) Bringup the core6,7: ums9621_1h10:/ # echo 1 > /sys/devices/system/cpu/cpu6/online ums9621_1h10:/ # echo 1 > /sys/devices/system/cpu/cpu7/online ums9621_1h10:/ # cat /proc/6786/status | grep Cpus Cpus_allowed: ff Cpus_allowed_list: 0-7 Cpus_user_allowed: (null) Cpus_user_allowed_list: (null) Signed-off-by: Xuewen Yan <xuewen.yan@xxxxxxxxxx> --- fs/proc/array.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/fs/proc/array.c b/fs/proc/array.c index 34a47fb0c57f..084bee2a2e2b 100644 --- a/fs/proc/array.c +++ b/fs/proc/array.c @@ -409,6 +409,10 @@ static void task_cpus_allowed(struct seq_file *m, struct task_struct *task) cpumask_pr_args(&task->cpus_mask)); seq_printf(m, "Cpus_allowed_list:\t%*pbl\n", cpumask_pr_args(&task->cpus_mask)); + seq_printf(m, "Cpus_user_allowed:\t%*pb\n", + cpumask_pr_args(task->user_cpus_ptr)); + seq_printf(m, "Cpus_user_allowed_list:\t%*pbl\n", + cpumask_pr_args(task->user_cpus_ptr)); } static inline void task_core_dumping(struct seq_file *m, struct task_struct *task) -- 2.25.1