在 2013-01-07一的 22:42 -0600,Doug Goldstein写道: > On Mon, Jan 7, 2013 at 7:58 PM, liguang <lig.f...@cn.fujitsu.com> wrote: > > Signed-off-by: liguang <lig.f...@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 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list