• Yicong Yang's avatar
    arch_topology: Make cluster topology span at least SMT CPUs · 5ac251c8
    Yicong Yang authored
    Currently cpu_clustergroup_mask() will return CPU mask if cluster span more
    or the same CPUs as cpu_coregroup_mask(). This will result topology borken
    on non-Cluster SMT machines when building with CONFIG_SCHED_CLUSTER=y.
    
    Test with:
    qemu-system-aarch64 -enable-kvm -machine virt \
     -net none \
     -cpu host \
     -bios ./QEMU_EFI.fd \
     -m 2G \
     -smp 48,sockets=2,cores=12,threads=2 \
     -kernel $Image \
     -initrd $Rootfs \
     -nographic
     -append "rdinit=init console=ttyAMA0 sched_verbose loglevel=8"
    
    We'll get below error:
    [    3.084568] BUG: arch topology borken
    [    3.084570]      the SMT domain not a subset of the CLS domain
    
    Since cluster is a level higher than SMT, fix this by making cluster
    spans at least SMT CPUs.
    
    Fixes: bfcc4397 ("arch_topology: Limit span of cpu_clustergroup_mask()")
    Cc: Sudeep Holla <sudeep.holla@arm.com>
    Cc: Vincent Guittot <vincent.guittot@linaro.org>
    Cc: Ionela Voinescu <ionela.voinescu@arm.com>
    Cc: Greg KH <gregkh@linuxfoundation.org>
    Reviewed-by: default avatarSudeep Holla <sudeep.holla@arm.com>
    Signed-off-by: default avatarYicong Yang <yangyicong@hisilicon.com>
    Link: https://lore.kernel.org/r/20220905122615.12946-1-yangyicong@huawei.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    5ac251c8
arch_topology.c 20.5 KB