Merge tag 'iommu-updates-v5.6' of git://git.kernel.org/pub/scm/linux/kernel/git/joro...
[sfrench/cifs-2.6.git] / include / trace / events / intel_iommu.h
index 54e61d456cdfaa06b332b03cd0639a27a8dd7384..112bd06487bfc2dc578eb0a4e609162ccfcbfeaf 100644 (file)
@@ -49,12 +49,6 @@ DEFINE_EVENT(dma_map, map_single,
        TP_ARGS(dev, dev_addr, phys_addr, size)
 );
 
-DEFINE_EVENT(dma_map, map_sg,
-       TP_PROTO(struct device *dev, dma_addr_t dev_addr, phys_addr_t phys_addr,
-                size_t size),
-       TP_ARGS(dev, dev_addr, phys_addr, size)
-);
-
 DEFINE_EVENT(dma_map, bounce_map_single,
        TP_PROTO(struct device *dev, dma_addr_t dev_addr, phys_addr_t phys_addr,
                 size_t size),
@@ -99,6 +93,48 @@ DEFINE_EVENT(dma_unmap, bounce_unmap_single,
        TP_ARGS(dev, dev_addr, size)
 );
 
+DECLARE_EVENT_CLASS(dma_map_sg,
+       TP_PROTO(struct device *dev, int index, int total,
+                struct scatterlist *sg),
+
+       TP_ARGS(dev, index, total, sg),
+
+       TP_STRUCT__entry(
+               __string(dev_name, dev_name(dev))
+               __field(dma_addr_t, dev_addr)
+               __field(phys_addr_t, phys_addr)
+               __field(size_t, size)
+               __field(int, index)
+               __field(int, total)
+       ),
+
+       TP_fast_assign(
+               __assign_str(dev_name, dev_name(dev));
+               __entry->dev_addr = sg->dma_address;
+               __entry->phys_addr = sg_phys(sg);
+               __entry->size = sg->dma_length;
+               __entry->index = index;
+               __entry->total = total;
+       ),
+
+       TP_printk("dev=%s [%d/%d] dev_addr=0x%llx phys_addr=0x%llx size=%zu",
+                 __get_str(dev_name), __entry->index, __entry->total,
+                 (unsigned long long)__entry->dev_addr,
+                 (unsigned long long)__entry->phys_addr,
+                 __entry->size)
+);
+
+DEFINE_EVENT(dma_map_sg, map_sg,
+       TP_PROTO(struct device *dev, int index, int total,
+                struct scatterlist *sg),
+       TP_ARGS(dev, index, total, sg)
+);
+
+DEFINE_EVENT(dma_map_sg, bounce_map_sg,
+       TP_PROTO(struct device *dev, int index, int total,
+                struct scatterlist *sg),
+       TP_ARGS(dev, index, total, sg)
+);
 #endif /* _TRACE_INTEL_IOMMU_H */
 
 /* This part must be outside protection */