Lines Matching full:smt

37 	cpumask_var_t smt;  member
86 * SMT mask should be cleared whether we can claim @cpu or not. The SMT in scx_idle_test_and_clear_cpu()
91 const struct cpumask *smt = cpu_smt_mask(cpu); in scx_idle_test_and_clear_cpu() local
92 struct cpumask *idle_smts = idle_cpumask(node)->smt; in scx_idle_test_and_clear_cpu()
97 * @cpu is never cleared from the idle SMT mask. Ensure that in scx_idle_test_and_clear_cpu()
104 if (cpumask_intersects(smt, idle_smts)) in scx_idle_test_and_clear_cpu()
105 cpumask_andnot(idle_smts, idle_smts, smt); in scx_idle_test_and_clear_cpu()
122 cpu = cpumask_any_and_distribute(idle_cpumask(node)->smt, cpus_allowed); in pick_idle_cpu_in_node()
422 * idle) to avoid interference caused by SMT.
428 * 3. Prefer @prev_cpu's SMT sibling:
430 * place the task on an idle SMT sibling of @prev_cpu; keeping the
566 * If CPU has SMT, any wholly idle CPU is likely a better pick than in scx_select_cpu_dfl()
574 cpumask_test_cpu(prev_cpu, idle_cpumask(node)->smt) && in scx_select_cpu_dfl()
611 * Give up if we're strictly looking for a full-idle SMT in scx_select_cpu_dfl()
685 BUG_ON(!alloc_cpumask_var(&scx_idle_global_masks.smt, GFP_KERNEL)); in scx_idle_init_masks()
697 BUG_ON(!alloc_cpumask_var_node(&scx_idle_node_masks[i]->smt, GFP_KERNEL, i)); in scx_idle_init_masks()
719 const struct cpumask *smt = cpu_smt_mask(cpu); in update_builtin_idle() local
720 struct cpumask *idle_smts = idle_cpumask(node)->smt; in update_builtin_idle()
727 if (!cpumask_subset(smt, idle_cpus)) in update_builtin_idle()
729 cpumask_or(idle_smts, idle_smts, smt); in update_builtin_idle()
731 cpumask_andnot(idle_smts, idle_smts, smt); in update_builtin_idle()
850 cpumask_clear(idle_cpumask(NUMA_NO_NODE)->smt); in reset_idle_masks()
856 cpumask_clear(idle_cpumask(node)->smt); in reset_idle_masks()
1241 return idle_cpumask(node)->smt; in scx_bpf_get_idle_smtmask_node()
1274 return idle_cpumask(NUMA_NO_NODE)->smt; in scx_bpf_get_idle_smtmask()
1281 * either the percpu, or SMT idle-tracking cpumask.