Message ID | 20240701075208.19634-1-sgarzare@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | virtio: remove virtio_tswap16s() call in vring_packed_event_read() | expand |
On Mon, Jul 1, 2024 at 3:52 PM Stefano Garzarella <sgarzare@redhat.com> wrote: > > Commit d152cdd6f6 ("virtio: use virtio accessor to access packed event") > switched using of address_space_read_cached() to virito_lduw_phys_cached() > to access packed descriptor event. > > When we used address_space_read_cached(), we needed to call > virtio_tswap16s() to handle the endianess of the field, but > virito_lduw_phys_cached() already handles it internally, so we no longer > need to call virtio_tswap16s() (as the commit had done for `off_wrap`, > but forgot for `flags`). > > Fixes: d152cdd6f6 ("virtio: use virtio accessor to access packed event") > Cc: jasowang@redhat.com > Cc: qemu-stable@nongnu.org > Reported-by: Xoykie <xoykie@gmail.com> > Link: https://lore.kernel.org/qemu-devel/CAFU8RB_pjr77zMLsM0Unf9xPNxfr_--Tjr49F_eX32ZBc5o2zQ@mail.gmail.com > Signed-off-by: Stefano Garzarella <sgarzare@redhat.com> Acked-by: Jason Wang <jasowang@redhat.com> Thanks > --- > hw/virtio/virtio.c | 1 - > 1 file changed, 1 deletion(-) > > diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c > index 893a072c9d..2e5e67bdb9 100644 > --- a/hw/virtio/virtio.c > +++ b/hw/virtio/virtio.c > @@ -323,7 +323,6 @@ static void vring_packed_event_read(VirtIODevice *vdev, > /* Make sure flags is seen before off_wrap */ > smp_rmb(); > e->off_wrap = virtio_lduw_phys_cached(vdev, cache, off_off); > - virtio_tswap16s(vdev, &e->flags); > } > > static void vring_packed_off_wrap_write(VirtIODevice *vdev, > -- > 2.45.2 >
On Mon, 1 Jul 2024 at 08:52, Stefano Garzarella <sgarzare@redhat.com> wrote: > > Commit d152cdd6f6 ("virtio: use virtio accessor to access packed event") > switched using of address_space_read_cached() to virito_lduw_phys_cached() > to access packed descriptor event. > > When we used address_space_read_cached(), we needed to call > virtio_tswap16s() to handle the endianess of the field, but > virito_lduw_phys_cached() already handles it internally, so we no longer > need to call virtio_tswap16s() (as the commit had done for `off_wrap`, > but forgot for `flags`). > > Fixes: d152cdd6f6 ("virtio: use virtio accessor to access packed event") > Cc: jasowang@redhat.com > Cc: qemu-stable@nongnu.org > Reported-by: Xoykie <xoykie@gmail.com> > Link: https://lore.kernel.org/qemu-devel/CAFU8RB_pjr77zMLsM0Unf9xPNxfr_--Tjr49F_eX32ZBc5o2zQ@mail.gmail.com > Signed-off-by: Stefano Garzarella <sgarzare@redhat.com> > --- > hw/virtio/virtio.c | 1 - > 1 file changed, 1 deletion(-) > > diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c > index 893a072c9d..2e5e67bdb9 100644 > --- a/hw/virtio/virtio.c > +++ b/hw/virtio/virtio.c > @@ -323,7 +323,6 @@ static void vring_packed_event_read(VirtIODevice *vdev, > /* Make sure flags is seen before off_wrap */ > smp_rmb(); > e->off_wrap = virtio_lduw_phys_cached(vdev, cache, off_off); > - virtio_tswap16s(vdev, &e->flags); > } Reviewed-by: Peter Maydell <peter.maydell@linaro.org> thanks -- PMM
On Mon, Jul 1, 2024 at 9:52 AM Stefano Garzarella <sgarzare@redhat.com> wrote: > > Commit d152cdd6f6 ("virtio: use virtio accessor to access packed event") > switched using of address_space_read_cached() to virito_lduw_phys_cached() > to access packed descriptor event. > > When we used address_space_read_cached(), we needed to call > virtio_tswap16s() to handle the endianess of the field, but > virito_lduw_phys_cached() already handles it internally, so we no longer > need to call virtio_tswap16s() (as the commit had done for `off_wrap`, > but forgot for `flags`). > > Fixes: d152cdd6f6 ("virtio: use virtio accessor to access packed event") > Cc: jasowang@redhat.com > Cc: qemu-stable@nongnu.org > Reported-by: Xoykie <xoykie@gmail.com> > Link: https://lore.kernel.org/qemu-devel/CAFU8RB_pjr77zMLsM0Unf9xPNxfr_--Tjr49F_eX32ZBc5o2zQ@mail.gmail.com > Signed-off-by: Stefano Garzarella <sgarzare@redhat.com> Reviewed-by: Eugenio Pérez <eperezma@redhat.com> I think it would be great to test the patches using a big endian host just in case. Thanks! > --- > hw/virtio/virtio.c | 1 - > 1 file changed, 1 deletion(-) > > diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c > index 893a072c9d..2e5e67bdb9 100644 > --- a/hw/virtio/virtio.c > +++ b/hw/virtio/virtio.c > @@ -323,7 +323,6 @@ static void vring_packed_event_read(VirtIODevice *vdev, > /* Make sure flags is seen before off_wrap */ > smp_rmb(); > e->off_wrap = virtio_lduw_phys_cached(vdev, cache, off_off); > - virtio_tswap16s(vdev, &e->flags); > } > > static void vring_packed_off_wrap_write(VirtIODevice *vdev, > -- > 2.45.2 >
On Mon, Jul 01, 2024 at 11:53:34AM +0200, Eugenio Perez Martin wrote: > On Mon, Jul 1, 2024 at 9:52 AM Stefano Garzarella <sgarzare@redhat.com> wrote: > > > > Commit d152cdd6f6 ("virtio: use virtio accessor to access packed event") > > switched using of address_space_read_cached() to virito_lduw_phys_cached() > > to access packed descriptor event. > > > > When we used address_space_read_cached(), we needed to call > > virtio_tswap16s() to handle the endianess of the field, but > > virito_lduw_phys_cached() already handles it internally, so we no longer > > need to call virtio_tswap16s() (as the commit had done for `off_wrap`, > > but forgot for `flags`). > > > > Fixes: d152cdd6f6 ("virtio: use virtio accessor to access packed event") > > Cc: jasowang@redhat.com > > Cc: qemu-stable@nongnu.org > > Reported-by: Xoykie <xoykie@gmail.com> > > Link: https://lore.kernel.org/qemu-devel/CAFU8RB_pjr77zMLsM0Unf9xPNxfr_--Tjr49F_eX32ZBc5o2zQ@mail.gmail.com > > Signed-off-by: Stefano Garzarella <sgarzare@redhat.com> > > Reviewed-by: Eugenio Pérez <eperezma@redhat.com> > > I think it would be great to test the patches using a big endian host > just in case. > > Thanks! I think we really should move to using sparse tags for endian-ness, like Linux does, and away from swap calls. > > --- > > hw/virtio/virtio.c | 1 - > > 1 file changed, 1 deletion(-) > > > > diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c > > index 893a072c9d..2e5e67bdb9 100644 > > --- a/hw/virtio/virtio.c > > +++ b/hw/virtio/virtio.c > > @@ -323,7 +323,6 @@ static void vring_packed_event_read(VirtIODevice *vdev, > > /* Make sure flags is seen before off_wrap */ > > smp_rmb(); > > e->off_wrap = virtio_lduw_phys_cached(vdev, cache, off_off); > > - virtio_tswap16s(vdev, &e->flags); > > } > > > > static void vring_packed_off_wrap_write(VirtIODevice *vdev, > > -- > > 2.45.2 > >
diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c index 893a072c9d..2e5e67bdb9 100644 --- a/hw/virtio/virtio.c +++ b/hw/virtio/virtio.c @@ -323,7 +323,6 @@ static void vring_packed_event_read(VirtIODevice *vdev, /* Make sure flags is seen before off_wrap */ smp_rmb(); e->off_wrap = virtio_lduw_phys_cached(vdev, cache, off_off); - virtio_tswap16s(vdev, &e->flags); } static void vring_packed_off_wrap_write(VirtIODevice *vdev,
Commit d152cdd6f6 ("virtio: use virtio accessor to access packed event") switched using of address_space_read_cached() to virito_lduw_phys_cached() to access packed descriptor event. When we used address_space_read_cached(), we needed to call virtio_tswap16s() to handle the endianess of the field, but virito_lduw_phys_cached() already handles it internally, so we no longer need to call virtio_tswap16s() (as the commit had done for `off_wrap`, but forgot for `flags`). Fixes: d152cdd6f6 ("virtio: use virtio accessor to access packed event") Cc: jasowang@redhat.com Cc: qemu-stable@nongnu.org Reported-by: Xoykie <xoykie@gmail.com> Link: https://lore.kernel.org/qemu-devel/CAFU8RB_pjr77zMLsM0Unf9xPNxfr_--Tjr49F_eX32ZBc5o2zQ@mail.gmail.com Signed-off-by: Stefano Garzarella <sgarzare@redhat.com> --- hw/virtio/virtio.c | 1 - 1 file changed, 1 deletion(-)