1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | /* |
3 | * iommu trace points |
4 | * |
5 | * Copyright (C) 2013 Shuah Khan <shuah.kh@samsung.com> |
6 | * |
7 | */ |
8 | #undef TRACE_SYSTEM |
9 | #define TRACE_SYSTEM iommu |
10 | |
11 | #if !defined(_TRACE_IOMMU_H) || defined(TRACE_HEADER_MULTI_READ) |
12 | #define _TRACE_IOMMU_H |
13 | |
14 | #include <linux/tracepoint.h> |
15 | |
16 | struct device; |
17 | |
18 | DECLARE_EVENT_CLASS(iommu_group_event, |
19 | |
20 | TP_PROTO(int group_id, struct device *dev), |
21 | |
22 | TP_ARGS(group_id, dev), |
23 | |
24 | TP_STRUCT__entry( |
25 | __field(int, gid) |
26 | __string(device, dev_name(dev)) |
27 | ), |
28 | |
29 | TP_fast_assign( |
30 | __entry->gid = group_id; |
31 | __assign_str(device, dev_name(dev)); |
32 | ), |
33 | |
34 | TP_printk("IOMMU: groupID=%d device=%s" , |
35 | __entry->gid, __get_str(device) |
36 | ) |
37 | ); |
38 | |
39 | DEFINE_EVENT(iommu_group_event, add_device_to_group, |
40 | |
41 | TP_PROTO(int group_id, struct device *dev), |
42 | |
43 | TP_ARGS(group_id, dev) |
44 | |
45 | ); |
46 | |
47 | DEFINE_EVENT(iommu_group_event, remove_device_from_group, |
48 | |
49 | TP_PROTO(int group_id, struct device *dev), |
50 | |
51 | TP_ARGS(group_id, dev) |
52 | ); |
53 | |
54 | DECLARE_EVENT_CLASS(iommu_device_event, |
55 | |
56 | TP_PROTO(struct device *dev), |
57 | |
58 | TP_ARGS(dev), |
59 | |
60 | TP_STRUCT__entry( |
61 | __string(device, dev_name(dev)) |
62 | ), |
63 | |
64 | TP_fast_assign( |
65 | __assign_str(device, dev_name(dev)); |
66 | ), |
67 | |
68 | TP_printk("IOMMU: device=%s" , __get_str(device) |
69 | ) |
70 | ); |
71 | |
72 | DEFINE_EVENT(iommu_device_event, attach_device_to_domain, |
73 | |
74 | TP_PROTO(struct device *dev), |
75 | |
76 | TP_ARGS(dev) |
77 | ); |
78 | |
79 | TRACE_EVENT(map, |
80 | |
81 | TP_PROTO(unsigned long iova, phys_addr_t paddr, size_t size), |
82 | |
83 | TP_ARGS(iova, paddr, size), |
84 | |
85 | TP_STRUCT__entry( |
86 | __field(u64, iova) |
87 | __field(u64, paddr) |
88 | __field(size_t, size) |
89 | ), |
90 | |
91 | TP_fast_assign( |
92 | __entry->iova = iova; |
93 | __entry->paddr = paddr; |
94 | __entry->size = size; |
95 | ), |
96 | |
97 | TP_printk("IOMMU: iova=0x%016llx - 0x%016llx paddr=0x%016llx size=%zu" , |
98 | __entry->iova, __entry->iova + __entry->size, __entry->paddr, |
99 | __entry->size |
100 | ) |
101 | ); |
102 | |
103 | TRACE_EVENT(unmap, |
104 | |
105 | TP_PROTO(unsigned long iova, size_t size, size_t unmapped_size), |
106 | |
107 | TP_ARGS(iova, size, unmapped_size), |
108 | |
109 | TP_STRUCT__entry( |
110 | __field(u64, iova) |
111 | __field(size_t, size) |
112 | __field(size_t, unmapped_size) |
113 | ), |
114 | |
115 | TP_fast_assign( |
116 | __entry->iova = iova; |
117 | __entry->size = size; |
118 | __entry->unmapped_size = unmapped_size; |
119 | ), |
120 | |
121 | TP_printk("IOMMU: iova=0x%016llx - 0x%016llx size=%zu unmapped_size=%zu" , |
122 | __entry->iova, __entry->iova + __entry->size, |
123 | __entry->size, __entry->unmapped_size |
124 | ) |
125 | ); |
126 | |
127 | DECLARE_EVENT_CLASS(iommu_error, |
128 | |
129 | TP_PROTO(struct device *dev, unsigned long iova, int flags), |
130 | |
131 | TP_ARGS(dev, iova, flags), |
132 | |
133 | TP_STRUCT__entry( |
134 | __string(device, dev_name(dev)) |
135 | __string(driver, dev_driver_string(dev)) |
136 | __field(u64, iova) |
137 | __field(int, flags) |
138 | ), |
139 | |
140 | TP_fast_assign( |
141 | __assign_str(device, dev_name(dev)); |
142 | __assign_str(driver, dev_driver_string(dev)); |
143 | __entry->iova = iova; |
144 | __entry->flags = flags; |
145 | ), |
146 | |
147 | TP_printk("IOMMU:%s %s iova=0x%016llx flags=0x%04x" , |
148 | __get_str(driver), __get_str(device), |
149 | __entry->iova, __entry->flags |
150 | ) |
151 | ); |
152 | |
153 | DEFINE_EVENT(iommu_error, io_page_fault, |
154 | |
155 | TP_PROTO(struct device *dev, unsigned long iova, int flags), |
156 | |
157 | TP_ARGS(dev, iova, flags) |
158 | ); |
159 | #endif /* _TRACE_IOMMU_H */ |
160 | |
161 | /* This part must be outside protection */ |
162 | #include <trace/define_trace.h> |
163 | |