On 24/09/21 20:51, Barry Song wrote: > void update_siblings_masks(unsigned int cpuid) > { > struct cpu_topology *cpu_topo, *cpuid_topo = &cpu_topology[cpuid]; > @@ -617,6 +622,11 @@ void update_siblings_masks(unsigned int cpuid) > if (cpuid_topo->package_id != cpu_topo->package_id) > continue; > > + if (cpuid_topo->cluster_id == cpu_topo->cluster_id) { > + cpumask_set_cpu(cpu, &cpuid_topo->cluster_sibling); > + cpumask_set_cpu(cpuid, &cpu_topo->cluster_sibling); > + } > + Hm so without cluster information (e.g. DT system), we have ->cluster_id=-1, we'll essentially copy the package mask into the cluster mask. The exposed cluster mask is still <= package mask which is sensible. Are we fine with that, or do we need/want the mask to be empty in the -1 case? I'm guessing userspace tools should check for either id!=-1 or if the exclusive disjucntion of cluster vs package masks is non-empty.