All of lore.kernel.org
 help / color / mirror / Atom feed
From: Namhyung Kim <namhyung@kernel.org>
To: Ian Rogers <irogers@google.com>
Cc: Thomas Richter <tmricht@linux.ibm.com>,
	James Clark <james.clark@linaro.org>,
	acme@kernel.org, linux-kernel@vger.kernel.org,
	linux-perf-users@vger.kernel.org, agordeev@linux.ibm.com,
	gor@linux.ibm.com, sumanthk@linux.ibm.com, hca@linux.ibm.com
Subject: Re: [PATCH] perf test: Fix failing test case Session Topology
Date: Tue, 28 Jan 2025 10:01:47 -0800	[thread overview]
Message-ID: <Z5kbi0w5rH414jI_@google.com> (raw)
In-Reply-To: <CAP-5=fVbZGnRcRbAc+kQyKn5aKdpWkSzVemERpiV2kncxnQ6pg@mail.gmail.com>

Hello,

On Tue, Jan 28, 2025 at 09:07:22AM -0800, Ian Rogers wrote:
> On Tue, Jan 28, 2025 at 5:07 AM Thomas Richter <tmricht@linux.ibm.com> wrote:
> >
> > Test case 37 Session topology fails on s390. I bisected this to
> >
> > commit 05be17eed774 ("tool api fs: Correctly encode errno for read/write open failures")
> >
> > When perf tool is invoked, it builds the perf.data file using the
> > following function sequence:
> >
> >   #0  has_die_topology () at util/cputopo.c:223
> >   #1  cpu_topology__new () at util/cputopo.c:302
> >   ....
> >   #9  0x00000000012a5c7a in perf_session__write_header (...)
> >         at util/header.c:3774
> >   #10 0x00000000011ccd64 in session_write_header (...)
> >         at tests/topology.c:53
> >   #11 0x00000000011cde9c in test__session_topology (...)
> >         at tests/topology.c:215
> >   #12 0x0000000001190276 in start_test (...)
> >
> > The function has_die_topology() checks for existence of sys file
> > /sys/devices/system/cpu/cpu0/topology/die_cpus_list
> > which does not exist on s390. This function returns false and
> > information for all CPU dies is omitted in the
> > perf data file section HEADER_CPU_TOPOLOGY.
> >
> > Later on the test case reads the perf.data file back using
> > functions.
> >
> >   check_cpu_topology()
> >   +--> perf_session__new()
> >
> > the missing CPU die information in the HEADER_CPU_TOPOLOGY section
> > causes the id_die field set to 0 in the session->header.env.cpu[0].
> >
> > Later on when the test case result is verified, the functions
> >
> >   test__session_topology()
> >   +--> check_cpu_topology()
> >        +--> aggr_cpu_id__cpu()
> >             +--> aggr_cpu_id__core()
> >                  +--> aggr_cpu_id__cluster()
> >                       +--> aggr_cpu_id__die()
> >                            +--> cpu__get_topology_int()
> >                                 +--> sysfs__read_int()
> >
> > Function aggr_cpu_id__die() reads the die_id from the CPU's
> > /sys/devices/system/cpu/cpu0/topology/die_id file entry.
> > This file does not exist and function
> > sysfs__read_int() now returns error number -2 (ENOENT).
> > Structure member id.die has value of -2.
> >
> > This new return value of -2 bypasses this check in function
> > aggr_cpu_id__die():
> >
> >         /* There is no die_id on legacy system. */
> >         if (die == -1)
> >                 die = 0;
> > and the test verification fails in:
> >
> >   TEST_ASSERT_VAL("Cpu map - Die ID doesn't match",
> >         session->header.env.cpu[cpu.cpu].die_id == id.die)
> >
> > Output before:
> >  # ./perf test -F 37
> >  37: Session topology               : FAILED!
> >  #
> >
> > Output after:
> >  # ./perf test -F 37
> >  37: Session topology               : Ok
> >  #
> >
> > Fixes: 05be17eed774 ("tool api fs: Correctly encode errno for read/write open failures")
> > Cc: Ian Rogers <irogers@google.com>
> > Signed-off-by: Thomas Richter <tmricht@linux.ibm.com>
> 
> Thanks Thomas, there is also James' patch which I think is equivalent:
> https://lore.kernel.org/linux-perf-users/20241218115552.912517-1-james.clark@linaro.org/

Oh, I thought it's already merged.  Will add it to perf-tools soon.


> and my longer series:
> https://lore.kernel.org/lkml/20241216232459.427642-1-irogers@google.com/
> which is what I'm carrying in Googe's tree, although James suggested
> corrections.

Please send a new verion with updates.

Thanks,
Namhyung


      reply	other threads:[~2025-01-28 18:01 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-01-28 13:06 [PATCH] perf test: Fix failing test case Session Topology Thomas Richter
2025-01-28 17:07 ` Ian Rogers
2025-01-28 18:01   ` Namhyung Kim [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Z5kbi0w5rH414jI_@google.com \
    --to=namhyung@kernel.org \
    --cc=acme@kernel.org \
    --cc=agordeev@linux.ibm.com \
    --cc=gor@linux.ibm.com \
    --cc=hca@linux.ibm.com \
    --cc=irogers@google.com \
    --cc=james.clark@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=sumanthk@linux.ibm.com \
    --cc=tmricht@linux.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.