1*0101947dSJisheng Zhang /* SPDX-License-Identifier: GPL-2.0 */ 2*0101947dSJisheng Zhang /* 3*0101947dSJisheng Zhang * optee trace points 4*0101947dSJisheng Zhang * 5*0101947dSJisheng Zhang * Copyright (C) 2021 Synaptics Incorporated 6*0101947dSJisheng Zhang * Author: Jisheng Zhang <jszhang@kernel.org> 7*0101947dSJisheng Zhang */ 8*0101947dSJisheng Zhang 9*0101947dSJisheng Zhang #undef TRACE_SYSTEM 10*0101947dSJisheng Zhang #define TRACE_SYSTEM optee 11*0101947dSJisheng Zhang 12*0101947dSJisheng Zhang #if !defined(_TRACE_OPTEE_H) || defined(TRACE_HEADER_MULTI_READ) 13*0101947dSJisheng Zhang #define _TRACE_OPTEE_H 14*0101947dSJisheng Zhang 15*0101947dSJisheng Zhang #include <linux/arm-smccc.h> 16*0101947dSJisheng Zhang #include <linux/tracepoint.h> 17*0101947dSJisheng Zhang #include "optee_private.h" 18*0101947dSJisheng Zhang 19*0101947dSJisheng Zhang TRACE_EVENT(optee_invoke_fn_begin, 20*0101947dSJisheng Zhang TP_PROTO(struct optee_rpc_param *param), 21*0101947dSJisheng Zhang TP_ARGS(param), 22*0101947dSJisheng Zhang 23*0101947dSJisheng Zhang TP_STRUCT__entry( 24*0101947dSJisheng Zhang __field(void *, param) 25*0101947dSJisheng Zhang __array(u32, args, 8) 26*0101947dSJisheng Zhang ), 27*0101947dSJisheng Zhang 28*0101947dSJisheng Zhang TP_fast_assign( 29*0101947dSJisheng Zhang __entry->param = param; 30*0101947dSJisheng Zhang BUILD_BUG_ON(sizeof(*param) < sizeof(__entry->args)); 31*0101947dSJisheng Zhang memcpy(__entry->args, param, sizeof(__entry->args)); 32*0101947dSJisheng Zhang ), 33*0101947dSJisheng Zhang 34*0101947dSJisheng Zhang TP_printk("param=%p (%x, %x, %x, %x, %x, %x, %x, %x)", __entry->param, 35*0101947dSJisheng Zhang __entry->args[0], __entry->args[1], __entry->args[2], 36*0101947dSJisheng Zhang __entry->args[3], __entry->args[4], __entry->args[5], 37*0101947dSJisheng Zhang __entry->args[6], __entry->args[7]) 38*0101947dSJisheng Zhang ); 39*0101947dSJisheng Zhang 40*0101947dSJisheng Zhang TRACE_EVENT(optee_invoke_fn_end, 41*0101947dSJisheng Zhang TP_PROTO(struct optee_rpc_param *param, struct arm_smccc_res *res), 42*0101947dSJisheng Zhang TP_ARGS(param, res), 43*0101947dSJisheng Zhang 44*0101947dSJisheng Zhang TP_STRUCT__entry( 45*0101947dSJisheng Zhang __field(void *, param) 46*0101947dSJisheng Zhang __array(unsigned long, rets, 4) 47*0101947dSJisheng Zhang ), 48*0101947dSJisheng Zhang 49*0101947dSJisheng Zhang TP_fast_assign( 50*0101947dSJisheng Zhang __entry->param = param; 51*0101947dSJisheng Zhang BUILD_BUG_ON(sizeof(*res) < sizeof(__entry->rets)); 52*0101947dSJisheng Zhang memcpy(__entry->rets, res, sizeof(__entry->rets)); 53*0101947dSJisheng Zhang ), 54*0101947dSJisheng Zhang 55*0101947dSJisheng Zhang TP_printk("param=%p ret (%lx, %lx, %lx, %lx)", __entry->param, 56*0101947dSJisheng Zhang __entry->rets[0], __entry->rets[1], __entry->rets[2], 57*0101947dSJisheng Zhang __entry->rets[3]) 58*0101947dSJisheng Zhang ); 59*0101947dSJisheng Zhang #endif /* _TRACE_OPTEE_H */ 60*0101947dSJisheng Zhang 61*0101947dSJisheng Zhang #undef TRACE_INCLUDE_PATH 62*0101947dSJisheng Zhang #define TRACE_INCLUDE_PATH . 63*0101947dSJisheng Zhang #undef TRACE_INCLUDE_FILE 64*0101947dSJisheng Zhang #define TRACE_INCLUDE_FILE optee_trace 65*0101947dSJisheng Zhang 66*0101947dSJisheng Zhang /* This part must be outside protection */ 67*0101947dSJisheng Zhang #include <trace/define_trace.h> 68