Re: [PATCH v2 1/2] add pci-bridge controller type

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Jan 08, 2013 at 04:55:28PM +0800, li guang wrote:
> 在 2013-01-08二的 08:51 +0000,Daniel P. Berrange写道:
> > On Tue, Jan 08, 2013 at 04:47:40PM +0800, li guang wrote:
> > > 在 2013-01-08二的 16:37 +0800,li guang写道:
> > > > 在 2013-01-08二的 08:04 +0000,Daniel P. Berrange写道:
> > > > > On Tue, Jan 08, 2013 at 09:58:49AM +0800, liguang wrote:
> > > > > > Signed-off-by: liguang <lig.fnst@xxxxxxxxxxxxxx>
> > > > > > ---
> > > > > >  src/conf/device_conf.c |   12 +++++++++++-
> > > > > >  src/conf/device_conf.h |    1 +
> > > > > >  src/conf/domain_conf.c |    5 ++++-
> > > > > >  src/conf/domain_conf.h |    1 +
> > > > > >  4 files changed, 17 insertions(+), 2 deletions(-)
> > > > > > 
> > > > > > diff --git a/src/conf/device_conf.c b/src/conf/device_conf.c
> > > > > > index 7b97f45..1c06ed0 100644
> > > > > > --- a/src/conf/device_conf.c
> > > > > > +++ b/src/conf/device_conf.c
> > > > > > @@ -51,16 +51,18 @@ int
> > > > > >  virDevicePCIAddressParseXML(xmlNodePtr node,
> > > > > >                              virDevicePCIAddressPtr addr)
> > > > > >  {
> > > > > > -    char *domain, *slot, *bus, *function, *multi;
> > > > > > +    char *domain, *slot, *bus, *function, *multi, *bridge;
> > > > > >      int ret = -1;
> > > > > >  
> > > > > >      memset(addr, 0, sizeof(*addr));
> > > > > > +    addr->bridge = -1;
> > > > > >  
> > > > > >      domain   = virXMLPropString(node, "domain");
> > > > > >      bus      = virXMLPropString(node, "bus");
> > > > > >      slot     = virXMLPropString(node, "slot");
> > > > > >      function = virXMLPropString(node, "function");
> > > > > >      multi    = virXMLPropString(node, "multifunction");
> > > > > > +    bridge   = virXMLPropString(node, "bridge");
> > > > > >  
> > > > > >      if (domain &&
> > > > > >          virStrToLong_ui(domain, NULL, 0, &addr->domain) < 0) {
> > > > > > @@ -98,6 +100,14 @@ virDevicePCIAddressParseXML(xmlNodePtr node,
> > > > > >          goto cleanup;
> > > > > >  
> > > > > >      }
> > > > > > +
> > > > > > +    if (bridge &&
> > > > > > +        virStrToLong_i(bridge, NULL, 0, &addr->bridge) < 0) {
> > > > > > +        virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> > > > > > +                       _("pci-bridge number must be >= 0 "));
> > > > > > +        goto cleanup;
> > > > > > +    }
> > > > > 
> > > > > This is bogus - there's no need for a new 'bridge' attribute - we
> > > > > have 'bus' which is sufficient.
> > > > 
> > > > Oh, yes, this version 'bridge' is unnecessary.
> > > > 
> > > > In former version, I want to discriminate if a pci device want to
> > > > sitting on default bus pci.0 or pci-bridge0, so bring in 'bridge'.
> > > > 
> > > > Thanks!
> > > 
> > > but, without 'bridge', can't know if user want or don't want pci-bridge,
> > > and the check for 'bus != 0' will be removed, then if user happened to 
> > > define a pci device greater than 0, qemu will complain about this,
> > > so it's inconvenient for this case.
> > 
> > The check for 'bus != 0' was only added because we didn't have any
> > support for bridges. Once we have bridge support, then that check
> > can be changed. If bus != 0, then check to see if there's a matching
> > bridge device, otherwise raise an error.
> 
> OK for me, though it seems much more changes will be involved
> than with 'bridge' condition.

The point is that the 'bridge' attribute is redundant information in
the XML that you're forcing the admin to specify to avoid doing more
coding work in libvirt. That's not optimizing for the right person.

Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list



[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]