diff options
author | Shuah Khan <shuah.kh@samsung.com> | 2013-09-24 15:21:19 -0600 |
---|---|---|
committer | Joerg Roedel <joro@8bytes.org> | 2013-09-25 11:07:04 +0200 |
commit | 04fa2f7f837601903e5fe0f93bc2af8559d8c035 (patch) | |
tree | d401bc1773dfc345242ab258294c36596c51a70a | |
parent | 3a50639ca4684476a69314811d89622d78c09448 (diff) | |
download | linux-04fa2f7f837601903e5fe0f93bc2af8559d8c035.tar.gz linux-04fa2f7f837601903e5fe0f93bc2af8559d8c035.tar.bz2 linux-04fa2f7f837601903e5fe0f93bc2af8559d8c035.zip |
iommu: Add iommu_error class event to iommu trace
iommu_error class event can be enabled to trigger when an iommu
error occurs. This trace event is intended to be called to report the
error information. Trace information includes driver name, device name,
iova, and flags.
iommu_error:io_page_fault
Signed-off-by: Shuah Khan <shuah.kh@samsung.com>
Signed-off-by: Joerg Roedel <joro@8bytes.org>
-rw-r--r-- | drivers/iommu/iommu-traces.c | 3 | ||||
-rw-r--r-- | include/trace/events/iommu.h | 33 |
2 files changed, 36 insertions, 0 deletions
diff --git a/drivers/iommu/iommu-traces.c b/drivers/iommu/iommu-traces.c index a2af60f31810..bf3b317ff0c1 100644 --- a/drivers/iommu/iommu-traces.c +++ b/drivers/iommu/iommu-traces.c @@ -22,3 +22,6 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(detach_device_from_domain); /* iommu_map_unmap */ EXPORT_TRACEPOINT_SYMBOL_GPL(map); EXPORT_TRACEPOINT_SYMBOL_GPL(unmap); + +/* iommu_error */ +EXPORT_TRACEPOINT_SYMBOL_GPL(io_page_fault); diff --git a/include/trace/events/iommu.h b/include/trace/events/iommu.h index 86bcc5a9fedc..a8f5c32d174b 100644 --- a/include/trace/events/iommu.h +++ b/include/trace/events/iommu.h @@ -123,6 +123,39 @@ DEFINE_EVENT_PRINT(iommu_map_unmap, unmap, __entry->iova, __entry->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 */ |