Commit 5774f7c5 authored by Joerg Roedel's avatar Joerg Roedel

AMD IOMMU: add statistics about allocated io memory

Impact: see amount of allocated io memory in debugfs
Signed-off-by: default avatarJoerg Roedel <joerg.roedel@amd.com>
parent 18811f55
...@@ -74,6 +74,7 @@ DECLARE_STATS_COUNTER(cnt_free_coherent); ...@@ -74,6 +74,7 @@ DECLARE_STATS_COUNTER(cnt_free_coherent);
DECLARE_STATS_COUNTER(cross_page); DECLARE_STATS_COUNTER(cross_page);
DECLARE_STATS_COUNTER(domain_flush_single); DECLARE_STATS_COUNTER(domain_flush_single);
DECLARE_STATS_COUNTER(domain_flush_all); DECLARE_STATS_COUNTER(domain_flush_all);
DECLARE_STATS_COUNTER(alloced_io_mem);
static struct dentry *stats_dir; static struct dentry *stats_dir;
static struct dentry *de_isolate; static struct dentry *de_isolate;
...@@ -110,6 +111,7 @@ static void amd_iommu_stats_init(void) ...@@ -110,6 +111,7 @@ static void amd_iommu_stats_init(void)
amd_iommu_stats_add(&cross_page); amd_iommu_stats_add(&cross_page);
amd_iommu_stats_add(&domain_flush_single); amd_iommu_stats_add(&domain_flush_single);
amd_iommu_stats_add(&domain_flush_all); amd_iommu_stats_add(&domain_flush_all);
amd_iommu_stats_add(&alloced_io_mem);
} }
#endif #endif
...@@ -1246,6 +1248,8 @@ static dma_addr_t __map_single(struct device *dev, ...@@ -1246,6 +1248,8 @@ static dma_addr_t __map_single(struct device *dev,
} }
address += offset; address += offset;
ADD_STATS_COUNTER(alloced_io_mem, size);
if (unlikely(dma_dom->need_flush && !amd_iommu_unmap_flush)) { if (unlikely(dma_dom->need_flush && !amd_iommu_unmap_flush)) {
iommu_flush_tlb(iommu, dma_dom->domain.id); iommu_flush_tlb(iommu, dma_dom->domain.id);
dma_dom->need_flush = false; dma_dom->need_flush = false;
...@@ -1282,6 +1286,8 @@ static void __unmap_single(struct amd_iommu *iommu, ...@@ -1282,6 +1286,8 @@ static void __unmap_single(struct amd_iommu *iommu,
start += PAGE_SIZE; start += PAGE_SIZE;
} }
SUB_STATS_COUNTER(alloced_io_mem, size);
dma_ops_free_addresses(dma_dom, dma_addr, pages); dma_ops_free_addresses(dma_dom, dma_addr, pages);
if (amd_iommu_unmap_flush || dma_dom->need_flush) { if (amd_iommu_unmap_flush || dma_dom->need_flush) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment