Thread (44 messages) 44 messages, 6 authors, 2026-01-29

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

From: Stefan Hajnoczi <stefanha@redhat.com>
Date: 2026-01-07 16:29:54
Also in: kvm, linux-crypto, linux-doc, linux-iommu, linux-scsi, lkml, virtualization

On Tue, Jan 06, 2026 at 09:50:00AM -0500, Michael S. Tsirkin wrote:
On Mon, Jan 05, 2026 at 01:19:39PM -0500, Stefan Hajnoczi wrote:
quoted
On Mon, Jan 05, 2026 at 03:23:29AM -0500, Michael S. Tsirkin wrote:
quoted
@@ -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?
No because virtio does unmap and syncs the cache line.

In other words, CPU reads cause no issues.

The issues are exclusively around CPU writes dirtying the
cache and writeback overwriting DMA data.
I see. In that case I'm happy with the virtio-scsi change:

Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>

Attachments

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help