summaryrefslogtreecommitdiff
path: root/mali_kbase/mali_kbase_tlstream.h
diff options
context:
space:
mode:
Diffstat (limited to 'mali_kbase/mali_kbase_tlstream.h')
-rw-r--r--mali_kbase/mali_kbase_tlstream.h119
1 files changed, 84 insertions, 35 deletions
diff --git a/mali_kbase/mali_kbase_tlstream.h b/mali_kbase/mali_kbase_tlstream.h
index 22a0d96..e29be71 100644
--- a/mali_kbase/mali_kbase_tlstream.h
+++ b/mali_kbase/mali_kbase_tlstream.h
@@ -37,8 +37,9 @@ void kbase_tlstream_term(void);
/**
* kbase_tlstream_acquire - acquire timeline stream file descriptor
- * @kctx: kernel common context
- * @fd: timeline stream file descriptor
+ * @kctx: kernel common context
+ * @fd: timeline stream file descriptor
+ * @flags: timeline stream flags
*
* This descriptor is meant to be used by userspace timeline to gain access to
* kernel timeline stream. This stream is later broadcasted by user space to the
@@ -50,7 +51,7 @@ void kbase_tlstream_term(void);
* Return: zero on success (this does not necessarily mean that stream
* descriptor could be returned), negative number on error
*/
-int kbase_tlstream_acquire(struct kbase_context *kctx, int *fd);
+int kbase_tlstream_acquire(struct kbase_context *kctx, int *fd, u32 flags);
/**
* kbase_tlstream_flush_streams - flush timeline streams.
@@ -102,6 +103,11 @@ void kbase_tlstream_stats(u32 *bytes_collected, u32 *bytes_generated);
/*****************************************************************************/
+#define TL_ATOM_STATE_IDLE 0
+#define TL_ATOM_STATE_READY 1
+#define TL_ATOM_STATE_DONE 2
+#define TL_ATOM_STATE_POSTED 3
+
void __kbase_tlstream_tl_summary_new_ctx(void *context, u32 nr, u32 tgid);
void __kbase_tlstream_tl_summary_new_gpu(void *gpu, u32 id, u32 core_count);
void __kbase_tlstream_tl_summary_new_lpu(void *lpu, u32 nr, u32 fn);
@@ -128,25 +134,38 @@ void __kbase_tlstream_tl_ndep_atom_atom(void *atom1, void *atom2);
void __kbase_tlstream_tl_rdep_atom_atom(void *atom1, void *atom2);
void __kbase_tlstream_tl_attrib_atom_config(
void *atom, u64 jd, u64 affinity, u32 config);
+void __kbase_tlstream_tl_attrib_atom_priority(void *atom, u32 prio);
+void __kbase_tlstream_tl_attrib_atom_state(void *atom, u32 state);
+void __kbase_tlstream_tl_attrib_atom_priority_change(void *atom);
void __kbase_tlstream_tl_attrib_as_config(
void *as, u64 transtab, u64 memattr, u64 transcfg);
+void __kbase_tlstream_tl_event_atom_softstop_ex(void *atom);
+void __kbase_tlstream_tl_event_lpu_softstop(void *lpu);
+void __kbase_tlstream_tl_event_atom_softstop_issue(void *atom);
void __kbase_tlstream_jd_gpu_soft_reset(void *gpu);
void __kbase_tlstream_aux_pm_state(u32 core_type, u64 state);
-void __kbase_tlstream_aux_issue_job_softstop(void *katom);
-void __kbase_tlstream_aux_job_softstop(u32 js_id);
-void __kbase_tlstream_aux_job_softstop_ex(struct kbase_jd_atom *katom);
void __kbase_tlstream_aux_pagefault(u32 ctx_nr, u64 page_count_change);
void __kbase_tlstream_aux_pagesalloc(u32 ctx_nr, u64 page_count);
+void __kbase_tlstream_aux_devfreq_target(u64 target_freq);
+
+#define TLSTREAM_ENABLED (1 << 31)
extern atomic_t kbase_tlstream_enabled;
#define __TRACE_IF_ENABLED(trace_name, ...) \
do { \
int enabled = atomic_read(&kbase_tlstream_enabled); \
- if (enabled) \
+ if (enabled & TLSTREAM_ENABLED) \
__kbase_tlstream_##trace_name(__VA_ARGS__); \
} while (0)
+#define __TRACE_IF_ENABLED_LATENCY(trace_name, ...) \
+ do { \
+ int enabled = atomic_read(&kbase_tlstream_enabled); \
+ if (enabled & BASE_TLSTREAM_ENABLE_LATENCY_TRACEPOINTS) \
+ __kbase_tlstream_##trace_name(__VA_ARGS__); \
+ } while (0)
+
/*****************************************************************************/
/**
@@ -430,6 +449,35 @@ extern atomic_t kbase_tlstream_enabled;
__TRACE_IF_ENABLED(tl_attrib_atom_config, atom, jd, affinity, config)
/**
+ * kbase_tlstream_tl_attrib_atom_priority - atom priority
+ * @atom: name of the atom object
+ * @prio: atom priority
+ *
+ * Function emits a timeline message containing atom priority.
+ */
+#define kbase_tlstream_tl_attrib_atom_priority(atom, prio) \
+ __TRACE_IF_ENABLED_LATENCY(tl_attrib_atom_priority, atom, prio)
+
+/**
+ * kbase_tlstream_tl_attrib_atom_state - atom state
+ * @atom: name of the atom object
+ * @state: atom state
+ *
+ * Function emits a timeline message containing atom state.
+ */
+#define kbase_tlstream_tl_attrib_atom_state(atom, state) \
+ __TRACE_IF_ENABLED_LATENCY(tl_attrib_atom_state, atom, state)
+
+/**
+ * kbase_tlstream_tl_attrib_atom_priority_change - atom caused priority change
+ * @atom: name of the atom object
+ *
+ * Function emits a timeline message signalling priority change
+ */
+#define kbase_tlstream_tl_attrib_atom_priority_change(atom) \
+ __TRACE_IF_ENABLED_LATENCY(tl_attrib_atom_priority_change, atom)
+
+/**
* kbase_tlstream_tl_attrib_as_config - address space attributes
* @as: assigned address space
* @transtab: configuration of the TRANSTAB register
@@ -442,6 +490,27 @@ extern atomic_t kbase_tlstream_enabled;
__TRACE_IF_ENABLED(tl_attrib_as_config, as, transtab, memattr, transcfg)
/**
+ * kbase_tlstream_tl_event_atom_softstop_ex
+ * @atom: atom identifier
+ */
+#define kbase_tlstream_tl_event_atom_softstop_ex(atom) \
+ __TRACE_IF_ENABLED(tl_event_atom_softstop_ex, atom)
+
+/**
+ * kbase_tlstream_tl_event_lpu_softstop
+ * @lpu: name of the LPU object
+ */
+#define kbase_tlstream_tl_event_lpu_softstop(lpu) \
+ __TRACE_IF_ENABLED(tl_event_lpu_softstop, lpu)
+
+/**
+ * kbase_tlstream_tl_event_atom_softstop_issue
+ * @atom: atom identifier
+ */
+#define kbase_tlstream_tl_event_atom_softstop_issue(atom) \
+ __TRACE_IF_ENABLED(tl_event_atom_softstop_issue, atom)
+
+/**
* kbase_tlstream_jd_gpu_soft_reset - The GPU is being soft reset
* @gpu: name of the GPU object
*
@@ -460,34 +529,6 @@ extern atomic_t kbase_tlstream_enabled;
__TRACE_IF_ENABLED(aux_pm_state, core_type, state)
/**
- * kbase_tlstream_aux_issue_job_softstop - a soft-stop command is being issued
- * @katom: the atom that is being soft-stopped
- */
-#define kbase_tlstream_aux_issue_job_softstop(katom) \
- __TRACE_IF_ENABLED(aux_issue_job_softstop, katom)
-
-/**
- * kbase_tlstream_aux_job_softstop - soft job stop occurred
- * @js_id: job slot id
- */
-#define kbase_tlstream_aux_job_softstop(js_id) \
- __TRACE_IF_ENABLED(aux_job_softstop, js_id)
-
-/**
- * kbase_tlstream_aux_job_softstop_ex - extra info about soft-stopped atom
- * @katom: the atom that has been soft-stopped
- *
- * This trace point adds more details about the soft-stopped atom. These details
- * can't be safety collected inside the interrupt handler so we're doing it
- * inside a worker.
- *
- * Note: this is not the same information that is recorded in the trace point,
- * refer to __kbase_tlstream_aux_job_softstop_ex() for more details.
- */
-#define kbase_tlstream_aux_job_softstop_ex(katom) \
- __TRACE_IF_ENABLED(aux_job_softstop_ex, katom)
-
-/**
* kbase_tlstream_aux_pagefault - timeline message: MMU page fault event
* resulting in new pages being mapped
* @ctx_nr: kernel context number
@@ -505,5 +546,13 @@ extern atomic_t kbase_tlstream_enabled;
#define kbase_tlstream_aux_pagesalloc(ctx_nr, page_count) \
__TRACE_IF_ENABLED(aux_pagesalloc, ctx_nr, page_count)
+/**
+ * kbase_tlstream_aux_devfreq_target - timeline message: new target DVFS
+ * frequency
+ * @target_freq: new target frequency
+ */
+#define kbase_tlstream_aux_devfreq_target(target_freq) \
+ __TRACE_IF_ENABLED(aux_devfreq_target, target_freq)
+
#endif /* _KBASE_TLSTREAM_H */