From 6a9ff8fa2669adb8dd188dcf8a260ad2bdf31f59 Mon Sep 17 00:00:00 2001 From: Charan Teja Reddy Date: Mon, 17 Jan 2022 12:58:20 +0530 Subject: [PATCH] ANDROID: iommu: Add restricted vendor hook Add restricted vendor hook for arch_setup_dma_ops to allow vendor enhancements. This needs to be restricted vendor hook as it is doing GFP_KERNEL allocation which are non-atomic in nature. Bug: 214353193 Change-Id: I45f8f0404a247b67fd07a6831ff813bbc50fbca2 Signed-off-by: Charan Teja Reddy --- arch/arm64/mm/dma-mapping.c | 1 + drivers/android/vendor_hooks.c | 1 + include/trace/hooks/iommu.h | 4 ++++ 3 files changed, 6 insertions(+) diff --git a/arch/arm64/mm/dma-mapping.c b/arch/arm64/mm/dma-mapping.c index c834a6445842..e75e5e75b192 100644 --- a/arch/arm64/mm/dma-mapping.c +++ b/arch/arm64/mm/dma-mapping.c @@ -53,6 +53,7 @@ void arch_setup_dma_ops(struct device *dev, u64 dma_base, u64 size, if (iommu) { iommu_setup_dma_ops(dev, dma_base, size); trace_android_vh_iommu_setup_dma_ops(dev, dma_base, size); + trace_android_rvh_iommu_setup_dma_ops(dev, dma_base, size); } #ifdef CONFIG_XEN diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index c88ff0ddfcf3..ef6b8e851608 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -192,6 +192,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_die_kernel_fault); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_do_sea); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_do_mem_abort); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_do_sp_pc_abort); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_iommu_setup_dma_ops); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_iommu_setup_dma_ops); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_iommu_alloc_iova); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_iommu_iovad_alloc_iova); diff --git a/include/trace/hooks/iommu.h b/include/trace/hooks/iommu.h index dd54a50b3aa4..e818b90e482c 100644 --- a/include/trace/hooks/iommu.h +++ b/include/trace/hooks/iommu.h @@ -12,6 +12,10 @@ #include #include +DECLARE_RESTRICTED_HOOK(android_rvh_iommu_setup_dma_ops, + TP_PROTO(struct device *dev, u64 dma_base, u64 size), + TP_ARGS(dev, dma_base, size), 1); + DECLARE_HOOK(android_vh_iommu_setup_dma_ops, TP_PROTO(struct device *dev, u64 dma_base, u64 size), TP_ARGS(dev, dma_base, size));