Message ID | 1462705196-10857-3-git-send-email-niklas.soderlund+renesas@ragnatech.se (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Sun, May 08, 2016 at 12:59:56PM +0200, Niklas Söderlund wrote: > The call to dma_sync_single_for_device() can be reached from > dma_map_single(). If CONFIG_DMA_API_DEBUG is enabled this would result > in a check that the mapping being synced is valid. Since the call to > dma_map_single is not yet completed the mapping is not recorded in > dma-debug and the check fails and a warning is printed. Avoid this > warning by calling __dma_sync_single_for_device() which don't preform > this check. Hmm, I don't understand why this would trigger that warning. The memory being sync'd here is the page table memory, not the buffer being mapped. The page table memory is "mapped" using dma_map_single in __arm_lpae_alloc_pages, so it sounds like the issue something else. Will
diff --git a/drivers/iommu/io-pgtable-arm.c b/drivers/iommu/io-pgtable-arm.c index f433b51..3da8102 100644 --- a/drivers/iommu/io-pgtable-arm.c +++ b/drivers/iommu/io-pgtable-arm.c @@ -255,7 +255,7 @@ static void __arm_lpae_set_pte(arm_lpae_iopte *ptep, arm_lpae_iopte pte, *ptep = pte; if (!selftest_running) - dma_sync_single_for_device(cfg->iommu_dev, + __dma_sync_single_for_device(cfg->iommu_dev, __arm_lpae_dma_addr(ptep), sizeof(pte), DMA_TO_DEVICE); }
The call to dma_sync_single_for_device() can be reached from dma_map_single(). If CONFIG_DMA_API_DEBUG is enabled this would result in a check that the mapping being synced is valid. Since the call to dma_map_single is not yet completed the mapping is not recorded in dma-debug and the check fails and a warning is printed. Avoid this warning by calling __dma_sync_single_for_device() which don't preform this check. Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se> --- drivers/iommu/io-pgtable-arm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)