> @@ -713,6 +713,7 @@ void *
> swiotlb_alloc_coherent(struct device *hwdev, size_t size,
> dma_addr_t *dma_handle, gfp_t flags)
> {
> + bool warn = !(flags & __GFP_NOWARN);This is still wrong. __GFP_NOWARN has no meaning for DMA coherent allocations, and if a driver expects it to do anything it's doing it wrong. This needs to check for DMA_ATTR_NO_WARN, and thus get the attrs passed.

