Re: [PATCH RFC 00/13] fix DMA aligment issues around virtio
From: Petr Tesarik
Date: Wed Dec 31 2025 - 08:12:32 EST
On Tue, 30 Dec 2025 05:15:42 -0500
"Michael S. Tsirkin" <mst@xxxxxxxxxx> wrote:
> Cong Wang reported dma debug warnings with virtio-vsock
> and proposed a patch, see:
>
> https://lore.kernel.org/all/20251228015451.1253271-1-xiyou.wangcong@xxxxxxxxx/
>
> 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?
Before anyone else runs into the same issue as I did: This patch series
does not apply cleanly unless you first apply commit b148e85c918a
("virtio_ring: switch to use vring_virtqueue for virtqueue_add
variants") from the mst/vhost/vhost branch.
But if you go to the trouble of adding the mst/vhost remote, then the
above-mentioned branch also contains this patch series, and it's
probably the best place to find the patched code...
Now, let me set out for review.
Petr T
> 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(-)
>