[libvirt] [Qemu-devel] [PATCH v2 2/2] build command line for pci-bridge device of qemu

li guang lig.fnst at cn.fujitsu.com
Tue Jan 8 05:35:27 UTC 2013


在 2013-01-07一的 22:42 -0600,Doug Goldstein写道:
> On Mon, Jan 7, 2013 at 7:58 PM, liguang <lig.fnst at cn.fujitsu.com> wrote:
> > Signed-off-by: liguang <lig.fnst at cn.fujitsu.com>
> > ---
> >  src/qemu/qemu_command.c |   25 ++++++++++++++++++++-----
> >  1 files changed, 20 insertions(+), 5 deletions(-)
> >
> > diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
> > index 04a9512..0da32e0 100644
> > --- a/src/qemu/qemu_command.c
> > +++ b/src/qemu/qemu_command.c
> > @@ -966,10 +966,15 @@ static char *qemuPCIAddressAsString(virDomainDeviceInfoPtr dev)
> >  {
> >      char *addr;
> >
> > -    if (dev->addr.pci.domain != 0 ||
> > -        dev->addr.pci.bus != 0) {
> > +    if (dev->addr.pci.domain != 0) {
> >          virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> > -                       _("Only PCI domain 0 and bus 0 are available"));
> > +                       _("Only PCI domain 0 is available"));
> > +        return NULL;
> > +    }
> > +    if (dev->addr.pci.bridge < 0 && dev->addr.pci.bus != 0) {
> > +        virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> > +                       _("Only PCI bus 0 is available "
> > +                         "without pci-bridge support"));
> >          return NULL;
> >      }
> >
> > @@ -1768,7 +1773,7 @@ qemuBuildDeviceAddressStr(virBufferPtr buf,
> >                             _("Only PCI device addresses with domain=0 are supported"));
> >              return -1;
> >          }
> > -        if (info->addr.pci.bus != 0) {
> > +        if (info->addr.pci.bus != 0 && info->addr.pci.bridge < 0) {
> >              virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> >                             _("Only PCI device addresses with bus=0 are supported"));
> 
> Above you added the qualifier "without pci-bridge support" to the
> error message. Probably worth being consistent and adding it here as
> well.
> 

OK, will fix.

> >              return -1;
> > @@ -1801,7 +1806,9 @@ 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->addr.pci.bridge >= 0)
> > +            virBufferAsprintf(buf, ",bus=pci.%d", info->addr.pci.bus);
> > +        else if (qemuCapsGet(caps, QEMU_CAPS_PCI_MULTIBUS))
> >              virBufferAsprintf(buf, ",bus=pci.0");
> >          else
> >              virBufferAsprintf(buf, ",bus=pci");
> > @@ -3064,6 +3071,12 @@ qemuBuildControllerDevStr(virDomainDefPtr domainDef,
> >      int model;
> >
> >      switch (def->type) {
> > +    case VIR_DOMAIN_CONTROLLER_TYPE_PCIBRIDGE:
> > +        virBufferAsprintf(&buf, "pci-bridge,chassis_nr=%d", def->idx+1);
> > +        virBufferAsprintf(&buf, ",id=pci.%d", def->idx);
> > +        if (def->idx == 0)
> > +            goto out;
> > +        break;
> >      case VIR_DOMAIN_CONTROLLER_TYPE_SCSI:
> >          model = def->model;
> >          if ((qemuSetScsiControllerModel(domainDef, caps, &model)) < 0)
> > @@ -3137,6 +3150,7 @@ qemuBuildControllerDevStr(virDomainDefPtr domainDef,
> >      if (qemuBuildDeviceAddressStr(&buf, &def->info, caps) < 0)
> >          goto error;
> >
> > +out:
> >      if (virBufferError(&buf)) {
> >          virReportOOMError();
> >          goto error;
> > @@ -5033,6 +5047,7 @@ qemuBuildCommandLine(virConnectPtr conn,
> >          /* We don't add an explicit IDE or FD controller because the
> >           * provided PIIX4 device already includes one. It isn't possible to
> >           * remove the PIIX4. */
> > +        VIR_DOMAIN_CONTROLLER_TYPE_PCIBRIDGE,
> >          VIR_DOMAIN_CONTROLLER_TYPE_USB,
> >          VIR_DOMAIN_CONTROLLER_TYPE_SCSI,
> >          VIR_DOMAIN_CONTROLLER_TYPE_SATA,
> > --
> > 1.7.2.5
> >
> >
> 

-- 
regards!
li guang





More information about the libvir-list mailing list