Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d44831bc authored by Mitchel Humpherys's avatar Mitchel Humpherys Committed by Matt Wagantall
Browse files

Revert "arm64: dma-mapping: avoid calling iommu_iova_to_phys"



This reverts commit 0d02975d9ffd55f1c0fe5db08f45a9ee1d22f354 since it's
causing problems for some reason.  This should really be debugged but
for now just revert it.

Change-Id: I31f382c1945cd1cd84dbbd3dfb715009b8442fe9
Signed-off-by: default avatarMitchel Humpherys <mitchelh@codeaurora.org>
parent da9c2118
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -17,7 +17,6 @@ struct dma_iommu_mapping {
	size_t			bits;
	unsigned int		order;
	dma_addr_t		base;
	phys_addr_t		phys;

	spinlock_t		lock;
	struct kref		kref;
+7 −7
Original line number Diff line number Diff line
@@ -1310,7 +1310,6 @@ static dma_addr_t arm_coherent_iommu_map_page(struct device *dev,
	struct dma_iommu_mapping *mapping = dev->archdata.mapping;
	dma_addr_t dma_addr;
	int ret, prot, len = PAGE_ALIGN(size + offset);
	phys_addr_t phys = page_to_phys(page);

	dma_addr = __alloc_iova(mapping, len);
	if (dma_addr == DMA_ERROR_CODE)
@@ -1318,13 +1317,11 @@ static dma_addr_t arm_coherent_iommu_map_page(struct device *dev,

	prot = __dma_direction_to_prot(dir);

	ret = iommu_map(mapping->domain, dma_addr, phys, len,
	ret = iommu_map(mapping->domain, dma_addr, page_to_phys(page), len,
			prot);
	if (ret < 0)
		goto fail;

	mapping->phys = phys;

	return dma_addr + offset;
fail:
	__free_iova(mapping, dma_addr, len);
@@ -1391,7 +1388,8 @@ static void arm_iommu_unmap_page(struct device *dev, dma_addr_t handle,
{
	struct dma_iommu_mapping *mapping = dev->archdata.mapping;
	dma_addr_t iova = handle & PAGE_MASK;
	struct page *page = phys_to_page(mapping->phys);
	struct page *page = phys_to_page(iommu_iova_to_phys(
						mapping->domain, iova));
	int offset = handle & ~PAGE_MASK;
	int len = PAGE_ALIGN(size + offset);

@@ -1410,7 +1408,8 @@ static void arm_iommu_sync_single_for_cpu(struct device *dev,
{
	struct dma_iommu_mapping *mapping = dev->archdata.mapping;
	dma_addr_t iova = handle & PAGE_MASK;
	struct page *page = phys_to_page(mapping->phys);
	struct page *page = phys_to_page(iommu_iova_to_phys(
						mapping->domain, iova));
	unsigned int offset = handle & ~PAGE_MASK;

	if (!iova)
@@ -1424,7 +1423,8 @@ static void arm_iommu_sync_single_for_device(struct device *dev,
{
	struct dma_iommu_mapping *mapping = dev->archdata.mapping;
	dma_addr_t iova = handle & PAGE_MASK;
	struct page *page = phys_to_page(mapping->phys);
	struct page *page = phys_to_page(iommu_iova_to_phys(
						mapping->domain, iova));
	unsigned int offset = handle & ~PAGE_MASK;

	if (!iova)