add a new dma_alloc_noncontiguous API v3

From: Christoph Hellwig
Date: Mon Mar 01 2021 - 03:56:59 EST


Hi all,

this series adds the new noncontiguous DMA allocation API requested by
various media driver maintainers.

Changes since v2:
- rebased to Linux 5.12-rc1
- dropped one already merged patch
- pass an attrs argument to dma_alloc_noncontigous
- clarify the dma_vmap_noncontiguous documentation a bit
- fix double assignments in uvcvideo

Changes since v1:
- document that flush_kernel_vmap_range and invalidate_kernel_vmap_range
must be called once an allocation is mapped into KVA
- add dma-debug support
- remove the separate dma_handle argument, and instead create fully formed
DMA mapped scatterlists
- use a directional allocation in uvcvideo
- call invalidate_kernel_vmap_range from uvcvideo