diff --git a/[refs] b/[refs] index 529bb0de2858..c0a008cd581e 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 3400001c531d283068a60e9f884f7de6f22314be +refs/heads/master: 56d936607408d71c4141b2ed501410b072f1e211 diff --git a/trunk/include/linux/iommu-helper.h b/trunk/include/linux/iommu-helper.h index a6d0586e2bf7..3b068e5b5671 100644 --- a/trunk/include/linux/iommu-helper.h +++ b/trunk/include/linux/iommu-helper.h @@ -23,4 +23,7 @@ extern unsigned long iommu_area_alloc(unsigned long *map, unsigned long size, extern void iommu_area_free(unsigned long *map, unsigned long start, unsigned int nr); +extern unsigned long iommu_num_pages(unsigned long addr, unsigned long len, + unsigned long io_page_size); + #endif diff --git a/trunk/lib/iommu-helper.c b/trunk/lib/iommu-helper.c index 5d90074dca75..75dbda03f4fb 100644 --- a/trunk/lib/iommu-helper.c +++ b/trunk/lib/iommu-helper.c @@ -79,3 +79,12 @@ void iommu_area_free(unsigned long *map, unsigned long start, unsigned int nr) } } EXPORT_SYMBOL(iommu_area_free); + +unsigned long iommu_num_pages(unsigned long addr, unsigned long len, + unsigned long io_page_size) +{ + unsigned long size = (addr & (io_page_size - 1)) + len; + + return DIV_ROUND_UP(size, io_page_size); +} +EXPORT_SYMBOL(iommu_num_pages);