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.

Using that for passing the nowarn flag is the right way to go instead
of using __GFP_NOWARN.

Reply via email to