Michael S. Tsirkin a821ce5933 virtio: order index/descriptor reads
virtio has the equivalent of:

	if (vq->last_avail_index != vring_avail_idx(vq)) {
		read descriptor head at vq->last_avail_index;
	}

In theory, processor can reorder descriptor head
read to happen speculatively before the index read.
this would trigger the following race:

	host descriptor head read <- reads invalid head from ring
		guest writes valid descriptor head
		guest writes avail index
	host avail index read <- observes valid index

as a result host will use an invalid head value.
This was not observed in the field by me but after
the experience with the previous two races
I think it is prudent to address this theoretical race condition.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
2012-04-25 10:53:47 +03:00
..
2012-02-24 14:01:19 +05:30
2012-04-12 19:01:42 -03:00
2012-04-17 10:23:29 +02:00
2012-04-17 16:57:58 +04:00
2012-02-07 22:11:04 +04:00
2012-02-15 09:39:21 -06:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-03-17 16:30:06 +00:00
2012-03-17 16:30:06 +00:00
2012-03-14 22:20:26 +01:00
2012-02-15 09:39:21 -06:00
2012-03-14 22:20:26 +01:00
2012-02-15 09:39:21 -06:00
2012-03-14 22:20:26 +01:00
2012-02-15 09:39:21 -06:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-02-15 09:39:21 -06:00
2012-03-24 13:06:41 +00:00
2012-02-15 09:39:21 -06:00
2012-03-13 14:57:12 +00:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-03-19 10:52:52 +00:00
2012-03-14 22:20:26 +01:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-03-14 22:20:26 +01:00
2012-02-15 09:39:21 -06:00
2012-03-14 22:20:26 +01:00
2012-02-17 11:13:05 +00:00
2012-02-10 10:44:52 +00:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-03-14 22:20:26 +01:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-03-14 22:20:26 +01:00
2012-02-15 09:39:21 -06:00
2012-03-07 12:27:41 +02:00
2012-03-07 12:27:41 +02:00
2012-02-15 09:39:21 -06:00
2012-02-17 09:58:22 -06:00
2012-03-14 22:20:26 +01:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-03-19 11:30:56 +00:00
2012-02-15 09:39:21 -06:00
2012-03-30 08:14:11 -05:00
2012-03-30 08:14:11 -05:00
2012-02-15 09:39:21 -06:00
2012-02-24 13:36:04 -06:00
2012-03-14 22:20:26 +01:00
2012-02-15 09:39:21 -06:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-03-15 20:55:45 +01:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-02-22 09:02:19 -06:00
2012-03-14 22:20:26 +01:00
2012-02-15 09:39:21 -06:00
2012-03-14 22:20:26 +01:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-03-15 16:54:21 +00:00
2012-03-15 16:54:21 +00:00
2012-02-15 09:39:21 -06:00
2012-03-15 16:54:21 +00:00
2012-02-15 09:39:21 -06:00
2012-03-24 13:06:41 +00:00
2012-03-15 16:54:21 +00:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-04-17 10:23:21 +02:00
2012-03-16 00:41:28 +02:00
2012-02-15 09:39:21 -06:00
2012-02-17 09:58:22 -06:00
2012-02-17 09:58:22 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-03-30 10:31:23 +00:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-03-14 22:20:26 +01:00
2012-02-15 09:39:21 -06:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-04-07 14:00:45 +00:00
2012-04-12 11:14:29 +01:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-02-15 09:39:21 -06:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-04-19 16:26:33 +02:00
2012-04-19 16:26:33 +02:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-03-16 00:41:15 +02:00
2012-03-16 00:41:15 +02:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-03-16 00:41:28 +02:00
2012-03-16 00:41:28 +02:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-03-14 22:20:26 +01:00
2012-04-15 20:02:28 +02:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-03-14 22:20:26 +01:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-04-07 14:00:45 +00:00
2012-04-04 19:20:44 +00:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-04-17 10:23:21 +02:00
2012-02-15 09:39:21 -06:00
2012-03-14 22:20:26 +01:00
2012-02-04 12:45:10 +00:00
2012-02-04 12:45:10 +00:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-03-24 13:06:41 +00:00
2012-02-04 12:45:10 +00:00
2012-04-11 13:19:32 +03:00
2012-03-14 22:20:26 +01:00
2012-02-15 09:39:21 -06:00
2012-03-16 00:45:23 +02:00
2012-04-25 10:53:47 +03:00
2012-04-19 10:31:05 +02:00
2012-02-15 09:39:21 -06:00
2012-03-14 22:20:26 +01:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-03-14 22:20:26 +01:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-02-15 09:39:21 -06:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-03-14 22:20:26 +01:00
2012-02-15 09:39:21 -06:00
2012-03-09 07:02:50 -06:00