
On Fri, Jan 04, 2013 at 11:38:42AM +0800, Osier Yang wrote:
On 2013年01月04日 10:28, li guang wrote:
在 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.
At this point, I think it's better to ask the QEMU developers to be involved in next series, to make sure things are right.
Regardless of what qemu does today, I don't think it's a good idea to hardcode this to 0 since it's not clear what will happen in the future. Somebody more familiar with the specifics correct me if I'm off base there. Dave
- 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; + +}
-- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list