brintos

brintos / linux-shallow public Read only

0
0
Text · 14.3 KiB · c474157 Raw
692 lines · c
1/* SPDX-License-Identifier: GPL-2.0-or-later */2/*3 * Copyright 2015 IBM Corp.4 */5 6#undef TRACE_SYSTEM7#define TRACE_SYSTEM cxl8 9#if !defined(_CXL_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)10#define _CXL_TRACE_H11 12#include <linux/tracepoint.h>13 14#include "cxl.h"15 16#define dsisr_psl9_flags(flags) \17	__print_flags(flags, "|", \18		{ CXL_PSL9_DSISR_An_CO_MASK,	"FR" }, \19		{ CXL_PSL9_DSISR_An_TF,		"TF" }, \20		{ CXL_PSL9_DSISR_An_PE,		"PE" }, \21		{ CXL_PSL9_DSISR_An_AE,		"AE" }, \22		{ CXL_PSL9_DSISR_An_OC,		"OC" }, \23		{ CXL_PSL9_DSISR_An_S,		"S" })24 25#define DSISR_FLAGS \26	{ CXL_PSL_DSISR_An_DS,	"DS" }, \27	{ CXL_PSL_DSISR_An_DM,	"DM" }, \28	{ CXL_PSL_DSISR_An_ST,	"ST" }, \29	{ CXL_PSL_DSISR_An_UR,	"UR" }, \30	{ CXL_PSL_DSISR_An_PE,	"PE" }, \31	{ CXL_PSL_DSISR_An_AE,	"AE" }, \32	{ CXL_PSL_DSISR_An_OC,	"OC" }, \33	{ CXL_PSL_DSISR_An_M,	"M" }, \34	{ CXL_PSL_DSISR_An_P,	"P" }, \35	{ CXL_PSL_DSISR_An_A,	"A" }, \36	{ CXL_PSL_DSISR_An_S,	"S" }, \37	{ CXL_PSL_DSISR_An_K,	"K" }38 39#define TFC_FLAGS \40	{ CXL_PSL_TFC_An_A,	"A" }, \41	{ CXL_PSL_TFC_An_C,	"C" }, \42	{ CXL_PSL_TFC_An_AE,	"AE" }, \43	{ CXL_PSL_TFC_An_R,	"R" }44 45#define LLCMD_NAMES \46	{ CXL_SPA_SW_CMD_TERMINATE,	"TERMINATE" }, \47	{ CXL_SPA_SW_CMD_REMOVE,	"REMOVE" }, \48	{ CXL_SPA_SW_CMD_SUSPEND,	"SUSPEND" }, \49	{ CXL_SPA_SW_CMD_RESUME,	"RESUME" }, \50	{ CXL_SPA_SW_CMD_ADD,		"ADD" }, \51	{ CXL_SPA_SW_CMD_UPDATE,	"UPDATE" }52 53#define AFU_COMMANDS \54	{ 0,			"DISABLE" }, \55	{ CXL_AFU_Cntl_An_E,	"ENABLE" }, \56	{ CXL_AFU_Cntl_An_RA,	"RESET" }57 58#define PSL_COMMANDS \59	{ CXL_PSL_SCNTL_An_Pc,	"PURGE" }, \60	{ CXL_PSL_SCNTL_An_Sc,	"SUSPEND" }61 62 63DECLARE_EVENT_CLASS(cxl_pe_class,64	TP_PROTO(struct cxl_context *ctx),65 66	TP_ARGS(ctx),67 68	TP_STRUCT__entry(69		__field(u8, card)70		__field(u8, afu)71		__field(u16, pe)72	),73 74	TP_fast_assign(75		__entry->card = ctx->afu->adapter->adapter_num;76		__entry->afu = ctx->afu->slice;77		__entry->pe = ctx->pe;78	),79 80	TP_printk("afu%i.%i pe=%i",81		__entry->card,82		__entry->afu,83		__entry->pe84	)85);86 87 88TRACE_EVENT(cxl_attach,89	TP_PROTO(struct cxl_context *ctx, u64 wed, s16 num_interrupts, u64 amr),90 91	TP_ARGS(ctx, wed, num_interrupts, amr),92 93	TP_STRUCT__entry(94		__field(u8, card)95		__field(u8, afu)96		__field(u16, pe)97		__field(pid_t, pid)98		__field(u64, wed)99		__field(u64, amr)100		__field(s16, num_interrupts)101	),102 103	TP_fast_assign(104		__entry->card = ctx->afu->adapter->adapter_num;105		__entry->afu = ctx->afu->slice;106		__entry->pe = ctx->pe;107		__entry->pid = pid_nr(ctx->pid);108		__entry->wed = wed;109		__entry->amr = amr;110		__entry->num_interrupts = num_interrupts;111	),112 113	TP_printk("afu%i.%i pid=%i pe=%i wed=0x%016llx irqs=%i amr=0x%llx",114		__entry->card,115		__entry->afu,116		__entry->pid,117		__entry->pe,118		__entry->wed,119		__entry->num_interrupts,120		__entry->amr121	)122);123 124DEFINE_EVENT(cxl_pe_class, cxl_detach,125	TP_PROTO(struct cxl_context *ctx),126	TP_ARGS(ctx)127);128 129TRACE_EVENT(cxl_afu_irq,130	TP_PROTO(struct cxl_context *ctx, int afu_irq, int virq, irq_hw_number_t hwirq),131 132	TP_ARGS(ctx, afu_irq, virq, hwirq),133 134	TP_STRUCT__entry(135		__field(u8, card)136		__field(u8, afu)137		__field(u16, pe)138		__field(u16, afu_irq)139		__field(int, virq)140		__field(irq_hw_number_t, hwirq)141	),142 143	TP_fast_assign(144		__entry->card = ctx->afu->adapter->adapter_num;145		__entry->afu = ctx->afu->slice;146		__entry->pe = ctx->pe;147		__entry->afu_irq = afu_irq;148		__entry->virq = virq;149		__entry->hwirq = hwirq;150	),151 152	TP_printk("afu%i.%i pe=%i afu_irq=%i virq=%i hwirq=0x%lx",153		__entry->card,154		__entry->afu,155		__entry->pe,156		__entry->afu_irq,157		__entry->virq,158		__entry->hwirq159	)160);161 162TRACE_EVENT(cxl_psl9_irq,163	TP_PROTO(struct cxl_context *ctx, int irq, u64 dsisr, u64 dar),164 165	TP_ARGS(ctx, irq, dsisr, dar),166 167	TP_STRUCT__entry(168		__field(u8, card)169		__field(u8, afu)170		__field(u16, pe)171		__field(int, irq)172		__field(u64, dsisr)173		__field(u64, dar)174	),175 176	TP_fast_assign(177		__entry->card = ctx->afu->adapter->adapter_num;178		__entry->afu = ctx->afu->slice;179		__entry->pe = ctx->pe;180		__entry->irq = irq;181		__entry->dsisr = dsisr;182		__entry->dar = dar;183	),184 185	TP_printk("afu%i.%i pe=%i irq=%i dsisr=0x%016llx dsisr=%s dar=0x%016llx",186		__entry->card,187		__entry->afu,188		__entry->pe,189		__entry->irq,190		__entry->dsisr,191		dsisr_psl9_flags(__entry->dsisr),192		__entry->dar193	)194);195 196TRACE_EVENT(cxl_psl_irq,197	TP_PROTO(struct cxl_context *ctx, int irq, u64 dsisr, u64 dar),198 199	TP_ARGS(ctx, irq, dsisr, dar),200 201	TP_STRUCT__entry(202		__field(u8, card)203		__field(u8, afu)204		__field(u16, pe)205		__field(int, irq)206		__field(u64, dsisr)207		__field(u64, dar)208	),209 210	TP_fast_assign(211		__entry->card = ctx->afu->adapter->adapter_num;212		__entry->afu = ctx->afu->slice;213		__entry->pe = ctx->pe;214		__entry->irq = irq;215		__entry->dsisr = dsisr;216		__entry->dar = dar;217	),218 219	TP_printk("afu%i.%i pe=%i irq=%i dsisr=%s dar=0x%016llx",220		__entry->card,221		__entry->afu,222		__entry->pe,223		__entry->irq,224		__print_flags(__entry->dsisr, "|", DSISR_FLAGS),225		__entry->dar226	)227);228 229TRACE_EVENT(cxl_psl_irq_ack,230	TP_PROTO(struct cxl_context *ctx, u64 tfc),231 232	TP_ARGS(ctx, tfc),233 234	TP_STRUCT__entry(235		__field(u8, card)236		__field(u8, afu)237		__field(u16, pe)238		__field(u64, tfc)239	),240 241	TP_fast_assign(242		__entry->card = ctx->afu->adapter->adapter_num;243		__entry->afu = ctx->afu->slice;244		__entry->pe = ctx->pe;245		__entry->tfc = tfc;246	),247 248	TP_printk("afu%i.%i pe=%i tfc=%s",249		__entry->card,250		__entry->afu,251		__entry->pe,252		__print_flags(__entry->tfc, "|", TFC_FLAGS)253	)254);255 256TRACE_EVENT(cxl_ste_miss,257	TP_PROTO(struct cxl_context *ctx, u64 dar),258 259	TP_ARGS(ctx, dar),260 261	TP_STRUCT__entry(262		__field(u8, card)263		__field(u8, afu)264		__field(u16, pe)265		__field(u64, dar)266	),267 268	TP_fast_assign(269		__entry->card = ctx->afu->adapter->adapter_num;270		__entry->afu = ctx->afu->slice;271		__entry->pe = ctx->pe;272		__entry->dar = dar;273	),274 275	TP_printk("afu%i.%i pe=%i dar=0x%016llx",276		__entry->card,277		__entry->afu,278		__entry->pe,279		__entry->dar280	)281);282 283TRACE_EVENT(cxl_ste_write,284	TP_PROTO(struct cxl_context *ctx, unsigned int idx, u64 e, u64 v),285 286	TP_ARGS(ctx, idx, e, v),287 288	TP_STRUCT__entry(289		__field(u8, card)290		__field(u8, afu)291		__field(u16, pe)292		__field(unsigned int, idx)293		__field(u64, e)294		__field(u64, v)295	),296 297	TP_fast_assign(298		__entry->card = ctx->afu->adapter->adapter_num;299		__entry->afu = ctx->afu->slice;300		__entry->pe = ctx->pe;301		__entry->idx = idx;302		__entry->e = e;303		__entry->v = v;304	),305 306	TP_printk("afu%i.%i pe=%i SSTE[%i] E=0x%016llx V=0x%016llx",307		__entry->card,308		__entry->afu,309		__entry->pe,310		__entry->idx,311		__entry->e,312		__entry->v313	)314);315 316TRACE_EVENT(cxl_pte_miss,317	TP_PROTO(struct cxl_context *ctx, u64 dsisr, u64 dar),318 319	TP_ARGS(ctx, dsisr, dar),320 321	TP_STRUCT__entry(322		__field(u8, card)323		__field(u8, afu)324		__field(u16, pe)325		__field(u64, dsisr)326		__field(u64, dar)327	),328 329	TP_fast_assign(330		__entry->card = ctx->afu->adapter->adapter_num;331		__entry->afu = ctx->afu->slice;332		__entry->pe = ctx->pe;333		__entry->dsisr = dsisr;334		__entry->dar = dar;335	),336 337	TP_printk("afu%i.%i pe=%i dsisr=%s dar=0x%016llx",338		__entry->card,339		__entry->afu,340		__entry->pe,341		__print_flags(__entry->dsisr, "|", DSISR_FLAGS),342		__entry->dar343	)344);345 346TRACE_EVENT(cxl_llcmd,347	TP_PROTO(struct cxl_context *ctx, u64 cmd),348 349	TP_ARGS(ctx, cmd),350 351	TP_STRUCT__entry(352		__field(u8, card)353		__field(u8, afu)354		__field(u16, pe)355		__field(u64, cmd)356	),357 358	TP_fast_assign(359		__entry->card = ctx->afu->adapter->adapter_num;360		__entry->afu = ctx->afu->slice;361		__entry->pe = ctx->pe;362		__entry->cmd = cmd;363	),364 365	TP_printk("afu%i.%i pe=%i cmd=%s",366		__entry->card,367		__entry->afu,368		__entry->pe,369		__print_symbolic_u64(__entry->cmd, LLCMD_NAMES)370	)371);372 373TRACE_EVENT(cxl_llcmd_done,374	TP_PROTO(struct cxl_context *ctx, u64 cmd, int rc),375 376	TP_ARGS(ctx, cmd, rc),377 378	TP_STRUCT__entry(379		__field(u8, card)380		__field(u8, afu)381		__field(u16, pe)382		__field(u64, cmd)383		__field(int, rc)384	),385 386	TP_fast_assign(387		__entry->card = ctx->afu->adapter->adapter_num;388		__entry->afu = ctx->afu->slice;389		__entry->pe = ctx->pe;390		__entry->rc = rc;391		__entry->cmd = cmd;392	),393 394	TP_printk("afu%i.%i pe=%i cmd=%s rc=%i",395		__entry->card,396		__entry->afu,397		__entry->pe,398		__print_symbolic_u64(__entry->cmd, LLCMD_NAMES),399		__entry->rc400	)401);402 403DECLARE_EVENT_CLASS(cxl_afu_psl_ctrl,404	TP_PROTO(struct cxl_afu *afu, u64 cmd),405 406	TP_ARGS(afu, cmd),407 408	TP_STRUCT__entry(409		__field(u8, card)410		__field(u8, afu)411		__field(u64, cmd)412	),413 414	TP_fast_assign(415		__entry->card = afu->adapter->adapter_num;416		__entry->afu = afu->slice;417		__entry->cmd = cmd;418	),419 420	TP_printk("afu%i.%i cmd=%s",421		__entry->card,422		__entry->afu,423		__print_symbolic_u64(__entry->cmd, AFU_COMMANDS)424	)425);426 427DECLARE_EVENT_CLASS(cxl_afu_psl_ctrl_done,428	TP_PROTO(struct cxl_afu *afu, u64 cmd, int rc),429 430	TP_ARGS(afu, cmd, rc),431 432	TP_STRUCT__entry(433		__field(u8, card)434		__field(u8, afu)435		__field(u64, cmd)436		__field(int, rc)437	),438 439	TP_fast_assign(440		__entry->card = afu->adapter->adapter_num;441		__entry->afu = afu->slice;442		__entry->rc = rc;443		__entry->cmd = cmd;444	),445 446	TP_printk("afu%i.%i cmd=%s rc=%i",447		__entry->card,448		__entry->afu,449		__print_symbolic_u64(__entry->cmd, AFU_COMMANDS),450		__entry->rc451	)452);453 454DEFINE_EVENT(cxl_afu_psl_ctrl, cxl_afu_ctrl,455	TP_PROTO(struct cxl_afu *afu, u64 cmd),456	TP_ARGS(afu, cmd)457);458 459DEFINE_EVENT(cxl_afu_psl_ctrl_done, cxl_afu_ctrl_done,460	TP_PROTO(struct cxl_afu *afu, u64 cmd, int rc),461	TP_ARGS(afu, cmd, rc)462);463 464DEFINE_EVENT_PRINT(cxl_afu_psl_ctrl, cxl_psl_ctrl,465	TP_PROTO(struct cxl_afu *afu, u64 cmd),466	TP_ARGS(afu, cmd),467 468	TP_printk("psl%i.%i cmd=%s",469		__entry->card,470		__entry->afu,471		__print_symbolic_u64(__entry->cmd, PSL_COMMANDS)472	)473);474 475DEFINE_EVENT_PRINT(cxl_afu_psl_ctrl_done, cxl_psl_ctrl_done,476	TP_PROTO(struct cxl_afu *afu, u64 cmd, int rc),477	TP_ARGS(afu, cmd, rc),478 479	TP_printk("psl%i.%i cmd=%s rc=%i",480		__entry->card,481		__entry->afu,482		__print_symbolic_u64(__entry->cmd, PSL_COMMANDS),483		__entry->rc484	)485);486 487DEFINE_EVENT(cxl_pe_class, cxl_slbia,488	TP_PROTO(struct cxl_context *ctx),489	TP_ARGS(ctx)490);491 492TRACE_EVENT(cxl_hcall,493	TP_PROTO(u64 unit_address, u64 process_token, long rc),494 495	TP_ARGS(unit_address, process_token, rc),496 497	TP_STRUCT__entry(498		__field(u64, unit_address)499		__field(u64, process_token)500		__field(long, rc)501	),502 503	TP_fast_assign(504		__entry->unit_address = unit_address;505		__entry->process_token = process_token;506		__entry->rc = rc;507	),508 509	TP_printk("unit_address=0x%016llx process_token=0x%016llx rc=%li",510		__entry->unit_address,511		__entry->process_token,512		__entry->rc513	)514);515 516TRACE_EVENT(cxl_hcall_control,517	TP_PROTO(u64 unit_address, char *fct, u64 p1, u64 p2, u64 p3,518	u64 p4, unsigned long r4, long rc),519 520	TP_ARGS(unit_address, fct, p1, p2, p3, p4, r4, rc),521 522	TP_STRUCT__entry(523		__field(u64, unit_address)524		__field(char *, fct)525		__field(u64, p1)526		__field(u64, p2)527		__field(u64, p3)528		__field(u64, p4)529		__field(unsigned long, r4)530		__field(long, rc)531	),532 533	TP_fast_assign(534		__entry->unit_address = unit_address;535		__entry->fct = fct;536		__entry->p1 = p1;537		__entry->p2 = p2;538		__entry->p3 = p3;539		__entry->p4 = p4;540		__entry->r4 = r4;541		__entry->rc = rc;542	),543 544	TP_printk("unit_address=%#.16llx %s(%#llx, %#llx, %#llx, %#llx, R4: %#lx)): %li",545		__entry->unit_address,546		__entry->fct,547		__entry->p1,548		__entry->p2,549		__entry->p3,550		__entry->p4,551		__entry->r4,552		__entry->rc553	)554);555 556TRACE_EVENT(cxl_hcall_attach,557	TP_PROTO(u64 unit_address, u64 phys_addr, unsigned long process_token,558		unsigned long mmio_addr, unsigned long mmio_size, long rc),559 560	TP_ARGS(unit_address, phys_addr, process_token,561		mmio_addr, mmio_size, rc),562 563	TP_STRUCT__entry(564		__field(u64, unit_address)565		__field(u64, phys_addr)566		__field(unsigned long, process_token)567		__field(unsigned long, mmio_addr)568		__field(unsigned long, mmio_size)569		__field(long, rc)570	),571 572	TP_fast_assign(573		__entry->unit_address = unit_address;574		__entry->phys_addr = phys_addr;575		__entry->process_token = process_token;576		__entry->mmio_addr = mmio_addr;577		__entry->mmio_size = mmio_size;578		__entry->rc = rc;579	),580 581	TP_printk("unit_address=0x%016llx phys_addr=0x%016llx "582		"token=0x%.8lx mmio_addr=0x%lx mmio_size=0x%lx rc=%li",583		__entry->unit_address,584		__entry->phys_addr,585		__entry->process_token,586		__entry->mmio_addr,587		__entry->mmio_size,588		__entry->rc589	)590);591 592DEFINE_EVENT(cxl_hcall, cxl_hcall_detach,593	TP_PROTO(u64 unit_address, u64 process_token, long rc),594	TP_ARGS(unit_address, process_token, rc)595);596 597DEFINE_EVENT(cxl_hcall_control, cxl_hcall_control_function,598	TP_PROTO(u64 unit_address, char *fct, u64 p1, u64 p2, u64 p3,599	u64 p4, unsigned long r4, long rc),600	TP_ARGS(unit_address, fct, p1, p2, p3, p4, r4, rc)601);602 603DEFINE_EVENT(cxl_hcall, cxl_hcall_collect_int_info,604	TP_PROTO(u64 unit_address, u64 process_token, long rc),605	TP_ARGS(unit_address, process_token, rc)606);607 608TRACE_EVENT(cxl_hcall_control_faults,609	TP_PROTO(u64 unit_address, u64 process_token,610		u64 control_mask, u64 reset_mask, unsigned long r4,611		long rc),612 613	TP_ARGS(unit_address, process_token,614		control_mask, reset_mask, r4, rc),615 616	TP_STRUCT__entry(617		__field(u64, unit_address)618		__field(u64, process_token)619		__field(u64, control_mask)620		__field(u64, reset_mask)621		__field(unsigned long, r4)622		__field(long, rc)623	),624 625	TP_fast_assign(626		__entry->unit_address = unit_address;627		__entry->process_token = process_token;628		__entry->control_mask = control_mask;629		__entry->reset_mask = reset_mask;630		__entry->r4 = r4;631		__entry->rc = rc;632	),633 634	TP_printk("unit_address=0x%016llx process_token=0x%llx "635		"control_mask=%#llx reset_mask=%#llx r4=%#lx rc=%li",636		__entry->unit_address,637		__entry->process_token,638		__entry->control_mask,639		__entry->reset_mask,640		__entry->r4,641		__entry->rc642	)643);644 645DEFINE_EVENT(cxl_hcall_control, cxl_hcall_control_facility,646	TP_PROTO(u64 unit_address, char *fct, u64 p1, u64 p2, u64 p3,647	u64 p4, unsigned long r4, long rc),648	TP_ARGS(unit_address, fct, p1, p2, p3, p4, r4, rc)649);650 651TRACE_EVENT(cxl_hcall_download_facility,652	TP_PROTO(u64 unit_address, char *fct, u64 list_address, u64 num,653	unsigned long r4, long rc),654 655	TP_ARGS(unit_address, fct, list_address, num, r4, rc),656 657	TP_STRUCT__entry(658		__field(u64, unit_address)659		__field(char *, fct)660		__field(u64, list_address)661		__field(u64, num)662		__field(unsigned long, r4)663		__field(long, rc)664	),665 666	TP_fast_assign(667		__entry->unit_address = unit_address;668		__entry->fct = fct;669		__entry->list_address = list_address;670		__entry->num = num;671		__entry->r4 = r4;672		__entry->rc = rc;673	),674 675	TP_printk("%#.16llx, %s(%#llx, %#llx), %#lx): %li",676		__entry->unit_address,677		__entry->fct,678		__entry->list_address,679		__entry->num,680		__entry->r4,681		__entry->rc682	)683);684 685#endif /* _CXL_TRACE_H */686 687/* This part must be outside protection */688#undef TRACE_INCLUDE_PATH689#define TRACE_INCLUDE_PATH .690#define TRACE_INCLUDE_FILE trace691#include <trace/define_trace.h>692