Re: [PATCH] tools/perf, rbtree: Add RCU wrappers to make rbtree.h usable in user-space

From: Stephen Rothwell
Date: Mon Jul 06 2015 - 04:13:51 EST


Hi Ingo,

On Wed, 17 Jun 2015 11:17:04 +0200 Ingo Molnar <mingo@xxxxxxxxxx> wrote:
>
> * Riku Voipio <riku.voipio@xxxxxx> wrote:
>
> > The commit:
> >
> > commit d72da4a4d973d8a0a0d3c97e7cdebf287fbe3a99
> > Author: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
> > Date: Wed May 27 11:09:36 2015 +0930
> >
> > rbtree: Make lockless searches non-fatal
> >
> > Adds <linux/rcupdate.h> to rbtree.h, which in turn is included from perf userspace
> > headers. Now building tools/perf will fail with hundreds of lines of gcc complaining
> > about kernel defines not available. Reverting the patch makes perf build again.
> > This is with gcc-4.9 from debian but I don't think it's compiler specific.
>
> Does the patch below make things work?
>
> This fix could go into the modules tree, as this commit came via Rusty.
>
> Stephen, feel free to add:
>
> make -C tools/perf
>
> to the linux-next build tests. It's always supposed to build without failure, in
> pretty much whatever x86 distro you run your build tests on.

OK, I have started doing that, but int order to make it build at all, I
have added the patch below to my fixes tree (since the breakage is now
in Linus' tree).

This means that it will get a conflict with the tip tree tomorrow, but
I will just fix the conflict by using the version from the tip tree.
Once the tip tree fixes are sent to Linus, I will drop this patch from
my fixes tree.

> From 62c251255f07ede8efa356d4ea9ab51827ffa0d0 Mon Sep 17 00:00:00 2001
> From: Ingo Molnar <mingo@xxxxxxxxxx>
> Date: Wed, 17 Jun 2015 11:07:11 +0200
> Subject: [PATCH] tools/perf, rbtree: Add RCU wrappers to make rbtree.h usable in user-space
>
> Reported-by: Riku Voipio <riku.voipio@xxxxxx>
> Signed-off-by: Ingo Molnar <mingo@xxxxxxxxxx>
> ---
> tools/perf/util/include/linux/rcupdate.h | 9 +++++++++
> 1 file changed, 9 insertions(+)
>
> diff --git a/tools/perf/util/include/linux/rcupdate.h b/tools/perf/util/include/linux/rcupdate.h
> new file mode 100644
> index 000000000000..3e022dd9a69b
> --- /dev/null
> +++ b/tools/perf/util/include/linux/rcupdate.h
> @@ -0,0 +1,9 @@
> +#ifndef PERF_LINUX_RCUPDATE_H_
> +#define PERF_LINUX_RCUPDATE_H_
> +
> +/* Simple trivial wrappers for now, we don't use RCU in perf user-space (yet): */
> +#define WRITE_ONCE(var, val) ((var) = (val))
> +#define rcu_assign_pointer(ptr, val) WRITE_ONCE(ptr, val)
> +
> +#endif
> +

--
Cheers,
Stephen Rothwell sfr@xxxxxxxxxxxxxxxx

Attachment: pgpXQk2qP9qF5.pgp
Description: OpenPGP digital signature