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(a)redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list