From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Ingo Molnar <mingo@kernel.org>, Thomas Gleixner <tglx@linutronix.de>
Cc: Jiri Olsa <jolsa@kernel.org>, Namhyung Kim <namhyung@kernel.org>,
Clark Williams <williams@redhat.com>,
linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org,
Arnaldo Carvalho de Melo <acme@redhat.com>,
Russell King - ARM Linux admin <linux@armlinux.org.uk>,
Adrian Hunter <adrian.hunter@intel.com>,
Alexander Shishkin <alexander.shishkin@linux.intel.com>,
Peter Zijlstra <peterz@infradead.org>,
Will Deacon <will@kernel.org>
Subject: [PATCH 22/24] perf annotate: Fix arch specific ->init() failure errors
Date: Tue, 1 Oct 2019 08:12:14 -0300 [thread overview]
Message-ID: <20191001111216.7208-23-acme@kernel.org> (raw)
In-Reply-To: <20191001111216.7208-1-acme@kernel.org>
From: Arnaldo Carvalho de Melo <acme@redhat.com>
They are called from symbol__annotate() and to propagate errors that can
help understand the problem make them return what
symbol__strerror_disassemble() known, i.e. errno codes and other
annotation specific errors in a special, out of errnos, range.
Reported-by: Russell King - ARM Linux admin <linux@armlinux.org.uk>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>,
Cc: Will Deacon <will@kernel.org>
Link: https://lkml.kernel.org/n/tip-pqx7srcv7tixgid251aeboj6@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/arch/arm/annotate/instructions.c | 4 ++--
tools/perf/arch/arm64/annotate/instructions.c | 4 ++--
tools/perf/arch/s390/annotate/instructions.c | 6 ++++--
tools/perf/arch/x86/annotate/instructions.c | 6 ++++--
tools/perf/util/annotate.c | 6 ++++++
tools/perf/util/annotate.h | 2 ++
6 files changed, 20 insertions(+), 8 deletions(-)
diff --git a/tools/perf/arch/arm/annotate/instructions.c b/tools/perf/arch/arm/annotate/instructions.c
index e1d4b484cc4b..2ff6cedeb9c5 100644
--- a/tools/perf/arch/arm/annotate/instructions.c
+++ b/tools/perf/arch/arm/annotate/instructions.c
@@ -37,7 +37,7 @@ static int arm__annotate_init(struct arch *arch, char *cpuid __maybe_unused)
arm = zalloc(sizeof(*arm));
if (!arm)
- return -1;
+ return ENOMEM;
#define ARM_CONDS "(cc|cs|eq|ge|gt|hi|le|ls|lt|mi|ne|pl|vc|vs)"
err = regcomp(&arm->call_insn, "^blx?" ARM_CONDS "?$", REG_EXTENDED);
@@ -59,5 +59,5 @@ static int arm__annotate_init(struct arch *arch, char *cpuid __maybe_unused)
regfree(&arm->call_insn);
out_free_arm:
free(arm);
- return -1;
+ return SYMBOL_ANNOTATE_ERRNO__ARCH_INIT_REGEXP;
}
diff --git a/tools/perf/arch/arm64/annotate/instructions.c b/tools/perf/arch/arm64/annotate/instructions.c
index 43aa93ed8414..037e292ecd8e 100644
--- a/tools/perf/arch/arm64/annotate/instructions.c
+++ b/tools/perf/arch/arm64/annotate/instructions.c
@@ -95,7 +95,7 @@ static int arm64__annotate_init(struct arch *arch, char *cpuid __maybe_unused)
arm = zalloc(sizeof(*arm));
if (!arm)
- return -1;
+ return ENOMEM;
/* bl, blr */
err = regcomp(&arm->call_insn, "^blr?$", REG_EXTENDED);
@@ -118,5 +118,5 @@ static int arm64__annotate_init(struct arch *arch, char *cpuid __maybe_unused)
regfree(&arm->call_insn);
out_free_arm:
free(arm);
- return -1;
+ return SYMBOL_ANNOTATE_ERRNO__ARCH_INIT_REGEXP;
}
diff --git a/tools/perf/arch/s390/annotate/instructions.c b/tools/perf/arch/s390/annotate/instructions.c
index 89bb8f2c54ce..a50e70baf918 100644
--- a/tools/perf/arch/s390/annotate/instructions.c
+++ b/tools/perf/arch/s390/annotate/instructions.c
@@ -164,8 +164,10 @@ static int s390__annotate_init(struct arch *arch, char *cpuid __maybe_unused)
if (!arch->initialized) {
arch->initialized = true;
arch->associate_instruction_ops = s390__associate_ins_ops;
- if (cpuid)
- err = s390__cpuid_parse(arch, cpuid);
+ if (cpuid) {
+ if (s390__cpuid_parse(arch, cpuid))
+ err = SYMBOL_ANNOTATE_ERRNO__ARCH_INIT_CPUID_PARSING;
+ }
}
return err;
diff --git a/tools/perf/arch/x86/annotate/instructions.c b/tools/perf/arch/x86/annotate/instructions.c
index 44f5aba78210..7eb5621c021d 100644
--- a/tools/perf/arch/x86/annotate/instructions.c
+++ b/tools/perf/arch/x86/annotate/instructions.c
@@ -196,8 +196,10 @@ static int x86__annotate_init(struct arch *arch, char *cpuid)
if (arch->initialized)
return 0;
- if (cpuid)
- err = x86__cpuid_parse(arch, cpuid);
+ if (cpuid) {
+ if (x86__cpuid_parse(arch, cpuid))
+ err = SYMBOL_ANNOTATE_ERRNO__ARCH_INIT_CPUID_PARSING;
+ }
arch->initialized = true;
return err;
diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c
index 1de1a7091c48..dc15352924f9 100644
--- a/tools/perf/util/annotate.c
+++ b/tools/perf/util/annotate.c
@@ -1631,6 +1631,12 @@ int symbol__strerror_disassemble(struct symbol *sym __maybe_unused, struct map *
case SYMBOL_ANNOTATE_ERRNO__NO_LIBOPCODES_FOR_BPF:
scnprintf(buf, buflen, "Please link with binutils's libopcode to enable BPF annotation");
break;
+ case SYMBOL_ANNOTATE_ERRNO__ARCH_INIT_REGEXP:
+ scnprintf(buf, buflen, "Problems with arch specific instruction name regular expressions.");
+ break;
+ case SYMBOL_ANNOTATE_ERRNO__ARCH_INIT_CPUID_PARSING:
+ scnprintf(buf, buflen, "Problems while parsing the CPUID in the arch specific initialization.");
+ break;
default:
scnprintf(buf, buflen, "Internal error: Invalid %d error code\n", errnum);
break;
diff --git a/tools/perf/util/annotate.h b/tools/perf/util/annotate.h
index d94be9140e31..116e21f49da6 100644
--- a/tools/perf/util/annotate.h
+++ b/tools/perf/util/annotate.h
@@ -370,6 +370,8 @@ enum symbol_disassemble_errno {
SYMBOL_ANNOTATE_ERRNO__NO_VMLINUX = __SYMBOL_ANNOTATE_ERRNO__START,
SYMBOL_ANNOTATE_ERRNO__NO_LIBOPCODES_FOR_BPF,
+ SYMBOL_ANNOTATE_ERRNO__ARCH_INIT_CPUID_PARSING,
+ SYMBOL_ANNOTATE_ERRNO__ARCH_INIT_REGEXP,
__SYMBOL_ANNOTATE_ERRNO__END,
};
--
2.21.0
next prev parent reply other threads:[~2019-10-01 11:12 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-10-01 11:11 [GIT PULL] perf/urgent improvements and fixes Arnaldo Carvalho de Melo
2019-10-01 11:11 ` [PATCH 01/24] libsubcmd: Make _FORTIFY_SOURCE defines dependent on the feature Arnaldo Carvalho de Melo
2019-10-01 11:11 ` [PATCH 02/24] perf tests: Avoid raising SEGV using an obvious NULL dereference Arnaldo Carvalho de Melo
2019-10-01 11:11 ` [PATCH 03/24] perf docs: Allow man page date to be specified Arnaldo Carvalho de Melo
2019-10-01 11:11 ` [PATCH 04/24] tools headers uapi: Sync drm/i915_drm.h with the kernel sources Arnaldo Carvalho de Melo
2019-10-01 11:11 ` [PATCH 05/24] tools headers uapi: Sync asm-generic/mman-common.h with the kernel Arnaldo Carvalho de Melo
2019-10-01 11:11 ` [PATCH 06/24] tools headers uapi: Sync linux/usbdevice_fs.h with the kernel sources Arnaldo Carvalho de Melo
2019-10-01 13:59 ` Alan Stern
2019-10-01 19:23 ` Arnaldo Carvalho de Melo
2019-10-01 11:11 ` [PATCH 07/24] tools headers uapi: Sync linux/fs.h " Arnaldo Carvalho de Melo
2019-10-01 18:45 ` Eric Biggers
2019-10-01 18:57 ` Arnaldo Carvalho de Melo
2019-10-01 11:12 ` [PATCH 08/24] tools headers kvm: Sync kvm headers " Arnaldo Carvalho de Melo
2019-10-01 11:12 ` [PATCH 09/24] perf llvm: Don't access out-of-scope array Arnaldo Carvalho de Melo
2019-10-01 11:12 ` [PATCH 10/24] perf vendor events s390: Add JSON transaction for machine type 8561 Arnaldo Carvalho de Melo
2019-10-01 11:12 ` [PATCH 11/24] perf vendor events s390: Use s390 machine name instead of " Arnaldo Carvalho de Melo
2019-10-01 11:12 ` [PATCH 12/24] perf map: Fix overlapped map handling Arnaldo Carvalho de Melo
2019-10-01 11:12 ` Arnaldo Carvalho de Melo
2019-10-01 11:12 ` [PATCH 13/24] perf inject jit: Fix JIT_CODE_MOVE filename Arnaldo Carvalho de Melo
2019-10-01 11:12 ` Arnaldo Carvalho de Melo
2019-10-01 11:12 ` [PATCH 14/24] perf docs: Correct and clarify jitdump spec Arnaldo Carvalho de Melo
2019-10-01 11:12 ` Arnaldo Carvalho de Melo
2019-10-01 11:12 ` [PATCH 15/24] perf script brstackinsn: Fix recovery from LBR/binary mismatch Arnaldo Carvalho de Melo
2019-10-01 11:12 ` [PATCH 16/24] perf jevents: Fix period for Intel fixed counters Arnaldo Carvalho de Melo
2019-10-01 11:12 ` [PATCH 17/24] perf tools: Propagate get_cpuid() error Arnaldo Carvalho de Melo
2019-10-01 11:12 ` [PATCH 18/24] perf evsel: Fall back to global 'perf_env' in perf_evsel__env() Arnaldo Carvalho de Melo
2019-10-01 11:12 ` [PATCH 19/24] perf annotate: Propagate perf_env__arch() error Arnaldo Carvalho de Melo
2019-10-01 11:12 ` [PATCH 20/24] perf annotate: Fix the signedness of failure returns Arnaldo Carvalho de Melo
2019-10-01 11:12 ` [PATCH 21/24] perf annotate: Propagate the symbol__annotate() error return Arnaldo Carvalho de Melo
2019-10-01 11:12 ` Arnaldo Carvalho de Melo [this message]
2019-10-01 11:12 ` [PATCH 23/24] perf annotate: Return appropriate error code for allocation failures Arnaldo Carvalho de Melo
2019-10-01 11:12 ` [PATCH 24/24] perf annotate: Don't return -1 for error when doing BPF disassembly Arnaldo Carvalho de Melo
2019-10-07 13:16 ` [GIT PULL] perf/urgent improvements and fixes Ingo Molnar
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=20191001111216.7208-23-acme@kernel.org \
--to=acme@kernel.org \
--cc=acme@redhat.com \
--cc=adrian.hunter@intel.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=linux@armlinux.org.uk \
--cc=mingo@kernel.org \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.org \
--cc=tglx@linutronix.de \
--cc=will@kernel.org \
--cc=williams@redhat.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.