All of lore.kernel.org
 help / color / mirror / Atom feed
From: Namhyung Kim <namhyung@kernel.org>
To: James Clark <james.clark@linaro.org>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>,
	Ian Rogers <irogers@google.com>, Jiri Olsa <jolsa@kernel.org>,
	Adrian Hunter <adrian.hunter@intel.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@kernel.org>,
	LKML <linux-kernel@vger.kernel.org>,
	linux-perf-users@vger.kernel.org, Jakub Brnak <jbrnak@redhat.com>,
	Michael Petlan <mpetlan@redhat.com>
Subject: Re: [PATCH] perf test: Fix perf probe testsuite
Date: Thu, 5 Nov 2026 18:59:32 -0800	[thread overview]
Message-ID: <au1ClCsTbbOdc69U@z2> (raw)
In-Reply-To: <7fb3e764-e71d-4cd1-b481-963ea518dfd3@linaro.org>

Hello James,

On Thu, Nov 05, 2026 at 03:56:03PM +0000, James Clark wrote:
> 
> 
> On 05/11/2026 15:08, James Clark wrote:
> > 
> > 
> > On 05/11/2026 07:17, Namhyung Kim wrote:
> > > The perf probe test suite fails on my machine.  It seems it's because
> > > the kernel debug info is not available.  Actually NO_DEBUGINFO is to
> > > check the condition and skip affected tests.
> > > 
> > > But it didn't work well as the skip_if_no_debuginfo function misses a
> > > new error string for v7.0+ kernels.  Internally it uses the
> > > add_probe_vfs_getname() to check if perf probe handles debuginfo and
> > > check the error string.  But it didn't add the new error string.
> > > 
> > >    "Could not find probeable line"
> > > 
> > > With that added, it now passes like below:
> > > 
> > >    $ sudo perf test -vv 189
> > >    Not taking turns using the perf mlock budget: nothing can exhaust it
> > >    189: perftool-testsuite_probe:
> > >    ---- start ----
> > >    test child forked, pid 26135
> > >    Probing warn_thunk_thunk
> > >    -- [ PASS ] -- perf_probe :: test_adding_blacklisted :: adding
> > > blacklisted function warn_thunk_thunk
> > >    -- [ PASS ] -- perf_probe :: test_adding_blacklisted :: listing
> > > blacklisted probe (should NOT be listed)
> > >    ## [ PASS ] ## perf_probe :: test_adding_blacklisted SUMMARY
> > >    -- [ PASS ] -- perf_probe :: test_adding_kernel :: adding probe
> > > inode_permission ::
> > >    -- [ PASS ] -- perf_probe :: test_adding_kernel :: adding probe
> > > inode_permission :: -a
> > >    -- [ PASS ] -- perf_probe :: test_adding_kernel :: adding probe
> > > inode_permission :: --add
> > >    -- [ PASS ] -- perf_probe :: test_adding_kernel :: listing added
> > > probe :: perf list
> > >    -- [ SKIP ] -- perf_probe :: test_adding_kernel :: 1 1 Skipped
> > > due to missing debuginfo :: testcase skipped
> > >    -- [ PASS ] -- perf_probe :: test_adding_kernel :: using added probe
> > >    -- [ PASS ] -- perf_probe :: test_adding_kernel :: deleting added
> > > probe
> > >    -- [ PASS ] -- perf_probe :: test_adding_kernel :: listing
> > > removed probe (should NOT be listed)
> > >    -- [ PASS ] -- perf_probe :: test_adding_kernel :: dry run ::
> > > adding probe
> > >    -- [ PASS ] -- perf_probe :: test_adding_kernel :: force-adding
> > > probes :: first probe adding
> > >    -- [ PASS ] -- perf_probe :: test_adding_kernel :: force-adding
> > > probes :: second probe adding (without force)
> > >    -- [ PASS ] -- perf_probe :: test_adding_kernel :: force-adding
> > > probes :: second probe adding (with force)
> > >    -- [ PASS ] -- perf_probe :: test_adding_kernel :: using doubled probe
> > >    -- [ PASS ] -- perf_probe :: test_adding_kernel :: removing
> > > multiple probes
> > >    Regexp not found: "probe:vfs_mknod"
> > >    Regexp not found: "probe:vfs_create"
> > >    Regexp not found: "probe:vfs_rmdir"
> > >    Regexp not found: "probe:vfs_link"
> > >    Regexp not found: "probe:vfs_write"
> > >    -- [ SKIP ] -- perf_probe :: test_adding_kernel :: 1 1 Skipped
> > > due to missing debuginfo :: testcase skipped
> > >    Regexp not found:
> > > "somenonexistingrandomstuffwhichisalsoprettylongorevenlongertoexceed64"
> > >    Regexp not found: "in this function|at this address"
> > >    -- [ SKIP ] -- perf_probe :: test_adding_kernel :: 1 1 Skipped
> > > due to missing debuginfo :: testcase skipped
> > >    -- [ PASS ] -- perf_probe :: test_adding_kernel :: function with
> > > retval :: add
> > >    -- [ PASS ] -- perf_probe :: test_adding_kernel :: function with
> > > retval :: record
> > >    -- [ PASS ] -- perf_probe :: test_adding_kernel :: function
> > > argument probing :: script
> > >    ## [ PASS ] ## perf_probe :: test_adding_kernel SUMMARY
> > >    -- [ SKIP ] -- perf_probe :: test_basic :: help message ::
> > > testcase skipped
> > >    -- [ PASS ] -- perf_probe :: test_basic :: usage message
> > >    -- [ PASS ] -- perf_probe :: test_basic :: quiet switch
> > >    ## [ PASS ] ## perf_probe :: test_basic SUMMARY
> > >    -- [ PASS ] -- perf_probe :: test_invalid_options :: missing
> > > argument for -a
> > >    -- [ PASS ] -- perf_probe :: test_invalid_options :: missing
> > > argument for -d
> > >    -- [ PASS ] -- perf_probe :: test_invalid_options :: missing
> > > argument for -L
> > >    -- [ PASS ] -- perf_probe :: test_invalid_options :: missing
> > > argument for -V
> > >    -- [ PASS ] -- perf_probe :: test_invalid_options :: unnecessary
> > > argument for -F
> > >    -- [ PASS ] -- perf_probe :: test_invalid_options :: unnecessary
> > > argument for -l
> > >    -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually
> > > exclusive options :: -a xxx -d xxx
> > >    -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually
> > > exclusive options :: -a xxx -L foo
> > >    -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually
> > > exclusive options :: -a xxx -V foo
> > >    -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually
> > > exclusive options :: -a xxx -l
> > >    -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually
> > > exclusive options :: -a xxx -F
> > >    -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually
> > > exclusive options :: -d xxx -L foo
> > >    -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually
> > > exclusive options :: -d xxx -V foo
> > >    -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually
> > > exclusive options :: -d xxx -l
> > >    -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually
> > > exclusive options :: -d xxx -F
> > >    -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually
> > > exclusive options :: -L foo -V bar
> > >    -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually
> > > exclusive options :: -L foo -l
> > >    -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually
> > > exclusive options :: -L foo -F
> > >    -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually
> > > exclusive options :: -V foo -l
> > >    -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually
> > > exclusive options :: -V foo -F
> > >    -- [ PASS ] -- perf_probe :: test_invalid_options :: mutually
> > > exclusive options :: -l -F
> > >    ## [ PASS ] ## perf_probe :: test_invalid_options SUMMARY
> > >    -- [ PASS ] -- perf_probe :: test_line_semantics :: acceptable
> > > descriptions :: func
> > >    -- [ PASS ] -- perf_probe :: test_line_semantics :: acceptable
> > > descriptions :: func:10
> > >    -- [ PASS ] -- perf_probe :: test_line_semantics :: acceptable
> > > descriptions :: func:0-10
> > >    -- [ PASS ] -- perf_probe :: test_line_semantics :: acceptable
> > > descriptions :: func:2+10
> > >    -- [ PASS ] -- perf_probe :: test_line_semantics :: acceptable
> > > descriptions :: func@source.c
> > >    -- [ PASS ] -- perf_probe :: test_line_semantics :: acceptable
> > > descriptions :: func@source.c:1
> > >    -- [ PASS ] -- perf_probe :: test_line_semantics :: acceptable
> > > descriptions :: source.c:1
> > >    -- [ PASS ] -- perf_probe :: test_line_semantics :: acceptable
> > > descriptions :: source.c:1+1
> > >    -- [ PASS ] -- perf_probe :: test_line_semantics :: acceptable
> > > descriptions :: source.c:1-10
> > >    -- [ PASS ] -- perf_probe :: test_line_semantics :: unacceptable
> > > descriptions :: func:foo
> > >    -- [ PASS ] -- perf_probe :: test_line_semantics :: unacceptable
> > > descriptions :: func:1-foo
> > >    -- [ PASS ] -- perf_probe :: test_line_semantics :: unacceptable
> > > descriptions :: func:1+foo
> > >    -- [ PASS ] -- perf_probe :: test_line_semantics :: unacceptable
> > > descriptions :: func;lazy\*pattern
> > >    ## [ PASS ] ## perf_probe :: test_line_semantics SUMMARY
> > >    ---- end(0) ----
> > >    189: perftool-
> > > testsuite_probe                                                         
> > > : Ok
> > > 
> > > Fixes: 92b664dcefab ("perf test probe_vfs_getname: Skip if no
> > > suitable line detected")
> > > Cc: Jakub Brnak <jbrnak@redhat.com>
> > > Cc: Michael Petlan <mpetlan@redhat.com>
> > > Signed-off-by: Namhyung Kim <namhyung@kernel.org>
> > > ---
> > >   tools/perf/tests/shell/lib/probe_vfs_getname.sh | 2 +-
> > >   1 file changed, 1 insertion(+), 1 deletion(-)
> > > 
> > > diff --git a/tools/perf/tests/shell/lib/probe_vfs_getname.sh
> > > b/tools/ perf/tests/shell/lib/probe_vfs_getname.sh
> > > index 57a59ae7d4ae3d71..c091cd208beec056 100644
> > > --- a/tools/perf/tests/shell/lib/probe_vfs_getname.sh
> > > +++ b/tools/perf/tests/shell/lib/probe_vfs_getname.sh
> > > @@ -64,7 +64,7 @@ add_probe_vfs_getname() {
> > >   }
> > >   skip_if_no_debuginfo() {
> > > -    add_probe_vfs_getname -v 2>&1 | grep -E -q "^(Failed to find
> > > the path for the kernel|Debuginfo-analysis is not supported)|(file
> > > has no debug information)" && return 2
> > > +    add_probe_vfs_getname -v 2>&1 | grep -E -q "^(Failed to find
> > > the path for the kernel|Debuginfo-analysis is not supported)|(file
> > > has no debug information|Could not find probeable line)" && return 2
> > >       return 1
> > >   }
> > 
> > I was just about to send a fix for the same thing, but I had something
> > slightly different. I think adding "Could not find probeable line"
> > allows for false skips in the future even when debug symbols are
> > present, like when that function was re-worked other times. And that
> > seems to be what Sashiko mentions as well.
> > 
> > If you just try to do a dry run probe of getname_flags() which has
> > always existed, then its a pretty stable equivalent for whether debug
> > info exists or not:
> > 
> >    perf probe -n -v 'getname_flags $params' 2>&1 | grep -E -q "^(Failed
> > to find the path for the kernel|Debuginfo-analysis is not supported)|
> > (file has no debug information)" && return 2
> > 
> 
> I included it here: https://lore.kernel.org/linux-perf-users/20261105-james-perf-test-fixes-v1-0-0b279bee5830@linaro.org/T/#t

Thanks, looks good.
Namhyung


      reply	other threads:[~2026-11-06  2:59 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-11-05  7:17 [PATCH] perf test: Fix perf probe testsuite Namhyung Kim
2026-11-05  7:37 ` sashiko-bot
2026-11-05 15:08 ` James Clark
2026-11-05 15:56   ` James Clark
2026-11-06  2:59     ` 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=au1ClCsTbbOdc69U@z2 \
    --to=namhyung@kernel.org \
    --cc=acme@kernel.org \
    --cc=adrian.hunter@intel.com \
    --cc=irogers@google.com \
    --cc=james.clark@linaro.org \
    --cc=jbrnak@redhat.com \
    --cc=jolsa@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=mpetlan@redhat.com \
    --cc=peterz@infradead.org \
    /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.