diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 0dfd54c0467c..f24ceeae8bc4 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -146,6 +146,8 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_send_tm_command); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ufs_check_int_errors); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cgroup_attach); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_iommu_setup_dma_ops); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_iommu_iovad_alloc_iova); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_iommu_iovad_free_iova); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ptype_head); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_kfree_skb); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_timer_calc_index); diff --git a/drivers/iommu/dma-iommu.c b/drivers/iommu/dma-iommu.c index 896bea04c347..fc1c32aa64e6 100644 --- a/drivers/iommu/dma-iommu.c +++ b/drivers/iommu/dma-iommu.c @@ -25,6 +25,7 @@ #include #include #include +#include struct iommu_dma_msi_page { struct list_head list; @@ -467,6 +468,8 @@ static dma_addr_t iommu_dma_alloc_iova(struct iommu_domain *domain, iova = alloc_iova_fast(iovad, iova_len, dma_limit >> shift, true); + trace_android_vh_iommu_iovad_alloc_iova(dev, iovad, (dma_addr_t)iova << shift, size); + return (dma_addr_t)iova << shift; } @@ -485,6 +488,8 @@ static void iommu_dma_free_iova(struct iommu_dma_cookie *cookie, else free_iova_fast(iovad, iova_pfn(iovad, iova), size >> iova_shift(iovad)); + + trace_android_vh_iommu_iovad_free_iova(iovad, iova, size); } static void __iommu_dma_unmap(struct device *dev, dma_addr_t dma_addr, diff --git a/include/trace/hooks/iommu.h b/include/trace/hooks/iommu.h index ede5271dfe12..b5f2e47ff9dd 100644 --- a/include/trace/hooks/iommu.h +++ b/include/trace/hooks/iommu.h @@ -12,17 +12,19 @@ #include #include -#if defined(CONFIG_TRACEPOINTS) && defined(CONFIG_ANDROID_VENDOR_HOOKS) - DECLARE_HOOK(android_vh_iommu_setup_dma_ops, TP_PROTO(struct device *dev, u64 dma_base, u64 dma_limit), TP_ARGS(dev, dma_base, dma_limit)); -#else +struct iova_domain; -#define trace_android_vh_iommu_setup_dma_ops(dev, dma_base, dma_limit) +DECLARE_HOOK(android_vh_iommu_iovad_alloc_iova, + TP_PROTO(struct device *dev, struct iova_domain *iovad, dma_addr_t iova, size_t size), + TP_ARGS(dev, iovad, iova, size)); -#endif +DECLARE_HOOK(android_vh_iommu_iovad_free_iova, + TP_PROTO(struct iova_domain *iovad, dma_addr_t iova, size_t size), + TP_ARGS(iovad, iova, size)); #endif /* _TRACE_HOOK_IOMMU_H */