<div dir="ltr"><div class="gmail-" style="color:rgb(0,0,0);font-family:Menlo;font-size:11px;margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-" style="font-variant-ligatures:no-common-ligatures">Set the vm phys_bits through the phys and hostphysbits in XML</span></div><div class="gmail-" style="color:rgb(0,0,0);font-family:Menlo;font-size:11px;margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-" style="font-variant-ligatures:no-common-ligatures"><phys bits='43' /> corresponds to "-cpu-phys-bits=42"</span></div><div class="gmail-" style="color:rgb(0,0,0);font-family:Menlo;font-size:11px;margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-" style="font-variant-ligatures:no-common-ligatures"><hostphysbits /> corresponds to "host-phys-bits=on"</span></div><div class="gmail-" style="color:rgb(0,0,0);font-family:Menlo;font-size:11px;margin:0px;font-stretch:normal;line-height:normal;min-height:13px"><span class="gmail-" style="font-variant-ligatures:no-common-ligatures"></span><br class="gmail-"></div><div class="gmail-" style="color:rgb(0,0,0);font-family:Menlo;font-size:11px;margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-" style="font-variant-ligatures:no-common-ligatures"><cpu mode='host-passthrough' check='none'></span></div><div class="gmail-" style="color:rgb(0,0,0);font-family:Menlo;font-size:11px;margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-" style="font-variant-ligatures:no-common-ligatures">    <phys bits='43' /></span></div><div class="gmail-" style="color:rgb(0,0,0);font-family:Menlo;font-size:11px;margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-" style="font-variant-ligatures:no-common-ligatures">    <hostphysbits /></span></div><div class="gmail-" style="color:rgb(0,0,0);font-family:Menlo;font-size:11px;margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-" style="font-variant-ligatures:no-common-ligatures"></cpu></span></div><div class="gmail-" style="color:rgb(0,0,0);font-family:Menlo;font-size:11px;margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-" style="font-variant-ligatures:no-common-ligatures"><br class="gmail-"></span></div><div class="gmail-" style="color:rgb(0,0,0);font-family:Menlo;font-size:11px;margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-" style="font-variant-ligatures:no-common-ligatures">---</span></div><div class="gmail-" style="color:rgb(0,0,0);font-family:Menlo;font-size:11px;margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-" style="font-variant-ligatures:no-common-ligatures"> src/conf/cpu_conf.c     | 34 ++++++++++++++++++++++++++++++++++</span></div><div class="gmail-" style="color:rgb(0,0,0);font-family:Menlo;font-size:11px;margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-" style="font-variant-ligatures:no-common-ligatures"> src/conf/cpu_conf.h     |  2 ++</span></div><div class="gmail-" style="color:rgb(0,0,0);font-family:Menlo;font-size:11px;margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-" style="font-variant-ligatures:no-common-ligatures"> src/qemu/qemu_command.c |  6 ++++++</span></div><div class="gmail-" style="color:rgb(0,0,0);font-family:Menlo;font-size:11px;margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-" style="font-variant-ligatures:no-common-ligatures"> 3 files changed, 42 insertions(+)</span></div><div class="gmail-" style="color:rgb(0,0,0);font-family:Menlo;font-size:11px;margin:0px;font-stretch:normal;line-height:normal;min-height:13px"><span class="gmail-" style="font-variant-ligatures:no-common-ligatures"></span><br class="gmail-"></div><div class="gmail-" style="color:rgb(0,0,0);font-family:Menlo;font-size:11px;margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-" style="font-variant-ligatures:no-common-ligatures">diff --git a/src/conf/cpu_conf.c b/src/conf/cpu_conf.c</span></div><div class="gmail-" style="color:rgb(0,0,0);font-family:Menlo;font-size:11px;margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-" style="font-variant-ligatures:no-common-ligatures">index 380a74691d..41f7c26f63 100644</span></div><div class="gmail-" style="color:rgb(0,0,0);font-family:Menlo;font-size:11px;margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-" style="font-variant-ligatures:no-common-ligatures">--- a/src/conf/cpu_conf.c</span></div><div class="gmail-" style="color:rgb(0,0,0);font-family:Menlo;font-size:11px;margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-" style="font-variant-ligatures:no-common-ligatures">+++ b/src/conf/cpu_conf.c</span></div><div class="gmail-" style="color:rgb(0,0,0);font-family:Menlo;font-size:11px;margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-" style="font-variant-ligatures:no-common-ligatures">@@ -158,6 +158,8 @@ virCPUDefCopyModelFilter(virCPUDefPtr dst,</span></div><div class="gmail-" style="color:rgb(0,0,0);font-family:Menlo;font-size:11px;margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-" style="font-variant-ligatures:no-common-ligatures">     dst->model = g_strdup(src->model);</span></div><div class="gmail-" style="color:rgb(0,0,0);font-family:Menlo;font-size:11px;margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-" style="font-variant-ligatures:no-common-ligatures">     dst->vendor = g_strdup(src->vendor);</span></div><div class="gmail-" style="color:rgb(0,0,0);font-family:Menlo;font-size:11px;margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-" style="font-variant-ligatures:no-common-ligatures">     dst->vendor_id = g_strdup(src->vendor_id);</span></div><div class="gmail-" style="color:rgb(0,0,0);font-family:Menlo;font-size:11px;margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-" style="font-variant-ligatures:no-common-ligatures">+    dst->phys_bits = src->phys_bits;</span></div><div class="gmail-" style="color:rgb(0,0,0);font-family:Menlo;font-size:11px;margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-" style="font-variant-ligatures:no-common-ligatures">+    dst->host_phys_bits = src->host_phys_bits;</span></div><div class="gmail-" style="color:rgb(0,0,0);font-family:Menlo;font-size:11px;margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-" style="font-variant-ligatures:no-common-ligatures">     dst->microcodeVersion = src->microcodeVersion;</span></div><div class="gmail-" style="color:rgb(0,0,0);font-family:Menlo;font-size:11px;margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-" style="font-variant-ligatures:no-common-ligatures">     dst->nfeatures_max = src->nfeatures;</span></div><div class="gmail-" style="color:rgb(0,0,0);font-family:Menlo;font-size:11px;margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-" style="font-variant-ligatures:no-common-ligatures">     dst->nfeatures = 0;</span></div><div class="gmail-" style="color:rgb(0,0,0);font-family:Menlo;font-size:11px;margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-" style="font-variant-ligatures:no-common-ligatures">@@ -540,6 +542,18 @@ virCPUDefParseXML(xmlXPathContextPtr ctxt,</span></div><div class="gmail-" style="color:rgb(0,0,0);font-family:Menlo;font-size:11px;margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-" style="font-variant-ligatures:no-common-ligatures">         return -1;</span></div><div class="gmail-" style="color:rgb(0,0,0);font-family:Menlo;font-size:11px;margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-" style="font-variant-ligatures:no-common-ligatures">     }</span></div><div class="gmail-" style="color:rgb(0,0,0);font-family:Menlo;font-size:11px;margin:0px;font-stretch:normal;line-height:normal;min-height:13px"><span class="gmail-" style="font-variant-ligatures:no-common-ligatures"></span><br class="gmail-"></div><div class="gmail-" style="color:rgb(0,0,0);font-family:Menlo;font-size:11px;margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-" style="font-variant-ligatures:no-common-ligatures">+    if (virXPathNode("./phys[1]", ctxt)) {</span></div><div class="gmail-" style="color:rgb(0,0,0);font-family:Menlo;font-size:11px;margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-" style="font-variant-ligatures:no-common-ligatures">+        unsigned long phys_bits;</span></div><div class="gmail-" style="color:rgb(0,0,0);font-family:Menlo;font-size:11px;margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-" style="font-variant-ligatures:no-common-ligatures">+        if (virXPathULong("string(./phys[1]/@bits)",</span></div><div class="gmail-" style="color:rgb(0,0,0);font-family:Menlo;font-size:11px;margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-" style="font-variant-ligatures:no-common-ligatures">+                ctxt, &phys_bits) >=0 ) {</span></div><div class="gmail-" style="color:rgb(0,0,0);font-family:Menlo;font-size:11px;margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-" style="font-variant-ligatures:no-common-ligatures">+            def->phys_bits = (unsigned int) phys_bits;</span></div><div class="gmail-" style="color:rgb(0,0,0);font-family:Menlo;font-size:11px;margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-" style="font-variant-ligatures:no-common-ligatures">+        }</span></div><div class="gmail-" style="color:rgb(0,0,0);font-family:Menlo;font-size:11px;margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-" style="font-variant-ligatures:no-common-ligatures">+    }</span></div><div class="gmail-" style="color:rgb(0,0,0);font-family:Menlo;font-size:11px;margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-" style="font-variant-ligatures:no-common-ligatures">+</span></div><div class="gmail-" style="color:rgb(0,0,0);font-family:Menlo;font-size:11px;margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-" style="font-variant-ligatures:no-common-ligatures">+    if (virXPathNode("./hostphysbits[1]", ctxt)) {</span></div><div class="gmail-" style="color:rgb(0,0,0);font-family:Menlo;font-size:11px;margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-" style="font-variant-ligatures:no-common-ligatures">+        def->host_phys_bits = true;</span></div><div class="gmail-" style="color:rgb(0,0,0);font-family:Menlo;font-size:11px;margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-" style="font-variant-ligatures:no-common-ligatures">+    }</span></div><div class="gmail-" style="color:rgb(0,0,0);font-family:Menlo;font-size:11px;margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-" style="font-variant-ligatures:no-common-ligatures">+</span></div><div class="gmail-" style="color:rgb(0,0,0);font-family:Menlo;font-size:11px;margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-" style="font-variant-ligatures:no-common-ligatures">     if (virXPathNode("./topology[1]", ctxt)) {</span></div><div class="gmail-" style="color:rgb(0,0,0);font-family:Menlo;font-size:11px;margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-" style="font-variant-ligatures:no-common-ligatures">         unsigned long ul;</span></div><div class="gmail-" style="color:rgb(0,0,0);font-family:Menlo;font-size:11px"><span class="gmail-" style="font-variant-ligatures:no-common-ligatures"><br class="gmail-"></span></div><div class="gmail-" style="color:rgb(0,0,0);font-family:Menlo;font-size:11px"><span class="gmail-" style="font-variant-ligatures:no-common-ligatures"><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">@@ -811,6 +825,12 @@ virCPUDefFormatBuf(virBufferPtr buf,</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">         virBufferAddLit(buf, "/>\n");</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">     }</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal;min-height:13px"><span class="gmail-"></span><br class="gmail-"></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">+    if (def->phys_bits > 0)</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">+        virBufferAsprintf(buf, "<phys bits='%u' />\n", def->phys_bits);</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">+</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">+    if (def->host_phys_bits)</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">+        virBufferAddLit(buf, "<hostphysbits />\n");</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">+</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">     if (def->sockets && def->dies && def->cores && def->threads) {</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">         virBufferAddLit(buf, "<topology");</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">         virBufferAsprintf(buf, " sockets='%u'", def->sockets);</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">@@ -1067,6 +1087,20 @@ virCPUDefIsEqual(virCPUDefPtr src,</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">         return false;</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">     }</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal;min-height:13px"><span class="gmail-"></span><br class="gmail-"></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">+    if (src->phys_bits != dst->phys_bits) {</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">+        virReportError(VIR_ERR_CONFIG_UNSUPPORTED,</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">+                       _("Target CPU phys_bits %d does not match source %d"),</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">+                       dst->phys_bits, src->phys_bits);</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">+        goto cleanup;</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">+    }</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">+</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">+    if (src->host_phys_bits != dst->host_phys_bits) {</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">+        virReportError(VIR_ERR_CONFIG_UNSUPPORTED,</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">+                       _("Target CPU host_phys_bits %d does not match source %d"),</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">+                       dst->host_phys_bits, src->host_phys_bits);</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">+        goto cleanup;</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">+    }</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">+</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">     if (src->sockets != dst->sockets) {</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">         MISMATCH(_("Target CPU sockets %d does not match source %d"),</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">                  dst->sockets, src->sockets);</span></div><div class="gmail-"><span class="gmail-"><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">diff --git a/src/conf/cpu_conf.h b/src/conf/cpu_conf.h</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">index 7ab198d370..f2a23ad41e 100644</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">--- a/src/conf/cpu_conf.h</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">+++ b/src/conf/cpu_conf.h</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">@@ -132,6 +132,8 @@ struct _virCPUDef {</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">     char *vendor_id;    /* vendor id returned by CPUID in the guest */</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">     int fallback;       /* enum virCPUFallback */</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">     char *vendor;</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">+    unsigned int phys_bits;</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">+    bool host_phys_bits;</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">     unsigned int microcodeVersion;</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">     unsigned int sockets;</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">     unsigned int dies;</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">index 1b4fa77867..d9bf3d5ce8 100644</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">--- a/src/qemu/qemu_command.c</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">+++ b/src/qemu/qemu_command.c</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">@@ -6729,6 +6729,12 @@ qemuBuildCpuCommandLine(virCommandPtr cmd,</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">             virBufferAddLit(&buf, ",l3-cache=off");</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">     }</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal;min-height:13px"><span class="gmail-"></span><br class="gmail-"></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">+    if (def->cpu && def->cpu->phys_bits > 0)</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">+        virBufferAsprintf(&buf, ",phys-bits=%u", def->cpu->phys_bits);</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">+</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">+    if (def->cpu && def->cpu->host_phys_bits)</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">+        virBufferAddLit(&buf, ",host-phys-bits=on");</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">+</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">     cpu = virBufferContentAndReset(&cpu_buf);</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">     cpu_flags = virBufferContentAndReset(&buf);</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal;min-height:13px"><span class="gmail-"></span><br class="gmail-"></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">--</span></div><div class="gmail-" style="margin:0px;font-stretch:normal;line-height:normal"><span class="gmail-">2.24.3</span></div></span></div></span></div></div>