static int iova_show(struct seq_file *s, void *unused) { struct sprd_iommu_dev *iommu_dev = (struct sprd_iommu_dev *)s->private; seq_printf(s,"iommu_name:%s iova_base:0x%lx iova_size:0x%x\n",iommu_dev->init_data->name,iommu_dev->init_data->iova_base,iommu_dev->init_data->iova_size); gen_pool_for_each_chunk(iommu_dev->pool, iova_dump_chunk_bitmap, s); return 0; }
/*only be used to test*/ size_t hisi_iommu_iova_available(void) { struct hisi_iommu_domain *hisi_domain = hisi_iommu_domain_p; if(!hisi_domain->iova_pool){ return -EINVAL; } gen_pool_for_each_chunk(hisi_domain->iova_pool, dump_chunk, NULL); return hisi_iova_available(hisi_domain->iova_pool); }
static void ghes_estatus_pool_exit(void) { gen_pool_for_each_chunk(ghes_estatus_pool, ghes_estatus_pool_free_chunk_page, NULL); gen_pool_destroy(ghes_estatus_pool); }