Linux Audio

Check our new training course

Loading...
v6.13.7
  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
 16struct device;
 17
 18DECLARE_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);
 32	),
 33
 34	TP_printk("IOMMU: groupID=%d device=%s",
 35			__entry->gid, __get_str(device)
 36	)
 37);
 38
 39DEFINE_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
 47DEFINE_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
 54DECLARE_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);
 66	),
 67
 68	TP_printk("IOMMU: device=%s", __get_str(device)
 69	)
 70);
 71
 72DEFINE_EVENT(iommu_device_event, attach_device_to_domain,
 73
 74	TP_PROTO(struct device *dev),
 75
 76	TP_ARGS(dev)
 77);
 78
 
 
 
 
 
 
 
 79TRACE_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
103TRACE_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
127DECLARE_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);
142		__assign_str(driver);
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
153DEFINE_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>
v5.4
  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
 16struct device;
 17
 18DECLARE_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
 39DEFINE_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
 47DEFINE_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
 54DECLARE_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
 72DEFINE_EVENT(iommu_device_event, attach_device_to_domain,
 73
 74	TP_PROTO(struct device *dev),
 75
 76	TP_ARGS(dev)
 77);
 78
 79DEFINE_EVENT(iommu_device_event, detach_device_from_domain,
 80
 81	TP_PROTO(struct device *dev),
 82
 83	TP_ARGS(dev)
 84);
 85
 86TRACE_EVENT(map,
 87
 88	TP_PROTO(unsigned long iova, phys_addr_t paddr, size_t size),
 89
 90	TP_ARGS(iova, paddr, size),
 91
 92	TP_STRUCT__entry(
 93		__field(u64, iova)
 94		__field(u64, paddr)
 95		__field(size_t, size)
 96	),
 97
 98	TP_fast_assign(
 99		__entry->iova = iova;
100		__entry->paddr = paddr;
101		__entry->size = size;
102	),
103
104	TP_printk("IOMMU: iova=0x%016llx paddr=0x%016llx size=%zu",
105			__entry->iova, __entry->paddr, __entry->size
 
106	)
107);
108
109TRACE_EVENT(unmap,
110
111	TP_PROTO(unsigned long iova, size_t size, size_t unmapped_size),
112
113	TP_ARGS(iova, size, unmapped_size),
114
115	TP_STRUCT__entry(
116		__field(u64, iova)
117		__field(size_t, size)
118		__field(size_t, unmapped_size)
119	),
120
121	TP_fast_assign(
122		__entry->iova = iova;
123		__entry->size = size;
124		__entry->unmapped_size = unmapped_size;
125	),
126
127	TP_printk("IOMMU: iova=0x%016llx size=%zu unmapped_size=%zu",
128			__entry->iova, __entry->size, __entry->unmapped_size
 
129	)
130);
131
132DECLARE_EVENT_CLASS(iommu_error,
133
134	TP_PROTO(struct device *dev, unsigned long iova, int flags),
135
136	TP_ARGS(dev, iova, flags),
137
138	TP_STRUCT__entry(
139		__string(device, dev_name(dev))
140		__string(driver, dev_driver_string(dev))
141		__field(u64, iova)
142		__field(int, flags)
143	),
144
145	TP_fast_assign(
146		__assign_str(device, dev_name(dev));
147		__assign_str(driver, dev_driver_string(dev));
148		__entry->iova = iova;
149		__entry->flags = flags;
150	),
151
152	TP_printk("IOMMU:%s %s iova=0x%016llx flags=0x%04x",
153			__get_str(driver), __get_str(device),
154			__entry->iova, __entry->flags
155	)
156);
157
158DEFINE_EVENT(iommu_error, io_page_fault,
159
160	TP_PROTO(struct device *dev, unsigned long iova, int flags),
161
162	TP_ARGS(dev, iova, flags)
163);
164#endif /* _TRACE_IOMMU_H */
165
166/* This part must be outside protection */
167#include <trace/define_trace.h>