| // SPDX-License-Identifier: GPL-2.0+ | |
| // Copyright 2017 IBM Corp. | |
| #undef TRACE_SYSTEM | |
| #define TRACE_SYSTEM ocxl | |
| #if !defined(_TRACE_OCXL_H) || defined(TRACE_HEADER_MULTI_READ) | |
| #define _TRACE_OCXL_H | |
| #include <linux/tracepoint.h> | |
| DECLARE_EVENT_CLASS(ocxl_context, | |
| TP_PROTO(pid_t pid, void *spa, int pasid, u32 pidr, u32 tidr), | |
| TP_ARGS(pid, spa, pasid, pidr, tidr), | |
| TP_STRUCT__entry( | |
| __field(pid_t, pid) | |
| __field(void*, spa) | |
| __field(int, pasid) | |
| __field(u32, pidr) | |
| __field(u32, tidr) | |
| ), | |
| TP_fast_assign( | |
| __entry->pid = pid; | |
| __entry->spa = spa; | |
| __entry->pasid = pasid; | |
| __entry->pidr = pidr; | |
| __entry->tidr = tidr; | |
| ), | |
| TP_printk("linux pid=%d spa=0x%p pasid=0x%x pidr=0x%x tidr=0x%x", | |
| __entry->pid, | |
| __entry->spa, | |
| __entry->pasid, | |
| __entry->pidr, | |
| __entry->tidr | |
| ) | |
| ); | |
| DEFINE_EVENT(ocxl_context, ocxl_context_add, | |
| TP_PROTO(pid_t pid, void *spa, int pasid, u32 pidr, u32 tidr), | |
| TP_ARGS(pid, spa, pasid, pidr, tidr) | |
| ); | |
| DEFINE_EVENT(ocxl_context, ocxl_context_remove, | |
| TP_PROTO(pid_t pid, void *spa, int pasid, u32 pidr, u32 tidr), | |
| TP_ARGS(pid, spa, pasid, pidr, tidr) | |
| ); | |
| TRACE_EVENT(ocxl_terminate_pasid, | |
| TP_PROTO(int pasid, int rc), | |
| TP_ARGS(pasid, rc), | |
| TP_STRUCT__entry( | |
| __field(int, pasid) | |
| __field(int, rc) | |
| ), | |
| TP_fast_assign( | |
| __entry->pasid = pasid; | |
| __entry->rc = rc; | |
| ), | |
| TP_printk("pasid=0x%x rc=%d", | |
| __entry->pasid, | |
| __entry->rc | |
| ) | |
| ); | |
| DECLARE_EVENT_CLASS(ocxl_fault_handler, | |
| TP_PROTO(void *spa, u64 pe, u64 dsisr, u64 dar, u64 tfc), | |
| TP_ARGS(spa, pe, dsisr, dar, tfc), | |
| TP_STRUCT__entry( | |
| __field(void *, spa) | |
| __field(u64, pe) | |
| __field(u64, dsisr) | |
| __field(u64, dar) | |
| __field(u64, tfc) | |
| ), | |
| TP_fast_assign( | |
| __entry->spa = spa; | |
| __entry->pe = pe; | |
| __entry->dsisr = dsisr; | |
| __entry->dar = dar; | |
| __entry->tfc = tfc; | |
| ), | |
| TP_printk("spa=%p pe=0x%llx dsisr=0x%llx dar=0x%llx tfc=0x%llx", | |
| __entry->spa, | |
| __entry->pe, | |
| __entry->dsisr, | |
| __entry->dar, | |
| __entry->tfc | |
| ) | |
| ); | |
| DEFINE_EVENT(ocxl_fault_handler, ocxl_fault, | |
| TP_PROTO(void *spa, u64 pe, u64 dsisr, u64 dar, u64 tfc), | |
| TP_ARGS(spa, pe, dsisr, dar, tfc) | |
| ); | |
| DEFINE_EVENT(ocxl_fault_handler, ocxl_fault_ack, | |
| TP_PROTO(void *spa, u64 pe, u64 dsisr, u64 dar, u64 tfc), | |
| TP_ARGS(spa, pe, dsisr, dar, tfc) | |
| ); | |
| TRACE_EVENT(ocxl_afu_irq_alloc, | |
| TP_PROTO(int pasid, int irq_id, unsigned int virq, int hw_irq, | |
| u64 irq_offset), | |
| TP_ARGS(pasid, irq_id, virq, hw_irq, irq_offset), | |
| TP_STRUCT__entry( | |
| __field(int, pasid) | |
| __field(int, irq_id) | |
| __field(unsigned int, virq) | |
| __field(int, hw_irq) | |
| __field(u64, irq_offset) | |
| ), | |
| TP_fast_assign( | |
| __entry->pasid = pasid; | |
| __entry->irq_id = irq_id; | |
| __entry->virq = virq; | |
| __entry->hw_irq = hw_irq; | |
| __entry->irq_offset = irq_offset; | |
| ), | |
| TP_printk("pasid=0x%x irq_id=%d virq=%u hw_irq=%d irq_offset=0x%llx", | |
| __entry->pasid, | |
| __entry->irq_id, | |
| __entry->virq, | |
| __entry->hw_irq, | |
| __entry->irq_offset | |
| ) | |
| ); | |
| TRACE_EVENT(ocxl_afu_irq_free, | |
| TP_PROTO(int pasid, int irq_id), | |
| TP_ARGS(pasid, irq_id), | |
| TP_STRUCT__entry( | |
| __field(int, pasid) | |
| __field(int, irq_id) | |
| ), | |
| TP_fast_assign( | |
| __entry->pasid = pasid; | |
| __entry->irq_id = irq_id; | |
| ), | |
| TP_printk("pasid=0x%x irq_id=%d", | |
| __entry->pasid, | |
| __entry->irq_id | |
| ) | |
| ); | |
| TRACE_EVENT(ocxl_afu_irq_receive, | |
| TP_PROTO(int virq), | |
| TP_ARGS(virq), | |
| TP_STRUCT__entry( | |
| __field(int, virq) | |
| ), | |
| TP_fast_assign( | |
| __entry->virq = virq; | |
| ), | |
| TP_printk("virq=%d", | |
| __entry->virq | |
| ) | |
| ); | |
| #endif /* _TRACE_OCXL_H */ | |
| /* This part must be outside protection */ | |
| #undef TRACE_INCLUDE_PATH | |
| #define TRACE_INCLUDE_PATH . | |
| #define TRACE_INCLUDE_FILE trace | |
| #include <trace/define_trace.h> |