On Tue, Mar 14, 2023 at 04:22:06PM -0400, Waiman Long longman@redhat.com wrote:
Some arm64 systems can have asymmetric CPUs where certain tasks are only runnable on a selected subset of CPUs.
Ah, I'm catching up.
This information is not captured in the cpuset. As a result, task_cpu_possible_mask() may return a mask that have no overlap with effective_cpus causing new_cpus to become empty.
I can see that historically, there was an approach of terminating unaccomodable tasks: 94f9c00f6460 ("arm64: Remove logic to kill 32-bit tasks on 64-bit-only cores") the removal of killing had been made possible with df950811f4a8 ("arm64: Prevent offlining first CPU with 32-bit EL0 on mismatched system").
That gives two other alternatives to affinity modification: 2) kill such tasks (not unlike OOM upon memory.max reduction), 3) reject cpuset reduction (violates cgroup v2 delegation).
What do you think about 2)?
Michal