summaryrefslogtreecommitdiff
path: root/kernel/trace/msm_rtb.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/trace/msm_rtb.c')
-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;