[libvirt] [PATCH 2/3] add pci-brige device command line for qemu

li guang lig.fnst at cn.fujitsu.com
Fri Jan 4 02:28:30 UTC 2013


在 2013-01-03四的 16:13 +0100,Ján Tomko写道:
> On 12/26/12 02:00, liguang wrote:
> > @@ -1801,10 +1803,13 @@ qemuBuildDeviceAddressStr(virBufferPtr buf,
> >           * When QEMU grows support for > 1 PCI domain, then pci.0 change
> >           * to pciNN.0  where NN is the domain number
> >           */
> > -        if (qemuCapsGet(caps, QEMU_CAPS_PCI_MULTIBUS))
> > +        if (info->type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCIBRIDGE) {
> > +            virBufferAsprintf(buf, ",bus=pci-bridge%d", info->addr.pci.bus);
> > +        } else if (qemuCapsGet(caps, QEMU_CAPS_PCI_MULTIBUS)) {
> >              virBufferAsprintf(buf, ",bus=pci.0");
> 
> Is there any way (or plan) to use more pci buses with QEMU other than
> with the pci bridges? If not, we could just name the bridges pci.%d. (If
> we index the bridges from 1).

as far as I know, qemu can't use multi-pci-bus,
so only pci.0 accepted now.

> 
> > -        else
> > +        } else {
> >              virBufferAsprintf(buf, ",bus=pci");
> > +        }
> >          if (info->addr.pci.multi == VIR_DEVICE_ADDRESS_PCI_MULTI_ON)
> >              virBufferAddLit(buf, ",multifunction=on");
> >          else if (info->addr.pci.multi == VIR_DEVICE_ADDRESS_PCI_MULTI_OFF)
> > @@ -3455,6 +3460,32 @@ error:
> >      return NULL;
> >  }
> 
> 
> >  
> > +char *
> > +qemuBuildPCIbridgeDevStr(virDomainPCIbridgeDefPtr dev,
> > +                         qemuCapsPtr caps, int idx)
> > +{
> > +    virBuffer buf = VIR_BUFFER_INITIALIZER;
> > +
> > +    virBufferAsprintf(&buf, "pci-bridge,chassis_nr=1");
> 
> The chassis number has to be unique for each bridge.

chassis number is not so important,
here, I just set all bridges in same chassis.

> 
> > +
> > +    if ((dev->type != VIR_DOMAIN_PCIBRIDGE_TYPE_ROOT) &&
> > +        (qemuBuildDeviceAddressStr(&buf, &dev->info, caps) < 0))
> > +        goto error;
> > +    else
> > +        virBufferAsprintf(&buf, ",id=pci-bridge%d" , idx);
> > +
> > +    if (virBufferError(&buf)) {
> > +        virReportOOMError();
> > +        goto error;
> > +    }
> > +
> > +    return virBufferContentAndReset(&buf);
> > +
> > +error:
> > +    virBufferFreeAndReset(&buf);
> > +    return NULL;
> > +
> > +}
> 

-- 
regards!
li guang





More information about the libvir-list mailing list