If the SD_SHARE_CPUPOWER flag isn't set for the sched domain this function isn't called. So an extra check here is wasteful.
What about an early exit if !cpu_has_feature(CPU_FTR_SMT) ? That would
de-facto compile it out for 32-bit CPU platforms that don't support SMT
at all and avoid some overhead on POWER3,4,970...
I've tested it with manually offlined threads and it behaves as I'd like it to.+ unsigned long weight = cpumask_weight(sibling_map);
+ unsigned long smt_gain = sd->smt_gain;
+
+ if (cpu_has_feature(CPU_FTR_ASYNC_SMT4) && weight == 4) {
So that will only handle the case where all 4 threads are online right ?
There is no provision for the case where the user play tricks like
offlining thread, in which case it will stop trying to "push down"
processes right ? Not a big deal per-se I suppose, just something to be
aware of.
Also, can you add a comment as to why this is done in the code itself ?OK. v3 coming soon with the comment.
above the if (cpu_has_feature(...)) statement.