162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Copyright 2015 IBM Corp. 462306a36Sopenharmony_ci */ 562306a36Sopenharmony_ci 662306a36Sopenharmony_ci#undef TRACE_SYSTEM 762306a36Sopenharmony_ci#define TRACE_SYSTEM cxl 862306a36Sopenharmony_ci 962306a36Sopenharmony_ci#if !defined(_CXL_TRACE_H) || defined(TRACE_HEADER_MULTI_READ) 1062306a36Sopenharmony_ci#define _CXL_TRACE_H 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ci#include <linux/tracepoint.h> 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_ci#include "cxl.h" 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_ci#define dsisr_psl9_flags(flags) \ 1762306a36Sopenharmony_ci __print_flags(flags, "|", \ 1862306a36Sopenharmony_ci { CXL_PSL9_DSISR_An_CO_MASK, "FR" }, \ 1962306a36Sopenharmony_ci { CXL_PSL9_DSISR_An_TF, "TF" }, \ 2062306a36Sopenharmony_ci { CXL_PSL9_DSISR_An_PE, "PE" }, \ 2162306a36Sopenharmony_ci { CXL_PSL9_DSISR_An_AE, "AE" }, \ 2262306a36Sopenharmony_ci { CXL_PSL9_DSISR_An_OC, "OC" }, \ 2362306a36Sopenharmony_ci { CXL_PSL9_DSISR_An_S, "S" }) 2462306a36Sopenharmony_ci 2562306a36Sopenharmony_ci#define DSISR_FLAGS \ 2662306a36Sopenharmony_ci { CXL_PSL_DSISR_An_DS, "DS" }, \ 2762306a36Sopenharmony_ci { CXL_PSL_DSISR_An_DM, "DM" }, \ 2862306a36Sopenharmony_ci { CXL_PSL_DSISR_An_ST, "ST" }, \ 2962306a36Sopenharmony_ci { CXL_PSL_DSISR_An_UR, "UR" }, \ 3062306a36Sopenharmony_ci { CXL_PSL_DSISR_An_PE, "PE" }, \ 3162306a36Sopenharmony_ci { CXL_PSL_DSISR_An_AE, "AE" }, \ 3262306a36Sopenharmony_ci { CXL_PSL_DSISR_An_OC, "OC" }, \ 3362306a36Sopenharmony_ci { CXL_PSL_DSISR_An_M, "M" }, \ 3462306a36Sopenharmony_ci { CXL_PSL_DSISR_An_P, "P" }, \ 3562306a36Sopenharmony_ci { CXL_PSL_DSISR_An_A, "A" }, \ 3662306a36Sopenharmony_ci { CXL_PSL_DSISR_An_S, "S" }, \ 3762306a36Sopenharmony_ci { CXL_PSL_DSISR_An_K, "K" } 3862306a36Sopenharmony_ci 3962306a36Sopenharmony_ci#define TFC_FLAGS \ 4062306a36Sopenharmony_ci { CXL_PSL_TFC_An_A, "A" }, \ 4162306a36Sopenharmony_ci { CXL_PSL_TFC_An_C, "C" }, \ 4262306a36Sopenharmony_ci { CXL_PSL_TFC_An_AE, "AE" }, \ 4362306a36Sopenharmony_ci { CXL_PSL_TFC_An_R, "R" } 4462306a36Sopenharmony_ci 4562306a36Sopenharmony_ci#define LLCMD_NAMES \ 4662306a36Sopenharmony_ci { CXL_SPA_SW_CMD_TERMINATE, "TERMINATE" }, \ 4762306a36Sopenharmony_ci { CXL_SPA_SW_CMD_REMOVE, "REMOVE" }, \ 4862306a36Sopenharmony_ci { CXL_SPA_SW_CMD_SUSPEND, "SUSPEND" }, \ 4962306a36Sopenharmony_ci { CXL_SPA_SW_CMD_RESUME, "RESUME" }, \ 5062306a36Sopenharmony_ci { CXL_SPA_SW_CMD_ADD, "ADD" }, \ 5162306a36Sopenharmony_ci { CXL_SPA_SW_CMD_UPDATE, "UPDATE" } 5262306a36Sopenharmony_ci 5362306a36Sopenharmony_ci#define AFU_COMMANDS \ 5462306a36Sopenharmony_ci { 0, "DISABLE" }, \ 5562306a36Sopenharmony_ci { CXL_AFU_Cntl_An_E, "ENABLE" }, \ 5662306a36Sopenharmony_ci { CXL_AFU_Cntl_An_RA, "RESET" } 5762306a36Sopenharmony_ci 5862306a36Sopenharmony_ci#define PSL_COMMANDS \ 5962306a36Sopenharmony_ci { CXL_PSL_SCNTL_An_Pc, "PURGE" }, \ 6062306a36Sopenharmony_ci { CXL_PSL_SCNTL_An_Sc, "SUSPEND" } 6162306a36Sopenharmony_ci 6262306a36Sopenharmony_ci 6362306a36Sopenharmony_ciDECLARE_EVENT_CLASS(cxl_pe_class, 6462306a36Sopenharmony_ci TP_PROTO(struct cxl_context *ctx), 6562306a36Sopenharmony_ci 6662306a36Sopenharmony_ci TP_ARGS(ctx), 6762306a36Sopenharmony_ci 6862306a36Sopenharmony_ci TP_STRUCT__entry( 6962306a36Sopenharmony_ci __field(u8, card) 7062306a36Sopenharmony_ci __field(u8, afu) 7162306a36Sopenharmony_ci __field(u16, pe) 7262306a36Sopenharmony_ci ), 7362306a36Sopenharmony_ci 7462306a36Sopenharmony_ci TP_fast_assign( 7562306a36Sopenharmony_ci __entry->card = ctx->afu->adapter->adapter_num; 7662306a36Sopenharmony_ci __entry->afu = ctx->afu->slice; 7762306a36Sopenharmony_ci __entry->pe = ctx->pe; 7862306a36Sopenharmony_ci ), 7962306a36Sopenharmony_ci 8062306a36Sopenharmony_ci TP_printk("afu%i.%i pe=%i", 8162306a36Sopenharmony_ci __entry->card, 8262306a36Sopenharmony_ci __entry->afu, 8362306a36Sopenharmony_ci __entry->pe 8462306a36Sopenharmony_ci ) 8562306a36Sopenharmony_ci); 8662306a36Sopenharmony_ci 8762306a36Sopenharmony_ci 8862306a36Sopenharmony_ciTRACE_EVENT(cxl_attach, 8962306a36Sopenharmony_ci TP_PROTO(struct cxl_context *ctx, u64 wed, s16 num_interrupts, u64 amr), 9062306a36Sopenharmony_ci 9162306a36Sopenharmony_ci TP_ARGS(ctx, wed, num_interrupts, amr), 9262306a36Sopenharmony_ci 9362306a36Sopenharmony_ci TP_STRUCT__entry( 9462306a36Sopenharmony_ci __field(u8, card) 9562306a36Sopenharmony_ci __field(u8, afu) 9662306a36Sopenharmony_ci __field(u16, pe) 9762306a36Sopenharmony_ci __field(pid_t, pid) 9862306a36Sopenharmony_ci __field(u64, wed) 9962306a36Sopenharmony_ci __field(u64, amr) 10062306a36Sopenharmony_ci __field(s16, num_interrupts) 10162306a36Sopenharmony_ci ), 10262306a36Sopenharmony_ci 10362306a36Sopenharmony_ci TP_fast_assign( 10462306a36Sopenharmony_ci __entry->card = ctx->afu->adapter->adapter_num; 10562306a36Sopenharmony_ci __entry->afu = ctx->afu->slice; 10662306a36Sopenharmony_ci __entry->pe = ctx->pe; 10762306a36Sopenharmony_ci __entry->pid = pid_nr(ctx->pid); 10862306a36Sopenharmony_ci __entry->wed = wed; 10962306a36Sopenharmony_ci __entry->amr = amr; 11062306a36Sopenharmony_ci __entry->num_interrupts = num_interrupts; 11162306a36Sopenharmony_ci ), 11262306a36Sopenharmony_ci 11362306a36Sopenharmony_ci TP_printk("afu%i.%i pid=%i pe=%i wed=0x%016llx irqs=%i amr=0x%llx", 11462306a36Sopenharmony_ci __entry->card, 11562306a36Sopenharmony_ci __entry->afu, 11662306a36Sopenharmony_ci __entry->pid, 11762306a36Sopenharmony_ci __entry->pe, 11862306a36Sopenharmony_ci __entry->wed, 11962306a36Sopenharmony_ci __entry->num_interrupts, 12062306a36Sopenharmony_ci __entry->amr 12162306a36Sopenharmony_ci ) 12262306a36Sopenharmony_ci); 12362306a36Sopenharmony_ci 12462306a36Sopenharmony_ciDEFINE_EVENT(cxl_pe_class, cxl_detach, 12562306a36Sopenharmony_ci TP_PROTO(struct cxl_context *ctx), 12662306a36Sopenharmony_ci TP_ARGS(ctx) 12762306a36Sopenharmony_ci); 12862306a36Sopenharmony_ci 12962306a36Sopenharmony_ciTRACE_EVENT(cxl_afu_irq, 13062306a36Sopenharmony_ci TP_PROTO(struct cxl_context *ctx, int afu_irq, int virq, irq_hw_number_t hwirq), 13162306a36Sopenharmony_ci 13262306a36Sopenharmony_ci TP_ARGS(ctx, afu_irq, virq, hwirq), 13362306a36Sopenharmony_ci 13462306a36Sopenharmony_ci TP_STRUCT__entry( 13562306a36Sopenharmony_ci __field(u8, card) 13662306a36Sopenharmony_ci __field(u8, afu) 13762306a36Sopenharmony_ci __field(u16, pe) 13862306a36Sopenharmony_ci __field(u16, afu_irq) 13962306a36Sopenharmony_ci __field(int, virq) 14062306a36Sopenharmony_ci __field(irq_hw_number_t, hwirq) 14162306a36Sopenharmony_ci ), 14262306a36Sopenharmony_ci 14362306a36Sopenharmony_ci TP_fast_assign( 14462306a36Sopenharmony_ci __entry->card = ctx->afu->adapter->adapter_num; 14562306a36Sopenharmony_ci __entry->afu = ctx->afu->slice; 14662306a36Sopenharmony_ci __entry->pe = ctx->pe; 14762306a36Sopenharmony_ci __entry->afu_irq = afu_irq; 14862306a36Sopenharmony_ci __entry->virq = virq; 14962306a36Sopenharmony_ci __entry->hwirq = hwirq; 15062306a36Sopenharmony_ci ), 15162306a36Sopenharmony_ci 15262306a36Sopenharmony_ci TP_printk("afu%i.%i pe=%i afu_irq=%i virq=%i hwirq=0x%lx", 15362306a36Sopenharmony_ci __entry->card, 15462306a36Sopenharmony_ci __entry->afu, 15562306a36Sopenharmony_ci __entry->pe, 15662306a36Sopenharmony_ci __entry->afu_irq, 15762306a36Sopenharmony_ci __entry->virq, 15862306a36Sopenharmony_ci __entry->hwirq 15962306a36Sopenharmony_ci ) 16062306a36Sopenharmony_ci); 16162306a36Sopenharmony_ci 16262306a36Sopenharmony_ciTRACE_EVENT(cxl_psl9_irq, 16362306a36Sopenharmony_ci TP_PROTO(struct cxl_context *ctx, int irq, u64 dsisr, u64 dar), 16462306a36Sopenharmony_ci 16562306a36Sopenharmony_ci TP_ARGS(ctx, irq, dsisr, dar), 16662306a36Sopenharmony_ci 16762306a36Sopenharmony_ci TP_STRUCT__entry( 16862306a36Sopenharmony_ci __field(u8, card) 16962306a36Sopenharmony_ci __field(u8, afu) 17062306a36Sopenharmony_ci __field(u16, pe) 17162306a36Sopenharmony_ci __field(int, irq) 17262306a36Sopenharmony_ci __field(u64, dsisr) 17362306a36Sopenharmony_ci __field(u64, dar) 17462306a36Sopenharmony_ci ), 17562306a36Sopenharmony_ci 17662306a36Sopenharmony_ci TP_fast_assign( 17762306a36Sopenharmony_ci __entry->card = ctx->afu->adapter->adapter_num; 17862306a36Sopenharmony_ci __entry->afu = ctx->afu->slice; 17962306a36Sopenharmony_ci __entry->pe = ctx->pe; 18062306a36Sopenharmony_ci __entry->irq = irq; 18162306a36Sopenharmony_ci __entry->dsisr = dsisr; 18262306a36Sopenharmony_ci __entry->dar = dar; 18362306a36Sopenharmony_ci ), 18462306a36Sopenharmony_ci 18562306a36Sopenharmony_ci TP_printk("afu%i.%i pe=%i irq=%i dsisr=0x%016llx dsisr=%s dar=0x%016llx", 18662306a36Sopenharmony_ci __entry->card, 18762306a36Sopenharmony_ci __entry->afu, 18862306a36Sopenharmony_ci __entry->pe, 18962306a36Sopenharmony_ci __entry->irq, 19062306a36Sopenharmony_ci __entry->dsisr, 19162306a36Sopenharmony_ci dsisr_psl9_flags(__entry->dsisr), 19262306a36Sopenharmony_ci __entry->dar 19362306a36Sopenharmony_ci ) 19462306a36Sopenharmony_ci); 19562306a36Sopenharmony_ci 19662306a36Sopenharmony_ciTRACE_EVENT(cxl_psl_irq, 19762306a36Sopenharmony_ci TP_PROTO(struct cxl_context *ctx, int irq, u64 dsisr, u64 dar), 19862306a36Sopenharmony_ci 19962306a36Sopenharmony_ci TP_ARGS(ctx, irq, dsisr, dar), 20062306a36Sopenharmony_ci 20162306a36Sopenharmony_ci TP_STRUCT__entry( 20262306a36Sopenharmony_ci __field(u8, card) 20362306a36Sopenharmony_ci __field(u8, afu) 20462306a36Sopenharmony_ci __field(u16, pe) 20562306a36Sopenharmony_ci __field(int, irq) 20662306a36Sopenharmony_ci __field(u64, dsisr) 20762306a36Sopenharmony_ci __field(u64, dar) 20862306a36Sopenharmony_ci ), 20962306a36Sopenharmony_ci 21062306a36Sopenharmony_ci TP_fast_assign( 21162306a36Sopenharmony_ci __entry->card = ctx->afu->adapter->adapter_num; 21262306a36Sopenharmony_ci __entry->afu = ctx->afu->slice; 21362306a36Sopenharmony_ci __entry->pe = ctx->pe; 21462306a36Sopenharmony_ci __entry->irq = irq; 21562306a36Sopenharmony_ci __entry->dsisr = dsisr; 21662306a36Sopenharmony_ci __entry->dar = dar; 21762306a36Sopenharmony_ci ), 21862306a36Sopenharmony_ci 21962306a36Sopenharmony_ci TP_printk("afu%i.%i pe=%i irq=%i dsisr=%s dar=0x%016llx", 22062306a36Sopenharmony_ci __entry->card, 22162306a36Sopenharmony_ci __entry->afu, 22262306a36Sopenharmony_ci __entry->pe, 22362306a36Sopenharmony_ci __entry->irq, 22462306a36Sopenharmony_ci __print_flags(__entry->dsisr, "|", DSISR_FLAGS), 22562306a36Sopenharmony_ci __entry->dar 22662306a36Sopenharmony_ci ) 22762306a36Sopenharmony_ci); 22862306a36Sopenharmony_ci 22962306a36Sopenharmony_ciTRACE_EVENT(cxl_psl_irq_ack, 23062306a36Sopenharmony_ci TP_PROTO(struct cxl_context *ctx, u64 tfc), 23162306a36Sopenharmony_ci 23262306a36Sopenharmony_ci TP_ARGS(ctx, tfc), 23362306a36Sopenharmony_ci 23462306a36Sopenharmony_ci TP_STRUCT__entry( 23562306a36Sopenharmony_ci __field(u8, card) 23662306a36Sopenharmony_ci __field(u8, afu) 23762306a36Sopenharmony_ci __field(u16, pe) 23862306a36Sopenharmony_ci __field(u64, tfc) 23962306a36Sopenharmony_ci ), 24062306a36Sopenharmony_ci 24162306a36Sopenharmony_ci TP_fast_assign( 24262306a36Sopenharmony_ci __entry->card = ctx->afu->adapter->adapter_num; 24362306a36Sopenharmony_ci __entry->afu = ctx->afu->slice; 24462306a36Sopenharmony_ci __entry->pe = ctx->pe; 24562306a36Sopenharmony_ci __entry->tfc = tfc; 24662306a36Sopenharmony_ci ), 24762306a36Sopenharmony_ci 24862306a36Sopenharmony_ci TP_printk("afu%i.%i pe=%i tfc=%s", 24962306a36Sopenharmony_ci __entry->card, 25062306a36Sopenharmony_ci __entry->afu, 25162306a36Sopenharmony_ci __entry->pe, 25262306a36Sopenharmony_ci __print_flags(__entry->tfc, "|", TFC_FLAGS) 25362306a36Sopenharmony_ci ) 25462306a36Sopenharmony_ci); 25562306a36Sopenharmony_ci 25662306a36Sopenharmony_ciTRACE_EVENT(cxl_ste_miss, 25762306a36Sopenharmony_ci TP_PROTO(struct cxl_context *ctx, u64 dar), 25862306a36Sopenharmony_ci 25962306a36Sopenharmony_ci TP_ARGS(ctx, dar), 26062306a36Sopenharmony_ci 26162306a36Sopenharmony_ci TP_STRUCT__entry( 26262306a36Sopenharmony_ci __field(u8, card) 26362306a36Sopenharmony_ci __field(u8, afu) 26462306a36Sopenharmony_ci __field(u16, pe) 26562306a36Sopenharmony_ci __field(u64, dar) 26662306a36Sopenharmony_ci ), 26762306a36Sopenharmony_ci 26862306a36Sopenharmony_ci TP_fast_assign( 26962306a36Sopenharmony_ci __entry->card = ctx->afu->adapter->adapter_num; 27062306a36Sopenharmony_ci __entry->afu = ctx->afu->slice; 27162306a36Sopenharmony_ci __entry->pe = ctx->pe; 27262306a36Sopenharmony_ci __entry->dar = dar; 27362306a36Sopenharmony_ci ), 27462306a36Sopenharmony_ci 27562306a36Sopenharmony_ci TP_printk("afu%i.%i pe=%i dar=0x%016llx", 27662306a36Sopenharmony_ci __entry->card, 27762306a36Sopenharmony_ci __entry->afu, 27862306a36Sopenharmony_ci __entry->pe, 27962306a36Sopenharmony_ci __entry->dar 28062306a36Sopenharmony_ci ) 28162306a36Sopenharmony_ci); 28262306a36Sopenharmony_ci 28362306a36Sopenharmony_ciTRACE_EVENT(cxl_ste_write, 28462306a36Sopenharmony_ci TP_PROTO(struct cxl_context *ctx, unsigned int idx, u64 e, u64 v), 28562306a36Sopenharmony_ci 28662306a36Sopenharmony_ci TP_ARGS(ctx, idx, e, v), 28762306a36Sopenharmony_ci 28862306a36Sopenharmony_ci TP_STRUCT__entry( 28962306a36Sopenharmony_ci __field(u8, card) 29062306a36Sopenharmony_ci __field(u8, afu) 29162306a36Sopenharmony_ci __field(u16, pe) 29262306a36Sopenharmony_ci __field(unsigned int, idx) 29362306a36Sopenharmony_ci __field(u64, e) 29462306a36Sopenharmony_ci __field(u64, v) 29562306a36Sopenharmony_ci ), 29662306a36Sopenharmony_ci 29762306a36Sopenharmony_ci TP_fast_assign( 29862306a36Sopenharmony_ci __entry->card = ctx->afu->adapter->adapter_num; 29962306a36Sopenharmony_ci __entry->afu = ctx->afu->slice; 30062306a36Sopenharmony_ci __entry->pe = ctx->pe; 30162306a36Sopenharmony_ci __entry->idx = idx; 30262306a36Sopenharmony_ci __entry->e = e; 30362306a36Sopenharmony_ci __entry->v = v; 30462306a36Sopenharmony_ci ), 30562306a36Sopenharmony_ci 30662306a36Sopenharmony_ci TP_printk("afu%i.%i pe=%i SSTE[%i] E=0x%016llx V=0x%016llx", 30762306a36Sopenharmony_ci __entry->card, 30862306a36Sopenharmony_ci __entry->afu, 30962306a36Sopenharmony_ci __entry->pe, 31062306a36Sopenharmony_ci __entry->idx, 31162306a36Sopenharmony_ci __entry->e, 31262306a36Sopenharmony_ci __entry->v 31362306a36Sopenharmony_ci ) 31462306a36Sopenharmony_ci); 31562306a36Sopenharmony_ci 31662306a36Sopenharmony_ciTRACE_EVENT(cxl_pte_miss, 31762306a36Sopenharmony_ci TP_PROTO(struct cxl_context *ctx, u64 dsisr, u64 dar), 31862306a36Sopenharmony_ci 31962306a36Sopenharmony_ci TP_ARGS(ctx, dsisr, dar), 32062306a36Sopenharmony_ci 32162306a36Sopenharmony_ci TP_STRUCT__entry( 32262306a36Sopenharmony_ci __field(u8, card) 32362306a36Sopenharmony_ci __field(u8, afu) 32462306a36Sopenharmony_ci __field(u16, pe) 32562306a36Sopenharmony_ci __field(u64, dsisr) 32662306a36Sopenharmony_ci __field(u64, dar) 32762306a36Sopenharmony_ci ), 32862306a36Sopenharmony_ci 32962306a36Sopenharmony_ci TP_fast_assign( 33062306a36Sopenharmony_ci __entry->card = ctx->afu->adapter->adapter_num; 33162306a36Sopenharmony_ci __entry->afu = ctx->afu->slice; 33262306a36Sopenharmony_ci __entry->pe = ctx->pe; 33362306a36Sopenharmony_ci __entry->dsisr = dsisr; 33462306a36Sopenharmony_ci __entry->dar = dar; 33562306a36Sopenharmony_ci ), 33662306a36Sopenharmony_ci 33762306a36Sopenharmony_ci TP_printk("afu%i.%i pe=%i dsisr=%s dar=0x%016llx", 33862306a36Sopenharmony_ci __entry->card, 33962306a36Sopenharmony_ci __entry->afu, 34062306a36Sopenharmony_ci __entry->pe, 34162306a36Sopenharmony_ci __print_flags(__entry->dsisr, "|", DSISR_FLAGS), 34262306a36Sopenharmony_ci __entry->dar 34362306a36Sopenharmony_ci ) 34462306a36Sopenharmony_ci); 34562306a36Sopenharmony_ci 34662306a36Sopenharmony_ciTRACE_EVENT(cxl_llcmd, 34762306a36Sopenharmony_ci TP_PROTO(struct cxl_context *ctx, u64 cmd), 34862306a36Sopenharmony_ci 34962306a36Sopenharmony_ci TP_ARGS(ctx, cmd), 35062306a36Sopenharmony_ci 35162306a36Sopenharmony_ci TP_STRUCT__entry( 35262306a36Sopenharmony_ci __field(u8, card) 35362306a36Sopenharmony_ci __field(u8, afu) 35462306a36Sopenharmony_ci __field(u16, pe) 35562306a36Sopenharmony_ci __field(u64, cmd) 35662306a36Sopenharmony_ci ), 35762306a36Sopenharmony_ci 35862306a36Sopenharmony_ci TP_fast_assign( 35962306a36Sopenharmony_ci __entry->card = ctx->afu->adapter->adapter_num; 36062306a36Sopenharmony_ci __entry->afu = ctx->afu->slice; 36162306a36Sopenharmony_ci __entry->pe = ctx->pe; 36262306a36Sopenharmony_ci __entry->cmd = cmd; 36362306a36Sopenharmony_ci ), 36462306a36Sopenharmony_ci 36562306a36Sopenharmony_ci TP_printk("afu%i.%i pe=%i cmd=%s", 36662306a36Sopenharmony_ci __entry->card, 36762306a36Sopenharmony_ci __entry->afu, 36862306a36Sopenharmony_ci __entry->pe, 36962306a36Sopenharmony_ci __print_symbolic_u64(__entry->cmd, LLCMD_NAMES) 37062306a36Sopenharmony_ci ) 37162306a36Sopenharmony_ci); 37262306a36Sopenharmony_ci 37362306a36Sopenharmony_ciTRACE_EVENT(cxl_llcmd_done, 37462306a36Sopenharmony_ci TP_PROTO(struct cxl_context *ctx, u64 cmd, int rc), 37562306a36Sopenharmony_ci 37662306a36Sopenharmony_ci TP_ARGS(ctx, cmd, rc), 37762306a36Sopenharmony_ci 37862306a36Sopenharmony_ci TP_STRUCT__entry( 37962306a36Sopenharmony_ci __field(u8, card) 38062306a36Sopenharmony_ci __field(u8, afu) 38162306a36Sopenharmony_ci __field(u16, pe) 38262306a36Sopenharmony_ci __field(u64, cmd) 38362306a36Sopenharmony_ci __field(int, rc) 38462306a36Sopenharmony_ci ), 38562306a36Sopenharmony_ci 38662306a36Sopenharmony_ci TP_fast_assign( 38762306a36Sopenharmony_ci __entry->card = ctx->afu->adapter->adapter_num; 38862306a36Sopenharmony_ci __entry->afu = ctx->afu->slice; 38962306a36Sopenharmony_ci __entry->pe = ctx->pe; 39062306a36Sopenharmony_ci __entry->rc = rc; 39162306a36Sopenharmony_ci __entry->cmd = cmd; 39262306a36Sopenharmony_ci ), 39362306a36Sopenharmony_ci 39462306a36Sopenharmony_ci TP_printk("afu%i.%i pe=%i cmd=%s rc=%i", 39562306a36Sopenharmony_ci __entry->card, 39662306a36Sopenharmony_ci __entry->afu, 39762306a36Sopenharmony_ci __entry->pe, 39862306a36Sopenharmony_ci __print_symbolic_u64(__entry->cmd, LLCMD_NAMES), 39962306a36Sopenharmony_ci __entry->rc 40062306a36Sopenharmony_ci ) 40162306a36Sopenharmony_ci); 40262306a36Sopenharmony_ci 40362306a36Sopenharmony_ciDECLARE_EVENT_CLASS(cxl_afu_psl_ctrl, 40462306a36Sopenharmony_ci TP_PROTO(struct cxl_afu *afu, u64 cmd), 40562306a36Sopenharmony_ci 40662306a36Sopenharmony_ci TP_ARGS(afu, cmd), 40762306a36Sopenharmony_ci 40862306a36Sopenharmony_ci TP_STRUCT__entry( 40962306a36Sopenharmony_ci __field(u8, card) 41062306a36Sopenharmony_ci __field(u8, afu) 41162306a36Sopenharmony_ci __field(u64, cmd) 41262306a36Sopenharmony_ci ), 41362306a36Sopenharmony_ci 41462306a36Sopenharmony_ci TP_fast_assign( 41562306a36Sopenharmony_ci __entry->card = afu->adapter->adapter_num; 41662306a36Sopenharmony_ci __entry->afu = afu->slice; 41762306a36Sopenharmony_ci __entry->cmd = cmd; 41862306a36Sopenharmony_ci ), 41962306a36Sopenharmony_ci 42062306a36Sopenharmony_ci TP_printk("afu%i.%i cmd=%s", 42162306a36Sopenharmony_ci __entry->card, 42262306a36Sopenharmony_ci __entry->afu, 42362306a36Sopenharmony_ci __print_symbolic_u64(__entry->cmd, AFU_COMMANDS) 42462306a36Sopenharmony_ci ) 42562306a36Sopenharmony_ci); 42662306a36Sopenharmony_ci 42762306a36Sopenharmony_ciDECLARE_EVENT_CLASS(cxl_afu_psl_ctrl_done, 42862306a36Sopenharmony_ci TP_PROTO(struct cxl_afu *afu, u64 cmd, int rc), 42962306a36Sopenharmony_ci 43062306a36Sopenharmony_ci TP_ARGS(afu, cmd, rc), 43162306a36Sopenharmony_ci 43262306a36Sopenharmony_ci TP_STRUCT__entry( 43362306a36Sopenharmony_ci __field(u8, card) 43462306a36Sopenharmony_ci __field(u8, afu) 43562306a36Sopenharmony_ci __field(u64, cmd) 43662306a36Sopenharmony_ci __field(int, rc) 43762306a36Sopenharmony_ci ), 43862306a36Sopenharmony_ci 43962306a36Sopenharmony_ci TP_fast_assign( 44062306a36Sopenharmony_ci __entry->card = afu->adapter->adapter_num; 44162306a36Sopenharmony_ci __entry->afu = afu->slice; 44262306a36Sopenharmony_ci __entry->rc = rc; 44362306a36Sopenharmony_ci __entry->cmd = cmd; 44462306a36Sopenharmony_ci ), 44562306a36Sopenharmony_ci 44662306a36Sopenharmony_ci TP_printk("afu%i.%i cmd=%s rc=%i", 44762306a36Sopenharmony_ci __entry->card, 44862306a36Sopenharmony_ci __entry->afu, 44962306a36Sopenharmony_ci __print_symbolic_u64(__entry->cmd, AFU_COMMANDS), 45062306a36Sopenharmony_ci __entry->rc 45162306a36Sopenharmony_ci ) 45262306a36Sopenharmony_ci); 45362306a36Sopenharmony_ci 45462306a36Sopenharmony_ciDEFINE_EVENT(cxl_afu_psl_ctrl, cxl_afu_ctrl, 45562306a36Sopenharmony_ci TP_PROTO(struct cxl_afu *afu, u64 cmd), 45662306a36Sopenharmony_ci TP_ARGS(afu, cmd) 45762306a36Sopenharmony_ci); 45862306a36Sopenharmony_ci 45962306a36Sopenharmony_ciDEFINE_EVENT(cxl_afu_psl_ctrl_done, cxl_afu_ctrl_done, 46062306a36Sopenharmony_ci TP_PROTO(struct cxl_afu *afu, u64 cmd, int rc), 46162306a36Sopenharmony_ci TP_ARGS(afu, cmd, rc) 46262306a36Sopenharmony_ci); 46362306a36Sopenharmony_ci 46462306a36Sopenharmony_ciDEFINE_EVENT_PRINT(cxl_afu_psl_ctrl, cxl_psl_ctrl, 46562306a36Sopenharmony_ci TP_PROTO(struct cxl_afu *afu, u64 cmd), 46662306a36Sopenharmony_ci TP_ARGS(afu, cmd), 46762306a36Sopenharmony_ci 46862306a36Sopenharmony_ci TP_printk("psl%i.%i cmd=%s", 46962306a36Sopenharmony_ci __entry->card, 47062306a36Sopenharmony_ci __entry->afu, 47162306a36Sopenharmony_ci __print_symbolic_u64(__entry->cmd, PSL_COMMANDS) 47262306a36Sopenharmony_ci ) 47362306a36Sopenharmony_ci); 47462306a36Sopenharmony_ci 47562306a36Sopenharmony_ciDEFINE_EVENT_PRINT(cxl_afu_psl_ctrl_done, cxl_psl_ctrl_done, 47662306a36Sopenharmony_ci TP_PROTO(struct cxl_afu *afu, u64 cmd, int rc), 47762306a36Sopenharmony_ci TP_ARGS(afu, cmd, rc), 47862306a36Sopenharmony_ci 47962306a36Sopenharmony_ci TP_printk("psl%i.%i cmd=%s rc=%i", 48062306a36Sopenharmony_ci __entry->card, 48162306a36Sopenharmony_ci __entry->afu, 48262306a36Sopenharmony_ci __print_symbolic_u64(__entry->cmd, PSL_COMMANDS), 48362306a36Sopenharmony_ci __entry->rc 48462306a36Sopenharmony_ci ) 48562306a36Sopenharmony_ci); 48662306a36Sopenharmony_ci 48762306a36Sopenharmony_ciDEFINE_EVENT(cxl_pe_class, cxl_slbia, 48862306a36Sopenharmony_ci TP_PROTO(struct cxl_context *ctx), 48962306a36Sopenharmony_ci TP_ARGS(ctx) 49062306a36Sopenharmony_ci); 49162306a36Sopenharmony_ci 49262306a36Sopenharmony_ciTRACE_EVENT(cxl_hcall, 49362306a36Sopenharmony_ci TP_PROTO(u64 unit_address, u64 process_token, long rc), 49462306a36Sopenharmony_ci 49562306a36Sopenharmony_ci TP_ARGS(unit_address, process_token, rc), 49662306a36Sopenharmony_ci 49762306a36Sopenharmony_ci TP_STRUCT__entry( 49862306a36Sopenharmony_ci __field(u64, unit_address) 49962306a36Sopenharmony_ci __field(u64, process_token) 50062306a36Sopenharmony_ci __field(long, rc) 50162306a36Sopenharmony_ci ), 50262306a36Sopenharmony_ci 50362306a36Sopenharmony_ci TP_fast_assign( 50462306a36Sopenharmony_ci __entry->unit_address = unit_address; 50562306a36Sopenharmony_ci __entry->process_token = process_token; 50662306a36Sopenharmony_ci __entry->rc = rc; 50762306a36Sopenharmony_ci ), 50862306a36Sopenharmony_ci 50962306a36Sopenharmony_ci TP_printk("unit_address=0x%016llx process_token=0x%016llx rc=%li", 51062306a36Sopenharmony_ci __entry->unit_address, 51162306a36Sopenharmony_ci __entry->process_token, 51262306a36Sopenharmony_ci __entry->rc 51362306a36Sopenharmony_ci ) 51462306a36Sopenharmony_ci); 51562306a36Sopenharmony_ci 51662306a36Sopenharmony_ciTRACE_EVENT(cxl_hcall_control, 51762306a36Sopenharmony_ci TP_PROTO(u64 unit_address, char *fct, u64 p1, u64 p2, u64 p3, 51862306a36Sopenharmony_ci u64 p4, unsigned long r4, long rc), 51962306a36Sopenharmony_ci 52062306a36Sopenharmony_ci TP_ARGS(unit_address, fct, p1, p2, p3, p4, r4, rc), 52162306a36Sopenharmony_ci 52262306a36Sopenharmony_ci TP_STRUCT__entry( 52362306a36Sopenharmony_ci __field(u64, unit_address) 52462306a36Sopenharmony_ci __field(char *, fct) 52562306a36Sopenharmony_ci __field(u64, p1) 52662306a36Sopenharmony_ci __field(u64, p2) 52762306a36Sopenharmony_ci __field(u64, p3) 52862306a36Sopenharmony_ci __field(u64, p4) 52962306a36Sopenharmony_ci __field(unsigned long, r4) 53062306a36Sopenharmony_ci __field(long, rc) 53162306a36Sopenharmony_ci ), 53262306a36Sopenharmony_ci 53362306a36Sopenharmony_ci TP_fast_assign( 53462306a36Sopenharmony_ci __entry->unit_address = unit_address; 53562306a36Sopenharmony_ci __entry->fct = fct; 53662306a36Sopenharmony_ci __entry->p1 = p1; 53762306a36Sopenharmony_ci __entry->p2 = p2; 53862306a36Sopenharmony_ci __entry->p3 = p3; 53962306a36Sopenharmony_ci __entry->p4 = p4; 54062306a36Sopenharmony_ci __entry->r4 = r4; 54162306a36Sopenharmony_ci __entry->rc = rc; 54262306a36Sopenharmony_ci ), 54362306a36Sopenharmony_ci 54462306a36Sopenharmony_ci TP_printk("unit_address=%#.16llx %s(%#llx, %#llx, %#llx, %#llx, R4: %#lx)): %li", 54562306a36Sopenharmony_ci __entry->unit_address, 54662306a36Sopenharmony_ci __entry->fct, 54762306a36Sopenharmony_ci __entry->p1, 54862306a36Sopenharmony_ci __entry->p2, 54962306a36Sopenharmony_ci __entry->p3, 55062306a36Sopenharmony_ci __entry->p4, 55162306a36Sopenharmony_ci __entry->r4, 55262306a36Sopenharmony_ci __entry->rc 55362306a36Sopenharmony_ci ) 55462306a36Sopenharmony_ci); 55562306a36Sopenharmony_ci 55662306a36Sopenharmony_ciTRACE_EVENT(cxl_hcall_attach, 55762306a36Sopenharmony_ci TP_PROTO(u64 unit_address, u64 phys_addr, unsigned long process_token, 55862306a36Sopenharmony_ci unsigned long mmio_addr, unsigned long mmio_size, long rc), 55962306a36Sopenharmony_ci 56062306a36Sopenharmony_ci TP_ARGS(unit_address, phys_addr, process_token, 56162306a36Sopenharmony_ci mmio_addr, mmio_size, rc), 56262306a36Sopenharmony_ci 56362306a36Sopenharmony_ci TP_STRUCT__entry( 56462306a36Sopenharmony_ci __field(u64, unit_address) 56562306a36Sopenharmony_ci __field(u64, phys_addr) 56662306a36Sopenharmony_ci __field(unsigned long, process_token) 56762306a36Sopenharmony_ci __field(unsigned long, mmio_addr) 56862306a36Sopenharmony_ci __field(unsigned long, mmio_size) 56962306a36Sopenharmony_ci __field(long, rc) 57062306a36Sopenharmony_ci ), 57162306a36Sopenharmony_ci 57262306a36Sopenharmony_ci TP_fast_assign( 57362306a36Sopenharmony_ci __entry->unit_address = unit_address; 57462306a36Sopenharmony_ci __entry->phys_addr = phys_addr; 57562306a36Sopenharmony_ci __entry->process_token = process_token; 57662306a36Sopenharmony_ci __entry->mmio_addr = mmio_addr; 57762306a36Sopenharmony_ci __entry->mmio_size = mmio_size; 57862306a36Sopenharmony_ci __entry->rc = rc; 57962306a36Sopenharmony_ci ), 58062306a36Sopenharmony_ci 58162306a36Sopenharmony_ci TP_printk("unit_address=0x%016llx phys_addr=0x%016llx " 58262306a36Sopenharmony_ci "token=0x%.8lx mmio_addr=0x%lx mmio_size=0x%lx rc=%li", 58362306a36Sopenharmony_ci __entry->unit_address, 58462306a36Sopenharmony_ci __entry->phys_addr, 58562306a36Sopenharmony_ci __entry->process_token, 58662306a36Sopenharmony_ci __entry->mmio_addr, 58762306a36Sopenharmony_ci __entry->mmio_size, 58862306a36Sopenharmony_ci __entry->rc 58962306a36Sopenharmony_ci ) 59062306a36Sopenharmony_ci); 59162306a36Sopenharmony_ci 59262306a36Sopenharmony_ciDEFINE_EVENT(cxl_hcall, cxl_hcall_detach, 59362306a36Sopenharmony_ci TP_PROTO(u64 unit_address, u64 process_token, long rc), 59462306a36Sopenharmony_ci TP_ARGS(unit_address, process_token, rc) 59562306a36Sopenharmony_ci); 59662306a36Sopenharmony_ci 59762306a36Sopenharmony_ciDEFINE_EVENT(cxl_hcall_control, cxl_hcall_control_function, 59862306a36Sopenharmony_ci TP_PROTO(u64 unit_address, char *fct, u64 p1, u64 p2, u64 p3, 59962306a36Sopenharmony_ci u64 p4, unsigned long r4, long rc), 60062306a36Sopenharmony_ci TP_ARGS(unit_address, fct, p1, p2, p3, p4, r4, rc) 60162306a36Sopenharmony_ci); 60262306a36Sopenharmony_ci 60362306a36Sopenharmony_ciDEFINE_EVENT(cxl_hcall, cxl_hcall_collect_int_info, 60462306a36Sopenharmony_ci TP_PROTO(u64 unit_address, u64 process_token, long rc), 60562306a36Sopenharmony_ci TP_ARGS(unit_address, process_token, rc) 60662306a36Sopenharmony_ci); 60762306a36Sopenharmony_ci 60862306a36Sopenharmony_ciTRACE_EVENT(cxl_hcall_control_faults, 60962306a36Sopenharmony_ci TP_PROTO(u64 unit_address, u64 process_token, 61062306a36Sopenharmony_ci u64 control_mask, u64 reset_mask, unsigned long r4, 61162306a36Sopenharmony_ci long rc), 61262306a36Sopenharmony_ci 61362306a36Sopenharmony_ci TP_ARGS(unit_address, process_token, 61462306a36Sopenharmony_ci control_mask, reset_mask, r4, rc), 61562306a36Sopenharmony_ci 61662306a36Sopenharmony_ci TP_STRUCT__entry( 61762306a36Sopenharmony_ci __field(u64, unit_address) 61862306a36Sopenharmony_ci __field(u64, process_token) 61962306a36Sopenharmony_ci __field(u64, control_mask) 62062306a36Sopenharmony_ci __field(u64, reset_mask) 62162306a36Sopenharmony_ci __field(unsigned long, r4) 62262306a36Sopenharmony_ci __field(long, rc) 62362306a36Sopenharmony_ci ), 62462306a36Sopenharmony_ci 62562306a36Sopenharmony_ci TP_fast_assign( 62662306a36Sopenharmony_ci __entry->unit_address = unit_address; 62762306a36Sopenharmony_ci __entry->process_token = process_token; 62862306a36Sopenharmony_ci __entry->control_mask = control_mask; 62962306a36Sopenharmony_ci __entry->reset_mask = reset_mask; 63062306a36Sopenharmony_ci __entry->r4 = r4; 63162306a36Sopenharmony_ci __entry->rc = rc; 63262306a36Sopenharmony_ci ), 63362306a36Sopenharmony_ci 63462306a36Sopenharmony_ci TP_printk("unit_address=0x%016llx process_token=0x%llx " 63562306a36Sopenharmony_ci "control_mask=%#llx reset_mask=%#llx r4=%#lx rc=%li", 63662306a36Sopenharmony_ci __entry->unit_address, 63762306a36Sopenharmony_ci __entry->process_token, 63862306a36Sopenharmony_ci __entry->control_mask, 63962306a36Sopenharmony_ci __entry->reset_mask, 64062306a36Sopenharmony_ci __entry->r4, 64162306a36Sopenharmony_ci __entry->rc 64262306a36Sopenharmony_ci ) 64362306a36Sopenharmony_ci); 64462306a36Sopenharmony_ci 64562306a36Sopenharmony_ciDEFINE_EVENT(cxl_hcall_control, cxl_hcall_control_facility, 64662306a36Sopenharmony_ci TP_PROTO(u64 unit_address, char *fct, u64 p1, u64 p2, u64 p3, 64762306a36Sopenharmony_ci u64 p4, unsigned long r4, long rc), 64862306a36Sopenharmony_ci TP_ARGS(unit_address, fct, p1, p2, p3, p4, r4, rc) 64962306a36Sopenharmony_ci); 65062306a36Sopenharmony_ci 65162306a36Sopenharmony_ciTRACE_EVENT(cxl_hcall_download_facility, 65262306a36Sopenharmony_ci TP_PROTO(u64 unit_address, char *fct, u64 list_address, u64 num, 65362306a36Sopenharmony_ci unsigned long r4, long rc), 65462306a36Sopenharmony_ci 65562306a36Sopenharmony_ci TP_ARGS(unit_address, fct, list_address, num, r4, rc), 65662306a36Sopenharmony_ci 65762306a36Sopenharmony_ci TP_STRUCT__entry( 65862306a36Sopenharmony_ci __field(u64, unit_address) 65962306a36Sopenharmony_ci __field(char *, fct) 66062306a36Sopenharmony_ci __field(u64, list_address) 66162306a36Sopenharmony_ci __field(u64, num) 66262306a36Sopenharmony_ci __field(unsigned long, r4) 66362306a36Sopenharmony_ci __field(long, rc) 66462306a36Sopenharmony_ci ), 66562306a36Sopenharmony_ci 66662306a36Sopenharmony_ci TP_fast_assign( 66762306a36Sopenharmony_ci __entry->unit_address = unit_address; 66862306a36Sopenharmony_ci __entry->fct = fct; 66962306a36Sopenharmony_ci __entry->list_address = list_address; 67062306a36Sopenharmony_ci __entry->num = num; 67162306a36Sopenharmony_ci __entry->r4 = r4; 67262306a36Sopenharmony_ci __entry->rc = rc; 67362306a36Sopenharmony_ci ), 67462306a36Sopenharmony_ci 67562306a36Sopenharmony_ci TP_printk("%#.16llx, %s(%#llx, %#llx), %#lx): %li", 67662306a36Sopenharmony_ci __entry->unit_address, 67762306a36Sopenharmony_ci __entry->fct, 67862306a36Sopenharmony_ci __entry->list_address, 67962306a36Sopenharmony_ci __entry->num, 68062306a36Sopenharmony_ci __entry->r4, 68162306a36Sopenharmony_ci __entry->rc 68262306a36Sopenharmony_ci ) 68362306a36Sopenharmony_ci); 68462306a36Sopenharmony_ci 68562306a36Sopenharmony_ci#endif /* _CXL_TRACE_H */ 68662306a36Sopenharmony_ci 68762306a36Sopenharmony_ci/* This part must be outside protection */ 68862306a36Sopenharmony_ci#undef TRACE_INCLUDE_PATH 68962306a36Sopenharmony_ci#define TRACE_INCLUDE_PATH . 69062306a36Sopenharmony_ci#define TRACE_INCLUDE_FILE trace 69162306a36Sopenharmony_ci#include <trace/define_trace.h> 692