|
@@ -71,6 +71,7 @@ DECLARE_STATS_COUNTER(cnt_map_sg);
|
|
|
DECLARE_STATS_COUNTER(cnt_unmap_sg);
|
|
|
DECLARE_STATS_COUNTER(cnt_alloc_coherent);
|
|
|
DECLARE_STATS_COUNTER(cnt_free_coherent);
|
|
|
+DECLARE_STATS_COUNTER(cross_page);
|
|
|
|
|
|
static struct dentry *stats_dir;
|
|
|
static struct dentry *de_isolate;
|
|
@@ -104,6 +105,7 @@ static void amd_iommu_stats_init(void)
|
|
|
amd_iommu_stats_add(&cnt_unmap_sg);
|
|
|
amd_iommu_stats_add(&cnt_alloc_coherent);
|
|
|
amd_iommu_stats_add(&cnt_free_coherent);
|
|
|
+ amd_iommu_stats_add(&cross_page);
|
|
|
}
|
|
|
|
|
|
#endif
|
|
@@ -1217,6 +1219,9 @@ static dma_addr_t __map_single(struct device *dev,
|
|
|
pages = iommu_num_pages(paddr, size, PAGE_SIZE);
|
|
|
paddr &= PAGE_MASK;
|
|
|
|
|
|
+ if (pages > 1)
|
|
|
+ INC_STATS_COUNTER(cross_page);
|
|
|
+
|
|
|
if (align)
|
|
|
align_mask = (1UL << get_order(size)) - 1;
|
|
|
|