Linux Audio

Check our new training course

Loading...
v6.2
  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 - 0x%016llx paddr=0x%016llx size=%zu",
105		  __entry->iova, __entry->iova + __entry->size, __entry->paddr,
106		  __entry->size
107	)
108);
109
110TRACE_EVENT(unmap,
111
112	TP_PROTO(unsigned long iova, size_t size, size_t unmapped_size),
113
114	TP_ARGS(iova, size, unmapped_size),
 
115
116	TP_STRUCT__entry(
117		__field(u64, iova)
118		__field(size_t, size)
119		__field(size_t, unmapped_size)
120	),
121
122	TP_fast_assign(
123		__entry->iova = iova;
124		__entry->size = size;
125		__entry->unmapped_size = unmapped_size;
126	),
127
128	TP_printk("IOMMU: iova=0x%016llx - 0x%016llx size=%zu unmapped_size=%zu",
129		  __entry->iova, __entry->iova + __entry->size,
130		  __entry->size, __entry->unmapped_size
131	)
132);
133
134DECLARE_EVENT_CLASS(iommu_error,
135
136	TP_PROTO(struct device *dev, unsigned long iova, int flags),
137
138	TP_ARGS(dev, iova, flags),
139
140	TP_STRUCT__entry(
141		__string(device, dev_name(dev))
142		__string(driver, dev_driver_string(dev))
143		__field(u64, iova)
144		__field(int, flags)
145	),
146
147	TP_fast_assign(
148		__assign_str(device, dev_name(dev));
149		__assign_str(driver, dev_driver_string(dev));
150		__entry->iova = iova;
151		__entry->flags = flags;
152	),
153
154	TP_printk("IOMMU:%s %s iova=0x%016llx flags=0x%04x",
155			__get_str(driver), __get_str(device),
156			__entry->iova, __entry->flags
157	)
158);
159
160DEFINE_EVENT(iommu_error, io_page_fault,
161
162	TP_PROTO(struct device *dev, unsigned long iova, int flags),
163
164	TP_ARGS(dev, iova, flags)
165);
166#endif /* _TRACE_IOMMU_H */
167
168/* This part must be outside protection */
169#include <trace/define_trace.h>
v3.15
 
  1/*
  2 * iommu trace points
  3 *
  4 * Copyright (C) 2013 Shuah Khan <shuah.kh@samsung.com>
  5 *
  6 */
  7#undef TRACE_SYSTEM
  8#define TRACE_SYSTEM iommu
  9
 10#if !defined(_TRACE_IOMMU_H) || defined(TRACE_HEADER_MULTI_READ)
 11#define _TRACE_IOMMU_H
 12
 13#include <linux/tracepoint.h>
 14#include <linux/pci.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
 86DECLARE_EVENT_CLASS(iommu_map_unmap,
 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(int, 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=0x%x",
105			__entry->iova, __entry->paddr, __entry->size
 
106	)
107);
108
109DEFINE_EVENT(iommu_map_unmap, map,
110
111	TP_PROTO(unsigned long iova, phys_addr_t paddr, size_t size),
112
113	TP_ARGS(iova, paddr, size)
114);
115
116DEFINE_EVENT_PRINT(iommu_map_unmap, unmap,
 
 
 
 
117
118	TP_PROTO(unsigned long iova, phys_addr_t paddr, size_t size),
119
120	TP_ARGS(iova, paddr, size),
 
 
121
122	TP_printk("IOMMU: iova=0x%016llx size=0x%x",
123			__entry->iova, __entry->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, 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
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>