Re: [PATCH RFC 00/13] fix DMA aligment issues around virtio
From: Petr Tesarik <hidden>
Date: 2025-12-31 13:12:32
Also in:
kvm, linux-crypto, linux-doc, linux-iommu, linux-scsi, lkml, virtualization
On Tue, 30 Dec 2025 05:15:42 -0500 "Michael S. Tsirkin" [off-list ref] 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@gmail.com/ (local) 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(-)