1 /* SPDX-License-Identifier: GPL-2.0 */
2 #undef TRACE_SYSTEM
3 #define TRACE_SYSTEM thp
4 
5 #if !defined(_TRACE_THP_H) || defined(TRACE_HEADER_MULTI_READ)
6 #define _TRACE_THP_H
7 
8 #include <linux/types.h>
9 #include <linux/tracepoint.h>
10 
11 #ifdef CONFIG_PPC_BOOK3S_64
12 DECLARE_EVENT_CLASS(hugepage_set,
13 
14 	    TP_PROTO(unsigned long addr, unsigned long pte),
15 	    TP_ARGS(addr, pte),
16 	    TP_STRUCT__entry(
17 		    __field(unsigned long, addr)
18 		    __field(unsigned long, pte)
19 		    ),
20 
21 	    TP_fast_assign(
22 		    __entry->addr = addr;
23 		    __entry->pte = pte;
24 		    ),
25 
26 	    TP_printk("Set page table entry with 0x%lx with 0x%lx", __entry->addr, __entry->pte)
27 );
28 
29 DEFINE_EVENT(hugepage_set, hugepage_set_pmd,
30 	    TP_PROTO(unsigned long addr, unsigned long pmd),
31 	    TP_ARGS(addr, pmd)
32 );
33 
34 DEFINE_EVENT(hugepage_set, hugepage_set_pud,
35 	    TP_PROTO(unsigned long addr, unsigned long pud),
36 	    TP_ARGS(addr, pud)
37 );
38 
39 DECLARE_EVENT_CLASS(hugepage_update,
40 
41 	    TP_PROTO(unsigned long addr, unsigned long pte, unsigned long clr, unsigned long set),
42 	    TP_ARGS(addr, pte, clr, set),
43 	    TP_STRUCT__entry(
44 		    __field(unsigned long, addr)
45 		    __field(unsigned long, pte)
46 		    __field(unsigned long, clr)
47 		    __field(unsigned long, set)
48 		    ),
49 
50 	    TP_fast_assign(
51 		    __entry->addr = addr;
52 		    __entry->pte = pte;
53 		    __entry->clr = clr;
54 		    __entry->set = set;
55 
56 		    ),
57 
58 	    TP_printk("hugepage update at addr 0x%lx and pte = 0x%lx clr = 0x%lx, set = 0x%lx", __entry->addr, __entry->pte, __entry->clr, __entry->set)
59 );
60 
61 DEFINE_EVENT(hugepage_update, hugepage_update_pmd,
62 	    TP_PROTO(unsigned long addr, unsigned long pmd, unsigned long clr, unsigned long set),
63 	    TP_ARGS(addr, pmd, clr, set)
64 );
65 
66 DEFINE_EVENT(hugepage_update, hugepage_update_pud,
67 	    TP_PROTO(unsigned long addr, unsigned long pud, unsigned long clr, unsigned long set),
68 	    TP_ARGS(addr, pud, clr, set)
69 );
70 #endif /* CONFIG_PPC_BOOK3S_64 */
71 
72 DECLARE_EVENT_CLASS(migration_pmd,
73 
74 		TP_PROTO(unsigned long addr, unsigned long pmd),
75 
76 		TP_ARGS(addr, pmd),
77 
78 		TP_STRUCT__entry(
79 			__field(unsigned long, addr)
80 			__field(unsigned long, pmd)
81 		),
82 
83 		TP_fast_assign(
84 			__entry->addr = addr;
85 			__entry->pmd = pmd;
86 		),
87 		TP_printk("addr=%lx, pmd=%lx", __entry->addr, __entry->pmd)
88 );
89 
90 DEFINE_EVENT(migration_pmd, set_migration_pmd,
91 	TP_PROTO(unsigned long addr, unsigned long pmd),
92 	TP_ARGS(addr, pmd)
93 );
94 
95 DEFINE_EVENT(migration_pmd, remove_migration_pmd,
96 	TP_PROTO(unsigned long addr, unsigned long pmd),
97 	TP_ARGS(addr, pmd)
98 );
99 #endif /* _TRACE_THP_H */
100 
101 /* This part must be outside protection */
102 #include <trace/define_trace.h>
103