brintos

brintos / linux-shallow public Read only

0
0
Text · 3.0 KiB · 373007e Raw
163 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2/*3 * iommu trace points4 *5 * Copyright (C) 2013 Shuah Khan <shuah.kh@samsung.com>6 *7 */8#undef TRACE_SYSTEM9#define TRACE_SYSTEM iommu10 11#if !defined(_TRACE_IOMMU_H) || defined(TRACE_HEADER_MULTI_READ)12#define _TRACE_IOMMU_H13 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->size100	)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_size124	)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->flags150	)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>163