From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41019) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1a6VZ0-0000wT-5x for qemu-devel@nongnu.org; Tue, 08 Dec 2015 22:37:11 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1a6VYx-000616-0E for qemu-devel@nongnu.org; Tue, 08 Dec 2015 22:37:10 -0500 Received: from mail-pf0-x233.google.com ([2607:f8b0:400e:c00::233]:34891) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1a6VYw-00060u-PA for qemu-devel@nongnu.org; Tue, 08 Dec 2015 22:37:06 -0500 Received: by pfu207 with SMTP id 207so22615531pfu.2 for ; Tue, 08 Dec 2015 19:37:06 -0800 (PST) References: <1449459280-14983-1-git-send-email-david@gibson.dropbear.id.au> <1449459280-14983-9-git-send-email-david@gibson.dropbear.id.au> From: Alexey Kardashevskiy Message-ID: <5667A1DB.8040606@ozlabs.ru> Date: Wed, 9 Dec 2015 14:36:59 +1100 MIME-Version: 1.0 In-Reply-To: <1449459280-14983-9-git-send-email-david@gibson.dropbear.id.au> Content-Type: text/plain; charset=koi8-r; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCHv2 08/10] pseries: Restructure class_options functions List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: David Gibson , ehabkost@redhat.com, agraf@suse.de, mdroth@linux.vnet.ibm.com Cc: lvivier@redhat.com, thuth@redhat.com, qemu-ppc@nongnu.org, qemu-devel@nongnu.org On 12/07/2015 02:34 PM, David Gibson wrote: > Currently each of the *_class_options() functions for the pseries-2.1 .. > pseries-2.5 machine types are standalone. This will become harder to > maintain as new versions are added. > > This patch restructures them similarly to x86 where each function calls > the one from the next version, then overrides anything necessary for > compatibility with the specific version and older. > > The default behaviour - that for the most recent machine are set up in > the base class initializer spapr_machine_class_init(). Previously it had > some things set up to default to older behaviour with the more recent > machines overriding it. > > Signed-off-by: David Gibson > --- > hw/ppc/spapr.c | 21 +++++++++++++++++---- > 1 file changed, 17 insertions(+), 4 deletions(-) > > diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c > index 4f645f3..5af3d13 100644 > --- a/hw/ppc/spapr.c > +++ b/hw/ppc/spapr.c > @@ -2266,6 +2266,12 @@ static void spapr_machine_class_init(ObjectClass *oc, void *data) > HotplugHandlerClass *hc = HOTPLUG_HANDLER_CLASS(oc); > > mc->desc = "pSeries Logical Partition (PAPR compliant)"; > + > + /* > + * We set up the default / latest behaviour here. The class_init > + * functions for the specific versioned machine types can override > + * these details for backwards compatibility > + */ > mc->init = ppc_spapr_init; > mc->reset = ppc_spapr_reset; > mc->block_default_type = IF_SCSI; > @@ -2281,7 +2287,7 @@ static void spapr_machine_class_init(ObjectClass *oc, void *data) > hc->unplug = spapr_machine_device_unplug; > mc->cpu_index_to_socket_id = spapr_cpu_index_to_socket_id; > > - smc->dr_lmb_enabled = false; > + smc->dr_lmb_enabled = true; > fwc->get_dev_path = spapr_get_fw_dev_path; > nc->nmi_monitor_handler = spapr_nmi; > } > @@ -2335,11 +2341,9 @@ static void spapr_machine_2_5_instance_options(MachineState *machine) > > static void spapr_machine_2_5_class_options(MachineClass *mc) > { > - sPAPRMachineClass *smc = SPAPR_MACHINE_CLASS(mc); > - > + /* Defaults for the latest behaviour inherited from the base class */ > mc->alias = "pseries"; > mc->is_default = 1; > - smc->dr_lmb_enabled = true; > } > > DEFINE_SPAPR_MACHINE(2_5, "2.5"); > @@ -2357,6 +2361,12 @@ static void spapr_machine_2_4_instance_options(MachineState *machine) > > static void spapr_machine_2_4_class_options(MachineClass *mc) > { > + sPAPRMachineClass *smc = SPAPR_MACHINE_CLASS(mc); > + > + spapr_machine_2_5_class_options(mc); > + mc->alias = NULL; > + mc->is_default = 0; > + smc->dr_lmb_enabled = false; > SET_MACHINE_COMPAT(mc, SPAPR_COMPAT_2_4); > } > > @@ -2383,6 +2393,7 @@ static void spapr_machine_2_3_instance_options(MachineState *machine) > > static void spapr_machine_2_3_class_options(MachineClass *mc) > { > + spapr_machine_2_4_class_options(mc); > SET_MACHINE_COMPAT(mc, SPAPR_COMPAT_2_3); > } > DEFINE_SPAPR_MACHINE(2_3, "2.3"); > @@ -2407,6 +2418,7 @@ static void spapr_machine_2_2_instance_options(MachineState *machine) > > static void spapr_machine_2_2_class_options(MachineClass *mc) > { > + spapr_machine_2_3_class_options(mc); > SET_MACHINE_COMPAT(mc, SPAPR_COMPAT_2_2); > } > DEFINE_SPAPR_MACHINE(2_2, "2.2"); > @@ -2425,6 +2437,7 @@ static void spapr_machine_2_1_instance_options(MachineState *machine) > > static void spapr_machine_2_1_class_options(MachineClass *mc) > { > + spapr_machine_2_2_class_options(mc); > SET_MACHINE_COMPAT(mc, SPAPR_COMPAT_2_1); > } > DEFINE_SPAPR_MACHINE(2_1, "2.1"); > Reviewed-by: Alexey Kardashevskiy -- Alexey