mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-21 10:52:22 +00:00
cpu: CPU model names have to match on ppc64
Limitations of the POWER architecture mean that you can't run eg. a POWER7 guest on a POWER8 host when using KVM. This applies to all guests, not just those using VIR_CPU_MATCH_STRICT in the CPU definition; in fact, exact and strict CPU matching are basically the same on ppc64. This means, of course, that hosts using different CPUs have to be considered incompatible as well. Change ppc64Compute(), called by cpuGuestData(), to reflect this fact and update test cases accordingly. Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1250977
This commit is contained in:
parent
8382136d42
commit
96b2c7459c
@ -350,7 +350,6 @@ ppc64Compute(virCPUDefPtr host,
|
||||
const virCPUDef *cpu,
|
||||
virCPUDataPtr *guestData,
|
||||
char **message)
|
||||
|
||||
{
|
||||
struct ppc64_map *map = NULL;
|
||||
struct ppc64_model *host_model = NULL;
|
||||
@ -407,9 +406,7 @@ ppc64Compute(virCPUDefPtr host,
|
||||
!(guest_model = ppc64ModelFromCPU(cpu, map)))
|
||||
goto cleanup;
|
||||
|
||||
if (cpu->type == VIR_CPU_TYPE_GUEST &&
|
||||
cpu->match == VIR_CPU_MATCH_STRICT &&
|
||||
STRNEQ(guest_model->name, host_model->name)) {
|
||||
if (STRNEQ(guest_model->name, host_model->name)) {
|
||||
VIR_DEBUG("host CPU model does not match required CPU model %s",
|
||||
guest_model->name);
|
||||
if (message &&
|
||||
|
@ -501,7 +501,7 @@ static const char *model486[] = { "486" };
|
||||
static const char *nomodel[] = { "nomodel" };
|
||||
static const char *models[] = { "qemu64", "core2duo", "Nehalem" };
|
||||
static const char *haswell[] = { "SandyBridge", "Haswell" };
|
||||
static const char *ppc_models[] = { "POWER7", "POWER7_v2.1", "POWER8_v1.0"};
|
||||
static const char *ppc_models[] = { "POWER7", "POWER7_v2.1", "POWER7_v2.3", "POWER8_v1.0"};
|
||||
|
||||
static int
|
||||
mymain(void)
|
||||
@ -662,7 +662,7 @@ mymain(void)
|
||||
NULL, "Haswell-noTSX", 0);
|
||||
|
||||
DO_TEST_GUESTDATA("ppc64", "host", "guest", ppc_models, NULL, 0);
|
||||
DO_TEST_GUESTDATA("ppc64", "host", "guest-nofallback", ppc_models, "POWER7_v2.1", 0);
|
||||
DO_TEST_GUESTDATA("ppc64", "host", "guest-nofallback", ppc_models, "POWER7_v2.1", -1);
|
||||
|
||||
return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
<cpu match='exact'>
|
||||
<model>POWER8_v1.0</model>
|
||||
<model>POWER7_v2.3</model>
|
||||
<topology sockets='2' cores='4' threads='1'/>
|
||||
</cpu>
|
||||
|
@ -1,5 +1,5 @@
|
||||
<cpu mode='custom' match='exact'>
|
||||
<arch>ppc64</arch>
|
||||
<model fallback='allow'>POWER8_v1.0</model>
|
||||
<model fallback='allow'>POWER7_v2.3</model>
|
||||
<vendor>IBM</vendor>
|
||||
</cpu>
|
||||
|
@ -1,5 +0,0 @@
|
||||
<cpu mode='custom' match='exact'>
|
||||
<arch>ppc64</arch>
|
||||
<model fallback='forbid'>POWER7_v2.1</model>
|
||||
<vendor>IBM</vendor>
|
||||
</cpu>
|
Loading…
x
Reference in New Issue
Block a user