[dpdk-dev] [RFC 01/19] vhost: protect virtio_net device struct
Jens Freimann
jfreimann at redhat.com
Wed Jul 5 12:07:58 CEST 2017
On Tue, Jul 04, 2017 at 11:49:04AM +0200, Maxime Coquelin wrote:
>virtio_net device might be accessed while being reallocated
>in case of NUMA awareness. This case might be theoretical,
>but it will be needed anyway to protect vrings pages against
>invalidation.
>
>The virtio_net devs are now protected with a readers/writers
>lock, so that before reallocating the device, it is ensured
>that it is not being referenced by the processing threads.
>
>Signed-off-by: Maxime Coquelin <maxime.coquelin at redhat.com>
>---
> lib/librte_vhost/vhost.c | 223 +++++++++++++++++++++++++++++++++++-------
> lib/librte_vhost/vhost.h | 3 +-
> lib/librte_vhost/vhost_user.c | 73 +++++---------
> lib/librte_vhost/virtio_net.c | 17 +++-
> 4 files changed, 228 insertions(+), 88 deletions(-)
[...]
>+int
>+realloc_device(int vid, int vq_index, int node)
>+{
>+ struct virtio_net *dev, *old_dev;
>+ struct vhost_virtqueue *vq;
>+
>+ dev = rte_malloc_socket(NULL, sizeof(*dev), 0, node);
>+ if (!dev)
>+ return -1;
>+
>+ vq = rte_malloc_socket(NULL, sizeof(*vq), 0, node);
>+ if (!vq)
>+ return -1;
>+
>+ old_dev = get_device_wr(vid);
>+ if (!old_dev)
>+ return -1;
Should we free vq and dev here?
regards,
Jens
More information about the dev
mailing list