Message ID | 1475585744-28692-1-git-send-email-thuth@redhat.com |
---|---|
State | New |
Headers | show |
On Tue, Oct 04, 2016 at 02:55:44PM +0200, Thomas Huth wrote: > 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 <thuth@redhat.com> Sounds good, one detail.. > --- > 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"; > + } You can avoid the last if branch if you initialize tcg_default_cpu to POWER8 in spapr_machine_class_init(). > } > > 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 */ > }; > > /**
On 05.10.2016 02:07, David Gibson wrote: > On Tue, Oct 04, 2016 at 02:55:44PM +0200, Thomas Huth wrote: >> 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 <thuth@redhat.com> > > Sounds good, one detail.. > >> --- >> 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"; >> + } > > You can avoid the last if branch if you initialize tcg_default_cpu to > POWER8 in spapr_machine_class_init(). You're right, that sounds better. I'll send a v2 ... Thomas
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 */ }; /**
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 <thuth@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(-)