ANDROID: iommu: Add vendor hook for iova allocation and free tracking
Add vendor hook for iommu_dma_alloc_iova and iommu_dma_free_iova to allow vendor enhancement. Bug: 187861158 Change-Id: I2ebe8b24318bd5292edc66a94d7109332d478212 Signed-off-by: Guangming Cao <Guangming.Cao@mediatek.com>
This commit is contained in:
committed by
Suren Baghdasaryan
parent
9b6836900e
commit
15acc8fac6
@@ -175,6 +175,8 @@ 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_vh_iommu_setup_dma_ops);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_iommu_alloc_iova);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_iommu_free_iova);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_pick_next_entity);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_check_preempt_wakeup);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cma_alloc_start);
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
#include <linux/scatterlist.h>
|
||||
#include <linux/vmalloc.h>
|
||||
#include <linux/crash_dump.h>
|
||||
#include <trace/hooks/iommu.h>
|
||||
|
||||
struct iommu_dma_msi_page {
|
||||
struct list_head list;
|
||||
@@ -486,6 +487,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_alloc_iova(dev, iova, size);
|
||||
|
||||
return (dma_addr_t)iova << shift;
|
||||
}
|
||||
|
||||
@@ -503,6 +506,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_free_iova(iova, size);
|
||||
}
|
||||
|
||||
static void __iommu_dma_unmap(struct device *dev, dma_addr_t dma_addr,
|
||||
|
||||
@@ -18,9 +18,18 @@ DECLARE_HOOK(android_vh_iommu_setup_dma_ops,
|
||||
TP_PROTO(struct device *dev, u64 dma_base, u64 size),
|
||||
TP_ARGS(dev, dma_base, size));
|
||||
|
||||
DECLARE_HOOK(android_vh_iommu_alloc_iova,
|
||||
TP_PROTO(struct device *dev, dma_addr_t iova, size_t size),
|
||||
TP_ARGS(dev, iova, size));
|
||||
|
||||
DECLARE_HOOK(android_vh_iommu_free_iova,
|
||||
TP_PROTO(dma_addr_t iova, size_t size),
|
||||
TP_ARGS(iova, size));
|
||||
#else
|
||||
|
||||
#define trace_android_vh_iommu_setup_dma_ops(dev, dma_base, size)
|
||||
#define trace_android_vh_iommu_alloc_iova(dev, iova, size)
|
||||
#define trace_android_vh_iommu_free_iova(iova, size)
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
Reference in New Issue
Block a user