xref: /openbmc/linux/drivers/tee/optee/optee_trace.h (revision 0101947d)
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