USB: DMA: mapping existing buffer is not supported?

From: Randy Li
Date: Wed Sep 13 2023 - 15:07:05 EST


Hello

I was trying to understand why USB webcams (UVC) have to copy video data through the CPU (uvc_video_complete() schedules uvc_video_copy_data_work() for this purpose). During my investigation, I noticed that functions like|usb_sg_*() and |usb_buffer_*() are not available since kernel version 2.6.12.

I can comprehend that USB host controllers such as xHCI, commonly found in embedded implementations like dwc3, do not support IOMMU. However, this should not prevent them from operating on a contiguous buffer.

If the USB subsystem can no longer work with existing buffers, I propose that we consider removing the remaining documentation in the "Working with existing buffers" section of Documentation/driver-api/usb/dma.rst.

Sincerely

Randy