lkml.org 
[lkml]   [2020]   [Jul]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2 03/10] powerpc/smp: Move powerpc_topology above
    Date
    Just moving the powerpc_topology description above.
    This will help in using functions in this file and avoid declarations.

    No other functional changes

    Cc: linuxppc-dev <linuxppc-dev@lists.ozlabs.org>
    Cc: LKML <linux-kernel@vger.kernel.org>
    Cc: Michael Ellerman <michaele@au1.ibm.com>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Valentin Schneider <valentin.schneider@arm.com>
    Cc: Nick Piggin <npiggin@au1.ibm.com>
    Cc: Oliver OHalloran <oliveroh@au1.ibm.com>
    Cc: Nathan Lynch <nathanl@linux.ibm.com>
    Cc: Michael Neuling <mikey@linux.ibm.com>
    Cc: Anton Blanchard <anton@au1.ibm.com>
    Cc: Gautham R Shenoy <ego@linux.vnet.ibm.com>
    Cc: Vaidyanathan Srinivasan <svaidy@linux.ibm.com>
    Cc: Jordan Niethe <jniethe5@gmail.com>
    Reviewed-by: Gautham R. Shenoy <ego@linux.vnet.ibm.com>
    Signed-off-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
    ---
    arch/powerpc/kernel/smp.c | 116 +++++++++++++++++++-------------------
    1 file changed, 58 insertions(+), 58 deletions(-)

    diff --git a/arch/powerpc/kernel/smp.c b/arch/powerpc/kernel/smp.c
    index 0e0b118d9b6e..1ce95da00cb6 100644
    --- a/arch/powerpc/kernel/smp.c
    +++ b/arch/powerpc/kernel/smp.c
    @@ -818,6 +818,64 @@ static int init_cpu_l1_cache_map(int cpu)
    return err;
    }

    +static bool shared_caches;
    +
    +#ifdef CONFIG_SCHED_SMT
    +/* cpumask of CPUs with asymmetric SMT dependency */
    +static int powerpc_smt_flags(void)
    +{
    + int flags = SD_SHARE_CPUCAPACITY | SD_SHARE_PKG_RESOURCES;
    +
    + if (cpu_has_feature(CPU_FTR_ASYM_SMT)) {
    + printk_once(KERN_INFO "Enabling Asymmetric SMT scheduling\n");
    + flags |= SD_ASYM_PACKING;
    + }
    + return flags;
    +}
    +#endif
    +
    +/*
    + * P9 has a slightly odd architecture where pairs of cores share an L2 cache.
    + * This topology makes it *much* cheaper to migrate tasks between adjacent cores
    + * since the migrated task remains cache hot. We want to take advantage of this
    + * at the scheduler level so an extra topology level is required.
    + */
    +static int powerpc_shared_cache_flags(void)
    +{
    + return SD_SHARE_PKG_RESOURCES;
    +}
    +
    +/*
    + * We can't just pass cpu_l2_cache_mask() directly because
    + * returns a non-const pointer and the compiler barfs on that.
    + */
    +static const struct cpumask *shared_cache_mask(int cpu)
    +{
    + if (shared_caches)
    + return cpu_l2_cache_mask(cpu);
    +
    + if (has_big_cores)
    + return cpu_smallcore_mask(cpu);
    +
    + return per_cpu(cpu_sibling_map, cpu);
    +}
    +
    +#ifdef CONFIG_SCHED_SMT
    +static const struct cpumask *smallcore_smt_mask(int cpu)
    +{
    + return cpu_smallcore_mask(cpu);
    +}
    +#endif
    +
    +static struct sched_domain_topology_level powerpc_topology[] = {
    +#ifdef CONFIG_SCHED_SMT
    + { cpu_smt_mask, powerpc_smt_flags, SD_INIT_NAME(SMT) },
    +#endif
    + { shared_cache_mask, powerpc_shared_cache_flags, SD_INIT_NAME(CACHE) },
    + { cpu_cpu_mask, SD_INIT_NAME(DIE) },
    + { NULL, },
    +};
    +
    static int init_big_cores(void)
    {
    int cpu;
    @@ -1249,8 +1307,6 @@ static void add_cpu_to_masks(int cpu)
    set_cpus_related(cpu, i, cpu_core_mask);
    }

    -static bool shared_caches;
    -
    /* Activate a secondary processor. */
    void start_secondary(void *unused)
    {
    @@ -1314,62 +1370,6 @@ int setup_profiling_timer(unsigned int multiplier)
    return 0;
    }

    -#ifdef CONFIG_SCHED_SMT
    -/* cpumask of CPUs with asymmetric SMT dependency */
    -static int powerpc_smt_flags(void)
    -{
    - int flags = SD_SHARE_CPUCAPACITY | SD_SHARE_PKG_RESOURCES;
    -
    - if (cpu_has_feature(CPU_FTR_ASYM_SMT)) {
    - printk_once(KERN_INFO "Enabling Asymmetric SMT scheduling\n");
    - flags |= SD_ASYM_PACKING;
    - }
    - return flags;
    -}
    -#endif
    -
    -/*
    - * P9 has a slightly odd architecture where pairs of cores share an L2 cache.
    - * This topology makes it *much* cheaper to migrate tasks between adjacent cores
    - * since the migrated task remains cache hot. We want to take advantage of this
    - * at the scheduler level so an extra topology level is required.
    - */
    -static int powerpc_shared_cache_flags(void)
    -{
    - return SD_SHARE_PKG_RESOURCES;
    -}
    -
    -/*
    - * We can't just pass cpu_l2_cache_mask() directly because
    - * returns a non-const pointer and the compiler barfs on that.
    - */
    -static const struct cpumask *shared_cache_mask(int cpu)
    -{
    - if (shared_caches)
    - return cpu_l2_cache_mask(cpu);
    -
    - if (has_big_cores)
    - return cpu_smallcore_mask(cpu);
    -
    - return per_cpu(cpu_sibling_map, cpu);
    -}
    -
    -#ifdef CONFIG_SCHED_SMT
    -static const struct cpumask *smallcore_smt_mask(int cpu)
    -{
    - return cpu_smallcore_mask(cpu);
    -}
    -#endif
    -
    -static struct sched_domain_topology_level powerpc_topology[] = {
    -#ifdef CONFIG_SCHED_SMT
    - { cpu_smt_mask, powerpc_smt_flags, SD_INIT_NAME(SMT) },
    -#endif
    - { shared_cache_mask, powerpc_shared_cache_flags, SD_INIT_NAME(CACHE) },
    - { cpu_cpu_mask, SD_INIT_NAME(DIE) },
    - { NULL, },
    -};
    -
    void __init smp_cpus_done(unsigned int max_cpus)
    {
    /*
    --
    2.17.1
    \
     
     \ /
      Last update: 2020-07-21 13:41    [W:4.008 / U:0.436 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site