在 2013-01-14一的 17:23 +0100,Ján Tomko写道: > On 01/10/13 02:04, liguang wrote: > > diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c > > index 04a9512..48b4f46 100644 > > --- a/src/qemu/qemu_command.c > > +++ b/src/qemu/qemu_command.c > > @@ -966,13 +966,6 @@ static char *qemuPCIAddressAsString(virDomainDeviceInfoPtr dev) > > { > > char *addr; > > > > - if (dev->addr.pci.domain != 0 || > > - dev->addr.pci.bus != 0) { > > - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", > > - _("Only PCI domain 0 and bus 0 are available")); > > - return NULL; > > - } > > - > > if (virAsprintf(&addr, "%d:%d:%d.%d", > > dev->addr.pci.domain, > > dev->addr.pci.bus, > > @@ -984,8 +977,24 @@ static char *qemuPCIAddressAsString(virDomainDeviceInfoPtr dev) > > return addr; > > } > > > > +static int qemuPciBridgeSupport(virDomainDefPtr def) > > +{ > > + int i, c = 0; > > + > > + for (i = 0; i < def->ncontrollers; i++) { > > + virDomainControllerDefPtr controller = def->controllers[i]; > > + > > + if (controller->type == VIR_DOMAIN_CONTROLLER_TYPE_PCIBRIDGE) > > + c++; > > + } > > > > -static int qemuCollectPCIAddress(virDomainDefPtr def ATTRIBUTE_UNUSED, > > + if (c > 1) > > + return 0; > > + else > > + return -1; > > +} > > + > > +static int qemuCollectPCIAddress(virDomainDefPtr def, > > virDomainDeviceDefPtr device, > > virDomainDeviceInfoPtr info, > > void *opaque) > > @@ -1004,6 +1013,20 @@ static int qemuCollectPCIAddress(virDomainDefPtr def ATTRIBUTE_UNUSED, > > return 0; > > } > > > > + if (info->addr.pci.domain != 0) { > > + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", > > + _("Only PCI device addresses with " > > + "domain=0 are supported")); > > + return -1; > > + } > > + > > + if (info->addr.pci.bus != 0 && qemuPciBridgeSupport(def) < 0) { > > + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", > > + _("Only PCI device addresses with bus=0 are" > > + " supported without pci-bridge support")); > > + return -1; > > + } > > + > > This would allow any bus number, even if we don't have enough PCI > bridges. maybe, but who tell us the pci bus number limitation? if I know the limitation I will limit it. > It is also not the only place where qemuPCIAddressAsString is > called from and where this needs to be checked. > We also have other functions assuming bus = 0. > qemuDomainPCIAddressGetNextSlot should also take the bridges into > account, for devices without a specified address. Yes, but I removed others, for they are unnecessary. > > I'll try to post patches dealing with that sometime later this week. > Jan -- regards! li guang -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list