All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Wangnan (F)" <wangnan0@huawei.com>
To: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: He Kuang <hekuang@huawei.com>, Jiri Olsa <jolsa@kernel.org>,
	"Linux Kernel Mailing List" <linux-kernel@vger.kernel.org>
Subject: Re: 'perf test backward' failing with older kernels, should Skip
Date: Fri, 1 Jul 2016 09:53:56 +0800	[thread overview]
Message-ID: <5775CD34.6030107@huawei.com> (raw)
In-Reply-To: <20160630210052.GE5324@kernel.org>



On 2016/7/1 5:00, Arnaldo Carvalho de Melo wrote:
> Hi Wang,
>
> 	I booted a machine with the f24 distro kernel and the backward
> ring buffer test started FAILing, when it should've noticed that the
> kernel doesn't support it and Skip instead:
>
> [root@jouet ~]# perf test -v backward
> 45: Test backward reading from ring buffer                   :
> --- start ---
> <SNIP>
> mmap size 1052672B
> Unexpected counter: sample_count=0, comm_count=0
> ---- end ----
> Test backward reading from ring buffer: FAILED!
> [root@jouet ~]#
>

I didn't test it on old kernel, but I tested it by forcing 
sys_perf_event_open
return -EINVAL when attr->backward is true by following patch:

diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c
index 1d8f2bb..3e91c63 100644
--- a/tools/perf/util/evsel.c
+++ b/tools/perf/util/evsel.c
@@ -1418,6 +1418,9 @@ retry_open:
                         pr_debug2("sys_perf_event_open: pid %d  cpu %d  
group_fd %d  flags %#lx\n",
                                   pid, cpus->map[cpu], group_fd, flags);

+                       if (evsel->attr.write_backward)
+                                FD(evsel, cpu, thread) = -EINVAL;
+                       else
                         FD(evsel, cpu, thread) = 
sys_perf_event_open(&evsel->attr,
pid,
cpus->map[cpu],

  'perf test' skips this test.

Let me switch to an old kernel and try again...

Oops... It does FAILED...

Seems the code I use to emulate old kernel is wrong. I should set errno 
to EINVAL and
make FD(...) = -1.

I agree with your patch. Thank you for pointing it out.

> Ok, so I think the patch below should do the trick, is that right? With it
> I get:
>
> [root@jouet ~]# perf test backward
> 45: Test backward reading from ring buffer                   : Skip
> [root@jouet ~]#
>
> diff --git a/tools/perf/tests/backward-ring-buffer.c b/tools/perf/tests/backward-ring-buffer.c
> index e70313fac5a5..0731b0bf9552 100644
> --- a/tools/perf/tests/backward-ring-buffer.c
> +++ b/tools/perf/tests/backward-ring-buffer.c
> @@ -118,8 +118,10 @@ int test__backward_ring_buffer(int subtest __maybe_unused)
>   	perf_evlist__config(evlist, &opts, NULL);
>   
>   	/* Set backward bit, ring buffer should be writing from end */
> -	evlist__for_each_entry(evlist, evsel)
> +	evlist__for_each_entry(evlist, evsel) {
> +		evsel->overwrite = true;
>   		evsel->attr.write_backward = 1;
> +	}
>   
>   	err = perf_evlist__open(evlist);
>   	if (err < 0) {

      reply	other threads:[~2016-07-01  1:55 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-30 21:00 'perf test backward' failing with older kernels, should Skip Arnaldo Carvalho de Melo
2016-07-01  1:53 ` Wangnan (F) [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=5775CD34.6030107@huawei.com \
    --to=wangnan0@huawei.com \
    --cc=acme@kernel.org \
    --cc=hekuang@huawei.com \
    --cc=jolsa@kernel.org \
    --cc=linux-kernel@vger.kernel.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.