Since commit
4c02e453cc62 ("eal: introduce SMP memory barriers") virtio
uses architecture dependent SMP barriers. vHost should use them too.
Fixes:
4c02e453cc62 ("eal: introduce SMP memory barriers")
Signed-off-by: Ilya Maximets <i.maximets@samsung.com>
Acked-by: Huawei Xie <huawei.xie@intel.com>
rte_prefetch0(&vq->desc[desc_indexes[i+1]]);
}
rte_prefetch0(&vq->desc[desc_indexes[i+1]]);
}
- rte_compiler_barrier();
/* Wait until it's our turn to add our buffer to the used ring. */
while (unlikely(vq->last_used_idx != res_start_idx))
/* Wait until it's our turn to add our buffer to the used ring. */
while (unlikely(vq->last_used_idx != res_start_idx))
nr_used = copy_mbuf_to_desc_mergeable(dev, vq, start, end,
pkts[pkt_idx]);
nr_used = copy_mbuf_to_desc_mergeable(dev, vq, start, end,
pkts[pkt_idx]);
- rte_compiler_barrier();
/*
* Wait until it's our turn to add our buffer
/*
* Wait until it's our turn to add our buffer
sizeof(vq->used->ring[used_idx]));
}
sizeof(vq->used->ring[used_idx]));
}
- rte_compiler_barrier();
+ rte_smp_wmb();
+ rte_smp_rmb();
vq->used->idx += i;
vhost_log_used_vring(dev, vq, offsetof(struct vring_used, idx),
sizeof(vq->used->idx));
vq->used->idx += i;
vhost_log_used_vring(dev, vq, offsetof(struct vring_used, idx),
sizeof(vq->used->idx));