forked from Minki/linux
habanalabs: define trace events
This patch adds trace events for habanalabs driver to gain all the benefits such an infrastructure can supply. The following events were added: - MMU map/unmap: to be able to track driver's memory allocations - DMA alloc/free: to track our DMA allocation the above trace points in conjunction will help us map the device memory usage as well as to be able to track memory violations. Signed-off-by: Ohad Sharabi <osharabi@habana.ai> Acked-by: Oded Gabbay <ogabbay@kernel.org> Reviewed-by: Steven Rostedt (Google) <rostedt@goodmis.org> Signed-off-by: Oded Gabbay <ogabbay@kernel.org>
This commit is contained in:
parent
7b5d13c9ca
commit
191a4443c3
@ -8886,6 +8886,7 @@ T: git https://git.kernel.org/pub/scm/linux/kernel/git/ogabbay/linux.git
|
||||
F: Documentation/ABI/testing/debugfs-driver-habanalabs
|
||||
F: Documentation/ABI/testing/sysfs-driver-habanalabs
|
||||
F: drivers/misc/habanalabs/
|
||||
F: include/trace/events/habanalabs.h
|
||||
F: include/uapi/misc/habanalabs.h
|
||||
|
||||
HACKRF MEDIA DRIVER
|
||||
|
@ -14,6 +14,9 @@
|
||||
#include <linux/aer.h>
|
||||
#include <linux/module.h>
|
||||
|
||||
#define CREATE_TRACE_POINTS
|
||||
#include <trace/events/habanalabs.h>
|
||||
|
||||
#define HL_DRIVER_AUTHOR "HabanaLabs Kernel Driver Team"
|
||||
|
||||
#define HL_DRIVER_DESC "Driver for HabanaLabs's AI Accelerators"
|
||||
|
90
include/trace/events/habanalabs.h
Normal file
90
include/trace/events/habanalabs.h
Normal file
@ -0,0 +1,90 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0
|
||||
*
|
||||
* Copyright 2016-2021 HabanaLabs, Ltd.
|
||||
* All Rights Reserved.
|
||||
*
|
||||
*/
|
||||
|
||||
#undef TRACE_SYSTEM
|
||||
#define TRACE_SYSTEM habanalabs
|
||||
|
||||
#if !defined(_TRACE_HABANALABS_H) || defined(TRACE_HEADER_MULTI_READ)
|
||||
#define _TRACE_HABANALABS_H
|
||||
|
||||
#include <linux/tracepoint.h>
|
||||
|
||||
DECLARE_EVENT_CLASS(habanalabs_mmu_template,
|
||||
TP_PROTO(struct device *dev, u64 virt_addr, u64 phys_addr, u32 page_size, bool flush_pte),
|
||||
|
||||
TP_ARGS(dev, virt_addr, phys_addr, page_size, flush_pte),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__string(dname, dev_name(dev))
|
||||
__field(u64, virt_addr)
|
||||
__field(u64, phys_addr)
|
||||
__field(u32, page_size)
|
||||
__field(u8, flush_pte)
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
__assign_str(dname, dev_name(dev));
|
||||
__entry->virt_addr = virt_addr;
|
||||
__entry->phys_addr = phys_addr;
|
||||
__entry->page_size = page_size;
|
||||
__entry->flush_pte = flush_pte;
|
||||
),
|
||||
|
||||
TP_printk("%s: vaddr: %#llx, paddr: %#llx, psize: %#x, flush: %s",
|
||||
__get_str(dname),
|
||||
__entry->virt_addr,
|
||||
__entry->phys_addr,
|
||||
__entry->page_size,
|
||||
__entry->flush_pte ? "true" : "false")
|
||||
);
|
||||
|
||||
DEFINE_EVENT(habanalabs_mmu_template, habanalabs_mmu_map,
|
||||
TP_PROTO(struct device *dev, u64 virt_addr, u64 phys_addr, u32 page_size, bool flush_pte),
|
||||
TP_ARGS(dev, virt_addr, phys_addr, page_size, flush_pte));
|
||||
|
||||
DEFINE_EVENT(habanalabs_mmu_template, habanalabs_mmu_unmap,
|
||||
TP_PROTO(struct device *dev, u64 virt_addr, u64 phys_addr, u32 page_size, bool flush_pte),
|
||||
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_ARGS(dev, cpu_addr, dma_addr, size),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__string(dname, dev_name(dev))
|
||||
__field(u64, cpu_addr)
|
||||
__field(u64, dma_addr)
|
||||
__field(u32, size)
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
__assign_str(dname, dev_name(dev));
|
||||
__entry->cpu_addr = cpu_addr;
|
||||
__entry->dma_addr = dma_addr;
|
||||
__entry->size = size;
|
||||
),
|
||||
|
||||
TP_printk("%s: cpu_addr: %#llx, dma_addr: %#llx, size: %#x",
|
||||
__get_str(dname),
|
||||
__entry->cpu_addr,
|
||||
__entry->dma_addr,
|
||||
__entry->size)
|
||||
);
|
||||
|
||||
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));
|
||||
|
||||
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));
|
||||
|
||||
#endif /* if !defined(_TRACE_HABANALABS_H) || defined(TRACE_HEADER_MULTI_READ) */
|
||||
|
||||
/* This part must be outside protection */
|
||||
#include <trace/define_trace.h>
|
Loading…
Reference in New Issue
Block a user