Re: [PATCH v2 10/15] virtio_scsi: fix DMA cacheline issues for events

Stefan Hajnoczi
2026-01-06T14:23:42Z

[-- Attachment #1: Type: text/plain, Size: 1072 bytes --]

On Mon, Jan 05, 2026 at 03:23:29AM -0500, Michael S. Tsirkin wrote:
> @@ -61,7 +62,7 @@ struct virtio_scsi_cmd {
>
> struct virtio_scsi_event_node {
> struct virtio_scsi *vscsi;
> - struct virtio_scsi_event event;
> + struct virtio_scsi_event *event;
> struct work_struct work;
> };
>
> @@ -89,6 +90,11 @@ struct virtio_scsi {
>
> struct virtio_scsi_vq ctrl_vq;
> struct virtio_scsi_vq event_vq;
> +
> + __dma_from_device_group_begin();
> + struct virtio_scsi_event events[VIRTIO_SCSI_EVENT_LEN];
> + __dma_from_device_group_end();

If the device emits two events in rapid succession, could the CPU see
stale data for the second event because it already holds the cache line
for reading the first event?

In other words, it's not obvious to me that the DMA warnings are indeed
spurious and should be silenced here.

It seems safer and simpler to align and pad the struct virtio_scsi_event
field in struct virtio_scsi_event_node rather than packing these structs
into a single array here they might share cache lines.

Stefan

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]