summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorSrinivas Ramana <sramana@codeaurora.org>2016-12-08 15:51:04 +0530
committerSrinivas Ramana <sramana@codeaurora.org>2016-12-21 14:03:02 +0530
commit9300744481cc098929ec2eab15405a853d949717 (patch)
tree2c2c4c8e1c306acc026c34ff7cb952f3abef26e4 /kernel
parent243d79cf40ca1d87621f84ab0ca13f96aa89dc0d (diff)
msm: rtb: record counter timestamp for every log record
Record counter timestamp in every RTB log record to help correlate these events with other subsystem events which occur outside of cpu subsystem. Change-Id: Ib1291524c53c4ec757a494a1e08cb0925720e1a6 Signed-off-by: Srinivas Ramana <sramana@codeaurora.org>
Diffstat (limited to 'kernel')
-rw-r--r--kernel/trace/msm_rtb.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/kernel/trace/msm_rtb.c b/kernel/trace/msm_rtb.c
index ba609d5eb07f..80058b544cb5 100644
--- a/kernel/trace/msm_rtb.c
+++ b/kernel/trace/msm_rtb.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013-2015, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2013-2016, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@@ -27,6 +27,7 @@
#include <linux/io.h>
#include <asm-generic/sizes.h>
#include <linux/msm_rtb.h>
+#include <asm/timex.h>
#define SENTINEL_BYTE_1 0xFF
#define SENTINEL_BYTE_2 0xAA
@@ -41,8 +42,9 @@
* 4) 4 bytes index
* 4) 8 bytes extra data from the caller
* 5) 8 bytes of timestamp
+ * 6) 8 bytes of cyclecount
*
- * Total = 32 bytes.
+ * Total = 40 bytes.
*/
struct msm_rtb_layout {
unsigned char sentinel[3];
@@ -51,6 +53,7 @@ struct msm_rtb_layout {
uint64_t caller;
uint64_t data;
uint64_t timestamp;
+ uint64_t cycle_count;
} __attribute__ ((__packed__));
@@ -132,6 +135,11 @@ static void msm_rtb_write_timestamp(struct msm_rtb_layout *start)
start->timestamp = sched_clock();
}
+static void msm_rtb_write_cyclecount(struct msm_rtb_layout *start)
+{
+ start->cycle_count = get_cycles();
+}
+
static void uncached_logk_pc_idx(enum logk_event_type log_type, uint64_t caller,
uint64_t data, int idx)
{
@@ -145,6 +153,7 @@ static void uncached_logk_pc_idx(enum logk_event_type log_type, uint64_t caller,
msm_rtb_write_idx(idx, start);
msm_rtb_write_data(data, start);
msm_rtb_write_timestamp(start);
+ msm_rtb_write_cyclecount(start);
mb();
return;