From: tip-bot for Adrian Hunter <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, jolsa@redhat.com,
mathieu.poirier@linaro.org, acme@redhat.com, ak@linux.intel.com,
davem@davemloft.net, leo.yan@linaro.org, mingo@kernel.org,
adrian.hunter@intel.com, hpa@zytor.com, tglx@linutronix.de
Subject: [tip:perf/core] perf machine: Record if a arch has a single user/kernel address space
Date: Tue, 18 Dec 2018 05:48:57 -0800 [thread overview]
Message-ID: <tip-ec1891afae740be581ecf5abc8bda74c4549203f@git.kernel.org> (raw)
In-Reply-To: <20181106210712.12098-2-adrian.hunter@intel.com>
Commit-ID: ec1891afae740be581ecf5abc8bda74c4549203f
Gitweb: https://git.kernel.org/tip/ec1891afae740be581ecf5abc8bda74c4549203f
Author: Adrian Hunter <adrian.hunter@intel.com>
AuthorDate: Tue, 6 Nov 2018 23:07:10 +0200
Committer: Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Mon, 17 Dec 2018 14:54:07 -0300
perf machine: Record if a arch has a single user/kernel address space
Some architectures have a single address space for kernel and user
addresses, which makes it possible to determine if an address is in
kernel space or user space. Some don't, e.g.: sparc.
Cache that info in perf_env so that, for instance, code needing to
fallback failed symbol lookups at the kernel space in single address
space arches can lookup at userspace.
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: David S. Miller <davem@davemloft.net>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Leo Yan <leo.yan@linaro.org>
Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
Cc: stable@vger.kernel.org # 4.19
Link: http://lkml.kernel.org/r/20181106210712.12098-2-adrian.hunter@intel.com
[ split from a larger patch ]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/arch/common.c | 10 ++++++++++
tools/perf/arch/common.h | 1 +
tools/perf/util/machine.h | 1 +
tools/perf/util/session.c | 4 ++++
4 files changed, 16 insertions(+)
diff --git a/tools/perf/arch/common.c b/tools/perf/arch/common.c
index 82657c01a3b8..5f69fd0b745a 100644
--- a/tools/perf/arch/common.c
+++ b/tools/perf/arch/common.c
@@ -200,3 +200,13 @@ int perf_env__lookup_objdump(struct perf_env *env, const char **path)
return perf_env__lookup_binutils_path(env, "objdump", path);
}
+
+/*
+ * Some architectures have a single address space for kernel and user addresses,
+ * which makes it possible to determine if an address is in kernel space or user
+ * space.
+ */
+bool perf_env__single_address_space(struct perf_env *env)
+{
+ return strcmp(perf_env__arch(env), "sparc");
+}
diff --git a/tools/perf/arch/common.h b/tools/perf/arch/common.h
index 2167001b18c5..c298a446d1f6 100644
--- a/tools/perf/arch/common.h
+++ b/tools/perf/arch/common.h
@@ -5,5 +5,6 @@
#include "../util/env.h"
int perf_env__lookup_objdump(struct perf_env *env, const char **path);
+bool perf_env__single_address_space(struct perf_env *env);
#endif /* ARCH_PERF_COMMON_H */
diff --git a/tools/perf/util/machine.h b/tools/perf/util/machine.h
index d856b85862e2..ca897a73014c 100644
--- a/tools/perf/util/machine.h
+++ b/tools/perf/util/machine.h
@@ -42,6 +42,7 @@ struct machine {
u16 id_hdr_size;
bool comm_exec;
bool kptr_restrict_warned;
+ bool single_address_space;
char *root_dir;
char *mmap_name;
struct threads threads[THREADS__TABLE_SIZE];
diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c
index 7d2c8ce6cfad..f8eab197f35c 100644
--- a/tools/perf/util/session.c
+++ b/tools/perf/util/session.c
@@ -24,6 +24,7 @@
#include "thread.h"
#include "thread-stack.h"
#include "stat.h"
+#include "arch/common.h"
static int perf_session__deliver_event(struct perf_session *session,
union perf_event *event,
@@ -150,6 +151,9 @@ struct perf_session *perf_session__new(struct perf_data *data,
session->machines.host.env = &perf_env;
}
+ session->machines.host.single_address_space =
+ perf_env__single_address_space(session->machines.host.env);
+
if (!data || perf_data__is_write(data)) {
/*
* In O_RDONLY mode this will be performed when reading the
next prev parent reply other threads:[~2018-12-18 13:49 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-06 21:07 [PATCH V2 0/3] perf tools: Fix for cases where cpumode is incorrect or insufficient Adrian Hunter
2018-11-06 21:07 ` [PATCH V2 1/3] perf tools: Add fallback functions for cases where cpumode is insufficient Adrian Hunter
2018-11-06 22:03 ` David Miller
2018-11-27 14:10 ` Arnaldo Carvalho de Melo
2018-11-27 14:45 ` Arnaldo Carvalho de Melo
2018-12-14 20:21 ` [tip:perf/core] perf machine: Record if a arch has a single user/kernel address space tip-bot for Adrian Hunter
2018-12-14 20:22 ` [tip:perf/core] perf thread: Add fallback functions for cases where cpumode is insufficient tip-bot for Adrian Hunter
2018-12-18 13:48 ` tip-bot for Adrian Hunter [this message]
2018-12-18 13:49 ` tip-bot for Adrian Hunter
2018-11-06 21:07 ` [PATCH V2 2/3] perf tools: Use fallback for sample_addr_correlates_sym() cases Adrian Hunter
2018-12-14 20:22 ` [tip:perf/core] " tip-bot for Adrian Hunter
2018-12-18 13:50 ` tip-bot for Adrian Hunter
2018-11-06 21:07 ` [PATCH V2 3/3] perf tools: Use fallbacks for branch stacks Adrian Hunter
2018-12-14 20:23 ` [tip:perf/core] perf script: " tip-bot for Adrian Hunter
2018-12-18 13:50 ` tip-bot for Adrian Hunter
2018-11-19 13:37 ` [PATCH V2 0/3] perf tools: Fix for cases where cpumode is incorrect or insufficient Adrian Hunter
2018-11-19 15:44 ` Arnaldo Carvalho de Melo
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=tip-ec1891afae740be581ecf5abc8bda74c4549203f@git.kernel.org \
--to=tipbot@zytor.com \
--cc=acme@redhat.com \
--cc=adrian.hunter@intel.com \
--cc=ak@linux.intel.com \
--cc=davem@davemloft.net \
--cc=hpa@zytor.com \
--cc=jolsa@redhat.com \
--cc=leo.yan@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=mathieu.poirier@linaro.org \
--cc=mingo@kernel.org \
--cc=tglx@linutronix.de \
/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.