lkml.org 
[lkml]   [2022]   [Jan]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.16 1000/1039] perf cputopo: Fix CPU topology reading on s/390
    Date
    From: Thomas Richter <tmricht@linux.ibm.com>

    commit a6e62743621ea29bea461774c0bcc68e5de59068 upstream.

    Commit fdf1e29b6118c18f ("perf expr: Add metric literals for topology.")
    fails on s390:

    # ./perf test -Fv 7
    ...
    # FAILED tests/expr.c:173 #num_dies >= #num_packages
    ---- end ----
    Simple expression parser: FAILED!
    #

    Investigating this issue leads to these functions:
    build_cpu_topology()
    +--> has_die_topology(void)
    {
    struct utsname uts;

    if (uname(&uts) < 0)
    return false;
    if (strncmp(uts.machine, "x86_64", 6))
    return false;
    ....
    }

    which always returns false on s390. The caller build_cpu_topology()
    checks has_die_topology() return value. On false the
    the struct cpu_topology::die_cpu_list is not contructed and has zero
    entries. This leads to the failing comparison: #num_dies >= #num_packages.
    s390 of course has a positive number of packages.

    Fix this by adding s390 architecture to support CPU die list.

    Output after:
    # ./perf test -Fv 7
    7: Simple expression parser :
    --- start ---
    division by zero
    syntax error
    ---- end ----
    Simple expression parser: Ok
    #

    Fixes: fdf1e29b6118c18f ("perf expr: Add metric literals for topology.")
    Reviewed-by: Ian Rogers <irogers@google.com>
    Signed-off-by: Thomas Richter <tmricht@linux.ibm.com>
    Cc: Heiko Carstens <hca@linux.ibm.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Sumanth Korikkar <sumanthk@linux.ibm.com>
    Cc: Sven Schnelle <svens@linux.ibm.com>
    Cc: Vasily Gorbik <gor@linux.ibm.com>
    Link: https://lore.kernel.org/r/20211124090343.9436-1-tmricht@linux.ibm.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    tools/perf/util/cputopo.c | 3 ++-
    1 file changed, 2 insertions(+), 1 deletion(-)

    --- a/tools/perf/util/cputopo.c
    +++ b/tools/perf/util/cputopo.c
    @@ -165,7 +165,8 @@ static bool has_die_topology(void)
    if (uname(&uts) < 0)
    return false;

    - if (strncmp(uts.machine, "x86_64", 6))
    + if (strncmp(uts.machine, "x86_64", 6) &&
    + strncmp(uts.machine, "s390x", 5))
    return false;

    scnprintf(filename, MAXPATHLEN, DIE_CPUS_FMT,

    \
     
     \ /
      Last update: 2022-01-25 03:56    [W:2.463 / U:0.304 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site