From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Ingo Molnar <mingo@kernel.org>,
Hendrik Brueckner <brueckner@linux.vnet.ibm.com>,
Thomas Richter <tmricht@linux.vnet.ibm.com>,
Martin Schwidefsky <schwidefsky@de.ibm.com>,
Adrian Hunter <adrian.hunter@intel.com>,
David Ahern <dsahern@gmail.com>, Jiri Olsa <jolsa@kernel.org>,
Namhyung Kim <namhyung@kernel.org>,
Wang Nan <wangnan0@huawei.com>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: [FIX] perf tools broken for s/390
Date: Tue, 28 Nov 2017 11:46:11 -0300 [thread overview]
Message-ID: <20171128144611.GF3298@kernel.org> (raw)
Hi,
While preparing a pull request to Ingo for this merge window, I
noticed a regression in one of my cross build containers, specifically:
ubuntu:16.04-x-s390: FAIL
LINK /tmp/build/perf/plugin_jbd2.so
In file included from util/perf_regs.h:27:0,
from util/event.h:11,
from util/symbol.h:16,
from util/block-range.h:5,
from util/block-range.c:2:
/git/linux/tools/perf/arch/s390/include/perf_regs.h:6:62: fatal error: ../../../../arch/s390/include/uapi/asm/perf_regs.h: No such file or directory
compilation terminated.
In file included from util/perf_regs.h:27:0,
from util/event.h:11,
from util/symbol.h:16,
from util/sort.h:12,
from util/annotate.c:14:
/git/linux/tools/perf/arch/s390/include/perf_regs.h:6:62: fatal error: ../../../../arch/s390/include/uapi/asm/perf_regs.h: No such file or directory
compilation terminated.
LINK /tmp/build/perf/plugin_hrtimer.so
mv: cannot stat '/tmp/build/perf/util/.annotate.o.tmp': No such file or directory
mv: cannot stat '/tmp/build/perf/util/.block-range.o.tmp': No such file or directory
/git/linux/tools/build/Makefile.build:96: recipe for target '/tmp/build/perf/util/block-range.o' failed
make[4]: *** [/tmp/build/perf/util/block-range.o] Error 1
make[4]: *** Waiting for unfinished jobs....
/git/linux/tools/build/Makefile.build:96: recipe for target '/tmp/build/perf/util/annotate.o' failed
make[4]: *** [/tmp/build/perf/util/annotate.o] Error 1
/git/linux/tools/build/Makefile.build:139: recipe for target 'util' failed
make[3]: *** [util] Error 2
Makefile.perf:619: recipe for target '/tmp/build/perf/libperf-in.o' failed
make[2]: *** [/tmp/build/perf/libperf-in.o] Error 2
make[2]: *** Waiting for unfinished jobs....
I bisected it to the following commit:
commit f704ef44602fbf403e6722c7ed13f62d17e8cb20
Author: Heiko Carstens <heiko.carstens@de.ibm.com>
AuthorDate: Tue Jan 19 11:23:38 2016 +0100
Commit: Martin Schwidefsky <schwidefsky@de.ibm.com>
CommitDate: Thu Nov 16 15:06:12 2017 +0100
s390/perf: add support for perf_regs and libdw
With support for perf_regs and libdw, you can record and report
call graphs for user space programs. Simply invoke perf with
the --call-graph=dwarf command line option.
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
[brueckner: added dwfl_thread_state_register_pc() call]
Signed-off-by: Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
Reviewed-and-tested-by: Thomas Richter <tmricht@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
----------------------
It adds this new file:
diff --git a/tools/perf/arch/s390/include/perf_regs.h b/tools/perf/arch/s390/include/perf_regs.h
new file mode 100644
index 000000000000..ac4b8c8c49e2
--- /dev/null
+++ b/tools/perf/arch/s390/include/perf_regs.h
@@ -0,0 +1,63 @@
+#ifndef ARCH_PERF_REGS_H
+#define ARCH_PERF_REGS_H
+
+#include <stdlib.h>
+#include <linux/types.h>
+#include <../../../../arch/s390/include/uapi/asm/perf_regs.h>
------------------------------------------
That will try to include a file from the kernel sources, directly,
something we long decided to be verbotten to avoid disturbing kernel
development (and perf's and other tools/) when, say, a kernel hacker
adds something, tests everything but tools/ and have tools/ build
broken.
So, in this case:
[acme@jouet linux]$ find tools/arch/ -name perf_regs.h
tools/arch/arm/include/uapi/asm/perf_regs.h
tools/arch/powerpc/include/uapi/asm/perf_regs.h
tools/arch/x86/include/uapi/asm/perf_regs.h
tools/arch/arm64/include/uapi/asm/perf_regs.h
[acme@jouet linux]$
probably its just a matter of doing the usual copy from arch/ to
tools/arch/ and add a line to tools/perf/check_headers.sh to make sure
we notice when the kernel original changes, possibly meaning needed
changes in tooling, but not necessarily.
[acme@jouet linux]$ diff -u arch/arm64/include/uapi/asm/perf_regs.h tools/arch/arm64/include/uapi/asm/perf_regs.h
[acme@jouet linux]$ diff -u arch/x86/include/uapi/asm/perf_regs.h tools/arch/x86/include/uapi/asm/perf_regs.h
[acme@jouet linux]$ diff -u arch/powerpc/include/uapi/asm/perf_regs.h tools/arch/powerpc/include/uapi/asm/perf_regs.h
[acme@jouet linux]$ diff -u arch/arm/include/uapi/asm/perf_regs.h tools/arch/arm/include/uapi/asm/perf_regs.h
[acme@jouet linux]$
[acme@jouet linux]$ cp arch/s390/include/uapi/asm/perf_regs.h tools/arch/s390/include/uapi/asm/perf_regs.h
[acme@jouet linux]$ ls -la tools/arch/s390/include/uapi/asm/
total 44
drwxrwxr-x. 2 acme acme 4096 Nov 28 11:01 .
drwxrwxr-x. 3 acme acme 4096 Nov 23 15:29 ..
-rw-rw-r--. 1 acme acme 292 Nov 28 10:50 bitsperlong.h
-rw-rw-r--. 1 acme acme 7747 Nov 28 10:50 kvm.h
-rw-rw-r--. 1 acme acme 671 Nov 28 10:50 kvm_perf.h
-rw-rw-r--. 1 acme acme 267 Nov 28 10:50 mman.h
-rw-rw-r--. 1 acme acme 824 Nov 28 11:01 perf_regs.h
-rw-rw-r--. 1 acme acme 9470 Nov 28 10:50 sie.h
[acme@jouet linux]$
And:
[acme@jouet linux]$ grep perf_regs\.h tools/perf/arch/*/include/perf_regs.h
tools/perf/arch/arm64/include/perf_regs.h:#include <asm/perf_regs.h>
tools/perf/arch/arm/include/perf_regs.h:#include <asm/perf_regs.h>
tools/perf/arch/powerpc/include/perf_regs.h:#include <asm/perf_regs.h>
tools/perf/arch/s390/include/perf_regs.h:#include <../../../../arch/s390/include/uapi/asm/perf_regs.h>
tools/perf/arch/x86/include/perf_regs.h:#include <asm/perf_regs.h>
[acme@jouet linux]$
Fixing the s390 case we get:
[acme@jouet linux]$ git diff
diff --git a/tools/perf/arch/s390/include/perf_regs.h b/tools/perf/arch/s390/include/perf_regs.h
index d2df54a6bc5a..bcfbaed78cc2 100644
--- a/tools/perf/arch/s390/include/perf_regs.h
+++ b/tools/perf/arch/s390/include/perf_regs.h
@@ -3,7 +3,7 @@
#include <stdlib.h>
#include <linux/types.h>
-#include <../../../../arch/s390/include/uapi/asm/perf_regs.h>
+#include <asm/perf_regs.h>
void perf_regs_load(u64 *regs);
[acme@jouet linux]$
And the container builds ok again:
../tmp/perf: ELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, interpreter /lib/ld64.so.1, for GNU/Linux 3.2.0, BuildID[sha1]=640f0477b0df899497855430154ad63d666cbc9d, with debug_info, not stripped
# dm ubuntu:16.04-x-s390
1 ubuntu:16.04-x-s390: Ok s390x-linux-gnu-gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
#
In the future, please send patches that touch tools/perf/ to me,
The resulting patch is at:
https://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git/commit/?h=perf/urgent&id=12507d0fc07ce2fa6ccdcdde819f26c4acb0d839
Best regards,
- Arnaldo
next reply other threads:[~2017-11-28 14:46 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-11-28 14:46 Arnaldo Carvalho de Melo [this message]
2017-11-29 9:17 ` [FIX] perf tools broken for s/390 Heiko Carstens
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=20171128144611.GF3298@kernel.org \
--to=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=brueckner@linux.vnet.ibm.com \
--cc=dsahern@gmail.com \
--cc=heiko.carstens@de.ibm.com \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=namhyung@kernel.org \
--cc=schwidefsky@de.ibm.com \
--cc=tmricht@linux.vnet.ibm.com \
--cc=wangnan0@huawei.com \
/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.