Replace the loop to check if all SMT CPUs are idle with
cpumask_subset(). This simplifies the code and slightly improves
efficiency, while preserving the original behavior.
Note that idle_masks.smt handling remains racy, which is acceptable as
it serves as an optimization and is self-correcting.
Suggested-and-reviewed-by: Yury Norov <yury.norov@gmail.com>
Signed-off-by: Andrea Righi <arighi@nvidia.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
                         * idle_masks.smt handling is racy but that's fine as
                         * it's only for optimization and self-correcting.
                         */
-                       for_each_cpu(cpu, smt) {
-                               if (!cpumask_test_cpu(cpu, idle_masks.cpu))
-                                       return;
-                       }
+                       if (!cpumask_subset(smt, idle_masks.cpu))
+                               return;
                        cpumask_or(idle_masks.smt, idle_masks.smt, smt);
                } else {
                        cpumask_andnot(idle_masks.smt, idle_masks.smt, smt);