[dpdk-dev] [PATCH 1/5] bus/vmbus: add devargs support

Stephen Hemminger stephen at networkplumber.org
Fri Sep 14 17:21:51 CEST 2018


On Fri, 14 Sep 2018 15:58:04 +0200
Gaëtan Rivet <gaetan.rivet at 6wind.com> wrote:

> On Fri, Sep 14, 2018 at 02:19:19PM +0100, Ferruh Yigit wrote:
> > On 9/14/2018 2:06 PM, Gaëtan Rivet wrote:  
> > > Hi,
> > > 
> > > On Fri, Sep 14, 2018 at 01:46:59PM +0100, Ferruh Yigit wrote:  
> > >> On 8/30/2018 11:35 PM, Stephen Hemminger wrote:  
> > >>> From: Stephen Hemminger <sthemmin at microsoft.com>
> > >>>
> > >>> Take device arguments from command line and put
> > >>> them in the device devargs.
> > >>>
> > >>> Signed-off-by: Stephen Hemminger <sthemmin at microsoft.com>  
> > >>
> > >> <...>
> > >>  
> > >>> @@ -204,6 +203,27 @@ vmbus_parse(const char *name, void *addr)
> > >>>  	return ret;
> > >>>  }
> > >>>  
> > >>> +/*
> > >>> + * scan for matching device args on command line
> > >>> + * example:
> > >>> + *	-w 'vmbus(635a7ae3-091e-4410-ad59-667c4f8c04c3,latency=20)'  
> > >>
> > >> This is just in comment but,
> > >>
> > >> I guess latest syntax is:
> > >>  -w "vmbus:635a7ae3-091e-4410-ad59-667c4f8c04c3,latency=20"
> > >>
> > >> @Gaetan, is latest devarg syntax documented somewhere?  
> > > 
> > > That's the current syntax indeed. Some documentation is found at
> > > 
> > > lib/librte_eal/common/include/rte_devargs.h:100
> > > 
> > > Where it is specified that the bus name can be either omitted or
> > > followed by any character, to separate it from the device identifier.
> > > 
> > > This means that using ':' is fine, as well as '('. As long as the device
> > > PMD afterward ignore the dangling ')' during devargs parsing, this should
> > > be fine.
> > > 
> > > I don't think this is very clean, but it works.  
> > 
> > Thanks for the info, I see how "(" works, but ")" is takes as part of argument
> > and causing problem, I think better to not give "()" as supported syntax at all.
> > 
> > btw, now both -w and --vdev are valid and can be used interchangeably, right? I
> > mean all following are valid?
> > -w pci:0000:86:06.0,enable_floating_veb=1
> > -w vdev:net_pcap,iface=lo
> > --vdev pci:0000:86:06.0,enable_floating_veb=1
> > --vdev vdev:net_pcap,iface=lo
> > 
> >   
> 
> They are both valid but cannot be used interchangeably.
> 
> This was the case at one point, between two rcs, because I had removed
> the devtype and the bus black/white-listing was configured another way.
> 
> A user complained about the API change because it was not announced in
> time IIRC, and this was scrapped. Since then, the effort has been to on
> the new syntax instead of cleaning the old system.
> 
> They cannot be used interchangeably because an rte_devtype is defined by
> the parameter choosen. BLACKLISTED_PCI for -b, WHITELISTED_PCI for -w,
> and VIRTUAL for --vdev.
> 
> -b will actually change the bus configuration to "blacklist mode", -w to
> "whitelist mode", and --vdev will do nothing.
> 
> So a PCI device declared using --vdev, will actually be skipped during
> PCI probe because by default it operates in blacklist mode, and the
> device policy is not WHITELISTED. This could surprise the one attempting
> this trick.
> 
> This semantic is subtle and bug-prone. I'm adding it to the pile of
> reasons I'd like to remove the blacklist mode altogether.
> 

It would have been nice if there was a --devargs instead of overloading -w and -b.
Especially when just changing parameter on a device.


More information about the dev mailing list