On 8/25/23 19:01, Ilya Maximets wrote: > It was supposed to be a compiler barrier and it was a compiler barrier > initially called 'wmb' (??) when virtio core support was introduced. > Later all the instances of 'wmb' were switched to smp_wmb to fix memory > ordering issues on non-x86 platforms. However, this one doesn't need > to be an actual barrier. It's enough for it to stay a compiler barrier > as its only purpose is to ensure that the value is not read twice. > > There is no counterpart read barrier in the drivers, AFAICT. And even > if we needed an actual barrier, it shouldn't have been a write barrier. > > Signed-off-by: Ilya Maximets <i.maxim...@ovn.org> > ---
Kind reminder. Best regards, Ilya Maximets. > hw/virtio/virtio.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c > index 309038fd46..6eb8586858 100644 > --- a/hw/virtio/virtio.c > +++ b/hw/virtio/virtio.c > @@ -1051,7 +1051,7 @@ static int virtqueue_split_read_next_desc(VirtIODevice > *vdev, VRingDesc *desc, > /* Check they're not leading us off end of descriptors. */ > *next = desc->next; > /* Make sure compiler knows to grab that: we don't want it changing! */ > - smp_wmb(); > + barrier(); > > if (*next >= max) { > virtio_error(vdev, "Desc next is %u", *next);