On Tue, 30 Dec 2025 05:15:42 -0500 "Michael S. Tsirkin" <[email protected]> wrote:
> 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? 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(-) >
