From: David Gibson <david@gibson.dropbear.id.au>
To: peter.maydell@linaro.org, mdroth@linux.vnet.ibm.com, aik@ozlabs.ru
Cc: lvivier@redhat.com, thuth@redhat.com, agraf@suse.de,
qemu-devel@nongnu.org, qemu-ppc@nongnu.org,
David Gibson <david@gibson.dropbear.id.au>
Subject: [Qemu-devel] [PULL 11/16] pseries: Restructure class_options functions
Date: Mon, 11 Jan 2016 15:37:33 +1100 [thread overview]
Message-ID: <1452487058-17182-12-git-send-email-david@gibson.dropbear.id.au> (raw)
In-Reply-To: <1452487058-17182-1-git-send-email-david@gibson.dropbear.id.au>
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 <david@gibson.dropbear.id.au>
Reviewed-by: Alexey Kardashevskiy <aik@ozlabs.ru>
---
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");
--
2.5.0
next prev parent reply other threads:[~2016-01-11 4:37 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-11 4:37 [Qemu-devel] [PULL 00/16] ppc-for-2.6 queue 20160111 David Gibson
2016-01-11 4:37 ` [Qemu-devel] [PULL 01/16] hw/ppc/spapr_rtc: Remove bad class_size value David Gibson
2016-01-11 4:37 ` [Qemu-devel] [PULL 02/16] target-ppc: Define kvmppc_read_int_dt() David Gibson
2016-01-11 4:37 ` [Qemu-devel] [PULL 03/16] spapr: Add /system-id David Gibson
2016-01-11 4:37 ` [Qemu-devel] [PULL 04/16] pseries: Remove redundant setting of mc->name for pseries-2.5 machine David Gibson
2016-01-11 4:37 ` [Qemu-devel] [PULL 05/16] pseries: Rearrange versioned machine type code David Gibson
2016-01-11 4:37 ` [Qemu-devel] [PULL 06/16] pseries: Remove redundant calls to spapr_machine_initfn() David Gibson
2016-01-11 4:37 ` [Qemu-devel] [PULL 07/16] pseries: Remove versions from mc->desc David Gibson
2016-01-11 4:37 ` [Qemu-devel] [PULL 08/16] Move SET_MACHINE_COMPAT macro to boards.h David Gibson
2016-01-11 4:37 ` [Qemu-devel] [PULL 09/16] pseries: Use SET_MACHINE_COMPAT David Gibson
2016-01-11 4:37 ` [Qemu-devel] [PULL 10/16] pseries: DEFINE_SPAPR_MACHINE David Gibson
2016-01-11 4:37 ` David Gibson [this message]
2016-01-11 4:37 ` [Qemu-devel] [PULL 12/16] pseries: Improve setting of default machine version David Gibson
2016-01-11 4:37 ` [Qemu-devel] [PULL 13/16] pseries: Add pseries-2.6 machine type David Gibson
2016-01-11 4:37 ` [Qemu-devel] [PULL 14/16] hw/ppc/spapr: Use XHCI as host controller for new spapr machines David Gibson
2016-01-11 4:37 ` [Qemu-devel] [PULL 15/16] spapr vio: fix to incomplete QOMify David Gibson
2016-01-11 4:37 ` [Qemu-devel] [PULL 16/16] hw/ppc/spapr: fix spapr->kvm_type leak David Gibson
2016-01-11 12:29 ` [Qemu-devel] [PULL 00/16] ppc-for-2.6 queue 20160111 Peter Maydell
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1452487058-17182-12-git-send-email-david@gibson.dropbear.id.au \
--to=david@gibson.dropbear.id.au \
--cc=agraf@suse.de \
--cc=aik@ozlabs.ru \
--cc=lvivier@redhat.com \
--cc=mdroth@linux.vnet.ibm.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
--cc=thuth@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).