A couple of distributors are compiling their distributions with "-mcpu=power8" for ppc64le these days, so the user sooner or later runs into a crash there when not explicitely specifying the "-cpu POWER8" option to QEMU. Due to this reason, the linux-user target already switched to POWER8 by default a while ago (see commit de3f1b98410e0d5b406a0df3a48547b559d18602). Since the softmmu target of course has the same problem, we should switch there to POWER8 by default for the newer machine types, too.
Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=1357808 Signed-off-by: Thomas Huth <th...@redhat.com> --- Note: This patch should be applied on top of David's ppc-for-2.8 tree, since the pseries-2.8 machine has just been added there recently. hw/ppc/spapr.c | 11 ++++++++++- include/hw/ppc/spapr.h | 1 + 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index 63b6a0d..799bcff 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -1775,7 +1775,13 @@ static void ppc_spapr_init(MachineState *machine) /* init CPUs */ if (machine->cpu_model == NULL) { - machine->cpu_model = kvm_enabled() ? "host" : "POWER7"; + if (kvm_enabled()) { + machine->cpu_model = "host"; + } else if (smc->tcg_default_cpu) { + machine->cpu_model = smc->tcg_default_cpu; + } else { + machine->cpu_model = "POWER8"; + } } ppc_cpu_parse_features(machine->cpu_model); @@ -2478,7 +2484,10 @@ static void spapr_machine_2_7_instance_options(MachineState *machine) static void spapr_machine_2_7_class_options(MachineClass *mc) { + sPAPRMachineClass *smc = SPAPR_MACHINE_CLASS(mc); + spapr_machine_2_8_class_options(mc); + smc->tcg_default_cpu = "POWER7"; SET_MACHINE_COMPAT(mc, SPAPR_COMPAT_2_7); } diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h index 6289d50..39dadaa 100644 --- a/include/hw/ppc/spapr.h +++ b/include/hw/ppc/spapr.h @@ -39,6 +39,7 @@ struct sPAPRMachineClass { /*< public >*/ bool dr_lmb_enabled; /* enable dynamic-reconfig/hotplug of LMBs */ bool use_ohci_by_default; /* use USB-OHCI instead of XHCI */ + const char *tcg_default_cpu; /* which (TCG) CPU to simulate by default */ }; /** -- 1.8.3.1