summaryrefslogtreecommitdiff
path: root/mali_kbase/tl
diff options
context:
space:
mode:
authorSidath Senanayake <sidaths@google.com>2020-04-14 14:55:25 +0200
committerSidath Senanayake <sidaths@google.com>2020-04-14 14:55:25 +0200
commitb64f568f943e567534694cc993270adca96dcd06 (patch)
treeff175812d02016e7e630217ecf8de53d6ac2d6a2 /mali_kbase/tl
parentb2b1764ee0fe59773c1c8f621ad2955c35cd9d92 (diff)
downloadgpu-b64f568f943e567534694cc993270adca96dcd06.tar.gz
Mali Valhall DDK r24p0 KMD
Provenance: c5a37f014 (collaborate/EAC/v_r24p0) VX504X08X-BU-00000-r24p0-01rel0 - Android DDK VX504X08X-BU-60000-r24p0-01rel0 - Android Document Bundle Signed-off-by: Sidath Senanayake <sidaths@google.com> Change-Id: I1536474b6a18731cd377251c6dc947811ba0c787
Diffstat (limited to 'mali_kbase/tl')
-rw-r--r--mali_kbase/tl/mali_kbase_timeline.c4
-rw-r--r--mali_kbase/tl/mali_kbase_timeline_io.c91
-rw-r--r--mali_kbase/tl/mali_kbase_timeline_priv.h3
-rw-r--r--mali_kbase/tl/mali_kbase_tlstream.c31
-rw-r--r--mali_kbase/tl/mali_kbase_tlstream.h3
-rw-r--r--mali_kbase/tl/mali_kbase_tracepoints.c245
-rw-r--r--mali_kbase/tl/mali_kbase_tracepoints.h27
7 files changed, 245 insertions, 159 deletions
diff --git a/mali_kbase/tl/mali_kbase_timeline.c b/mali_kbase/tl/mali_kbase_timeline.c
index 201b30e..5d073be 100644
--- a/mali_kbase/tl/mali_kbase_timeline.c
+++ b/mali_kbase/tl/mali_kbase_timeline.c
@@ -1,6 +1,6 @@
/*
*
- * (C) COPYRIGHT 2015-2019 ARM Limited. All rights reserved.
+ * (C) COPYRIGHT 2015-2020 ARM Limited. All rights reserved.
*
* This program is free software and is provided to you under the terms of the
* GNU General Public License version 2 as published by the Free Software
@@ -131,6 +131,7 @@ int kbase_timeline_init(struct kbase_timeline **timeline,
kbasep_timeline_autoflush_timer_callback);
result->is_enabled = timeline_is_enabled;
+
*timeline = result;
return 0;
}
@@ -142,6 +143,7 @@ void kbase_timeline_term(struct kbase_timeline *timeline)
if (!timeline)
return;
+
for (i = (enum tl_stream_type)0; i < TL_STREAM_TYPE_COUNT; i++)
kbase_tlstream_term(&timeline->streams[i]);
diff --git a/mali_kbase/tl/mali_kbase_timeline_io.c b/mali_kbase/tl/mali_kbase_timeline_io.c
index 9a899f2..6e09a17 100644
--- a/mali_kbase/tl/mali_kbase_timeline_io.c
+++ b/mali_kbase/tl/mali_kbase_timeline_io.c
@@ -1,6 +1,6 @@
/*
*
- * (C) COPYRIGHT 2019 ARM Limited. All rights reserved.
+ * (C) COPYRIGHT 2019-2020 ARM Limited. All rights reserved.
*
* This program is free software and is provided to you under the terms of the
* GNU General Public License version 2 as published by the Free Software
@@ -85,6 +85,43 @@ static int kbasep_timeline_io_packet_pending(
}
/**
+ * copy_stream_header() - copy timeline stream header.
+ *
+ * @buffer: Pointer to the buffer provided by user.
+ * @size: Maximum amount of data that can be stored in the buffer.
+ * @copy_len: Pointer to amount of bytes that has been copied already
+ * within the read system call.
+ * @hdr: Pointer to the stream header.
+ * @hdr_size: Header size.
+ * @hdr_btc: Pointer to the remaining number of bytes to copy.
+ *
+ * Returns: 0 if success, -1 otherwise.
+ */
+static inline int copy_stream_header(
+ char __user *buffer, size_t size, ssize_t *copy_len,
+ const char *hdr,
+ size_t hdr_size,
+ size_t *hdr_btc)
+{
+ const size_t offset = hdr_size - *hdr_btc;
+ const size_t copy_size = MIN(size - *copy_len, *hdr_btc);
+
+ if (!*hdr_btc)
+ return 0;
+
+ if (WARN_ON(*hdr_btc > hdr_size))
+ return -1;
+
+ if (copy_to_user(&buffer[*copy_len], &hdr[offset], copy_size))
+ return -1;
+
+ *hdr_btc -= copy_size;
+ *copy_len += copy_size;
+
+ return 0;
+}
+
+/**
* kbasep_timeline_copy_header - copy timeline headers to the user
* @timeline: Timeline instance
* @buffer: Pointer to the buffer provided by user
@@ -93,51 +130,28 @@ static int kbasep_timeline_io_packet_pending(
* within the read system call.
*
* This helper function checks if timeline headers have not been sent
- * to the user, and if so, sends them. @ref copy_len is respectively
+ * to the user, and if so, sends them. copy_len is respectively
* updated.
*
* Returns: 0 if success, -1 if copy_to_user has failed.
*/
-static inline int kbasep_timeline_copy_header(
+static inline int kbasep_timeline_copy_headers(
struct kbase_timeline *timeline,
char __user *buffer,
size_t size,
ssize_t *copy_len)
{
- if (timeline->obj_header_btc) {
- size_t offset = obj_desc_header_size -
- timeline->obj_header_btc;
-
- size_t header_cp_size = MIN(
- size - *copy_len,
- timeline->obj_header_btc);
-
- if (copy_to_user(
- &buffer[*copy_len],
- &obj_desc_header[offset],
- header_cp_size))
- return -1;
-
- timeline->obj_header_btc -= header_cp_size;
- *copy_len += header_cp_size;
- }
-
- if (timeline->aux_header_btc) {
- size_t offset = aux_desc_header_size -
- timeline->aux_header_btc;
- size_t header_cp_size = MIN(
- size - *copy_len,
- timeline->aux_header_btc);
-
- if (copy_to_user(
- &buffer[*copy_len],
- &aux_desc_header[offset],
- header_cp_size))
- return -1;
-
- timeline->aux_header_btc -= header_cp_size;
- *copy_len += header_cp_size;
- }
+ if (copy_stream_header(buffer, size, copy_len,
+ obj_desc_header,
+ obj_desc_header_size,
+ &timeline->obj_header_btc))
+ return -1;
+
+ if (copy_stream_header(buffer, size, copy_len,
+ aux_desc_header,
+ aux_desc_header_size,
+ &timeline->aux_header_btc))
+ return -1;
return 0;
}
@@ -183,7 +197,7 @@ static ssize_t kbasep_timeline_io_read(
unsigned int rb_idx;
size_t rb_size;
- if (kbasep_timeline_copy_header(
+ if (kbasep_timeline_copy_headers(
timeline, buffer, size, &copy_len)) {
copy_len = -EFAULT;
break;
@@ -305,6 +319,7 @@ static int kbasep_timeline_io_release(struct inode *inode, struct file *filp)
timeline = (struct kbase_timeline *) filp->private_data;
+
/* Stop autoflush timer before releasing access to streams. */
atomic_set(&timeline->autoflush_timer_active, 0);
del_timer_sync(&timeline->autoflush_timer);
diff --git a/mali_kbase/tl/mali_kbase_timeline_priv.h b/mali_kbase/tl/mali_kbase_timeline_priv.h
index d4c4773..73499ce 100644
--- a/mali_kbase/tl/mali_kbase_timeline_priv.h
+++ b/mali_kbase/tl/mali_kbase_timeline_priv.h
@@ -1,6 +1,6 @@
/*
*
- * (C) COPYRIGHT 2019 ARM Limited. All rights reserved.
+ * (C) COPYRIGHT 2019-2020 ARM Limited. All rights reserved.
*
* This program is free software and is provided to you under the terms of the
* GNU General Public License version 2 as published by the Free Software
@@ -26,6 +26,7 @@
#include <mali_kbase.h>
#include "mali_kbase_tlstream.h"
+
#include <linux/timer.h>
#include <linux/atomic.h>
#include <linux/mutex.h>
diff --git a/mali_kbase/tl/mali_kbase_tlstream.c b/mali_kbase/tl/mali_kbase_tlstream.c
index 2a76bc0..bec4be7 100644
--- a/mali_kbase/tl/mali_kbase_tlstream.c
+++ b/mali_kbase/tl/mali_kbase_tlstream.c
@@ -1,6 +1,6 @@
/*
*
- * (C) COPYRIGHT 2015-2019 ARM Limited. All rights reserved.
+ * (C) COPYRIGHT 2015-2020 ARM Limited. All rights reserved.
*
* This program is free software and is provided to you under the terms of the
* GNU General Public License version 2 as published by the Free Software
@@ -106,20 +106,31 @@ void kbase_tlstream_reset(struct kbase_tlstream *stream)
atomic_set(&stream->rbi, 0);
}
-/* Configuration of timeline streams generated by kernel.
- * Kernel emit only streams containing either timeline object events or
- * auxiliary events. All streams have stream id value of 1 (as opposed to user
- * space streams that have value of 0).
- */
+/* Configuration of timeline streams generated by kernel. */
static const struct {
enum tl_packet_family pkt_family;
enum tl_packet_class pkt_class;
enum tl_packet_type pkt_type;
- unsigned int stream_id;
+ enum tl_stream_id stream_id;
} tl_stream_cfg[TL_STREAM_TYPE_COUNT] = {
- {TL_PACKET_FAMILY_TL, TL_PACKET_CLASS_OBJ, TL_PACKET_TYPE_SUMMARY, 1},
- {TL_PACKET_FAMILY_TL, TL_PACKET_CLASS_OBJ, TL_PACKET_TYPE_BODY, 1},
- {TL_PACKET_FAMILY_TL, TL_PACKET_CLASS_AUX, TL_PACKET_TYPE_BODY, 1}
+ {
+ TL_PACKET_FAMILY_TL,
+ TL_PACKET_CLASS_OBJ,
+ TL_PACKET_TYPE_SUMMARY,
+ TL_STREAM_ID_KERNEL,
+ },
+ {
+ TL_PACKET_FAMILY_TL,
+ TL_PACKET_CLASS_OBJ,
+ TL_PACKET_TYPE_BODY,
+ TL_STREAM_ID_KERNEL,
+ },
+ {
+ TL_PACKET_FAMILY_TL,
+ TL_PACKET_CLASS_AUX,
+ TL_PACKET_TYPE_BODY,
+ TL_STREAM_ID_KERNEL,
+ },
};
void kbase_tlstream_init(
diff --git a/mali_kbase/tl/mali_kbase_tlstream.h b/mali_kbase/tl/mali_kbase_tlstream.h
index 5797738..427bb09 100644
--- a/mali_kbase/tl/mali_kbase_tlstream.h
+++ b/mali_kbase/tl/mali_kbase_tlstream.h
@@ -1,6 +1,6 @@
/*
*
- * (C) COPYRIGHT 2015-2019 ARM Limited. All rights reserved.
+ * (C) COPYRIGHT 2015-2020 ARM Limited. All rights reserved.
*
* This program is free software and is provided to you under the terms of the
* GNU General Public License version 2 as published by the Free Software
@@ -97,7 +97,6 @@ enum tl_stream_type {
TL_STREAM_TYPE_OBJ_SUMMARY = TL_STREAM_TYPE_FIRST,
TL_STREAM_TYPE_OBJ,
TL_STREAM_TYPE_AUX,
-
TL_STREAM_TYPE_COUNT
};
diff --git a/mali_kbase/tl/mali_kbase_tracepoints.c b/mali_kbase/tl/mali_kbase_tracepoints.c
index bae95b4..b028ef8 100644
--- a/mali_kbase/tl/mali_kbase_tracepoints.c
+++ b/mali_kbase/tl/mali_kbase_tracepoints.c
@@ -1,6 +1,6 @@
/*
*
- * (C) COPYRIGHT 2010-2019 ARM Limited. All rights reserved.
+ * (C) COPYRIGHT 2010-2020 ARM Limited. All rights reserved.
*
* This program is free software and is provided to you under the terms of the
* GNU General Public License version 2 as published by the Free Software
@@ -118,6 +118,7 @@ enum tl_msg_id_obj {
KBASE_TL_KBASE_ARRAY_ITEM_KCPUQUEUE_EXECUTE_JIT_FREE_END,
KBASE_TL_KBASE_ARRAY_END_KCPUQUEUE_EXECUTE_JIT_FREE_END,
KBASE_TL_KBASE_KCPUQUEUE_EXECUTE_ERRORBARRIER,
+ KBASE_TL_KBASE_CSFFW_TLSTREAM_OVERFLOW,
KBASE_OBJ_MSG_COUNT,
};
@@ -136,404 +137,410 @@ enum tl_msg_id_aux {
KBASE_AUX_MSG_COUNT,
};
-#define OBJ_TL_LIST \
- TP_DESC(KBASE_TL_NEW_CTX, \
+#define OBJ_TP_LIST \
+ TRACEPOINT_DESC(KBASE_TL_NEW_CTX, \
"object ctx is created", \
"@pII", \
"ctx,ctx_nr,tgid") \
- TP_DESC(KBASE_TL_NEW_GPU, \
+ TRACEPOINT_DESC(KBASE_TL_NEW_GPU, \
"object gpu is created", \
"@pII", \
"gpu,gpu_id,core_count") \
- TP_DESC(KBASE_TL_NEW_LPU, \
+ TRACEPOINT_DESC(KBASE_TL_NEW_LPU, \
"object lpu is created", \
"@pII", \
"lpu,lpu_nr,lpu_fn") \
- TP_DESC(KBASE_TL_NEW_ATOM, \
+ TRACEPOINT_DESC(KBASE_TL_NEW_ATOM, \
"object atom is created", \
"@pI", \
"atom,atom_nr") \
- TP_DESC(KBASE_TL_NEW_AS, \
+ TRACEPOINT_DESC(KBASE_TL_NEW_AS, \
"address space object is created", \
"@pI", \
"address_space,as_nr") \
- TP_DESC(KBASE_TL_DEL_CTX, \
+ TRACEPOINT_DESC(KBASE_TL_DEL_CTX, \
"context is destroyed", \
"@p", \
"ctx") \
- TP_DESC(KBASE_TL_DEL_ATOM, \
+ TRACEPOINT_DESC(KBASE_TL_DEL_ATOM, \
"atom is destroyed", \
"@p", \
"atom") \
- TP_DESC(KBASE_TL_LIFELINK_LPU_GPU, \
+ TRACEPOINT_DESC(KBASE_TL_LIFELINK_LPU_GPU, \
"lpu is deleted with gpu", \
"@pp", \
"lpu,gpu") \
- TP_DESC(KBASE_TL_LIFELINK_AS_GPU, \
+ TRACEPOINT_DESC(KBASE_TL_LIFELINK_AS_GPU, \
"address space is deleted with gpu", \
"@pp", \
"address_space,gpu") \
- TP_DESC(KBASE_TL_RET_CTX_LPU, \
+ TRACEPOINT_DESC(KBASE_TL_RET_CTX_LPU, \
"context is retained by lpu", \
"@pp", \
"ctx,lpu") \
- TP_DESC(KBASE_TL_RET_ATOM_CTX, \
+ TRACEPOINT_DESC(KBASE_TL_RET_ATOM_CTX, \
"atom is retained by context", \
"@pp", \
"atom,ctx") \
- TP_DESC(KBASE_TL_RET_ATOM_LPU, \
+ TRACEPOINT_DESC(KBASE_TL_RET_ATOM_LPU, \
"atom is retained by lpu", \
"@pps", \
"atom,lpu,attrib_match_list") \
- TP_DESC(KBASE_TL_NRET_CTX_LPU, \
+ TRACEPOINT_DESC(KBASE_TL_NRET_CTX_LPU, \
"context is released by lpu", \
"@pp", \
"ctx,lpu") \
- TP_DESC(KBASE_TL_NRET_ATOM_CTX, \
+ TRACEPOINT_DESC(KBASE_TL_NRET_ATOM_CTX, \
"atom is released by context", \
"@pp", \
"atom,ctx") \
- TP_DESC(KBASE_TL_NRET_ATOM_LPU, \
+ TRACEPOINT_DESC(KBASE_TL_NRET_ATOM_LPU, \
"atom is released by lpu", \
"@pp", \
"atom,lpu") \
- TP_DESC(KBASE_TL_RET_AS_CTX, \
+ TRACEPOINT_DESC(KBASE_TL_RET_AS_CTX, \
"address space is retained by context", \
"@pp", \
"address_space,ctx") \
- TP_DESC(KBASE_TL_NRET_AS_CTX, \
+ TRACEPOINT_DESC(KBASE_TL_NRET_AS_CTX, \
"address space is released by context", \
"@pp", \
"address_space,ctx") \
- TP_DESC(KBASE_TL_RET_ATOM_AS, \
+ TRACEPOINT_DESC(KBASE_TL_RET_ATOM_AS, \
"atom is retained by address space", \
"@pp", \
"atom,address_space") \
- TP_DESC(KBASE_TL_NRET_ATOM_AS, \
+ TRACEPOINT_DESC(KBASE_TL_NRET_ATOM_AS, \
"atom is released by address space", \
"@pp", \
"atom,address_space") \
- TP_DESC(KBASE_TL_ATTRIB_ATOM_CONFIG, \
+ TRACEPOINT_DESC(KBASE_TL_ATTRIB_ATOM_CONFIG, \
"atom job slot attributes", \
"@pLLI", \
"atom,descriptor,affinity,config") \
- TP_DESC(KBASE_TL_ATTRIB_ATOM_PRIORITY, \
+ TRACEPOINT_DESC(KBASE_TL_ATTRIB_ATOM_PRIORITY, \
"atom priority", \
"@pI", \
"atom,prio") \
- TP_DESC(KBASE_TL_ATTRIB_ATOM_STATE, \
+ TRACEPOINT_DESC(KBASE_TL_ATTRIB_ATOM_STATE, \
"atom state", \
"@pI", \
"atom,state") \
- TP_DESC(KBASE_TL_ATTRIB_ATOM_PRIORITIZED, \
+ TRACEPOINT_DESC(KBASE_TL_ATTRIB_ATOM_PRIORITIZED, \
"atom caused priority change", \
"@p", \
"atom") \
- TP_DESC(KBASE_TL_ATTRIB_ATOM_JIT, \
+ TRACEPOINT_DESC(KBASE_TL_ATTRIB_ATOM_JIT, \
"jit done for atom", \
"@pLLILILLL", \
"atom,edit_addr,new_addr,jit_flags,mem_flags,j_id,com_pgs,extent,va_pgs") \
- TP_DESC(KBASE_TL_JIT_USEDPAGES, \
+ TRACEPOINT_DESC(KBASE_TL_JIT_USEDPAGES, \
"used pages for jit", \
"@LI", \
"used_pages,j_id") \
- TP_DESC(KBASE_TL_ATTRIB_ATOM_JITALLOCINFO, \
+ TRACEPOINT_DESC(KBASE_TL_ATTRIB_ATOM_JITALLOCINFO, \
"Information about JIT allocations", \
"@pLLLIIIII", \
"atom,va_pgs,com_pgs,extent,j_id,bin_id,max_allocs,jit_flags,usg_id") \
- TP_DESC(KBASE_TL_ATTRIB_ATOM_JITFREEINFO, \
+ TRACEPOINT_DESC(KBASE_TL_ATTRIB_ATOM_JITFREEINFO, \
"Information about JIT frees", \
"@pI", \
"atom,j_id") \
- TP_DESC(KBASE_TL_ATTRIB_AS_CONFIG, \
+ TRACEPOINT_DESC(KBASE_TL_ATTRIB_AS_CONFIG, \
"address space attributes", \
"@pLLL", \
"address_space,transtab,memattr,transcfg") \
- TP_DESC(KBASE_TL_EVENT_LPU_SOFTSTOP, \
+ TRACEPOINT_DESC(KBASE_TL_EVENT_LPU_SOFTSTOP, \
"softstop event on given lpu", \
"@p", \
"lpu") \
- TP_DESC(KBASE_TL_EVENT_ATOM_SOFTSTOP_EX, \
+ TRACEPOINT_DESC(KBASE_TL_EVENT_ATOM_SOFTSTOP_EX, \
"atom softstopped", \
"@p", \
"atom") \
- TP_DESC(KBASE_TL_EVENT_ATOM_SOFTSTOP_ISSUE, \
+ TRACEPOINT_DESC(KBASE_TL_EVENT_ATOM_SOFTSTOP_ISSUE, \
"atom softstop issued", \
"@p", \
"atom") \
- TP_DESC(KBASE_TL_EVENT_ATOM_SOFTJOB_START, \
+ TRACEPOINT_DESC(KBASE_TL_EVENT_ATOM_SOFTJOB_START, \
"atom soft job has started", \
"@p", \
"atom") \
- TP_DESC(KBASE_TL_EVENT_ATOM_SOFTJOB_END, \
+ TRACEPOINT_DESC(KBASE_TL_EVENT_ATOM_SOFTJOB_END, \
"atom soft job has completed", \
"@p", \
"atom") \
- TP_DESC(KBASE_JD_GPU_SOFT_RESET, \
+ TRACEPOINT_DESC(KBASE_JD_GPU_SOFT_RESET, \
"gpu soft reset", \
"@p", \
"gpu") \
- TP_DESC(KBASE_TL_KBASE_NEW_DEVICE, \
+ TRACEPOINT_DESC(KBASE_TL_KBASE_NEW_DEVICE, \
"New KBase Device", \
"@III", \
"kbase_device_id,kbase_device_gpu_core_count,kbase_device_max_num_csgs") \
- TP_DESC(KBASE_TL_KBASE_DEVICE_PROGRAM_CSG, \
+ TRACEPOINT_DESC(KBASE_TL_KBASE_DEVICE_PROGRAM_CSG, \
"CSG is programmed to a slot", \
"@III", \
"kbase_device_id,gpu_cmdq_grp_handle,kbase_device_csg_slot_index") \
- TP_DESC(KBASE_TL_KBASE_DEVICE_DEPROGRAM_CSG, \
+ TRACEPOINT_DESC(KBASE_TL_KBASE_DEVICE_DEPROGRAM_CSG, \
"CSG is deprogrammed from a slot", \
"@II", \
"kbase_device_id,kbase_device_csg_slot_index") \
- TP_DESC(KBASE_TL_KBASE_NEW_CTX, \
+ TRACEPOINT_DESC(KBASE_TL_KBASE_NEW_CTX, \
"New KBase Context", \
"@II", \
"kernel_ctx_id,kbase_device_id") \
- TP_DESC(KBASE_TL_KBASE_DEL_CTX, \
+ TRACEPOINT_DESC(KBASE_TL_KBASE_DEL_CTX, \
"Delete KBase Context", \
"@I", \
"kernel_ctx_id") \
- TP_DESC(KBASE_TL_KBASE_NEW_KCPUQUEUE, \
+ TRACEPOINT_DESC(KBASE_TL_KBASE_NEW_KCPUQUEUE, \
"New KCPU Queue", \
"@pII", \
"kcpu_queue,kernel_ctx_id,kcpuq_num_pending_cmds") \
- TP_DESC(KBASE_TL_KBASE_DEL_KCPUQUEUE, \
+ TRACEPOINT_DESC(KBASE_TL_KBASE_DEL_KCPUQUEUE, \
"Delete KCPU Queue", \
"@p", \
"kcpu_queue") \
- TP_DESC(KBASE_TL_KBASE_KCPUQUEUE_ENQUEUE_FENCE_SIGNAL, \
+ TRACEPOINT_DESC(KBASE_TL_KBASE_KCPUQUEUE_ENQUEUE_FENCE_SIGNAL, \
"KCPU Queue enqueues Signal on Fence", \
"@pp", \
"kcpu_queue,fence") \
- TP_DESC(KBASE_TL_KBASE_KCPUQUEUE_ENQUEUE_FENCE_WAIT, \
+ TRACEPOINT_DESC(KBASE_TL_KBASE_KCPUQUEUE_ENQUEUE_FENCE_WAIT, \
"KCPU Queue enqueues Wait on Fence", \
"@pp", \
"kcpu_queue,fence") \
- TP_DESC(KBASE_TL_KBASE_ARRAY_BEGIN_KCPUQUEUE_ENQUEUE_CQS_WAIT, \
+ TRACEPOINT_DESC(KBASE_TL_KBASE_ARRAY_BEGIN_KCPUQUEUE_ENQUEUE_CQS_WAIT, \
"Begin array of KCPU Queue enqueues Wait on Cross Queue Sync Object", \
"@p", \
"kcpu_queue") \
- TP_DESC(KBASE_TL_KBASE_ARRAY_ITEM_KCPUQUEUE_ENQUEUE_CQS_WAIT, \
+ TRACEPOINT_DESC(KBASE_TL_KBASE_ARRAY_ITEM_KCPUQUEUE_ENQUEUE_CQS_WAIT, \
"Array item of KCPU Queue enqueues Wait on Cross Queue Sync Object", \
"@pLI", \
"kcpu_queue,cqs_obj_gpu_addr,cqs_obj_compare_value") \
- TP_DESC(KBASE_TL_KBASE_ARRAY_END_KCPUQUEUE_ENQUEUE_CQS_WAIT, \
+ TRACEPOINT_DESC(KBASE_TL_KBASE_ARRAY_END_KCPUQUEUE_ENQUEUE_CQS_WAIT, \
"End array of KCPU Queue enqueues Wait on Cross Queue Sync Object", \
"@p", \
"kcpu_queue") \
- TP_DESC(KBASE_TL_KBASE_ARRAY_BEGIN_KCPUQUEUE_ENQUEUE_CQS_SET, \
+ TRACEPOINT_DESC(KBASE_TL_KBASE_ARRAY_BEGIN_KCPUQUEUE_ENQUEUE_CQS_SET, \
"Begin array of KCPU Queue enqueues Set on Cross Queue Sync Object", \
"@p", \
"kcpu_queue") \
- TP_DESC(KBASE_TL_KBASE_ARRAY_ITEM_KCPUQUEUE_ENQUEUE_CQS_SET, \
+ TRACEPOINT_DESC(KBASE_TL_KBASE_ARRAY_ITEM_KCPUQUEUE_ENQUEUE_CQS_SET, \
"Array item of KCPU Queue enqueues Set on Cross Queue Sync Object", \
"@pL", \
"kcpu_queue,cqs_obj_gpu_addr") \
- TP_DESC(KBASE_TL_KBASE_ARRAY_END_KCPUQUEUE_ENQUEUE_CQS_SET, \
+ TRACEPOINT_DESC(KBASE_TL_KBASE_ARRAY_END_KCPUQUEUE_ENQUEUE_CQS_SET, \
"End array of KCPU Queue enqueues Set on Cross Queue Sync Object", \
"@p", \
"kcpu_queue") \
- TP_DESC(KBASE_TL_KBASE_ARRAY_BEGIN_KCPUQUEUE_ENQUEUE_DEBUGCOPY, \
+ TRACEPOINT_DESC(KBASE_TL_KBASE_ARRAY_BEGIN_KCPUQUEUE_ENQUEUE_DEBUGCOPY, \
"Begin array of KCPU Queue enqueues Debug Copy", \
"@p", \
"kcpu_queue") \
- TP_DESC(KBASE_TL_KBASE_ARRAY_ITEM_KCPUQUEUE_ENQUEUE_DEBUGCOPY, \
+ TRACEPOINT_DESC(KBASE_TL_KBASE_ARRAY_ITEM_KCPUQUEUE_ENQUEUE_DEBUGCOPY, \
"Array item of KCPU Queue enqueues Debug Copy", \
"@pL", \
"kcpu_queue,debugcopy_dst_size") \
- TP_DESC(KBASE_TL_KBASE_ARRAY_END_KCPUQUEUE_ENQUEUE_DEBUGCOPY, \
+ TRACEPOINT_DESC(KBASE_TL_KBASE_ARRAY_END_KCPUQUEUE_ENQUEUE_DEBUGCOPY, \
"End array of KCPU Queue enqueues Debug Copy", \
"@p", \
"kcpu_queue") \
- TP_DESC(KBASE_TL_KBASE_KCPUQUEUE_ENQUEUE_MAP_IMPORT, \
+ TRACEPOINT_DESC(KBASE_TL_KBASE_KCPUQUEUE_ENQUEUE_MAP_IMPORT, \
"KCPU Queue enqueues Map Import", \
"@pL", \
"kcpu_queue,map_import_buf_gpu_addr") \
- TP_DESC(KBASE_TL_KBASE_KCPUQUEUE_ENQUEUE_UNMAP_IMPORT, \
+ TRACEPOINT_DESC(KBASE_TL_KBASE_KCPUQUEUE_ENQUEUE_UNMAP_IMPORT, \
"KCPU Queue enqueues Unmap Import", \
"@pL", \
"kcpu_queue,map_import_buf_gpu_addr") \
- TP_DESC(KBASE_TL_KBASE_KCPUQUEUE_ENQUEUE_UNMAP_IMPORT_FORCE, \
+ TRACEPOINT_DESC(KBASE_TL_KBASE_KCPUQUEUE_ENQUEUE_UNMAP_IMPORT_FORCE, \
"KCPU Queue enqueues Unmap Import ignoring reference count", \
"@pL", \
"kcpu_queue,map_import_buf_gpu_addr") \
- TP_DESC(KBASE_TL_KBASE_ARRAY_BEGIN_KCPUQUEUE_ENQUEUE_JIT_ALLOC, \
+ TRACEPOINT_DESC(KBASE_TL_KBASE_ARRAY_BEGIN_KCPUQUEUE_ENQUEUE_JIT_ALLOC, \
"Begin array of KCPU Queue enqueues JIT Alloc", \
"@p", \
"kcpu_queue") \
- TP_DESC(KBASE_TL_KBASE_ARRAY_ITEM_KCPUQUEUE_ENQUEUE_JIT_ALLOC, \
+ TRACEPOINT_DESC(KBASE_TL_KBASE_ARRAY_ITEM_KCPUQUEUE_ENQUEUE_JIT_ALLOC, \
"Array item of KCPU Queue enqueues JIT Alloc", \
"@pLLLLIIIII", \
"kcpu_queue,jit_alloc_gpu_alloc_addr_dest,jit_alloc_va_pages,jit_alloc_commit_pages,jit_alloc_extent,jit_alloc_jit_id,jit_alloc_bin_id,jit_alloc_max_allocations,jit_alloc_flags,jit_alloc_usage_id") \
- TP_DESC(KBASE_TL_KBASE_ARRAY_END_KCPUQUEUE_ENQUEUE_JIT_ALLOC, \
+ TRACEPOINT_DESC(KBASE_TL_KBASE_ARRAY_END_KCPUQUEUE_ENQUEUE_JIT_ALLOC, \
"End array of KCPU Queue enqueues JIT Alloc", \
"@p", \
"kcpu_queue") \
- TP_DESC(KBASE_TL_KBASE_ARRAY_BEGIN_KCPUQUEUE_ENQUEUE_JIT_FREE, \
+ TRACEPOINT_DESC(KBASE_TL_KBASE_ARRAY_BEGIN_KCPUQUEUE_ENQUEUE_JIT_FREE, \
"Begin array of KCPU Queue enqueues JIT Free", \
"@p", \
"kcpu_queue") \
- TP_DESC(KBASE_TL_KBASE_ARRAY_ITEM_KCPUQUEUE_ENQUEUE_JIT_FREE, \
+ TRACEPOINT_DESC(KBASE_TL_KBASE_ARRAY_ITEM_KCPUQUEUE_ENQUEUE_JIT_FREE, \
"Array item of KCPU Queue enqueues JIT Free", \
"@pI", \
"kcpu_queue,jit_alloc_jit_id") \
- TP_DESC(KBASE_TL_KBASE_ARRAY_END_KCPUQUEUE_ENQUEUE_JIT_FREE, \
+ TRACEPOINT_DESC(KBASE_TL_KBASE_ARRAY_END_KCPUQUEUE_ENQUEUE_JIT_FREE, \
"End array of KCPU Queue enqueues JIT Free", \
"@p", \
"kcpu_queue") \
- TP_DESC(KBASE_TL_KBASE_KCPUQUEUE_EXECUTE_FENCE_SIGNAL_START, \
+ TRACEPOINT_DESC(KBASE_TL_KBASE_KCPUQUEUE_EXECUTE_FENCE_SIGNAL_START, \
"KCPU Queue starts a Signal on Fence", \
"@p", \
"kcpu_queue") \
- TP_DESC(KBASE_TL_KBASE_KCPUQUEUE_EXECUTE_FENCE_SIGNAL_END, \
+ TRACEPOINT_DESC(KBASE_TL_KBASE_KCPUQUEUE_EXECUTE_FENCE_SIGNAL_END, \
"KCPU Queue ends a Signal on Fence", \
"@p", \
"kcpu_queue") \
- TP_DESC(KBASE_TL_KBASE_KCPUQUEUE_EXECUTE_FENCE_WAIT_START, \
+ TRACEPOINT_DESC(KBASE_TL_KBASE_KCPUQUEUE_EXECUTE_FENCE_WAIT_START, \
"KCPU Queue starts a Wait on Fence", \
"@p", \
"kcpu_queue") \
- TP_DESC(KBASE_TL_KBASE_KCPUQUEUE_EXECUTE_FENCE_WAIT_END, \
+ TRACEPOINT_DESC(KBASE_TL_KBASE_KCPUQUEUE_EXECUTE_FENCE_WAIT_END, \
"KCPU Queue ends a Wait on Fence", \
"@p", \
"kcpu_queue") \
- TP_DESC(KBASE_TL_KBASE_KCPUQUEUE_EXECUTE_CQS_WAIT_START, \
+ TRACEPOINT_DESC(KBASE_TL_KBASE_KCPUQUEUE_EXECUTE_CQS_WAIT_START, \
"KCPU Queue starts a Wait on an array of Cross Queue Sync Objects", \
"@p", \
"kcpu_queue") \
- TP_DESC(KBASE_TL_KBASE_KCPUQUEUE_EXECUTE_CQS_WAIT_END, \
+ TRACEPOINT_DESC(KBASE_TL_KBASE_KCPUQUEUE_EXECUTE_CQS_WAIT_END, \
"KCPU Queue ends a Wait on an array of Cross Queue Sync Objects", \
"@p", \
"kcpu_queue") \
- TP_DESC(KBASE_TL_KBASE_KCPUQUEUE_EXECUTE_CQS_SET, \
+ TRACEPOINT_DESC(KBASE_TL_KBASE_KCPUQUEUE_EXECUTE_CQS_SET, \
"KCPU Queue executes a Set on an array of Cross Queue Sync Objects", \
"@p", \
"kcpu_queue") \
- TP_DESC(KBASE_TL_KBASE_KCPUQUEUE_EXECUTE_DEBUGCOPY_START, \
+ TRACEPOINT_DESC(KBASE_TL_KBASE_KCPUQUEUE_EXECUTE_DEBUGCOPY_START, \
"KCPU Queue starts an array of Debug Copys", \
"@p", \
"kcpu_queue") \
- TP_DESC(KBASE_TL_KBASE_KCPUQUEUE_EXECUTE_DEBUGCOPY_END, \
+ TRACEPOINT_DESC(KBASE_TL_KBASE_KCPUQUEUE_EXECUTE_DEBUGCOPY_END, \
"KCPU Queue ends an array of Debug Copys", \
"@p", \
"kcpu_queue") \
- TP_DESC(KBASE_TL_KBASE_KCPUQUEUE_EXECUTE_MAP_IMPORT_START, \
+ TRACEPOINT_DESC(KBASE_TL_KBASE_KCPUQUEUE_EXECUTE_MAP_IMPORT_START, \
"KCPU Queue starts a Map Import", \
"@p", \
"kcpu_queue") \
- TP_DESC(KBASE_TL_KBASE_KCPUQUEUE_EXECUTE_MAP_IMPORT_END, \
+ TRACEPOINT_DESC(KBASE_TL_KBASE_KCPUQUEUE_EXECUTE_MAP_IMPORT_END, \
"KCPU Queue ends a Map Import", \
"@p", \
"kcpu_queue") \
- TP_DESC(KBASE_TL_KBASE_KCPUQUEUE_EXECUTE_UNMAP_IMPORT_START, \
+ TRACEPOINT_DESC(KBASE_TL_KBASE_KCPUQUEUE_EXECUTE_UNMAP_IMPORT_START, \
"KCPU Queue starts an Unmap Import", \
"@p", \
"kcpu_queue") \
- TP_DESC(KBASE_TL_KBASE_KCPUQUEUE_EXECUTE_UNMAP_IMPORT_END, \
+ TRACEPOINT_DESC(KBASE_TL_KBASE_KCPUQUEUE_EXECUTE_UNMAP_IMPORT_END, \
"KCPU Queue ends an Unmap Import", \
"@p", \
"kcpu_queue") \
- TP_DESC(KBASE_TL_KBASE_KCPUQUEUE_EXECUTE_UNMAP_IMPORT_FORCE_START, \
+ TRACEPOINT_DESC(KBASE_TL_KBASE_KCPUQUEUE_EXECUTE_UNMAP_IMPORT_FORCE_START, \
"KCPU Queue starts an Unmap Import ignoring reference count", \
"@p", \
"kcpu_queue") \
- TP_DESC(KBASE_TL_KBASE_KCPUQUEUE_EXECUTE_UNMAP_IMPORT_FORCE_END, \
+ TRACEPOINT_DESC(KBASE_TL_KBASE_KCPUQUEUE_EXECUTE_UNMAP_IMPORT_FORCE_END, \
"KCPU Queue ends an Unmap Import ignoring reference count", \
"@p", \
"kcpu_queue") \
- TP_DESC(KBASE_TL_KBASE_KCPUQUEUE_EXECUTE_JIT_ALLOC_START, \
+ TRACEPOINT_DESC(KBASE_TL_KBASE_KCPUQUEUE_EXECUTE_JIT_ALLOC_START, \
"KCPU Queue starts an array of JIT Allocs", \
"@p", \
"kcpu_queue") \
- TP_DESC(KBASE_TL_KBASE_ARRAY_BEGIN_KCPUQUEUE_EXECUTE_JIT_ALLOC_END, \
+ TRACEPOINT_DESC(KBASE_TL_KBASE_ARRAY_BEGIN_KCPUQUEUE_EXECUTE_JIT_ALLOC_END, \
"Begin array of KCPU Queue ends an array of JIT Allocs", \
"@p", \
"kcpu_queue") \
- TP_DESC(KBASE_TL_KBASE_ARRAY_ITEM_KCPUQUEUE_EXECUTE_JIT_ALLOC_END, \
+ TRACEPOINT_DESC(KBASE_TL_KBASE_ARRAY_ITEM_KCPUQUEUE_EXECUTE_JIT_ALLOC_END, \
"Array item of KCPU Queue ends an array of JIT Allocs", \
"@pLL", \
"kcpu_queue,jit_alloc_gpu_alloc_addr,jit_alloc_mmu_flags") \
- TP_DESC(KBASE_TL_KBASE_ARRAY_END_KCPUQUEUE_EXECUTE_JIT_ALLOC_END, \
+ TRACEPOINT_DESC(KBASE_TL_KBASE_ARRAY_END_KCPUQUEUE_EXECUTE_JIT_ALLOC_END, \
"End array of KCPU Queue ends an array of JIT Allocs", \
"@p", \
"kcpu_queue") \
- TP_DESC(KBASE_TL_KBASE_KCPUQUEUE_EXECUTE_JIT_FREE_START, \
+ TRACEPOINT_DESC(KBASE_TL_KBASE_KCPUQUEUE_EXECUTE_JIT_FREE_START, \
"KCPU Queue starts an array of JIT Frees", \
"@p", \
"kcpu_queue") \
- TP_DESC(KBASE_TL_KBASE_ARRAY_BEGIN_KCPUQUEUE_EXECUTE_JIT_FREE_END, \
+ TRACEPOINT_DESC(KBASE_TL_KBASE_ARRAY_BEGIN_KCPUQUEUE_EXECUTE_JIT_FREE_END, \
"Begin array of KCPU Queue ends an array of JIT Frees", \
"@p", \
"kcpu_queue") \
- TP_DESC(KBASE_TL_KBASE_ARRAY_ITEM_KCPUQUEUE_EXECUTE_JIT_FREE_END, \
+ TRACEPOINT_DESC(KBASE_TL_KBASE_ARRAY_ITEM_KCPUQUEUE_EXECUTE_JIT_FREE_END, \
"Array item of KCPU Queue ends an array of JIT Frees", \
"@pL", \
"kcpu_queue,jit_free_pages_used") \
- TP_DESC(KBASE_TL_KBASE_ARRAY_END_KCPUQUEUE_EXECUTE_JIT_FREE_END, \
+ TRACEPOINT_DESC(KBASE_TL_KBASE_ARRAY_END_KCPUQUEUE_EXECUTE_JIT_FREE_END, \
"End array of KCPU Queue ends an array of JIT Frees", \
"@p", \
"kcpu_queue") \
- TP_DESC(KBASE_TL_KBASE_KCPUQUEUE_EXECUTE_ERRORBARRIER, \
+ TRACEPOINT_DESC(KBASE_TL_KBASE_KCPUQUEUE_EXECUTE_ERRORBARRIER, \
"KCPU Queue executes an Error Barrier", \
"@p", \
"kcpu_queue") \
+ TRACEPOINT_DESC(KBASE_TL_KBASE_CSFFW_TLSTREAM_OVERFLOW, \
+ "An overflow has happened with the CSFFW Timeline stream", \
+ "@LL", \
+ "csffw_timestamp,csffw_cycle") \
-#define MIPE_HEADER_BLOB_VAR_NAME __obj_desc_header
-#define MIPE_HEADER_TP_LIST OBJ_TL_LIST
-#define MIPE_HEADER_TP_LIST_COUNT KBASE_OBJ_MSG_COUNT
-#define MIPE_HEADER_PKT_CLASS TL_PACKET_CLASS_OBJ
+#define MIPE_HEADER_BLOB_VAR_NAME __obj_desc_header
+#define MIPE_HEADER_STREAM_ID TL_STREAM_ID_KERNEL
+#define MIPE_HEADER_PKT_CLASS TL_PACKET_CLASS_OBJ
+#define MIPE_HEADER_TRACEPOINT_LIST OBJ_TP_LIST
+#define MIPE_HEADER_TRACEPOINT_LIST_SIZE KBASE_OBJ_MSG_COUNT
#include "mali_kbase_mipe_gen_header.h"
const char *obj_desc_header = (const char *) &__obj_desc_header;
const size_t obj_desc_header_size = sizeof(__obj_desc_header);
-#define AUX_TL_LIST \
- TP_DESC(KBASE_AUX_PM_STATE, \
+#define AUX_TP_LIST \
+ TRACEPOINT_DESC(KBASE_AUX_PM_STATE, \
"PM state", \
"@IL", \
"core_type,core_state_bitset") \
- TP_DESC(KBASE_AUX_PAGEFAULT, \
+ TRACEPOINT_DESC(KBASE_AUX_PAGEFAULT, \
"Page fault", \
"@IIL", \
"ctx_nr,as_nr,page_cnt_change") \
- TP_DESC(KBASE_AUX_PAGESALLOC, \
+ TRACEPOINT_DESC(KBASE_AUX_PAGESALLOC, \
"Total alloc pages change", \
"@IL", \
"ctx_nr,page_cnt") \
- TP_DESC(KBASE_AUX_DEVFREQ_TARGET, \
+ TRACEPOINT_DESC(KBASE_AUX_DEVFREQ_TARGET, \
"New device frequency target", \
"@L", \
"target_freq") \
- TP_DESC(KBASE_AUX_PROTECTED_ENTER_START, \
+ TRACEPOINT_DESC(KBASE_AUX_PROTECTED_ENTER_START, \
"enter protected mode start", \
"@p", \
"gpu") \
- TP_DESC(KBASE_AUX_PROTECTED_ENTER_END, \
+ TRACEPOINT_DESC(KBASE_AUX_PROTECTED_ENTER_END, \
"enter protected mode end", \
"@p", \
"gpu") \
- TP_DESC(KBASE_AUX_PROTECTED_LEAVE_START, \
+ TRACEPOINT_DESC(KBASE_AUX_PROTECTED_LEAVE_START, \
"leave protected mode start", \
"@p", \
"gpu") \
- TP_DESC(KBASE_AUX_PROTECTED_LEAVE_END, \
+ TRACEPOINT_DESC(KBASE_AUX_PROTECTED_LEAVE_END, \
"leave protected mode end", \
"@p", \
"gpu") \
- TP_DESC(KBASE_AUX_JIT_STATS, \
+ TRACEPOINT_DESC(KBASE_AUX_JIT_STATS, \
"per-bin JIT statistics", \
"@IIIIII", \
"ctx_nr,bid,max_allocs,allocs,va_pages,ph_pages") \
- TP_DESC(KBASE_AUX_EVENT_JOB_SLOT, \
+ TRACEPOINT_DESC(KBASE_AUX_EVENT_JOB_SLOT, \
"event on a given job slot", \
"@pIII", \
"ctx,slot_nr,atom_nr,event") \
-#define MIPE_HEADER_BLOB_VAR_NAME __aux_desc_header
-#define MIPE_HEADER_TP_LIST AUX_TL_LIST
-#define MIPE_HEADER_TP_LIST_COUNT KBASE_AUX_MSG_COUNT
-#define MIPE_HEADER_PKT_CLASS TL_PACKET_CLASS_AUX
+#define MIPE_HEADER_BLOB_VAR_NAME __aux_desc_header
+#define MIPE_HEADER_STREAM_ID TL_STREAM_ID_KERNEL
+#define MIPE_HEADER_PKT_CLASS TL_PACKET_CLASS_AUX
+#define MIPE_HEADER_TRACEPOINT_LIST AUX_TP_LIST
+#define MIPE_HEADER_TRACEPOINT_LIST_SIZE KBASE_AUX_MSG_COUNT
#include "mali_kbase_mipe_gen_header.h"
@@ -2988,4 +2995,30 @@ void __kbase_tlstream_tl_kbase_kcpuqueue_execute_errorbarrier(
kbase_tlstream_msgbuf_release(stream, acq_flags);
}
+void __kbase_tlstream_tl_kbase_csffw_tlstream_overflow(
+ struct kbase_tlstream *stream,
+ u64 csffw_timestamp,
+ u64 csffw_cycle)
+{
+ const u32 msg_id = KBASE_TL_KBASE_CSFFW_TLSTREAM_OVERFLOW;
+ const size_t msg_size = sizeof(msg_id) + sizeof(u64)
+ + sizeof(csffw_timestamp)
+ + sizeof(csffw_cycle)
+ ;
+ char *buffer;
+ unsigned long acq_flags;
+ size_t pos = 0;
+
+ buffer = kbase_tlstream_msgbuf_acquire(stream, msg_size, &acq_flags);
+
+ pos = kbasep_serialize_bytes(buffer, pos, &msg_id, sizeof(msg_id));
+ pos = kbasep_serialize_timestamp(buffer, pos);
+ pos = kbasep_serialize_bytes(buffer,
+ pos, &csffw_timestamp, sizeof(csffw_timestamp));
+ pos = kbasep_serialize_bytes(buffer,
+ pos, &csffw_cycle, sizeof(csffw_cycle));
+
+ kbase_tlstream_msgbuf_release(stream, acq_flags);
+}
+
/* clang-format on */
diff --git a/mali_kbase/tl/mali_kbase_tracepoints.h b/mali_kbase/tl/mali_kbase_tracepoints.h
index b2c20ae..fa2c399 100644
--- a/mali_kbase/tl/mali_kbase_tracepoints.h
+++ b/mali_kbase/tl/mali_kbase_tracepoints.h
@@ -1,6 +1,6 @@
/*
*
- * (C) COPYRIGHT 2010-2019 ARM Limited. All rights reserved.
+ * (C) COPYRIGHT 2010-2020 ARM Limited. All rights reserved.
*
* This program is free software and is provided to you under the terms of the
* GNU General Public License version 2 as published by the Free Software
@@ -454,6 +454,10 @@ void __kbase_tlstream_tl_kbase_array_end_kcpuqueue_execute_jit_free_end(
void __kbase_tlstream_tl_kbase_kcpuqueue_execute_errorbarrier(
struct kbase_tlstream *stream,
const void *kcpu_queue);
+void __kbase_tlstream_tl_kbase_csffw_tlstream_overflow(
+ struct kbase_tlstream *stream,
+ u64 csffw_timestamp,
+ u64 csffw_cycle);
struct kbase_tlstream;
@@ -2467,6 +2471,27 @@ struct kbase_tlstream;
kcpu_queue); \
} while (0)
+/**
+ * KBASE_TLSTREAM_TL_KBASE_CSFFW_TLSTREAM_OVERFLOW -
+ * An overflow has happened with the CSFFW Timeline stream
+ *
+ * @kbdev: Kbase device
+ * @csffw_timestamp: Timestamp of a CSFFW event
+ * @csffw_cycle: Cycle number of a CSFFW event
+ */
+#define KBASE_TLSTREAM_TL_KBASE_CSFFW_TLSTREAM_OVERFLOW( \
+ kbdev, \
+ csffw_timestamp, \
+ csffw_cycle \
+ ) \
+ do { \
+ int enabled = atomic_read(&kbdev->timeline_is_enabled); \
+ if (enabled & BASE_TLSTREAM_ENABLE_CSFFW_TRACEPOINTS) \
+ __kbase_tlstream_tl_kbase_csffw_tlstream_overflow( \
+ __TL_DISPATCH_STREAM(kbdev, obj), \
+ csffw_timestamp, csffw_cycle); \
+ } while (0)
+
/* Gator tracepoints are hooked into TLSTREAM interface.
* When the following tracepoints are called, corresponding