From: Igor Nabirushkin Date: Tue, 24 Jun 2014 13:07:53 +0000 (+0400) Subject: misc: tegra-profiler: fix backtraces for 64-bit X-Git-Tag: daily-2014.08.28.0_rel-st8-r2.4-partner~11 X-Git-Url: https://rtime.felk.cvut.cz/gitweb/sojka/nv-tegra/linux-3.10.git/commitdiff_plain/3734ffff231830ebc06ee89d9064f0946bd42528 misc: tegra-profiler: fix backtraces for 64-bit * Fix backtraces for 64-bit programs * Also, allow user to use any frequency in range [100 Hz; 100 kHz] Bug 1527404 Change-Id: I29495ddd1449e59b354ac00d4112bdf7b9845375 Signed-off-by: Igor Nabirushkin Reviewed-on: http://git-master/r/427738 (cherry picked from commit b4f84b60177750214ddac24c63c2f9a08b15ce05) Reviewed-on: http://git-master/r/454469 Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Tested-by: Maxim Morin Reviewed-by: Mitch Luban --- diff --git a/drivers/misc/tegra-profiler/hrt.c b/drivers/misc/tegra-profiler/hrt.c index 2d7b1a9d6d6..6a47de93b3e 100644 --- a/drivers/misc/tegra-profiler/hrt.c +++ b/drivers/misc/tegra-profiler/hrt.c @@ -338,9 +338,6 @@ read_all_sources(struct pt_regs *regs, struct task_struct *task) if (get_sample_data(s, regs, task)) return; - if (cc->cs_64) - extra_data |= QUADD_SED_IP64; - vec[vec_idx].base = &extra_data; vec[vec_idx].len = sizeof(extra_data); vec_idx++; @@ -376,6 +373,9 @@ read_all_sources(struct pt_regs *regs, struct task_struct *task) vec[vec_idx].base = cc->types; vec[vec_idx].len = nr_types * sizeof(cc->types[0]); vec_idx++; + + if (cc->cs_64) + extra_data |= QUADD_SED_IP64; } extra_data |= cc->unw_method << QUADD_SED_UNW_METHOD_SHIFT; diff --git a/drivers/misc/tegra-profiler/main.c b/drivers/misc/tegra-profiler/main.c index 0f364d77308..7a1f5c7b997 100644 --- a/drivers/misc/tegra-profiler/main.c +++ b/drivers/misc/tegra-profiler/main.c @@ -161,10 +161,7 @@ static inline int is_event_supported(struct source_info *si, int event) static int validate_freq(unsigned int freq) { - if (capable(CAP_SYS_ADMIN)) - return freq >= 100 && freq <= 100000; - else - return freq == 100 || freq == 1000 || freq == 10000; + return freq >= 100 && freq <= 100000; } static int diff --git a/drivers/misc/tegra-profiler/version.h b/drivers/misc/tegra-profiler/version.h index 96299d576c4..5daedf7de3a 100644 --- a/drivers/misc/tegra-profiler/version.h +++ b/drivers/misc/tegra-profiler/version.h @@ -18,7 +18,7 @@ #ifndef __QUADD_VERSION_H #define __QUADD_VERSION_H -#define QUADD_MODULE_VERSION "1.76" +#define QUADD_MODULE_VERSION "1.77" #define QUADD_MODULE_BRANCH "Dev" #endif /* __QUADD_VERSION_H */