From: Robert Richter <robert.richter@amd.com>
To: Matt Fleming <matt@console-pimps.org>
Cc: Will Deacon <will.deacon@arm.com>,
Paul Mundt <lethal@linux-sh.org>,
Russell King <linux@arm.linux.org.uk>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
"linux-sh@vger.kernel.org" <linux-sh@vger.kernel.org>,
Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@elte.hu>,
Frederic Weisbecker <fweisbec@gmail.com>,
Arnaldo Carvalho de Melo <acme@redhat.com>,
"linux-arch@vger.kernel.org" <linux-arch@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Deng-Cheng Zhu <dengcheng.zhu@gmail.com>,
Grant Likely <grant.likely@secretlab.ca>
Subject: Re: [PATCH 2/7] perf: New helper function for pmu name
Date: Wed, 6 Oct 2010 14:27:36 +0200 [thread overview]
Message-ID: <20101006122736.GL13563@erda.amd.com> (raw)
In-Reply-To: <59a8e68894a2e755232189abbe9b1a3b892e309c.1286222593.git.matt@console-pimps.org>
On 04.10.10 16:44:20, Matt Fleming wrote:
> Introduce perf_pmu_name() helper function that returns the name of the
> pmu. This gives us a generic way to get the name of a pmu regardless of
> how an architecture identifies it internally, e.g. ARM uses an id
> whereas SH currently uses a string.
>
> Signed-off-by: Matt Fleming <matt@console-pimps.org>
> ---
> arch/arm/kernel/perf_event.c | 23 +++++++++++++++++++++++
> arch/arm/oprofile/common.c | 22 +---------------------
> arch/sh/kernel/perf_event.c | 14 ++++++++++++++
> include/linux/perf_event.h | 1 +
> kernel/perf_event.c | 5 +++++
> 5 files changed, 44 insertions(+), 21 deletions(-)
>
> diff --git a/arch/arm/kernel/perf_event.c b/arch/arm/kernel/perf_event.c
> index ef3bc33..3bff24d 100644
> --- a/arch/arm/kernel/perf_event.c
> +++ b/arch/arm/kernel/perf_event.c
> @@ -123,6 +123,29 @@ armpmu_get_max_events(void)
> }
> EXPORT_SYMBOL_GPL(armpmu_get_max_events);
>
> +const char *perf_pmu_name(void)
> +{
> + enum arm_perf_pmu_ids id = armpmu_get_pmu_id();
> +
> + switch (id) {
> + case ARM_PERF_PMU_ID_XSCALE1:
> + return "arm/xscale1";
> + case ARM_PERF_PMU_ID_XSCALE2:
> + return "arm/xscale2";
> + case ARM_PERF_PMU_ID_V6:
> + return "arm/armv6";
> + case ARM_PERF_PMU_ID_V6MP:
> + return "arm/mpcore";
> + case ARM_PERF_PMU_ID_CA8:
> + return "arm/armv7";
> + case ARM_PERF_PMU_ID_CA9:
> + return "arm/armv7-ca9";
> + default:
> + return NULL;
> + }
> +}
> +EXPORT_SYMBOL_GPL(perf_pmu_name);
> +
> int perf_num_counters(void)
> {
> return armpmu_get_max_events();
> diff --git a/arch/arm/oprofile/common.c b/arch/arm/oprofile/common.c
> index 23f18a0..cb224ee 100644
> --- a/arch/arm/oprofile/common.c
> +++ b/arch/arm/oprofile/common.c
> @@ -155,26 +155,6 @@ static void op_perf_stop(void)
> }
>
>
> -static char *op_name_from_perf_id(enum arm_perf_pmu_ids id)
> -{
> - switch (id) {
> - case ARM_PERF_PMU_ID_XSCALE1:
> - return "arm/xscale1";
> - case ARM_PERF_PMU_ID_XSCALE2:
> - return "arm/xscale2";
> - case ARM_PERF_PMU_ID_V6:
> - return "arm/armv6";
> - case ARM_PERF_PMU_ID_V6MP:
> - return "arm/mpcore";
> - case ARM_PERF_PMU_ID_CA8:
> - return "arm/armv7";
> - case ARM_PERF_PMU_ID_CA9:
> - return "arm/armv7-ca9";
> - default:
> - return NULL;
> - }
> -}
I don't like moving this oprofile names out to perf. These strings
don't have much to do with the pmu names and are hints for the
oprofile daemon to detect the pmu type with no other use. Of course
this is more human readable than an enum or so, but it is of no worth
other than oprofile. So it should be kept inside oprofile.
> -
> static int op_arm_create_files(struct super_block *sb, struct dentry *root)
> {
> unsigned int i;
> @@ -391,7 +371,7 @@ int __init oprofile_arch_init(struct oprofile_operations *ops)
> ops->start = op_arm_start;
> ops->stop = op_arm_stop;
> ops->shutdown = op_arm_stop;
> - ops->cpu_type = op_name_from_perf_id(armpmu_get_pmu_id());
> + ops->cpu_type = perf_pmu_name();
>
> if (!ops->cpu_type)
> ret = -ENODEV;
> diff --git a/arch/sh/kernel/perf_event.c b/arch/sh/kernel/perf_event.c
> index 2cb9ad5..e065a1d 100644
> --- a/arch/sh/kernel/perf_event.c
> +++ b/arch/sh/kernel/perf_event.c
> @@ -59,6 +59,20 @@ static inline int sh_pmu_initialized(void)
> return !!sh_pmu;
> }
>
> +const char *perf_pmu_name(void)
> +{
> + if (!sh_pmu)
> + return NULL;
> +
> + if (!strcmp(sh_pmu->name, "SH7750"))
> + return "sh/sh7750";
> + if (!strcmp(sh_pmu->name, "SH-4A"))
> + return "sh/sh4a";
> +
> + return NULL;
> +}
> +EXPORT_SYMBOL_GPL(perf_pmu_name);
I rather want use here the solution we discussed earlier, simply
including <asm/perf_event.h> and then access sh_pmu->name directly
from oprofile.
-Robert
> +
> int perf_num_counters(void)
> {
> if (!sh_pmu)
> diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h
> index 1a02192..33f08da 100644
> --- a/include/linux/perf_event.h
> +++ b/include/linux/perf_event.h
> @@ -850,6 +850,7 @@ extern int perf_max_events;
> extern const struct pmu *hw_perf_event_init(struct perf_event *event);
>
> extern int perf_num_counters(void);
> +extern const char *perf_pmu_name(void);
> extern void perf_event_task_sched_in(struct task_struct *task);
> extern void perf_event_task_sched_out(struct task_struct *task, struct task_struct *next);
> extern void perf_event_task_tick(struct task_struct *task);
> diff --git a/kernel/perf_event.c b/kernel/perf_event.c
> index db5b560..fc51268 100644
> --- a/kernel/perf_event.c
> +++ b/kernel/perf_event.c
> @@ -85,6 +85,11 @@ void __weak hw_perf_enable(void) { barrier(); }
>
> void __weak perf_event_print_debug(void) { }
>
> +extern __weak const char *perf_pmu_name(void)
> +{
> + return "pmu";
> +}
> +
> static DEFINE_PER_CPU(int, perf_disable_count);
>
> void perf_disable(void)
> --
> 1.7.1
>
>
--
Advanced Micro Devices, Inc.
Operating System Research Center
next prev parent reply other threads:[~2010-10-06 12:27 UTC|newest]
Thread overview: 78+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-10-04 20:44 [PATCH V4 0/7] Generalise ARM perf-events backend for oprofile Matt Fleming
2010-10-04 20:44 ` Matt Fleming
2010-10-04 20:44 ` [PATCH 1/7] perf: Add helper function to return number of counters Matt Fleming
2010-10-04 20:44 ` Matt Fleming
2010-10-05 8:15 ` Paul Mundt
2010-10-06 12:14 ` Robert Richter
2010-10-06 12:14 ` Robert Richter
2010-10-06 12:35 ` Robert Richter
2010-10-06 12:35 ` Robert Richter
2010-10-06 13:41 ` Peter Zijlstra
2010-10-04 20:44 ` [PATCH 2/7] perf: New helper function for pmu name Matt Fleming
2010-10-05 8:10 ` Paul Mundt
2010-10-05 8:10 ` Paul Mundt
2010-10-06 12:27 ` Robert Richter [this message]
2010-10-06 12:27 ` Robert Richter
2010-10-06 12:39 ` Paul Mundt
2010-10-06 12:39 ` Paul Mundt
2010-10-06 13:18 ` Robert Richter
2010-10-06 13:18 ` Robert Richter
2010-10-06 13:30 ` Paul Mundt
2010-10-06 14:13 ` Paul Mundt
2010-10-06 14:13 ` Paul Mundt
2010-10-06 15:37 ` Robert Richter
2010-10-06 15:37 ` Robert Richter
2010-10-06 15:46 ` Paul Mundt
2010-10-06 15:46 ` Paul Mundt
2010-10-06 15:50 ` Robert Richter
2010-10-06 15:50 ` Robert Richter
2010-10-06 15:57 ` Paul Mundt
2010-10-06 18:15 ` Robert Richter
2010-10-06 18:15 ` Robert Richter
2010-10-06 18:38 ` Paul Mundt
2010-10-06 18:38 ` Paul Mundt
2010-10-04 20:44 ` [PATCH 3/7] ARM: oprofile: Rename op_arm to oprofile_perf Matt Fleming
2010-10-04 20:44 ` Matt Fleming
2010-10-06 12:41 ` Robert Richter
2010-10-06 12:41 ` Robert Richter
2010-10-04 20:44 ` [PATCH 4/7] ARM: oprofile: Move non-ARM code into separate init/exit Matt Fleming
2010-10-06 13:33 ` Robert Richter
2010-10-06 13:33 ` Robert Richter
2010-10-06 13:41 ` Paul Mundt
2010-10-06 14:49 ` Robert Richter
2010-10-06 14:49 ` Robert Richter
2010-10-06 14:53 ` Paul Mundt
2010-10-06 14:53 ` Paul Mundt
2010-10-06 14:59 ` Robert Richter
2010-10-06 14:59 ` Robert Richter
2010-10-06 15:00 ` Paul Mundt
2010-10-06 18:23 ` Grant Likely
2010-10-06 18:23 ` Grant Likely
2010-10-06 18:44 ` Robert Richter
2010-10-06 18:50 ` Paul Mundt
2010-10-06 18:50 ` Paul Mundt
2010-10-06 18:58 ` Grant Likely
2010-10-06 18:58 ` Grant Likely
2010-10-06 19:22 ` Robert Richter
2010-10-04 20:44 ` [PATCH 5/7] oprofile: Abstract the perf-events backend Matt Fleming
2010-10-04 20:44 ` Matt Fleming
2010-10-06 18:34 ` Robert Richter
2010-10-04 20:44 ` [PATCH 6/7] sh: oprofile: Use perf-events oprofile backend Matt Fleming
2010-10-04 20:44 ` Matt Fleming
2010-10-05 8:08 ` Paul Mundt
2010-10-05 8:08 ` Paul Mundt
2010-10-06 18:35 ` Robert Richter
2010-10-06 19:45 ` Matt Fleming
2010-10-06 19:45 ` Matt Fleming
2010-10-06 21:03 ` Paul Mundt
2010-10-04 20:44 ` [PATCH 7/7] sh: Annotate oprofile_arch_exit() with __exit marker Matt Fleming
2010-10-05 8:16 ` Paul Mundt
2010-10-06 18:37 ` Robert Richter
2010-10-06 18:37 ` Robert Richter
-- strict thread matches above, loose matches on Subject: below --
2010-10-09 0:46 [PATCH V5 0/7] Generalise ARM perf-events backend for oprofile Matt Fleming
2010-10-09 0:46 ` [PATCH 2/7] perf: New helper function for pmu name Matt Fleming
2010-10-09 0:46 ` Matt Fleming
2010-10-11 9:18 ` Robert Richter
2010-10-11 9:18 ` Robert Richter
2010-10-11 9:31 ` Peter Zijlstra
2010-10-11 9:31 ` Peter Zijlstra
2010-10-11 15:31 ` Paul Mundt
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=20101006122736.GL13563@erda.amd.com \
--to=robert.richter@amd.com \
--cc=acme@redhat.com \
--cc=dengcheng.zhu@gmail.com \
--cc=fweisbec@gmail.com \
--cc=grant.likely@secretlab.ca \
--cc=lethal@linux-sh.org \
--cc=linux-arch@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-sh@vger.kernel.org \
--cc=linux@arm.linux.org.uk \
--cc=matt@console-pimps.org \
--cc=mingo@elte.hu \
--cc=peterz@infradead.org \
--cc=will.deacon@arm.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).