1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* 3 * Intel IOMMU trace support 4 * 5 * Copyright (C) 2019 Intel Corporation 6 * 7 * Author: Lu Baolu <baolu.lu@linux.intel.com> 8 */ 9 #ifdef CONFIG_INTEL_IOMMU 10 #undef TRACE_SYSTEM 11 #define TRACE_SYSTEM intel_iommu 12 13 #if !defined(_TRACE_INTEL_IOMMU_H) || defined(TRACE_HEADER_MULTI_READ) 14 #define _TRACE_INTEL_IOMMU_H 15 16 #include <linux/tracepoint.h> 17 #include <linux/intel-iommu.h> 18 19 DECLARE_EVENT_CLASS(dma_map, 20 TP_PROTO(struct device *dev, dma_addr_t dev_addr, phys_addr_t phys_addr, 21 size_t size), 22 23 TP_ARGS(dev, dev_addr, phys_addr, size), 24 25 TP_STRUCT__entry( 26 __string(dev_name, dev_name(dev)) 27 __field(dma_addr_t, dev_addr) 28 __field(phys_addr_t, phys_addr) 29 __field(size_t, size) 30 ), 31 32 TP_fast_assign( 33 __assign_str(dev_name, dev_name(dev)); 34 __entry->dev_addr = dev_addr; 35 __entry->phys_addr = phys_addr; 36 __entry->size = size; 37 ), 38 39 TP_printk("dev=%s dev_addr=0x%llx phys_addr=0x%llx size=%zu", 40 __get_str(dev_name), 41 (unsigned long long)__entry->dev_addr, 42 (unsigned long long)__entry->phys_addr, 43 __entry->size) 44 ); 45 46 DEFINE_EVENT(dma_map, map_single, 47 TP_PROTO(struct device *dev, dma_addr_t dev_addr, phys_addr_t phys_addr, 48 size_t size), 49 TP_ARGS(dev, dev_addr, phys_addr, size) 50 ); 51 52 DEFINE_EVENT(dma_map, map_sg, 53 TP_PROTO(struct device *dev, dma_addr_t dev_addr, phys_addr_t phys_addr, 54 size_t size), 55 TP_ARGS(dev, dev_addr, phys_addr, size) 56 ); 57 58 DEFINE_EVENT(dma_map, bounce_map_single, 59 TP_PROTO(struct device *dev, dma_addr_t dev_addr, phys_addr_t phys_addr, 60 size_t size), 61 TP_ARGS(dev, dev_addr, phys_addr, size) 62 ); 63 64 DECLARE_EVENT_CLASS(dma_unmap, 65 TP_PROTO(struct device *dev, dma_addr_t dev_addr, size_t size), 66 67 TP_ARGS(dev, dev_addr, size), 68 69 TP_STRUCT__entry( 70 __string(dev_name, dev_name(dev)) 71 __field(dma_addr_t, dev_addr) 72 __field(size_t, size) 73 ), 74 75 TP_fast_assign( 76 __assign_str(dev_name, dev_name(dev)); 77 __entry->dev_addr = dev_addr; 78 __entry->size = size; 79 ), 80 81 TP_printk("dev=%s dev_addr=0x%llx size=%zu", 82 __get_str(dev_name), 83 (unsigned long long)__entry->dev_addr, 84 __entry->size) 85 ); 86 87 DEFINE_EVENT(dma_unmap, unmap_single, 88 TP_PROTO(struct device *dev, dma_addr_t dev_addr, size_t size), 89 TP_ARGS(dev, dev_addr, size) 90 ); 91 92 DEFINE_EVENT(dma_unmap, unmap_sg, 93 TP_PROTO(struct device *dev, dma_addr_t dev_addr, size_t size), 94 TP_ARGS(dev, dev_addr, size) 95 ); 96 97 DEFINE_EVENT(dma_unmap, bounce_unmap_single, 98 TP_PROTO(struct device *dev, dma_addr_t dev_addr, size_t size), 99 TP_ARGS(dev, dev_addr, size) 100 ); 101 102 #endif /* _TRACE_INTEL_IOMMU_H */ 103 104 /* This part must be outside protection */ 105 #include <trace/define_trace.h> 106 #endif /* CONFIG_INTEL_IOMMU */ 107