Hi Yicong, On Thu, Sep 05, 2024 at 08:02:20PM +0800, Yicong Yang wrote: > On 2024/9/5 16:34, Pierre Gondois wrote: > > Hello Yicong, > > > > If a platform has CPUs with: > > - 1 thread > > - X (!= 1) threads > > Then I think that the asymmetry is not detected > > Ah ok, I only handle the case where there are several thread numbers except > no SMT CPUs in the > system. For this case I was thinking we don't need to handle this since > there's only one kind > of SMT core in the system, control should works fine for the SMT CPU clusters > and we may not > care about the CPUs with no SMT. > > Below code should handle the case if we initialize the max_smt_thread_num to > 0. I also > reword the warning messages to match the fact. For heterogeneous SMT topology > we still > support control SMT by on/off toggle but not fully support setting the thread > number. > > int max_smt_thread_num = 0; > [...] > /* > * This should be a short loop depending on the number of heterogeneous > * CPU clusters. Typically on a homogeneous system there's only one > * entry in the XArray. > */ > xa_for_each(&hetero_cpu, hetero_id, entry) { > /* > * If max_smt_thread_num has been initialized and doesn't match > * the thread number of this entry, then the system has > * heterogeneous SMT topology. > */ > if (entry->thread_num != max_smt_thread_num && > max_smt_thread_num) > pr_warn_once("Heterogeneous SMT topology is partly > supported by SMT control\n");
What does 'partly supported' mean here? If the SMT control doesn't work as intended for this topology, I don't think it should be enabled for it. Morten