mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-25 23:25:24 +00:00
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:
parent
4be541a6d9
commit
d5e88b2c33
@ -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:
|
||||||
|
Loading…
Reference in New Issue
Block a user