1191a4443SOhad Sharabi /* SPDX-License-Identifier: GPL-2.0 2191a4443SOhad Sharabi * 3191a4443SOhad Sharabi * Copyright 2016-2021 HabanaLabs, Ltd. 4191a4443SOhad Sharabi * All Rights Reserved. 5191a4443SOhad Sharabi * 6191a4443SOhad Sharabi */ 7191a4443SOhad Sharabi 8191a4443SOhad Sharabi #undef TRACE_SYSTEM 9191a4443SOhad Sharabi #define TRACE_SYSTEM habanalabs 10191a4443SOhad Sharabi 11191a4443SOhad Sharabi #if !defined(_TRACE_HABANALABS_H) || defined(TRACE_HEADER_MULTI_READ) 12191a4443SOhad Sharabi #define _TRACE_HABANALABS_H 13191a4443SOhad Sharabi 14191a4443SOhad Sharabi #include <linux/tracepoint.h> 15191a4443SOhad Sharabi 16191a4443SOhad Sharabi DECLARE_EVENT_CLASS(habanalabs_mmu_template, 17191a4443SOhad Sharabi TP_PROTO(struct device *dev, u64 virt_addr, u64 phys_addr, u32 page_size, bool flush_pte), 18191a4443SOhad Sharabi 19191a4443SOhad Sharabi TP_ARGS(dev, virt_addr, phys_addr, page_size, flush_pte), 20191a4443SOhad Sharabi 21191a4443SOhad Sharabi TP_STRUCT__entry( 22191a4443SOhad Sharabi __string(dname, dev_name(dev)) 23191a4443SOhad Sharabi __field(u64, virt_addr) 24191a4443SOhad Sharabi __field(u64, phys_addr) 25191a4443SOhad Sharabi __field(u32, page_size) 26191a4443SOhad Sharabi __field(u8, flush_pte) 27191a4443SOhad Sharabi ), 28191a4443SOhad Sharabi 29191a4443SOhad Sharabi TP_fast_assign( 30191a4443SOhad Sharabi __assign_str(dname, dev_name(dev)); 31191a4443SOhad Sharabi __entry->virt_addr = virt_addr; 32191a4443SOhad Sharabi __entry->phys_addr = phys_addr; 33191a4443SOhad Sharabi __entry->page_size = page_size; 34191a4443SOhad Sharabi __entry->flush_pte = flush_pte; 35191a4443SOhad Sharabi ), 36191a4443SOhad Sharabi 37191a4443SOhad Sharabi TP_printk("%s: vaddr: %#llx, paddr: %#llx, psize: %#x, flush: %s", 38191a4443SOhad Sharabi __get_str(dname), 39191a4443SOhad Sharabi __entry->virt_addr, 40191a4443SOhad Sharabi __entry->phys_addr, 41191a4443SOhad Sharabi __entry->page_size, 42191a4443SOhad Sharabi __entry->flush_pte ? "true" : "false") 43191a4443SOhad Sharabi ); 44191a4443SOhad Sharabi 45191a4443SOhad Sharabi DEFINE_EVENT(habanalabs_mmu_template, habanalabs_mmu_map, 46191a4443SOhad Sharabi TP_PROTO(struct device *dev, u64 virt_addr, u64 phys_addr, u32 page_size, bool flush_pte), 47191a4443SOhad Sharabi TP_ARGS(dev, virt_addr, phys_addr, page_size, flush_pte)); 48191a4443SOhad Sharabi 49191a4443SOhad Sharabi DEFINE_EVENT(habanalabs_mmu_template, habanalabs_mmu_unmap, 50191a4443SOhad Sharabi TP_PROTO(struct device *dev, u64 virt_addr, u64 phys_addr, u32 page_size, bool flush_pte), 51191a4443SOhad Sharabi TP_ARGS(dev, virt_addr, phys_addr, page_size, flush_pte)); 52191a4443SOhad Sharabi 53191a4443SOhad Sharabi DECLARE_EVENT_CLASS(habanalabs_dma_alloc_template, 5402632567SOhad Sharabi TP_PROTO(struct device *dev, u64 cpu_addr, u64 dma_addr, size_t size, const char *caller), 55191a4443SOhad Sharabi 5602632567SOhad Sharabi TP_ARGS(dev, cpu_addr, dma_addr, size, caller), 57191a4443SOhad Sharabi 58191a4443SOhad Sharabi TP_STRUCT__entry( 59191a4443SOhad Sharabi __string(dname, dev_name(dev)) 60191a4443SOhad Sharabi __field(u64, cpu_addr) 61191a4443SOhad Sharabi __field(u64, dma_addr) 62191a4443SOhad Sharabi __field(u32, size) 6302632567SOhad Sharabi __field(const char *, caller) 64191a4443SOhad Sharabi ), 65191a4443SOhad Sharabi 66191a4443SOhad Sharabi TP_fast_assign( 67191a4443SOhad Sharabi __assign_str(dname, dev_name(dev)); 68191a4443SOhad Sharabi __entry->cpu_addr = cpu_addr; 69191a4443SOhad Sharabi __entry->dma_addr = dma_addr; 70191a4443SOhad Sharabi __entry->size = size; 7102632567SOhad Sharabi __entry->caller = caller; 72191a4443SOhad Sharabi ), 73191a4443SOhad Sharabi 7402632567SOhad Sharabi TP_printk("%s: cpu_addr: %#llx, dma_addr: %#llx, size: %#x, caller: %s", 75191a4443SOhad Sharabi __get_str(dname), 76191a4443SOhad Sharabi __entry->cpu_addr, 77191a4443SOhad Sharabi __entry->dma_addr, 7802632567SOhad Sharabi __entry->size, 7902632567SOhad Sharabi __entry->caller) 80191a4443SOhad Sharabi ); 81191a4443SOhad Sharabi 82191a4443SOhad Sharabi DEFINE_EVENT(habanalabs_dma_alloc_template, habanalabs_dma_alloc, 8302632567SOhad Sharabi TP_PROTO(struct device *dev, u64 cpu_addr, u64 dma_addr, size_t size, const char *caller), 8402632567SOhad Sharabi TP_ARGS(dev, cpu_addr, dma_addr, size, caller)); 85191a4443SOhad Sharabi 86191a4443SOhad Sharabi DEFINE_EVENT(habanalabs_dma_alloc_template, habanalabs_dma_free, 8702632567SOhad Sharabi TP_PROTO(struct device *dev, u64 cpu_addr, u64 dma_addr, size_t size, const char *caller), 8802632567SOhad Sharabi TP_ARGS(dev, cpu_addr, dma_addr, size, caller)); 89191a4443SOhad Sharabi 90811c74baSOhad Sharabi DECLARE_EVENT_CLASS(habanalabs_comms_template, 91811c74baSOhad Sharabi TP_PROTO(struct device *dev, char *op_str), 92811c74baSOhad Sharabi 93811c74baSOhad Sharabi TP_ARGS(dev, op_str), 94811c74baSOhad Sharabi 95811c74baSOhad Sharabi TP_STRUCT__entry( 96811c74baSOhad Sharabi __string(dname, dev_name(dev)) 97811c74baSOhad Sharabi __field(char *, op_str) 98811c74baSOhad Sharabi ), 99811c74baSOhad Sharabi 100811c74baSOhad Sharabi TP_fast_assign( 101811c74baSOhad Sharabi __assign_str(dname, dev_name(dev)); 102811c74baSOhad Sharabi __entry->op_str = op_str; 103811c74baSOhad Sharabi ), 104811c74baSOhad Sharabi 105811c74baSOhad Sharabi TP_printk("%s: cms: %s", 106811c74baSOhad Sharabi __get_str(dname), 107811c74baSOhad Sharabi __entry->op_str) 108811c74baSOhad Sharabi ); 109811c74baSOhad Sharabi 110811c74baSOhad Sharabi DEFINE_EVENT(habanalabs_comms_template, habanalabs_comms_protocol_cmd, 111811c74baSOhad Sharabi TP_PROTO(struct device *dev, char *op_str), 112811c74baSOhad Sharabi TP_ARGS(dev, op_str)); 113811c74baSOhad Sharabi 114811c74baSOhad Sharabi DEFINE_EVENT(habanalabs_comms_template, habanalabs_comms_send_cmd, 115811c74baSOhad Sharabi TP_PROTO(struct device *dev, char *op_str), 116811c74baSOhad Sharabi TP_ARGS(dev, op_str)); 117811c74baSOhad Sharabi 118811c74baSOhad Sharabi DEFINE_EVENT(habanalabs_comms_template, habanalabs_comms_wait_status, 119811c74baSOhad Sharabi TP_PROTO(struct device *dev, char *op_str), 120811c74baSOhad Sharabi TP_ARGS(dev, op_str)); 121811c74baSOhad Sharabi 122811c74baSOhad Sharabi DEFINE_EVENT(habanalabs_comms_template, habanalabs_comms_wait_status_done, 123811c74baSOhad Sharabi TP_PROTO(struct device *dev, char *op_str), 124811c74baSOhad Sharabi TP_ARGS(dev, op_str)); 125811c74baSOhad Sharabi 126*d5077a55SOhad Sharabi DECLARE_EVENT_CLASS(habanalabs_reg_access_template, 127*d5077a55SOhad Sharabi TP_PROTO(struct device *dev, u32 addr, u32 val), 128*d5077a55SOhad Sharabi 129*d5077a55SOhad Sharabi TP_ARGS(dev, addr, val), 130*d5077a55SOhad Sharabi 131*d5077a55SOhad Sharabi TP_STRUCT__entry( 132*d5077a55SOhad Sharabi __string(dname, dev_name(dev)) 133*d5077a55SOhad Sharabi __field(u32, addr) 134*d5077a55SOhad Sharabi __field(u32, val) 135*d5077a55SOhad Sharabi ), 136*d5077a55SOhad Sharabi 137*d5077a55SOhad Sharabi TP_fast_assign( 138*d5077a55SOhad Sharabi __assign_str(dname, dev_name(dev)); 139*d5077a55SOhad Sharabi __entry->addr = addr; 140*d5077a55SOhad Sharabi __entry->val = val; 141*d5077a55SOhad Sharabi ), 142*d5077a55SOhad Sharabi 143*d5077a55SOhad Sharabi TP_printk("%s: addr: %#x, val: %#x", 144*d5077a55SOhad Sharabi __get_str(dname), 145*d5077a55SOhad Sharabi __entry->addr, 146*d5077a55SOhad Sharabi __entry->val) 147*d5077a55SOhad Sharabi ); 148*d5077a55SOhad Sharabi 149*d5077a55SOhad Sharabi DEFINE_EVENT(habanalabs_reg_access_template, habanalabs_rreg32, 150*d5077a55SOhad Sharabi TP_PROTO(struct device *dev, u32 addr, u32 val), 151*d5077a55SOhad Sharabi TP_ARGS(dev, addr, val)); 152*d5077a55SOhad Sharabi 153*d5077a55SOhad Sharabi DEFINE_EVENT(habanalabs_reg_access_template, habanalabs_wreg32, 154*d5077a55SOhad Sharabi TP_PROTO(struct device *dev, u32 addr, u32 val), 155*d5077a55SOhad Sharabi TP_ARGS(dev, addr, val)); 156*d5077a55SOhad Sharabi 157*d5077a55SOhad Sharabi DEFINE_EVENT(habanalabs_reg_access_template, habanalabs_elbi_read, 158*d5077a55SOhad Sharabi TP_PROTO(struct device *dev, u32 addr, u32 val), 159*d5077a55SOhad Sharabi TP_ARGS(dev, addr, val)); 160*d5077a55SOhad Sharabi 161*d5077a55SOhad Sharabi DEFINE_EVENT(habanalabs_reg_access_template, habanalabs_elbi_write, 162*d5077a55SOhad Sharabi TP_PROTO(struct device *dev, u32 addr, u32 val), 163*d5077a55SOhad Sharabi TP_ARGS(dev, addr, val)); 164*d5077a55SOhad Sharabi 165191a4443SOhad Sharabi #endif /* if !defined(_TRACE_HABANALABS_H) || defined(TRACE_HEADER_MULTI_READ) */ 166191a4443SOhad Sharabi 167191a4443SOhad Sharabi /* This part must be outside protection */ 168191a4443SOhad Sharabi #include <trace/define_trace.h> 169