cpu_conf: Don't format empty model for host-model CPUs

Most likely for historical reasons our CPU def formatting code is
happily adding useless <model fallback='allow'/> for host-model CPUs. We
can just drop it.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
Jiri Denemark 2019-11-12 15:54:12 +01:00
parent 65fa7bba1a
commit af8e39921a
4 changed files with 7 additions and 18 deletions

View File

@ -751,16 +751,12 @@ virCPUDefFormatBuf(virBufferPtr buf,
{ {
size_t i; size_t i;
bool formatModel; bool formatModel;
bool formatFallback;
if (!def) if (!def)
return 0; return 0;
formatModel = (def->mode == VIR_CPU_MODE_CUSTOM || formatModel = (def->mode == VIR_CPU_MODE_CUSTOM ||
def->mode == VIR_CPU_MODE_HOST_MODEL); def->mode == VIR_CPU_MODE_HOST_MODEL);
formatFallback = (def->type == VIR_CPU_TYPE_GUEST &&
(def->mode == VIR_CPU_MODE_HOST_MODEL ||
(def->mode == VIR_CPU_MODE_CUSTOM && def->model)));
if (!def->model && def->mode == VIR_CPU_MODE_CUSTOM && def->nfeatures) { if (!def->model && def->mode == VIR_CPU_MODE_CUSTOM && def->nfeatures) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s", virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
@ -768,9 +764,10 @@ virCPUDefFormatBuf(virBufferPtr buf,
return -1; return -1;
} }
if ((formatModel && def->model) || formatFallback) { if (formatModel && def->model) {
virBufferAddLit(buf, "<model"); virBufferAddLit(buf, "<model");
if (formatFallback) {
if (def->type == VIR_CPU_TYPE_GUEST) {
const char *fallback; const char *fallback;
fallback = virCPUFallbackTypeToString(def->fallback); fallback = virCPUFallbackTypeToString(def->fallback);
@ -784,11 +781,8 @@ virCPUDefFormatBuf(virBufferPtr buf,
if (def->vendor_id) if (def->vendor_id)
virBufferEscapeString(buf, " vendor_id='%s'", def->vendor_id); virBufferEscapeString(buf, " vendor_id='%s'", def->vendor_id);
} }
if (formatModel && def->model) {
virBufferEscapeString(buf, ">%s</model>\n", def->model); virBufferEscapeString(buf, ">%s</model>\n", def->model);
} else {
virBufferAddLit(buf, "/>\n");
}
} }
if (formatModel && def->vendor) if (formatModel && def->vendor)

View File

@ -1,3 +1 @@
<cpu mode='host-model'> <cpu mode='host-model'/>
<model fallback='allow'/>
</cpu>

View File

@ -8,9 +8,7 @@
<type arch='x86_64' machine='pc'>hvm</type> <type arch='x86_64' machine='pc'>hvm</type>
<boot dev='network'/> <boot dev='network'/>
</os> </os>
<cpu mode='host-model' check='partial'> <cpu mode='host-model' check='partial'/>
<model fallback='allow'/>
</cpu>
<clock offset='utc'/> <clock offset='utc'/>
<on_poweroff>destroy</on_poweroff> <on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot> <on_reboot>restart</on_reboot>

View File

@ -14,7 +14,6 @@
<boot dev='hd'/> <boot dev='hd'/>
</os> </os>
<cpu mode='host-model' check='partial'> <cpu mode='host-model' check='partial'>
<model fallback='allow'/>
<feature policy='require' name='abm'/> <feature policy='require' name='abm'/>
<feature policy='force' name='ds'/> <feature policy='force' name='ds'/>
<feature policy='disable' name='invtsc'/> <feature policy='disable' name='invtsc'/>