summaryrefslogtreecommitdiff
path: root/include/trace
diff options
context:
space:
mode:
authorOhad Sharabi <osharabi@habana.ai>2022-06-12 15:00:29 +0300
committerOded Gabbay <ogabbay@kernel.org>2022-09-18 13:29:53 +0300
commit0263256791094180ab8749b224ef7bfe0bfd67bb (patch)
tree8c6399d75795e897d119b8fef07b4d3604290d11 /include/trace
parent4eb87df3d04aa725e752fe2df0df3e83f204d247 (diff)
habanalabs: trace DMA allocations
This patch add tracepoints in the code for DMA allocation. The main purpose is to be able to cross data with the map operations and determine whether memory violation occurred, for example free DMA allocation before unmapping it from device memory. To achieve this the DMA alloc/free code flows were refactored so that a single DMA tracepoint will catch many flows. To get better understanding of what happened in the DMA allocations the real allocating function is added to the trace as well. Signed-off-by: Ohad Sharabi <osharabi@habana.ai> Reviewed-by: Oded Gabbay <ogabbay@kernel.org> Reviewed-by: Steven Rostedt (Google) <rostedt@goodmis.org> Signed-off-by: Oded Gabbay <ogabbay@kernel.org>
Diffstat (limited to 'include/trace')
-rw-r--r--include/trace/events/habanalabs.h19
1 files changed, 11 insertions, 8 deletions
diff --git a/include/trace/events/habanalabs.h b/include/trace/events/habanalabs.h
index 09ca516e1624..f05c5fa668a2 100644
--- a/include/trace/events/habanalabs.h
+++ b/include/trace/events/habanalabs.h
@@ -51,15 +51,16 @@ DEFINE_EVENT(habanalabs_mmu_template, habanalabs_mmu_unmap,
TP_ARGS(dev, virt_addr, phys_addr, page_size, flush_pte));
DECLARE_EVENT_CLASS(habanalabs_dma_alloc_template,
- TP_PROTO(struct device *dev, u64 cpu_addr, u64 dma_addr, size_t size),
+ TP_PROTO(struct device *dev, u64 cpu_addr, u64 dma_addr, size_t size, const char *caller),
- TP_ARGS(dev, cpu_addr, dma_addr, size),
+ TP_ARGS(dev, cpu_addr, dma_addr, size, caller),
TP_STRUCT__entry(
__string(dname, dev_name(dev))
__field(u64, cpu_addr)
__field(u64, dma_addr)
__field(u32, size)
+ __field(const char *, caller)
),
TP_fast_assign(
@@ -67,22 +68,24 @@ DECLARE_EVENT_CLASS(habanalabs_dma_alloc_template,
__entry->cpu_addr = cpu_addr;
__entry->dma_addr = dma_addr;
__entry->size = size;
+ __entry->caller = caller;
),
- TP_printk("%s: cpu_addr: %#llx, dma_addr: %#llx, size: %#x",
+ TP_printk("%s: cpu_addr: %#llx, dma_addr: %#llx, size: %#x, caller: %s",
__get_str(dname),
__entry->cpu_addr,
__entry->dma_addr,
- __entry->size)
+ __entry->size,
+ __entry->caller)
);
DEFINE_EVENT(habanalabs_dma_alloc_template, habanalabs_dma_alloc,
- TP_PROTO(struct device *dev, u64 cpu_addr, u64 dma_addr, size_t size),
- TP_ARGS(dev, cpu_addr, dma_addr, size));
+ TP_PROTO(struct device *dev, u64 cpu_addr, u64 dma_addr, size_t size, const char *caller),
+ TP_ARGS(dev, cpu_addr, dma_addr, size, caller));
DEFINE_EVENT(habanalabs_dma_alloc_template, habanalabs_dma_free,
- TP_PROTO(struct device *dev, u64 cpu_addr, u64 dma_addr, size_t size),
- TP_ARGS(dev, cpu_addr, dma_addr, size));
+ TP_PROTO(struct device *dev, u64 cpu_addr, u64 dma_addr, size_t size, const char *caller),
+ TP_ARGS(dev, cpu_addr, dma_addr, size, caller));
#endif /* if !defined(_TRACE_HABANALABS_H) || defined(TRACE_HEADER_MULTI_READ) */