| // 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> |