mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-03 17:14:14 +08:00
8f9930fa01
The detach_dev callback of domain ops is not called in the IOMMU core. Remove this callback to avoid dead code. The trace event for detaching domain from device is removed accordingly. Reviewed-by: Jason Gunthorpe <jgg@nvidia.com> Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com> Link: https://lore.kernel.org/r/20230110025408.667767-6-baolu.lu@linux.intel.com Signed-off-by: Joerg Roedel <jroedel@suse.de>
163 lines
3.0 KiB
C
163 lines
3.0 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* iommu trace points
|
|
*
|
|
* Copyright (C) 2013 Shuah Khan <shuah.kh@samsung.com>
|
|
*
|
|
*/
|
|
#undef TRACE_SYSTEM
|
|
#define TRACE_SYSTEM iommu
|
|
|
|
#if !defined(_TRACE_IOMMU_H) || defined(TRACE_HEADER_MULTI_READ)
|
|
#define _TRACE_IOMMU_H
|
|
|
|
#include <linux/tracepoint.h>
|
|
|
|
struct device;
|
|
|
|
DECLARE_EVENT_CLASS(iommu_group_event,
|
|
|
|
TP_PROTO(int group_id, struct device *dev),
|
|
|
|
TP_ARGS(group_id, dev),
|
|
|
|
TP_STRUCT__entry(
|
|
__field(int, gid)
|
|
__string(device, dev_name(dev))
|
|
),
|
|
|
|
TP_fast_assign(
|
|
__entry->gid = group_id;
|
|
__assign_str(device, dev_name(dev));
|
|
),
|
|
|
|
TP_printk("IOMMU: groupID=%d device=%s",
|
|
__entry->gid, __get_str(device)
|
|
)
|
|
);
|
|
|
|
DEFINE_EVENT(iommu_group_event, add_device_to_group,
|
|
|
|
TP_PROTO(int group_id, struct device *dev),
|
|
|
|
TP_ARGS(group_id, dev)
|
|
|
|
);
|
|
|
|
DEFINE_EVENT(iommu_group_event, remove_device_from_group,
|
|
|
|
TP_PROTO(int group_id, struct device *dev),
|
|
|
|
TP_ARGS(group_id, dev)
|
|
);
|
|
|
|
DECLARE_EVENT_CLASS(iommu_device_event,
|
|
|
|
TP_PROTO(struct device *dev),
|
|
|
|
TP_ARGS(dev),
|
|
|
|
TP_STRUCT__entry(
|
|
__string(device, dev_name(dev))
|
|
),
|
|
|
|
TP_fast_assign(
|
|
__assign_str(device, dev_name(dev));
|
|
),
|
|
|
|
TP_printk("IOMMU: device=%s", __get_str(device)
|
|
)
|
|
);
|
|
|
|
DEFINE_EVENT(iommu_device_event, attach_device_to_domain,
|
|
|
|
TP_PROTO(struct device *dev),
|
|
|
|
TP_ARGS(dev)
|
|
);
|
|
|
|
TRACE_EVENT(map,
|
|
|
|
TP_PROTO(unsigned long iova, phys_addr_t paddr, size_t size),
|
|
|
|
TP_ARGS(iova, paddr, size),
|
|
|
|
TP_STRUCT__entry(
|
|
__field(u64, iova)
|
|
__field(u64, paddr)
|
|
__field(size_t, size)
|
|
),
|
|
|
|
TP_fast_assign(
|
|
__entry->iova = iova;
|
|
__entry->paddr = paddr;
|
|
__entry->size = size;
|
|
),
|
|
|
|
TP_printk("IOMMU: iova=0x%016llx - 0x%016llx paddr=0x%016llx size=%zu",
|
|
__entry->iova, __entry->iova + __entry->size, __entry->paddr,
|
|
__entry->size
|
|
)
|
|
);
|
|
|
|
TRACE_EVENT(unmap,
|
|
|
|
TP_PROTO(unsigned long iova, size_t size, size_t unmapped_size),
|
|
|
|
TP_ARGS(iova, size, unmapped_size),
|
|
|
|
TP_STRUCT__entry(
|
|
__field(u64, iova)
|
|
__field(size_t, size)
|
|
__field(size_t, unmapped_size)
|
|
),
|
|
|
|
TP_fast_assign(
|
|
__entry->iova = iova;
|
|
__entry->size = size;
|
|
__entry->unmapped_size = unmapped_size;
|
|
),
|
|
|
|
TP_printk("IOMMU: iova=0x%016llx - 0x%016llx size=%zu unmapped_size=%zu",
|
|
__entry->iova, __entry->iova + __entry->size,
|
|
__entry->size, __entry->unmapped_size
|
|
)
|
|
);
|
|
|
|
DECLARE_EVENT_CLASS(iommu_error,
|
|
|
|
TP_PROTO(struct device *dev, unsigned long iova, int flags),
|
|
|
|
TP_ARGS(dev, iova, flags),
|
|
|
|
TP_STRUCT__entry(
|
|
__string(device, dev_name(dev))
|
|
__string(driver, dev_driver_string(dev))
|
|
__field(u64, iova)
|
|
__field(int, flags)
|
|
),
|
|
|
|
TP_fast_assign(
|
|
__assign_str(device, dev_name(dev));
|
|
__assign_str(driver, dev_driver_string(dev));
|
|
__entry->iova = iova;
|
|
__entry->flags = flags;
|
|
),
|
|
|
|
TP_printk("IOMMU:%s %s iova=0x%016llx flags=0x%04x",
|
|
__get_str(driver), __get_str(device),
|
|
__entry->iova, __entry->flags
|
|
)
|
|
);
|
|
|
|
DEFINE_EVENT(iommu_error, io_page_fault,
|
|
|
|
TP_PROTO(struct device *dev, unsigned long iova, int flags),
|
|
|
|
TP_ARGS(dev, iova, flags)
|
|
);
|
|
#endif /* _TRACE_IOMMU_H */
|
|
|
|
/* This part must be outside protection */
|
|
#include <trace/define_trace.h>
|