linux-api.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
To: shuah <shuah@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>,
	"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>,
	Boqun Feng <boqun.feng@gmail.com>,
	Andy Lutomirski <luto@amacapital.net>,
	Dave Watson <davejwatson@fb.com>,
	linux-kernel <linux-kernel@vger.kernel.org>,
	linux-api <linux-api@vger.kernel.org>,
	Paul Turner <pjt@google.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Russell King <linux@arm.linux.org.uk>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>, "H. Peter Anvin" <hpa@zytor.com>,
	Andrew Hunter <ahh@google.com>, Andi Kleen <andi@firstfloor.org>,
	Chris Lameter <cl@linux.com>, Ben Maurer <bmaurer@fb.com>,
	rostedt <rostedt@goodmis.org>,
	Josh Triplett <josh@joshtriplett.org>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Catalin Marinas <cata>
Subject: Re: [RFC PATCH for 4.15 v3 15/22] rseq: selftests: Provide self-tests
Date: Tue, 21 Nov 2017 17:05:12 +0000 (UTC)	[thread overview]
Message-ID: <1823512285.19395.1511283912405.JavaMail.zimbra@efficios.com> (raw)
In-Reply-To: <e5c0030c-f361-2d6b-5b92-15456a232436@kernel.org>

----- On Nov 21, 2017, at 10:34 AM, shuah shuah@kernel.org wrote:

[...]
>> ---
>>  MAINTAINERS                                        |    1 +
>>  tools/testing/selftests/Makefile                   |    1 +
>>  tools/testing/selftests/rseq/.gitignore            |    4 +
> 
> Thanks for the .gitignore files. It is commonly missed change, I end
> up adding one to clean things up after tests get in.

I'm used to receive patches where contributors forget to add new files
to gitignore within my own projects, which may contribute to my awareness
of this pain point. :)

[...]

