Messages in this thread | | | Subject | Re: [PATCH] swiotlb: suppress warning when __GFP_NOWARN is set v4 | From | Christian König <> | Date | Thu, 4 Jan 2018 11:16:39 +0100 |
| |
Am 04.01.2018 um 10:53 schrieb Christoph Hellwig: > This seems to collide with my dma direct/swiotlb series posted recently. > >> +++ b/lib/swiotlb.c >> @@ -490,11 +490,11 @@ static void swiotlb_bounce(phys_addr_t orig_addr, phys_addr_t tlb_addr, >> } >> } >> >> -phys_addr_t swiotlb_tbl_map_single(struct device *hwdev, >> - dma_addr_t tbl_dma_addr, >> - phys_addr_t orig_addr, size_t size, >> - enum dma_data_direction dir, >> - unsigned long attrs) >> +static phys_addr_t tbl_map_single(struct device *hwdev, >> + dma_addr_t tbl_dma_addr, >> + phys_addr_t orig_addr, size_t size, >> + enum dma_data_direction dir, >> + unsigned long attrs, bool warn) > We already have DMA_ATTR_NO_WARN which can be passed in attrs. Please > use it instead of reinventing it. > >> swiotlb_alloc_coherent(struct device *hwdev, size_t size, >> dma_addr_t *dma_handle, gfp_t flags) >> { >> + bool warn = !(flags & __GFP_NOWARN); >> dma_addr_t dev_addr; >> void *ret; >> int order = get_order(size); >> @@ -739,7 +750,7 @@ swiotlb_alloc_coherent(struct device *hwdev, size_t size, >> * will grab memory from the lowest available address range. >> */ >> phys_addr_t paddr = map_single(hwdev, 0, size, >> - DMA_FROM_DEVICE, 0); >> + DMA_FROM_DEVICE, 0, warn); > Note: in my above series swiotlb_alloc_coherent is going away, and > replaced with a swiotlb_alloc that takes a dma_attrs argument.
That's what I thought about as well, but this is a bug fix for stable kernels. So the changes should be as small as possible.
But using DMA_ATTR_NO_WARN is a good point, going to send a v5 which uses this instead.
Regards, Christian.
> > Using that for passing the nowarn flag is the right way to go instead > of using __GFP_NOWARN.
| |