Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

dma-mapping: translate __GFP_NOFAIL to DMA_ATTR_NO_WARN

This allows all dma_map_ops instances to entirely rely on
DMA_ATTR_NO_WARN going forward.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Acked-by: Robin Murphy <robin.murphy@arm.com>

+10 -4
+10 -4
include/linux/dma-mapping.h
··· 558 558 } 559 559 560 560 static inline void *dma_alloc_coherent(struct device *dev, size_t size, 561 - dma_addr_t *dma_handle, gfp_t flag) 561 + dma_addr_t *dma_handle, gfp_t gfp) 562 562 { 563 - return dma_alloc_attrs(dev, size, dma_handle, flag, 0); 563 + 564 + return dma_alloc_attrs(dev, size, dma_handle, gfp, 565 + (gfp & __GFP_NOWARN) ? DMA_ATTR_NO_WARN : 0); 564 566 } 565 567 566 568 static inline void dma_free_coherent(struct device *dev, size_t size, ··· 796 794 static inline void *dma_alloc_wc(struct device *dev, size_t size, 797 795 dma_addr_t *dma_addr, gfp_t gfp) 798 796 { 799 - return dma_alloc_attrs(dev, size, dma_addr, gfp, 800 - DMA_ATTR_WRITE_COMBINE); 797 + unsigned long attrs = DMA_ATTR_NO_WARN; 798 + 799 + if (gfp & __GFP_NOWARN) 800 + attrs |= DMA_ATTR_NO_WARN; 801 + 802 + return dma_alloc_attrs(dev, size, dma_addr, gfp, attrs); 801 803 } 802 804 #ifndef dma_alloc_writecombine 803 805 #define dma_alloc_writecombine dma_alloc_wc