• Ionela Voinescu's avatar
    arch_topology: Limit span of cpu_clustergroup_mask() · bfcc4397
    Ionela Voinescu authored
    Currently the cluster identifier is not set on DT based platforms.
    The reset or default value is -1 for all the CPUs. Once we assign the
    cluster identifier values correctly, the cluster_sibling mask will be
    populated and returned by cpu_clustergroup_mask() to contribute in the
    creation of the CLS scheduling domain level, if SCHED_CLUSTER is
    enabled.
    
    To avoid topologies that will result in questionable or incorrect
    scheduling domains, impose restrictions regarding the span of clusters,
    as presented to scheduling domains building code: cluster_sibling should
    not span more or the same CPUs as cpu_coregroup_mask().
    
    This is needed in order to obtain a strict separation between the MC and
    CLS levels, and maintain the same domains for existing platforms in
    the presence of CONFIG_SCHED_CLUSTER, where the new cluster information
    is redundant and irrelevant for the scheduler.
    
    While previously the scheduling domain builder code would have removed MC
    as redundant and kept CLS if SCHED_CLUSTER was enabled and the
    cpu_coregroup_mask() and cpu_clustergroup_mask() spanned the same CPUs,
    now CLS will be removed and MC kept.
    
    Link: https://lore.kernel.org/r/20220704101605.1318280-18-sudeep.holla@arm.com
    Cc: Darren Hart <darren@os.amperecomputing.com>
    Tested-by: default avatarConor Dooley <conor.dooley@microchip.com>
    Acked-by: default avatarVincent Guittot <vincent.guittot@linaro.org>
    Signed-off-by: default avatarIonela Voinescu <ionela.voinescu@arm.com>
    Signed-off-by: default avatarSudeep Holla <sudeep.holla@arm.com>
    bfcc4397
arch_topology.c 19.8 KB