[PATCH] swiotlb: Silent unwanted warning "buffer is full"

From: Jean Delvare
Date: Thu May 03 2018 - 17:54:56 EST


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 <jdelvare@xxxxxxx>
Fixes: 0176adb00406 ("swiotlb: refactor coherent buffer allocation")
Cc: Christoph Hellwig <hch@xxxxxx>
Cc: Christian KÃnig <christian.koenig@xxxxxxx>
Cc: Michel DÃnzer <michel@xxxxxxxxxxx>
Cc: Takashi Iwai <tiwai@xxxxxxx>
Cc: stable@xxxxxxxxxxxxxxx # 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