Messages in this thread | | | Date | Thu, 12 May 2022 11:52:09 +0200 | Subject | Re: [PATCH] arch_topology: support parsing cluster_id from DT | From | Dietmar Eggemann <> |
| |
On 11/05/2022 11:38, 王擎 wrote: > >>> From: Wang Qing <wangqing@vivo.com>
[...]
>> Would have to be cluster_id = -1. 0 is a valid 2. level cluster. >> Otherwise you're not removing the CLS data from CPU4 to CPU7 in the >> `Armv9 with L2 complexes` cpu-map example I used for testing: >> >> cpu-map { >> cluster0 { >> cluster0 { >> core0 { >> cpu = <&cpu0>; >> }; >> core1 { >> cpu = <&cpu1>; >> }; >> }; >> cluster1 { >> core0 { >> cpu = <&cpu2>; >> }; >> core1 { >> cpu = <&cpu3>; >> }; >> }; >> }; >> cluster1 { >> core0 { >> cpu = <&cpu4>; >> }; >> core1 { >> cpu = <&cpu5>; >> }; >> core2 { >> cpu = <&cpu6>; >> }; >> }; >> cluster2 { >> core0 { >> cpu = <&cpu7>; >> }; >> }; >> };
[...]
>> Looks like you also need to adapt update_siblings_masks() to only set >> cpu in &cpu_topo->thread_sibling and &cpuid_topo->thread_sibling when >> `cpu_topo->thread_id != -1`. >> >> @@ -723,11 +723,11 @@ void update_siblings_masks(unsigned int cpuid) >> cpumask_set_cpu(cpuid, &cpu_topo->core_sibling); >> cpumask_set_cpu(cpu, &cpuid_topo->core_sibling); >> >> - if (cpuid_topo->core_id != cpu_topo->core_id) >> - continue; >> - >> - cpumask_set_cpu(cpuid, &cpu_topo->thread_sibling); >> - cpumask_set_cpu(cpu, &cpuid_topo->thread_sibling); >> + if (cpu_topo->thread_id != -1 && >> + cpuid_topo->core_id == cpu_topo->core_id) { >> + cpumask_set_cpu(cpuid, &cpu_topo->thread_sibling); >> + cpumask_set_cpu(cpu, &cpuid_topo->thread_sibling); >> + > > This seems like another problem?
I don't think so. If you run a system with the cpu-map mentioned above you get:
# cat /sys/kernel/debug/sched/domains/cpu0/domain*/name SMT <-- !!! CLS MC
root@e125579:~# cat /proc/schedstat | awk '{print $1 " " $2 }' | grep ^[cd] | head -5 cpu0 0 domain0 05 <-- !!! domain1 07 <-- !!! domain2 0f domain3 ff
So you get an unwanted SMT level for CPU0-3 and messed-up cpumasks without this change.
| |