lkml.org 
[lkml]   [2022]   [May]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v3 06/16] arch_topology: Add support to parse and detect cache attributes
    Date
    Currently ACPI populates just the minimum information about the last
    level cache from PPTT in order to feed the same to build sched_domains.
    Similar support for DT platforms is not present.

    In order to enable the same, the entire cache hierarchy information can
    be built as part of CPU topoplogy parsing both on ACPI and DT platforms.

    Note that this change builds the cacheinfo early even on ACPI systems, but
    the current mechanism of building llc_sibling mask remains unchanged.

    Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
    ---
    drivers/base/arch_topology.c | 23 ++++++++++++++++-------
    1 file changed, 16 insertions(+), 7 deletions(-)

    diff --git a/drivers/base/arch_topology.c b/drivers/base/arch_topology.c
    index f73b836047cf..765723448b10 100644
    --- a/drivers/base/arch_topology.c
    +++ b/drivers/base/arch_topology.c
    @@ -7,6 +7,7 @@
    */

    #include <linux/acpi.h>
    +#include <linux/cacheinfo.h>
    #include <linux/cpu.h>
    #include <linux/cpufreq.h>
    #include <linux/device.h>
    @@ -775,15 +776,23 @@ __weak int __init parse_acpi_topology(void)
    #if defined(CONFIG_ARM64) || defined(CONFIG_RISCV)
    void __init init_cpu_topology(void)
    {
    + int ret, cpu;
    +
    reset_cpu_topology();
    + ret = parse_acpi_topology();
    + if (!ret)
    + ret = of_have_populated_dt() && parse_dt_topology();

    - /*
    - * Discard anything that was parsed if we hit an error so we
    - * don't use partial information.
    - */
    - if (parse_acpi_topology())
    - reset_cpu_topology();
    - else if (of_have_populated_dt() && parse_dt_topology())
    + if(ret) {
    + /*
    + * Discard anything that was parsed if we hit an error so we
    + * don't use partial information.
    + */
    reset_cpu_topology();
    + return;
    + }
    +
    + for_each_possible_cpu(cpu)
    + detect_cache_attributes(cpu);
    }
    #endif
    --
    2.36.1
    \
     
     \ /
      Last update: 2022-05-25 10:16    [W:2.389 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site