<div dir="ltr">Hi Andrea,<div><br></div><div>We need to also adjust the memlock limits along with this patch. </div><div><br></div><div>I have the changes here if you want to append to this patch.</div><div><br></div><div><a href="https://paste.fedoraproject.org/paste/JrI4stQTIYiaecuXPyXh8g">https://paste.fedoraproject.org/paste/JrI4stQTIYiaecuXPyXh8g</a></div><div><br></div><div>Thanks,</div><div>Shivaprasad</div><div><br></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Jun 23, 2017 at 8:33 PM, Andrea Bolognani <span dir="ltr"><<a href="mailto:abologna@redhat.com" target="_blank">abologna@redhat.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Additional PHBs (pci-root controllers) will be created for<br>
the guest using the spapr-pci-host-bridge QEMU device, if<br>
available; the implicit default PHB, while present in the<br>
guest configuration, will be skipped.<br>
<br>
Resolves: <a href="https://bugzilla.redhat.com/show_bug.cgi?id=1431193" rel="noreferrer" target="_blank">https://bugzilla.redhat.com/<wbr>show_bug.cgi?id=1431193</a><br>
<br>
Signed-off-by: Andrea Bolognani <<a href="mailto:abologna@redhat.com">abologna@redhat.com</a>><br>
---<br>
src/qemu/qemu_command.c | 47 ++++++++++++++++++++++++++++++<wbr>++++++++++++++---<br>
1 file changed, 44 insertions(+), 3 deletions(-)<br>
<br>
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c<br>
index dba2519..fb0beed 100644<br>
--- a/src/qemu/qemu_command.c<br>
+++ b/src/qemu/qemu_command.c<br>
@@ -3164,6 +3164,40 @@ qemuBuildControllerDevStr(<wbr>const virDomainDef *domainDef,<br>
def->opts.pciopts.numaNode);<br>
break;<br>
case VIR_DOMAIN_CONTROLLER_MODEL_<wbr>PCI_ROOT:<br>
+ if (def->opts.pciopts.modelName == VIR_DOMAIN_CONTROLLER_PCI_<wbr>MODEL_NAME_NONE ||<br>
+ def->opts.pciopts.idx == -1) {<br>
+ virReportError(VIR_ERR_<wbr>INTERNAL_ERROR, "%s",<br>
+ _("autogenerated pci-root options not set"));<br>
+ goto error;<br>
+ }<br>
+<br>
+ /* Skip the implicit one */<br>
+ if (def->opts.pciopts.idx == 0)<br>
+ goto done;<br>
+<br>
+ modelName = virDomainControllerPCIModelNam<wbr>eTypeToString(def->opts.<wbr>pciopts.modelName);<br>
+ if (!modelName) {<br>
+ virReportError(VIR_ERR_<wbr>INTERNAL_ERROR,<br>
+ _("unknown pci-root model name value %d"),<br>
+ def->opts.pciopts.modelName);<br>
+ goto error;<br>
+ }<br>
+ if (def->opts.pciopts.modelName != VIR_DOMAIN_CONTROLLER_PCI_<wbr>MODEL_NAME_SPAPR_PCI_HOST_<wbr>BRIDGE) {<br>
+ virReportError(VIR_ERR_CONFIG_<wbr>UNSUPPORTED,<br>
+ _("PCI controller model name '%s' is not valid for a pci-root"),<br>
+ modelName);<br>
+ goto error;<br>
+ }<br>
+ if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_SPAPR_PCI_<wbr>HOST_BRIDGE)) {<br>
+ virReportError(VIR_ERR_CONFIG_<wbr>UNSUPPORTED, "%s",<br>
+ _("the spapr-pci-host-bridge controller "<br>
+ "is not supported in this QEMU binary"));<br>
+ goto error;<br>
+ }<br>
+ virBufferAsprintf(&buf, "%s,index=%d,id=%s",<br>
+ modelName, def->opts.pciopts.idx,<br>
+ def->info.alias);<br>
+ break;<br>
case VIR_DOMAIN_CONTROLLER_MODEL_<wbr>PCIE_ROOT:<br>
case VIR_DOMAIN_CONTROLLER_MODEL_<wbr>PCI_LAST:<br>
virReportError(VIR_ERR_<wbr>INTERNAL_ERROR, "%s",<br>
@@ -3213,6 +3247,7 @@ qemuBuildControllerDevStr(<wbr>const virDomainDef *domainDef,<br>
if (virBufferCheckError(&buf) < 0)<br>
goto error;<br>
<br>
+ done:<br>
*devstr = virBufferContentAndReset(&buf)<wbr>;<br>
return 0;<br>
<br>
@@ -3270,10 +3305,16 @@ qemuBuildControllerDevCommandL<wbr>ine(virCommandPtr cmd,<br>
continue;<br>
}<br>
<br>
- /* skip pci-root/pcie-root */<br>
+ /* skip pcie-root */<br>
if (cont->type == VIR_DOMAIN_CONTROLLER_TYPE_PCI &&<br>
- (cont->model == VIR_DOMAIN_CONTROLLER_MODEL_<wbr>PCI_ROOT ||<br>
- cont->model == VIR_DOMAIN_CONTROLLER_MODEL_<wbr>PCIE_ROOT))<br>
+ cont->model == VIR_DOMAIN_CONTROLLER_MODEL_<wbr>PCIE_ROOT)<br>
+ continue;<br>
+<br>
+ /* Skip pci-root, except for pSeries guests (which actually<br>
+ * support more than one PCI Host Bridge per guest) */<br>
+ if (!qemuDomainIsPSeries(def) &&<br>
+ cont->type == VIR_DOMAIN_CONTROLLER_TYPE_PCI &&<br>
+ cont->model == VIR_DOMAIN_CONTROLLER_MODEL_<wbr>PCI_ROOT)<br>
continue;<br>
<br>
/* first SATA controller on Q35 machines is implicit */<br>
<span class="HOEnZb"><font color="#888888">--<br>
2.7.5<br>
<br>
--<br>
libvir-list mailing list<br>
<a href="mailto:libvir-list@redhat.com">libvir-list@redhat.com</a><br>
<a href="https://www.redhat.com/mailman/listinfo/libvir-list" rel="noreferrer" target="_blank">https://www.redhat.com/<wbr>mailman/listinfo/libvir-list</a><br>
</font></span></blockquote></div><br></div></div>