[libvirt] [PATCH 2/3] add pci-brige device command line for qemu

Dave Allan dallan at redhat.com
Fri Jan 4 15:21:24 UTC 2013


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




More information about the libvir-list mailing list