Re: [PATCH] swiotlb: suppress warning when __GFP_NOWARN is set v2

From: Christian KÃnig
Date: Tue Jan 02 2018 - 11:14:26 EST


Am 02.01.2018 um 16:39 schrieb Chris Wilson:
Quoting Christian KÃnig (2018-01-02 12:13:58)
TTM tries to allocate coherent memory in chunks of 2MB first to improve
TLB efficiency and falls back to allocating 4K pages if that fails.

Suppress the warning when the 2MB allocations fails since there is a
valid fall back path.

v2: suppress warnings from swiotlb_tbl_map_single as well

Signed-off-by: Christian KÃnig <christian.koenig@xxxxxxx>
Reported-by: Mike Galbraith <efault@xxxxxx>
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=104082
CC: stable@xxxxxxxxxxxxxxx
---
@@ -989,7 +1002,8 @@ swiotlb_map_sg_attrs(struct device *hwdev, struct scatterlist *sgl, int nelems,
if (swiotlb_force == SWIOTLB_FORCE ||
!dma_capable(hwdev, dev_addr, sg->length)) {
phys_addr_t map = map_single(hwdev, sg_phys(sg),
- sg->length, dir, attrs);
+ sg->length, dir, attrs,
+ true);
This keeps the warning for dma_map_sg(), so seems quite ineffective.

That is the desired result, dma_map_sg() should still print the warning.

We only want to disable it for swiotlb_alloc_coherent().

Regards,
Christian.


if (map == SWIOTLB_MAP_ERROR) {
/* Don't panic here, we expect map_sg users
to do proper error handling. */
And counter to the suggestion here?

We don't use swiotlb_map_sg_attrs() in TTM, so that is irrelevant for my use case and I can't test any change regarding it.

Regards,
Christian.

-Chris