- Correct the marking of kthreads which are supposed to run on a specific,
 single CPU vs such which are affine to only one CPU, mark per-cpu workqueue
 threads as such and make sure that marking "survives" CPU hotplug. Fix CPU
 hotplug issues with such kthreads.

 - A fix to not push away tasks on CPUs coming online.

 - Have workqueue CPU hotplug code use cpu_possible_mask when breaking affinity
   on CPU offlining so that pending workers can finish on newly arrived onlined
   CPUs too.

 - Dump tasks which haven't vacated a CPU which is currently being unplugged.

 - Register a special scale invariance callback which gets called on resume
 from RAM to read out APERF/MPERF after resume and thus make the schedutil
 scaling governor more precise.
sched: Relax the set_cpus_allowed_ptr() semantics

Now that we have KTHREAD_IS_PER_CPU to denote the critical per-cpu
tasks to retain during CPU offline, we can relax the warning in
set_cpus_allowed_ptr(). Any spurious kthread that wants to get on at
the last minute will get pushed off before it can run.

While during CPU online there is no harm, and actual benefit, to
allowing kthreads back on early, it simplifies hotplug code and fixes
a number of outstanding races.

Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Lai jiangshan <jiangshanlai@gmail.com>
Reviewed-by: Valentin Schneider <valentin.schneider@arm.com>
Tested-by: Valentin Schneider <valentin.schneider@arm.com>
Link: https://lkml.kernel.org/r/20210121103507.240724591@infradead.org
1 file changed