Cong Wang reported dma debug warnings with virtio-vsock
and proposed a patch, see:
https://lore.kernel.org/all/20251228015451.1253271-1-xiyou.wangcong@gmail.com/
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.
Lightly tested. Cursor/claude used liberally, mostly for
refactoring/API updates/English.
DMA maintainers, could you please confirm the DMA core changes
are ok with you?
Thanks!
Michael S. Tsirkin (15):
dma-mapping: add __dma_from_device_group_begin()/end()
docs: dma-api: document __dma_from_device_group_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 padding
gpio: virtio: fix DMA alignment
gpio: virtio: reorder fields to reduce struct padding
Documentation/core-api/dma-api-howto.rst | 52 ++++++++++++++
Documentation/core-api/dma-attributes.rst | 9 +++
drivers/char/hw_random/virtio-rng.c | 3 +
drivers/gpio/gpio-virtio.c | 15 ++--
drivers/scsi/virtio_scsi.c | 17 +++--
drivers/virtio/virtio_input.c | 5 +-
drivers/virtio/virtio_ring.c | 83 ++++++++++++++++-------
include/linux/dma-mapping.h | 20 ++++++
include/linux/virtio.h | 5 ++
kernel/dma/debug.c | 28 ++++++--
net/vmw_vsock/virtio_transport.c | 8 ++-
11 files changed, 205 insertions(+), 40 deletions(-)
--
MST