iommu: Change iommu driver to call io_page_fault trace event
authorShuah Khan <shuah.kh@samsung.com>
Tue, 24 Sep 2013 21:21:20 +0000 (15:21 -0600)
committerJoerg Roedel <joro@8bytes.org>
Wed, 25 Sep 2013 09:07:04 +0000 (11:07 +0200)
Change iommu driver call io_page_fault trace event. This iommu_error class
event can be enabled to trigger when an iommu error occurs. Trace information
includes driver name, device name, iova, and flags.

Testing:
Added trace calls to iommu_prepare_identity_map() for testing some of the
conditions that are hard to trigger. Here is the trace from the testing:

       swapper/0-1     [003] ....     2.003774: io_page_fault: IOMMU:pci 0000:00:02.0 iova=0x00000000cb800000 flags=0x0002
       swapper/0-1     [003] ....     2.004098: io_page_fault: IOMMU:pci 0000:00:1d.0 iova=0x00000000cadc6000 flags=0x0002
       swapper/0-1     [003] ....     2.004115: io_page_fault: IOMMU:pci 0000:00:1a.0 iova=0x00000000cadc6000 flags=0x0002
       swapper/0-1     [003] ....     2.004129: io_page_fault: IOMMU:pci 0000:00:1f.0 iova=0x0000000000000000 flags=0x0002

Signed-off-by: Shuah Khan <shuah.kh@samsung.com>
Signed-off-by: Joerg Roedel <joro@8bytes.org>
include/linux/iommu.h

index 7ea319e95b4771ecb9dc4be7d04ad24a8e628d86..a444c790fa7235e2bc7247313804a5062d0a4db8 100644 (file)
@@ -22,6 +22,7 @@
 #include <linux/errno.h>
 #include <linux/err.h>
 #include <linux/types.h>
+#include <trace/events/iommu.h>
 
 #define IOMMU_READ     (1)
 #define IOMMU_WRITE    (2)
@@ -227,6 +228,7 @@ static inline int report_iommu_fault(struct iommu_domain *domain,
                ret = domain->handler(domain, dev, iova, flags,
                                                domain->handler_token);
 
+       trace_io_page_fault(dev, iova, flags);
        return ret;
 }