[dpdk-dev] [PATCH v3 4/4] net/vhost: add NULL pointer checking

Yang, Zhiyong zhiyong.yang at intel.com
Fri Mar 30 04:00:31 CEST 2018


Hi Maxime,

> -----Original Message-----
> From: Maxime Coquelin [mailto:maxime.coquelin at redhat.com]
> Sent: Thursday, March 29, 2018 9:20 PM
> To: Yang, Zhiyong <zhiyong.yang at intel.com>; dev at dpdk.org
> Cc: Tan, Jianfeng <jianfeng.tan at intel.com>; Wang, Zhihong
> <zhihong.wang at intel.com>; thomas at monjalon.net; Wang, Dong1
> <dong1.wang at intel.com>; Bie, Tiwei <tiwei.bie at intel.com>
> Subject: Re: [PATCH v3 4/4] net/vhost: add NULL pointer checking
> 
> Hi,
> 
> On 03/21/2018 04:03 AM, zhiyong.yang at intel.com wrote:
> > When vhost user PMD works in client mode to connect/reconnect
> > virtio-user with server mode, new thread sometimes may run to
> > new_device before queue_setup has been done, So have to wait until
> > memory allocation is done.
> >
> > Release note is updated in the patch.
> >
> > Signed-off-by: Zhiyong Yang <zhiyong.yang at intel.com>
> > ---
> >   doc/guides/rel_notes/release_18_05.rst | 7 +++++++
> >   drivers/net/vhost/rte_eth_vhost.c      | 9 +++++++++
> >   2 files changed, 16 insertions(+)
> >
> > diff --git a/doc/guides/rel_notes/release_18_05.rst
> > b/doc/guides/rel_notes/release_18_05.rst
> > index 3923dc253..7b301f021 100644
> > --- a/doc/guides/rel_notes/release_18_05.rst
> > +++ b/doc/guides/rel_notes/release_18_05.rst
> > @@ -41,6 +41,13 @@ New Features
> >        Also, make sure to start the actual text at the margin.
> >
> =========================================================
> >
> > +* **Added support for virtio-user server mode.**
> > +
> > +  In a container environment if the vhost-user backend restarts,
> > + there's no way  for it to reconnect to virtio-user. To address this,
> > + support for server mode  is added. In this mode the socket file is
> > + created by virtio-user, which the  backend then connects to. This
> > + means that if the backend restarts, it can  reconnect to virtio-user and
> continue communications.
> 
> I think this shouldn't be part of this patch.
> 
Ok, I can merge it with the previous patch 3/4.

> >
> >   API Changes
> >   -----------
> > diff --git a/drivers/net/vhost/rte_eth_vhost.c
> > b/drivers/net/vhost/rte_eth_vhost.c
> > index 3aae01c39..2490bad0b 100644
> > --- a/drivers/net/vhost/rte_eth_vhost.c
> > +++ b/drivers/net/vhost/rte_eth_vhost.c
> > @@ -580,6 +580,15 @@ new_device(int vid)
> >   		eth_dev->data->numa_node = newnode;
> >   #endif
> >
> > +	/* The thread may run here before eth_dev->data->rx_queues or
> > +	 * eth_dev->data->tx_queues have gotten valid memory, so have to
> > +	 * wait until memory allocation is done.
> > +	 */
> > +	while (!eth_dev->data->rx_queues ||
> > +	       !eth_dev->data->tx_queues) {
> > +		usleep(1);
> > +	}
> > +
> >   	for (i = 0; i < eth_dev->data->nb_rx_queues; i++) {
> >   		vq = eth_dev->data->rx_queues[i];
> >   		if (vq == NULL)
> >
> 
> I don't like the idea of polling here.
> It looks like Junjie is addressing the problem in a different way [0], do you
> confirm it would work in your case?
> 

Great to hear that.  I have to fix it when the issue is found.
It's better to have another solution. I will test it later.

Thanks
Zhiyong

> Thanks,
> Maxime
> 
> [0]: http://dpdk.org/dev/patchwork/patch/36643/


More information about the dev mailing list