[dpdk-dev] [PATCH] vhost: Fix the vhost broken issue

Xie, Huawei huawei.xie at intel.com
Fri Oct 17 05:19:45 CEST 2014


Thomas:
Thoughts about this? Could I send example patch with this walk around?

> -----Original Message-----
> From: Ouyang, Changchun
> Sent: Thursday, October 16, 2014 8:15 PM
> To: Xie, Huawei; Thomas Monjalon; dev at dpdk.org
> Cc: Cao, Waterman; Richardson, Bruce; Ouyang, Changchun
> Subject: RE: [PATCH] vhost: Fix the vhost broken issue
> 
> No problem, I will investigate the root cause.
> 
> But before figuring out the root cause, I think we could add check in your new
> sample to
> Check the INC_VEC is enable or not, If it is enabled, print error message and hint
> user
> Disable it in config file if mergeable feature is triggered in vhost. Then this issue
> should not
> block you from sending out your vhost app patch.
> 
> Your vhost app patch will block my another patch about multicast feature as
> your vhost lib patch delete the vhost sample app totally.
> So expect your vhost app patch send out soon.
> 
> Thanks and regards,
> Changchun
> 
> 
> -----Original Message-----
> From: Xie, Huawei
> Sent: Thursday, October 16, 2014 3:20 AM
> To: Ouyang, Changchun; Thomas Monjalon; dev at dpdk.org
> Cc: Cao, Waterman; Richardson, Bruce
> Subject: RE: [PATCH] vhost: Fix the vhost broken issue
> 
> I generated the vhost example patch based on vhost library, but find there is
> issue with --mergeable feature.
> Only thousands of packets could be sent.
> Then I tried the latest vhost example,  which is just before my vhost lib patch, I
> found that not only it has the issue Which is fixed by the following patch but the
> --mergeable feature also doesn't work.
> Haven't got the change to dig into it.
> 
> Hints here:
> 1. mbuf allocation failure after thousands of packets.
> 2. disable INC_VEC(vectore scatter receive) in configure could solve this.
> 3. tried sending the packets directly out after receiving from vmdq queue, it
> works.
> 
> Could you root cause the issue, Changchun? You could work on the most recent
> example.
> 
> > -----Original Message-----
> > From: Ouyang, Changchun
> > Sent: Monday, October 13, 2014 12:48 AM
> > To: Thomas Monjalon; dev at dpdk.org
> > Cc: Xie, Huawei; Cao, Waterman; Ouyang, Changchun
> > Subject: RE: [PATCH] vhost: Fix the vhost broken issue
> >
> > Hi Thomas,
> >
> > If HuaweiXie's patch set for vhost library and new vhost sample could
> > be applied into dpdk.org very soon, Then this patch could be
> > depressed/superseded, I think his patch can fix this issue.
> > Otherwise, this patch could be high priority as the vhost is broken in
> > the tip code due to recent commit related to mbuf change.
> >
> > Thanks and regards,
> > Changchun
> >
> > > -----Original Message-----
> > > From: Ouyang, Changchun
> > > Sent: Monday, October 13, 2014 3:40 PM
> > > To: dev at dpdk.org
> > > Cc: Cao, Waterman; Ouyang, Changchun
> > > Subject: [PATCH] vhost: Fix the vhost broken issue
> > >
> > > As the vhost sample is broken by the following commit,
> > >   commit 08b563ffb19d8baf59dd84200f25bc85031d18a7
> > >   Author: Olivier Matz <olivier.matz at 6wind.com>
> > >   Date:   Thu Sep 11 14:15:35 2014 +0100
> > >   mbuf: replace data pointer by an offset
> > >
> > > It leads to segment fault error in vhost when binding a virtio
> > > device MAC address to its corresponding VMDq pool by executing
> > > command line 'start tx- first' in test-pmd on guest.
> > >
> > > This patch fixes that issue.
> > >
> > > Signed-off-by: Changchun Ouyang <changchun.ouyang at intel.com>
> > > ---
> > >  examples/vhost/main.c | 1 +
> > >  1 file changed, 1 insertion(+)
> > >
> > > diff --git a/examples/vhost/main.c b/examples/vhost/main.c index
> > > 9cf8e20..a6db607 100644
> > > --- a/examples/vhost/main.c
> > > +++ b/examples/vhost/main.c
> > > @@ -1782,6 +1782,7 @@ virtio_dev_tx(struct virtio_net* dev, struct
> > > rte_mempool *mbuf_pool)
> > >  		/* Setup dummy mbuf. This is copied to a real mbuf if
> transmitted
> > > out the physical port. */
> > >  		m.data_len = desc->len;
> > >  		m.pkt_len = desc->len;
> > > +		m.buf_addr = (void *)(uintptr_t)buff_addr;
> > >  		m.data_off = 0;
> > >
> > >  		PRINT_PACKET(dev, (uintptr_t)buff_addr, desc->len, 0);
> > > --
> > > 1.8.4.2



More information about the dev mailing list