oprofile: ARM backtraces and few minors
v2 cover oprofile: ARM backtraces and few minors
This patchset re-enables ARM backtraces with non-PMU capable CPUs.
In V2 I have tried to address the comments received for the V1 patches. arch/sh/oprofile/common.c is untouched but should work as earlier.
Compile tested with arm/omap2plus_defconfig (with and without CONFIG_HW_PERF_EVENTS).
Ari Kauppi (3):
oprofile: Use CONFIG_HW_PERF_EVENTS for oprofile_perf_init and
friends
oprofile: Provide stubs for oprofile_perf_{init,exit}
ARM: oprofile: Always allow backtraces
arch/arm/oprofile/common.c | 12 ++---------- include/linux/oprofile.h | 13 +++++++++++-- 2 files changed, 13 insertions(+), 12 deletions(-)
Signature · 1 line
1.7.4.rc2.3.g60a2e
PATCH v2 1/3 oprofile: Use CONFIG_HW_PERF_EVENTS for oprofile_perf_init and friends
The implementations are flagged in Makefile with CONFIG_HW_PERF_EVENTS instead of CONFIG_PERF_EVENTS.
--- include/linux/oprofile.h | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)
include/linux/oprofile.h +2 -2
@@ -186,10 +186,10 @@ int oprofile_add_data(struct op_entry *entry, unsigned long val);int oprofile_add_data64 (struct op_entry *entry,u64 val);int oprofile_write_commit (struct op_entry *entry); -#ifdef CONFIG_PERF_EVENTS +#ifdef CONFIG_HW_PERF_EVENTS int __init oprofile_perf_init (struct oprofile_operations *ops);void oprofile_perf_exit (void );char *op_name_from_perf_id (void ); -#endif /* CONFIG_PERF_EVENTS */ +#endif /* CONFIG_HW_PERF_EVENTS */ #endif /* OPROFILE_H */
Signature · 1 line
1.7.4.rc2.3.g60a2e
PATCH v2 2/3 oprofile: Provide stubs for oprofile_perf_{init,exit}
In reply to Ari KauppiIf CONFIG_HW_PERF_EVENTS is not defined, provide stubs for oprofile_perf_init and oprofile_perf_exit. Allows cleaning of architecture specific implementations.
--- include/linux/oprofile.h | 9 +++++++++ 1 files changed, 9 insertions(+), 0 deletions(-)
include/linux/oprofile.h +9 -0
@@ -16,6 +16,8 @@#include <linux/types.h> #include <linux/spinlock.h> #include <linux/init.h> +#include <linux/errno.h> +#include <linux/printk.h> #include <asm/atomic.h> /* Each escaped entry is prefixed by ESCAPE_CODE
@@ -190,6 +192,13 @@ int oprofile_write_commit(struct op_entry *entry);int __init oprofile_perf_init (struct oprofile_operations *ops);void oprofile_perf_exit (void );char *op_name_from_perf_id (void ); +#else +static inline int __init oprofile_perf_init (struct oprofile_operations *ops) +{ +pr_info ("oprofile: hardware counters not available\n" ); +return -ENODEV ; +} +static inline void oprofile_perf_exit (void ) { }#endif /* CONFIG_HW_PERF_EVENTS */ #endif /* OPROFILE_H */
Signature · 1 line
1.7.4.rc2.3.g60a2e
PATCH v2 3/3 ARM: oprofile: Always allow backtraces
In reply to Ari KauppiAlways allow backtrace when using oprofile on ARM, even if a PMU isn't present. Implemented by removing code and using stubs provided by <linux/oprofile.h>.
Restores functionality originally introduced in commit 1b7b56982fdcd9d85effd76f3928cf5d6eb26155 ("oprofile: Always allow backtraces on ARM") by Richard Purdie.
--- arch/arm/oprofile/common.c | 12 ++---------- 1 files changed, 2 insertions(+), 10 deletions(-)
arch/arm/oprofile/common.c +2 -10
@@ -10,8 +10,6 @@*/ #include <linux/cpumask.h> -#include <linux/err.h> -#include <linux/errno.h> #include <linux/init.h> #include <linux/mutex.h> #include <linux/oprofile.h>
@@ -46,6 +44,7 @@ char *op_name_from_perf_id(void) return NULL; } } +#endif static int report_trace (struct stackframe *frame,void *d) {
@@ -111,6 +110,7 @@ static void arm_backtrace(struct pt_regs * const regs, unsigned int depth)int __init oprofile_arch_init (struct oprofile_operations *ops) { +/* provide backtrace support also in timer mode: */ ops->backtrace = arm_backtrace;return oprofile_perf_init (ops);
@@ -120,11 +120,3 @@ void __exit oprofile_arch_exit(void) {oprofile_perf_exit (); } -#else -int __init oprofile_arch_init (struct oprofile_operations *ops) -{ -pr_info ("oprofile: hardware counters not available\n" ); -return -ENODEV ; -} -void __exit oprofile_arch_exit(void) {} -#endif /* CONFIG_HW_PERF_EVENTS */
Signature · 1 line
1.7.4.rc2.3.g60a2e
PATCH v2 3/3 ARM: oprofile: Always allow backtraces
Hi Ari,
Quoted 4 lines
Always allow backtrace when using oprofile on ARM, even if a PMU isn't present. Implemented by removing code and using stubs provided by <
linux/oprofile.h>.
Quoted 8 lines
Restores functionality originally introduced in commit
1b7b56982fdcd9d85effd76f3928cf5d6eb26155("oprofile: Always allow backtraces on ARM") by Richard Purdie.Signed-off-by Ari Kauppi <[email protected]>--- arch/arm/oprofile/common.c | 12 ++---------- 1 files changed, 2 insertions(+), 10 deletions(-)
[...]
Providing Robert is happy with the associated changes to linux/oprofile.h then this patch looks good to me.
Will
RE: [PATCH v2 3/3] ARM: oprofile: Always allow backtraces
In reply to Ari KauppiHi Ari,
Quoted 4 lines
Always allow backtrace when using oprofile on ARM, even if a PMU isn't present. Implemented by removing code and using stubs provided by <
linux/oprofile.h>.
Quoted 8 lines
Restores functionality originally introduced in commit
1b7b56982fdcd9d85effd76f3928cf5d6eb26155("oprofile: Always allow backtraces on ARM") by Richard Purdie.Signed-off-by Ari Kauppi <[email protected]>--- arch/arm/oprofile/common.c | 12 ++---------- 1 files changed, 2 insertions(+), 10 deletions(-)
[...]
Providing Robert is happy with the associated changes to linux/oprofile.h then this patch looks good to me.
Will
Robert Richter
Appliedv2 cover oprofile: ARM backtraces and few minors
In reply to Ari KauppiQuoted 15 lines · Ari Kauppi
This patchset re-enables ARM backtraces with non-PMU capable CPUs.
In V2 I have tried to address the comments received for the V1 patches.
arch/sh/oprofile/common.cis untouched but should work as earlier.Compile tested with arm/omap2plus_defconfig (with and without
CONFIG_HW_PERF_EVENTS).Ari Kauppi (3):
oprofile: UseCONFIG_HW_PERF_EVENTSforoprofile_perf_initand
friends
oprofile: Provide stubs for oprofile_perf_{init,exit}
ARM: oprofile: Always allow backtraces
Quoted 3 lines
arch/arm/oprofile/common.c | 12 ++---------- include/linux/oprofile.h | 13 +++++++++++-- 2 files changed, 13 insertions(+), 12 deletions(-)
Applied to oprofile/urgent, thanks Ari.
I squashed patch 2 and 3 and modified the commit messages (see below).
Added to .37-stable.
-Robert
commit d14dd7e20d5e526557f5d3cfef4046a642f80924
Author: Ari Kauppi <[email protected]> Date: Thu Jan 20 13:57:19 2011 -0500
ARM: oprofile: Fix backtraces in timer mode
Always allow backtraces when using oprofile on ARM, even if a PMU isn't present. Restores functionality originally introduced in commit 1b7b56982fdcd9d85effd76f3928cf5d6eb26155 ("oprofile: Always allow backtraces on ARM") by Richard Purdie.
It is not that obvious, but there is now only one oprofile_arch_init() function. So the .backtrace callback is available also in timer mode.
Implemented by removing code and using stubs for oprofile_perf_{init, exit} provided by <linux/oprofile.h>. This allows cleaning of other architecture specific implementations too.
commit 1ea1bdf7faa4d0b5293e605f2e1ef1c2c59f6b53
Author: Ari Kauppi <[email protected]> Date: Thu Jan 20 13:57:18 2011 -0500
oprofile: Fix usage of CONFIG_HW_PERF_EVENTS for oprofile_perf_init and friends
The implementations are flagged in Makefile with CONFIG_HW_PERF_EVENTS instead of CONFIG_PERF_EVENTS.
Signature · 2 lines
Advanced Micro Devices, Inc. Operating System Research Center