6094557de0
In case VIRTIO_F_ORDER_PLATFORM(36) is not negotiated, then the frontend and backend are assumed to be implemented in software, that is they can run on identical CPUs in an SMP configuration. Thus a weak form of memory barriers like rte_smp_r/wmb, other than rte_cio_r/wmb, is sufficient for this case(vq->hw->weak_barriers == 1) and yields better performance. For the above case, this patch helps yielding even better performance by replacing the two-way barriers with C11 one-way barriers for avail flags in packed ring. Meanwhile, a read barrier is required to ensure ordering between descriptor's flags and content reads [1]. With C11, load-acquire can enforce the ordering instead of rmb barrier. [1] https://patchwork.dpdk.org/patch/49109/ Signed-off-by: Joyce Kong <joyce.kong@arm.com> Reviewed-by: Gavin Hu <gavin.hu@arm.com> Reviewed-by: Phil Yang <phil.yang@arm.com> Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com> |
||
---|---|---|
.. | ||
virtio_user | ||
Makefile | ||
meson.build | ||
rte_pmd_virtio_version.map | ||
virtio_ethdev.c | ||
virtio_ethdev.h | ||
virtio_logs.h | ||
virtio_pci.c | ||
virtio_pci.h | ||
virtio_ring.h | ||
virtio_rxtx_simple_altivec.c | ||
virtio_rxtx_simple_neon.c | ||
virtio_rxtx_simple_sse.c | ||
virtio_rxtx_simple.c | ||
virtio_rxtx_simple.h | ||
virtio_rxtx.c | ||
virtio_rxtx.h | ||
virtio_user_ethdev.c | ||
virtqueue.c | ||
virtqueue.h |