>> +
>> +void *test_percpu_inc_thread(void *arg)
>> +{
>> +	struct inc_thread_test_data *thread_data = arg;
>> +	struct inc_test_data *data = thread_data->data;
>> +	long long i, reps;
>> +
>> +	if (!opt_disable_rseq && thread_data->reg
>> +			&& rseq_register_current_thread())
>> +		abort();
>> +	reps = thread_data->reps;
>> +	for (i = 0; i < reps; i++) {
>> +		int cpu, ret;
>> +
>> +#ifndef SKIP_FASTPATH
>> +		/* Try fast path. */
>> +		cpu = rseq_cpu_start();
>> +		ret = rseq_addv(&data->c[cpu].count, 1, cpu);
>> +		if (likely(!ret))
>> +			goto next;
>> +#endif
> 
> So the test needs to compiled with this enabled? I think it would be better
> to make this an argument to be abel to select at test start time as opposed
> to making this compile time option. Remember that these tests get run in
> automated test rings. Making this a compile time otpion pertty much ensures
> that this path will not be tested.
> 
> So I would reccommend adding a paratemer.
> 
>> +	slowpath:
>> +		__attribute__((unused));
>> +		for (;;) {
>> +			/* Fallback on cpu_opv system call. */
>> +			cpu = rseq_current_cpu();
>> +			ret = cpu_op_addv(&data->c[cpu].count, 1, cpu);
>> +			if (likely(!ret))
>> +				break;
>> +			assert(ret >= 0 || errno == EAGAIN);
>> +		}
>> +	next:
>> +		__attribute__((unused));
>> +#ifndef BENCHMARK
>> +		if (i != 0 && !(i % (reps / 10)))
>> +			printf_verbose("tid %d: count %lld\n", (int) gettid(), i);
>> +#endif
> 
> Same comment as before. Avoid compile time options.

The goal of those compiler define are to generate the altered code without
adding branches into the fast-paths.

Here is an alternative solution that should take care of your concern: I'll
build multiple targets for param_test.c:

param_test
param_test_skip_fastpath (built with -DSKIP_FASTPATH)
param_test_benchmark (build with -DBENCHMARK)

I'll update run_param_test.sh to run both param_test and param_test_skip_fastpath.

Note that "param_test_benchmark" is only useful for benchmarking,
so I don't plan to run it from run_param_test.sh which is meant
to track regressions.

Is that approach OK with you ?

Thanks,

Mathieu

-- 
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com

  reply	other threads:[~2017-11-21 17:05 UTC|newest]

Thread overview: 66+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-21 14:18 [RFC PATCH for 4.15 v12 00/22] Restartable sequences and CPU op vector Mathieu Desnoyers
2017-11-21 14:18 ` [RFC PATCH for 4.15 01/22] uapi headers: Provide types_32_64.h Mathieu Desnoyers
2017-11-21 14:18 ` [RFC PATCH for 4.15 v12 02/22] rseq: Introduce restartable sequences system call Mathieu Desnoyers
2017-11-21 14:18 ` [RFC PATCH for 4.15 03/22] arm: Add restartable sequences support Mathieu Desnoyers
2017-11-21 14:18 ` [RFC PATCH for 4.15 04/22] arm: Wire up restartable sequences system call Mathieu Desnoyers
     [not found] ` <20171121141900.18471-1-mathieu.desnoyers-vg+e7yoeK/dWk0Htik3J/w@public.gmane.org>
2017-11-21 14:18   ` [RFC PATCH for 4.15 05/22] x86: Add support for restartable sequences Mathieu Desnoyers
2017-11-21 14:18   ` [RFC PATCH for 4.15 06/22] x86: Wire up restartable sequence system call Mathieu Desnoyers
2017-11-21 22:19   ` [PATCH update for 4.15 1/3] selftests: lib.mk: Introduce OVERRIDE_TARGETS Mathieu Desnoyers
     [not found]   ` <20171121221933.25959-1-mathieu.desnoyers-vg+e7yoeK/dWk0Htik3J/w@public.gmane.org>
2017-11-21 22:19     ` [PATCH update for 4.15 2/3] cpu_opv: selftests: Implement selftests (v4) Mathieu Desnoyers
     [not found]       ` <20171121221933.25959-2-mathieu.desnoyers-vg+e7yoeK/dWk0Htik3J/w@public.gmane.org>
2017-11-22 15:20         ` Shuah Khan
2017-11-21 22:22     ` [PATCH update for 4.15 1/3] selftests: lib.mk: Introduce OVERRIDE_TARGETS Mathieu Desnoyers
2017-11-22 15:16     ` Shuah Khan
2017-11-21 14:18 ` [RFC PATCH for 4.15 07/22] powerpc: Add support for restartable sequences Mathieu Desnoyers
2017-11-21 14:18 ` [RFC PATCH for 4.15 08/22] powerpc: Wire up restartable sequences system call Mathieu Desnoyers
2017-11-21 14:18 ` [RFC PATCH for 4.15 09/22] sched: Implement push_task_to_cpu Mathieu Desnoyers
2017-11-21 14:18 ` [RFC PATCH for 4.15 v4 10/22] cpu_opv: Provide cpu_opv system call Mathieu Desnoyers
2017-11-21 14:18 ` [RFC PATCH for 4.15 11/22] x86: Wire up " Mathieu Desnoyers
2017-11-21 14:18 ` [RFC PATCH for 4.15 12/22] powerpc: " Mathieu Desnoyers
2017-11-21 14:18 ` [RFC PATCH for 4.15 13/22] arm: " Mathieu Desnoyers
2017-11-21 14:18 ` [RFC PATCH for 4.15 v3 14/22] cpu_opv: selftests: Implement selftests Mathieu Desnoyers
     [not found]   ` <20171121141900.18471-15-mathieu.desnoyers-vg+e7yoeK/dWk0Htik3J/w@public.gmane.org>
2017-11-21 15:17     ` Shuah Khan
     [not found]       ` <c311cd4b-4d8f-bfb5-3731-2cb2eefa4865-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2017-11-21 16:46         ` Mathieu Desnoyers
2017-11-21 14:18 ` [RFC PATCH for 4.15 v3 15/22] rseq: selftests: Provide self-tests Mathieu Desnoyers
     [not found]   ` <20171121141900.18471-16-mathieu.desnoyers-vg+e7yoeK/dWk0Htik3J/w@public.gmane.org>
2017-11-21 15:34     ` Shuah Khan
2017-11-21 17:05       ` Mathieu Desnoyers [this message]
2017-11-21 17:40         ` Shuah Khan
2017-11-21 21:22           ` Mathieu Desnoyers
     [not found]             ` <911090321.19621.1511299340968.JavaMail.zimbra-vg+e7yoeK/dWk0Htik3J/w@public.gmane.org>
2017-11-21 21:24               ` Shuah Khan
     [not found]                 ` <d059d29d-83a7-f16d-dc84-05a4609a3479-JPH+aEBZ4P+UEJcrhfAQsw@public.gmane.org>
2017-11-21 21:44                   ` Mathieu Desnoyers
2017-11-22 19:38     ` Peter Zijlstra
     [not found]       ` <20171122193821.GJ3165-IIpfhp3q70x9+YH6RuovlLjjLBE8jN/0@public.gmane.org>
2017-11-23 21:16         ` Mathieu Desnoyers
2017-11-22 21:48     ` Peter Zijlstra
     [not found]       ` <20171122214813.GK3165-IIpfhp3q70x9+YH6RuovlLjjLBE8jN/0@public.gmane.org>
2017-11-23 22:53         ` Mathieu Desnoyers
2017-11-23  8:55   ` Peter Zijlstra
     [not found]     ` <20171123085511.ohwuobf5v32vggho-Nxj+rRp3nVydTX5a5knrm8zTDFooKrT+cvkQGrU6aU0@public.gmane.org>
2017-11-23  8:57       ` Peter Zijlstra
     [not found]         ` <20171123085721.bzburngdsatgewjo-Nxj+rRp3nVydTX5a5knrm8zTDFooKrT+cvkQGrU6aU0@public.gmane.org>
2017-11-24 14:15           ` Mathieu Desnoyers
2017-11-24 13:55       ` Mathieu Desnoyers
2017-11-21 14:18 ` [RFC PATCH for 4.15 16/22] rseq: selftests: arm: workaround gcc asm size guess Mathieu Desnoyers
     [not found]   ` <20171121141900.18471-17-mathieu.desnoyers-vg+e7yoeK/dWk0Htik3J/w@public.gmane.org>
2017-11-21 15:39     ` Shuah Khan
2017-11-21 14:18 ` [RFC PATCH for 4.15 17/22] Fix: membarrier: add missing preempt off around smp_call_function_many Mathieu Desnoyers
2017-11-21 14:18 ` [RFC PATCH for 4.15 18/22] membarrier: selftest: Test private expedited cmd Mathieu Desnoyers
2017-11-21 14:18 ` [RFC PATCH for 4.15 v7 19/22] powerpc: membarrier: Skip memory barrier in switch_mm() Mathieu Desnoyers
2017-11-21 14:18 ` [RFC PATCH for 4.15 v5 20/22] membarrier: Document scheduler barrier requirements Mathieu Desnoyers
2017-11-21 14:18 ` [RFC PATCH for 4.15 v2 21/22] membarrier: provide SHARED_EXPEDITED command Mathieu Desnoyers
2017-11-21 14:19 ` [RFC PATCH for 4.15 22/22] membarrier: selftest: Test shared expedited cmd Mathieu Desnoyers
2017-11-21 17:21 ` [RFC PATCH for 4.15 v12 00/22] Restartable sequences and CPU op vector Andi Kleen
     [not found]   ` <20171121172144.GL2482-1g7Xle2YJi4/4alezvVtWx2eb7JE58TQ@public.gmane.org>
2017-11-21 22:05     ` Mathieu Desnoyers
     [not found]       ` <740195164.19702.1511301908907.JavaMail.zimbra-vg+e7yoeK/dWk0Htik3J/w@public.gmane.org>
2017-11-21 22:59         ` Thomas Gleixner
2017-11-22 12:36           ` Mathieu Desnoyers
     [not found]             ` <809252084.19901.1511354219731.JavaMail.zimbra-vg+e7yoeK/dWk0Htik3J/w@public.gmane.org>
2017-11-22 15:25               ` Thomas Gleixner
2017-11-22 19:32         ` Peter Zijlstra
2017-11-22 19:37           ` Will Deacon
     [not found]             ` <20171122193734.GO22648-5wv7dgnIgG8@public.gmane.org>
2017-11-23 21:15               ` Mathieu Desnoyers
     [not found]                 ` <165707648.21250.1511471721845.JavaMail.zimbra-vg+e7yoeK/dWk0Htik3J/w@public.gmane.org>
2017-11-23 22:51                   ` Thomas Gleixner
2017-11-23 23:01                     ` Mathieu Desnoyers
     [not found]                       ` <739755311.21380.1511478071883.JavaMail.zimbra-vg+e7yoeK/dWk0Htik3J/w@public.gmane.org>
2017-11-23 23:38                         ` Thomas Gleixner
2017-11-24  0:04                           ` Mathieu Desnoyers
     [not found]                             ` <1589826840.21401.1511481874141.JavaMail.zimbra-vg+e7yoeK/dWk0Htik3J/w@public.gmane.org>
2017-11-24 14:47                               ` Thomas Gleixner
2017-11-23 21:13           ` Mathieu Desnoyers
2017-11-23 21:49             ` Andi Kleen
2017-11-22 15:28       ` Andy Lutomirski
     [not found]         ` <CALCETrX84s-WEa5osP0t6CKh8C4Wj7-ARNMpaSp8Eop1_2ycLA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-11-22 16:43           ` Mathieu Desnoyers
     [not found]             ` <718035530.20074.1511369023901.JavaMail.zimbra-vg+e7yoeK/dWk0Htik3J/w@public.gmane.org>
2017-11-22 18:10               ` Andi Kleen
2017-11-21 22:19 ` [PATCH update for 4.15 3/3] rseq: selftests: Provide self-tests (v4) Mathieu Desnoyers
     [not found]   ` <20171121221933.25959-3-mathieu.desnoyers-vg+e7yoeK/dWk0Htik3J/w@public.gmane.org>
2017-11-22 15:23     ` Shuah Khan
2017-11-22 16:31       ` Mathieu Desnoyers

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=1823512285.19395.1511283912405.JavaMail.zimbra@efficios.com \
    --to=mathieu.desnoyers@efficios.com \
    --cc=ahh@google.com \
    --cc=akpm@linux-foundation.org \
    --cc=andi@firstfloor.org \
    --cc=bmaurer@fb.com \
    --cc=boqun.feng@gmail.com \
    --cc=cl@linux.com \
    --cc=davejwatson@fb.com \
    --cc=hpa@zytor.com \
    --cc=josh@joshtriplett.org \
    --cc=linux-api@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@arm.linux.org.uk \
    --cc=luto@amacapital.net \
    --cc=mingo@redhat.com \
    --cc=paulmck@linux.vnet.ibm.com \
    --cc=peterz@infradead.org \
    --cc=pjt@google.com \
    --cc=rostedt@goodmis.org \
    --cc=shuah@kernel.org \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).