This set replaces urb buffers allocation to use the DMA noncontiguous API. Similarly to a commit sent to uvc: [1] This improves performance on ARM while not damaging performance on other platforms. The cpu performance on ARM improves because the new API does not cause the cache disable on ARM while the coherent API do. Measurements are shown in patch 4/4 [1] https://lkml.org/lkml/2021/3/12/1506 Patches Summary: * patches 1+2 are bug fixes. * patch 3 changes the way data is stored. This is a preparation to patch 4. * patch 4 is the change of API to use the noncontiguougs. Changes since v1: 1. reduce line length to be not too longer than 80 char 2. reformulate commit log of patch 4/4 and add measurements results 3. in patch 4, invalidate the vmap range before the direct mapping range. 4. test regressions for patches 1-3 (not including patch 4) and improve vars names 5. patch 2 is a new bug fix I found 6. patch 1 is extended to fix two cases of not allocating all intended urb buffers. Dafna Hirschfeld (4): media: stk1160: fix number of buffers in case not all buffers are created media: stk1160: If start stream fails, return buffers with VB2_BUF_STATE_QUEUED media: stk1160: move transfer_buffer and urb to same struct 'stk1160_urb' media: stk1160: use dma_alloc_noncontiguous API drivers/media/usb/stk1160/stk1160-core.c | 2 +- drivers/media/usb/stk1160/stk1160-v4l.c | 16 ++- drivers/media/usb/stk1160/stk1160-video.c | 142 ++++++++++++---------- drivers/media/usb/stk1160/stk1160.h | 23 +++- 4 files changed, 104 insertions(+), 79 deletions(-) -- 2.17.1