Building tools/perf fails on next
Hi,
The commit:
commit d72da4a4d973d8a0a0d3c97e7cdebf287fbe3a99
Author: Peter Zijlstra <[email protected]> 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.
Beginning of build error:
$ make -C tools/perf make: Entering directory '/build/linux/tools/perf' BUILD: Doing 'make -j4' parallel build
Auto-detecting system features:
... dwarf: [ on ] ... glibc: [ on ] ... gtk2: [ OFF ] ... libaudit: [ on ] ... libbfd: [ OFF ] ... libelf: [ on ] ... libnuma: [ on ] ... libperl: [ on ] ... libpython: [ on ] ... libslang: [ on ] ... libunwind: [ on ] ... libdw-dwarf-unwind: [ on ] ... zlib: [ on ]
... lzma: [ OFF ]
config/Makefile:395: GTK2 not found, disables GTK2 support. Please install gtk2-devel or libgtk2.0-dev config/Makefile:527: No bfd.h/libbfd found, please install binutils-dev[el]/zlib-static/libiberty-dev to gain symbol demangling config/Makefile:556: No liblzma found, disables xz kernel module decompression, please install xz-devel/liblzma-dev
CC util/abspath.o
CC event-parse.o
CC fd/array.o
LD fd/libapi-in.o
CC fs/fs.o
CC fs/debugfs.o
CC event-plugin.o
CC fs/findfs.o
CC trace-seq.o
CC util/alias.o
CC parse-filter.o
CC fs/tracefs.o
CC util/annotate.o
LD fs/libapi-in.o
LD libapi-in.o
AR libapi.a
CC parse-utils.o
GEN common-cmds.h
PERF_VERSION = 4.1.rc8.gca3cfa
CC kbuffer-parse.o
LD libtraceevent-in.o
CC arch/common.o
LINK libtraceevent.a
CC ui/setup.o
In file included from /build/linux/include/uapi/linux/kernel.h:4:0,
from /build/linux/include/linux/cache.h:4,
from /build/linux/include/linux/rcupdate.h:37,
from /build/linux/tools/perf/util/include/../../../../include/linux/rbtree.h:34,
from /build/linux/tools/perf/util/include/linux/rbtree.h:4,
from arch/../util/map.h:7,
from arch/../util/event.h:8,
from arch/../util/session.h:5,
from arch/common.h:4,
from arch/common.c:3:/build/linux/include/uapi/linux/sysinfo.h:8:2: error: unknown type name ‘__kernel_long_t’
__kernel_long_t uptime; /* Seconds since boot */
^
/build/linux/include/uapi/linux/sysinfo.h:9:2: error: unknown type name ‘__kernel_ulong_t’
__kernel_ulong_t loads[3]; /* 1, 5, and 15 minute load averages */
^
/build/linux/include/uapi/linux/sysinfo.h:10:2: error: unknown type name ‘__kernel_ulong_t’
__kernel_ulong_t totalram; /* Total usable main memory size */
^
/build/linux/include/uapi/linux/sysinfo.h:11:2: error: unknown type name ‘__kernel_ulong_t’
__kernel_ulong_t freeram; /* Available memory size */
^
/build/linux/include/uapi/linux/sysinfo.h:12:2: error: unknown type name ‘__kernel_ulong_t’
__kernel_ulong_t sharedram; /* Amount of shared memory */
^
/build/linux/include/uapi/linux/sysinfo.h:13:2: error: unknown type name ‘__kernel_ulong_t’
__kernel_ulong_t bufferram; /* Memory used by buffers */
^
/build/linux/include/uapi/linux/sysinfo.h:14:2: error: unknown type name ‘__kernel_ulong_t’
__kernel_ulong_t totalswap; /* Total swap space size */
^
/build/linux/include/uapi/linux/sysinfo.h:15:2: error: unknown type name ‘__kernel_ulong_t’
__kernel_ulong_t freeswap; /* swap space still available */
^
/build/linux/include/uapi/linux/sysinfo.h:18:2: error: unknown type name ‘__kernel_ulong_t’
__kernel_ulong_t totalhigh; /* Total high memory size */
^
/build/linux/include/uapi/linux/sysinfo.h:19:2: error: unknown type name ‘__kernel_ulong_t’
__kernel_ulong_t freehigh; /* Available high memory size */
^
/build/linux/include/uapi/linux/sysinfo.h:21:22: error: ‘__kernel_ulong_t’ undeclared here (not in a function)
char _f[20-2*sizeof(__kernel_ulong_t)-sizeof(__u32)]; /* Padding: libc5 uses this.. */
....
PATCH 1/1 tools/perf, rbtree: Add RCU wrappers to make rbtree.h usable in user-space
Quoted 8 lines · Riku Voipio
Hi,
The commit:
commit
d72da4a4d973d8a0a0d3c97e7cdebf287fbe3a99Author: Peter Zijlstra <[email protected]> Date: Wed May 27 11:09:36 2015 +0930
Quoted 6 lines
rbtree: Make lockless searches non-fatal
Adds <
linux/rcupdate.h> torbtree.h, which in turn is included from perf userspace headers. Now buildingtools/perfwill 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.
Thanks,
Ingo
===================>
Quoted 1 line
From
62c251255f07ede8efa356d4ea9ab51827ffa0d0Mon Sep 17 00:00:00 2001
From: Ingo Molnar <[email protected]>
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
--- tools/perf/util/include/linux/rcupdate.h | 9 +++++++++ 1 file changed, 9 insertions(+)
tools/perf/util/include/linux/rcupdate.h new file +9 -0
@@ -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 +
Re: [PATCH] tools/perf, rbtree: Add RCU wrappers to make rbtree.h usable in user-space
Quoted 11 lines · Ingo Molnar
Quoted 7 lines · Riku Voipio
Hi,
The commit:
commit
d72da4a4d973d8a0a0d3c97e7cdebf287fbe3a99Author: Peter Zijlstra <[email protected]> Date: Wed May 27 11:09:36 2015 +0930 ...Does the patch below make things work?
It does,
Quoted 43 lines
This fix could go into the modules tree, as this commit came via Rusty.
Stephen, feel free to add:
make -C
tools/perfto 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.
Thanks,
Ingo
===================>
From62c251255f07ede8efa356d4ea9ab51827ffa0d0Mon Sep 17 00:00:00 2001
From: Ingo Molnar <[email protected]>
Date: Wed, 17 Jun 2015 11:07:11 +0200
Subject: [PATCH]tools/perf, rbtree: Add RCU wrappers to makerbtree.husable in user-spaceReported-by Riku Voipio <[email protected]>Signed-off-by Ingo Molnar <[email protected]>--- tools/perf/util/include/linux/rcupdate.h | 9 +++++++++ 1 file changed, 9 insertions(+)tools/perf/util/include/linux/rcupdate.h new file +4
-0@@ -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): */
tools/perf/util/include/linux/rcupdate.h new file +5
-0+#define WRITE_ONCE (var, val) ((var) = (val)) +#define rcu_assign_pointer (ptr, val) WRITE_ONCE(ptr, val) + +#endif +
Re: [PATCH] tools/perf, rbtree: Add RCU wrappers to make rbtree.h usable in user-space
In reply to Ingo MolnarHi Ingo,
Quoted 18 lines · On Wed, 17 Jun 2015 11:17:04 +0200 Ingo Molnar <[email protected]> wrote:
Quoted 6 lines · Riku Voipio
The commit:
commit
d72da4a4d973d8a0a0d3c97e7cdebf287fbe3a99Author: Peter Zijlstra <[email protected]> Date: Wed May 27 11:09:36 2015 +0930Quoted 6 lines
rbtree: Make lockless searches non-fatal
Adds <
linux/rcupdate.h> torbtree.h, which in turn is included from perf userspace headers. Now buildingtools/perfwill 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?
Quoted 8 lines
This fix could go into the modules tree, as this commit came via Rusty.
Stephen, feel free to add:
make -C
tools/perfto 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.
Quoted 26 lines
From
62c251255f07ede8efa356d4ea9ab51827ffa0d0Mon Sep 17 00:00:00 2001
From: Ingo Molnar <[email protected]>
Date: Wed, 17 Jun 2015 11:07:11 +0200
Subject: [PATCH]tools/perf, rbtree: Add RCU wrappers to makerbtree.husable in user-spaceReported-by Riku Voipio <[email protected]>Signed-off-by Ingo Molnar <[email protected]>--- tools/perf/util/include/linux/rcupdate.h | 9 +++++++++ 1 file changed, 9 insertions(+)tools/perf/util/include/linux/rcupdate.h new file +9
-0@@ -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 +
Signature · 2 lines
Cheers, Stephen Rothwell [email protected]
Re: [PATCH] tools/perf, rbtree: Add RCU wrappers to make rbtree.h usable in user-space
Quoted 30 lines · Stephen Rothwell
Hi Ingo,
Quoted 18 lines · On Wed, 17 Jun 2015 11:17:04 +0200 Ingo Molnar <[email protected]> wrote:
Quoted 6 lines · Riku Voipio
The commit:
commit
d72da4a4d973d8a0a0d3c97e7cdebf287fbe3a99Author: Peter Zijlstra <[email protected]> Date: Wed May 27 11:09:36 2015 +0930Quoted 6 lines
rbtree: Make lockless searches non-fatal
Adds <
linux/rcupdate.h> torbtree.h, which in turn is included from perf userspace headers. Now buildingtools/perfwill 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?
Quoted 8 lines
This fix could go into the modules tree, as this commit came via Rusty.
Stephen, feel free to add:
make -C
tools/perfto 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.
Quoted 8 lines
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.
On next linux-next iteration you should be able to just drop your merge conflict resolution, and use the -tip tree as-is with no extra fixups.
Thanks,
Ingo
Re: [PATCH] tools/perf, rbtree: Add RCU wrappers to make rbtree.h usable in user-space
Hi Ingo,
Quoted 3 lines · On Mon, 6 Jul 2015 11:41:17 +0200 Ingo Molnar <[email protected]> wrote:
On next linux-next iteration you should be able to just drop your merge conflict resolution, and use the -tip tree as-is with no extra fixups.
I dropped the patch I had yesterday and just merged perf-urgent-for-linus from the tip tree into my fixes tree (since I merge my fixes tree immediately on top of Linus' tree and before I try to do any builds). I will drop that merge when Linus takes your pull request.
Signature · 2 lines
Cheers, Stephen Rothwell [email protected]