Cong Wang reported dma debug warnings with virtio-vsock and proposed a patch, see:
https://lore.kernel.org/all/[email protected]/ however, the issue is more widespread. This is an attempt to fix it systematically. Note: i2c and gio might also be affected, I am still looking into it. Help from maintainers welcome. Early RFC, compile tested only. Sending for early feedback/flames. Cursor/claude used liberally mostly for refactoring, and english. DMA maintainers, could you please confirm the DMA core changes are ok with you? Thanks! Michael S. Tsirkin (13): dma-mapping: add __dma_from_device_align_begin/end docs: dma-api: document __dma_align_begin/end dma-mapping: add DMA_ATTR_CPU_CACHE_CLEAN docs: dma-api: document DMA_ATTR_CPU_CACHE_CLEAN dma-debug: track cache clean flag in entries virtio: add virtqueue_add_inbuf_cache_clean API vsock/virtio: fix DMA alignment for event_list vsock/virtio: use virtqueue_add_inbuf_cache_clean for events virtio_input: fix DMA alignment for evts virtio_scsi: fix DMA cacheline issues for events virtio-rng: fix DMA alignment for data buffer virtio_input: use virtqueue_add_inbuf_cache_clean for events vsock/virtio: reorder fields to reduce struct padding Documentation/core-api/dma-api-howto.rst | 42 +++++++++++++ Documentation/core-api/dma-attributes.rst | 9 +++ drivers/char/hw_random/virtio-rng.c | 2 + drivers/scsi/virtio_scsi.c | 18 ++++-- drivers/virtio/virtio_input.c | 5 +- drivers/virtio/virtio_ring.c | 72 +++++++++++++++++------ include/linux/dma-mapping.h | 17 ++++++ include/linux/virtio.h | 5 ++ kernel/dma/debug.c | 26 ++++++-- net/vmw_vsock/virtio_transport.c | 8 ++- 10 files changed, 172 insertions(+), 32 deletions(-) -- MST
