From mboxrd@z Thu Jan 1 00:00:00 1970 From: Peter Zijlstra Subject: Re: [RFC PATCH for 4.15 v3 15/22] rseq: selftests: Provide self-tests Date: Wed, 22 Nov 2017 20:38:21 +0100 Message-ID: <20171122193821.GJ3165@worktop.lehotels.local> References: <20171121141900.18471-1-mathieu.desnoyers@efficios.com> <20171121141900.18471-16-mathieu.desnoyers@efficios.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Content-Disposition: inline In-Reply-To: <20171121141900.18471-16-mathieu.desnoyers-vg+e7yoeK/dWk0Htik3J/w@public.gmane.org> Sender: linux-api-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: Mathieu Desnoyers Cc: "Paul E . McKenney" , Boqun Feng , Andy Lutomirski , Dave Watson , linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Paul Turner , Andrew Morton , Russell King , Thomas Gleixner , Ingo Molnar , "H . Peter Anvin" , Andrew Hunter , Andi Kleen , Chris Lameter , Ben Maurer , Steven Rostedt , Josh Triplett , Linus Torvalds , Catalin Marinas , Will Deacon List-Id: linux-api@vger.kernel.org On Tue, Nov 21, 2017 at 09:18:53AM -0500, Mathieu Desnoyers wrote: > Implements two basic tests of RSEQ functionality, and one more > exhaustive parameterizable test. > > The first, "basic_test" only asserts that RSEQ works moderately > correctly. E.g. that the CPUID pointer works. > > "basic_percpu_ops_test" is a slightly more "realistic" variant, > implementing a few simple per-cpu operations and testing their > correctness. > > "param_test" is a parametrizable restartable sequences test. See > the "--help" output for usage. > > A run_param_test.sh script runs many variants of the parametrizable > tests. > > As part of those tests, a helper library "rseq" implements a user-space > API around restartable sequences. It uses the cpu_opv system call as > fallback when single-stepped by a debugger. It exposes the instruction > pointer addresses where the rseq assembly blocks begin and end, as well > as the associated abort instruction pointer, in the __rseq_table > section. This section allows debuggers may know where to place > breakpoints when single-stepping through assembly blocks which may be > aborted at any point by the kernel. Could I ask you to split this in smaller bits? I'd start with just the rseq library, using only the rseq interface. Then add the whole cpu_opv fallback stuff. Then add the selftests using librseq. As is this is a tad much to read in a single go.