qemu: get arch name from <cpu> element

The qemu32 CPU model is chosen based on the <os arch=...> name when
creating the QEMU command line for a 64-bit host.  For the opposite
transformation we can test the guest CPU model for the "lm" feature.
If it is absent, def->os.arch needs to be corrected.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
Paolo Bonzini 2012-01-27 14:49:49 +01:00 committed by Jiri Denemark
parent 4be541a6d9
commit d5e88b2c33

View File

@ -6830,6 +6830,24 @@ qemuParseCommandLineCPU(virDomainDefPtr dom,
} }
} while ((p = next)); } while ((p = next));
if (STREQ(dom->os.arch, "x86_64")) {
bool is_32bit = false;
union cpuData *cpuData = NULL;
int ret;
ret = cpuEncode("x86_64", cpu, NULL, &cpuData,
NULL, NULL, NULL, NULL);
if (ret < 0)
goto error;
is_32bit = (cpuHasFeature("x86_64", cpuData, "lm") != 1);
cpuDataFree("x86_64", cpuData);
if (is_32bit) {
VIR_FREE(dom->os.arch);
dom->os.arch = strdup("i686");
}
}
return 0; return 0;
syntax: syntax: