Commit 036b4c50 authored by Joerg Roedel's avatar Joerg Roedel Committed by Linus Torvalds
Browse files

x86: convert Calgary IOMMU driver to generic iommu_num_pages function



Signed-off-by: default avatarJoerg Roedel <joerg.roedel@amd.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Acked-by: default avatarMuli Ben-Yehuda <muli@il.ibm.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent e3c449f5
Loading
Loading
Loading
Loading
+4 −14
Original line number Diff line number Diff line
@@ -217,16 +217,6 @@ static inline unsigned long verify_bit_range(unsigned long* bitmap,

#endif /* CONFIG_IOMMU_DEBUG */

static inline unsigned int num_dma_pages(unsigned long dma, unsigned int dmalen)
{
	unsigned int npages;

	npages = PAGE_ALIGN(dma + dmalen) - (dma & PAGE_MASK);
	npages >>= PAGE_SHIFT;

	return npages;
}

static inline int translation_enabled(struct iommu_table *tbl)
{
	/* only PHBs with translation enabled have an IOMMU table */
@@ -408,7 +398,7 @@ static void calgary_unmap_sg(struct device *dev,
		if (dmalen == 0)
			break;

		npages = num_dma_pages(dma, dmalen);
		npages = iommu_num_pages(dma, dmalen, PAGE_SIZE);
		iommu_free(tbl, dma, npages);
	}
}
@@ -427,7 +417,7 @@ static int calgary_map_sg(struct device *dev, struct scatterlist *sg,
		BUG_ON(!sg_page(s));

		vaddr = (unsigned long) sg_virt(s);
		npages = num_dma_pages(vaddr, s->length);
		npages = iommu_num_pages(vaddr, s->length, PAGE_SIZE);

		entry = iommu_range_alloc(dev, tbl, npages);
		if (entry == bad_dma_address) {
@@ -464,7 +454,7 @@ static dma_addr_t calgary_map_single(struct device *dev, phys_addr_t paddr,
	struct iommu_table *tbl = find_iommu_table(dev);

	uaddr = (unsigned long)vaddr;
	npages = num_dma_pages(uaddr, size);
	npages = iommu_num_pages(uaddr, size, PAGE_SIZE);

	return iommu_alloc(dev, tbl, vaddr, npages, direction);
}
@@ -475,7 +465,7 @@ static void calgary_unmap_single(struct device *dev, dma_addr_t dma_handle,
	struct iommu_table *tbl = find_iommu_table(dev);
	unsigned int npages;

	npages = num_dma_pages(dma_handle, size);
	npages = iommu_num_pages(dma_handle, size, PAGE_SIZE);
	iommu_free(tbl, dma_handle, npages);
}