If DMA_ATTR_NO_WARN is passed to swiotlb_alloc_buffer(), it should be passed further down to swiotlb_tbl_map_single(). Otherwise we escape half of the warnings but still log the other half.
This is one of the multiple causes of spurious warnings reported at: https://bugs.freedesktop.org/show_bug.cgi?id=104082 Signed-off-by: Jean Delvare <[email protected]> Fixes: 0176adb00406 ("swiotlb: refactor coherent buffer allocation") Cc: Christoph Hellwig <[email protected]> Cc: Christian König <[email protected]> Cc: Michel Dänzer <[email protected]> Cc: Takashi Iwai <[email protected]> Cc: [email protected] # v4.16 --- lib/swiotlb.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- linux-4.16.orig/lib/swiotlb.c 2018-05-02 15:06:49.677769532 +0200 +++ linux-4.16/lib/swiotlb.c 2018-05-03 15:04:27.136921225 +0200 @@ -727,7 +727,7 @@ swiotlb_alloc_buffer(struct device *dev, phys_addr = swiotlb_tbl_map_single(dev, swiotlb_phys_to_dma(dev, io_tlb_start), - 0, size, DMA_FROM_DEVICE, 0); + 0, size, DMA_FROM_DEVICE, attrs); if (phys_addr == SWIOTLB_MAP_ERROR) goto out_warn; -- Jean Delvare SUSE L3 Support

