From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40594) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YBoZ4-0002wZ-Vw for qemu-devel@nongnu.org; Thu, 15 Jan 2015 12:50:39 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YBoYy-0002LF-Cd for qemu-devel@nongnu.org; Thu, 15 Jan 2015 12:50:38 -0500 Received: from mx1.redhat.com ([209.132.183.28]:37395) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YBoYy-0002Kn-6J for qemu-devel@nongnu.org; Thu, 15 Jan 2015 12:50:32 -0500 From: Wei Huang Date: Thu, 15 Jan 2015 12:50:26 -0500 Message-Id: <1421344226-25695-1-git-send-email-wei@redhat.com> Subject: [Qemu-devel] [PATCH] arm: define version-based machine type for ARM List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: wei@redhat.com, peter.maydell@linaro.org ARM virt machine type (machvirt) had been stable for a while. But recently new devices have been added to support extra features. Considerring the support of long-term compatibility, it is time to create a version-based machine types. This patch defines a qemu 2.2 specific machine type (machvirt-2.2) and points the default machvirt to it. In the future new machine types can follow a similar naming scheme (e.g. machvirt-3.0, ...). Note that this patch doesn't change the semantic of existing QEMU command line. With this patch, machine type querry (-M ?) will print the following: virt ARM Virtual Machine v2.2 (alias of machvirt-2.2) machvirt-2.2 ARM Virtual Machine v2.2 (default) Signed-off-by: Wei Huang --- hw/arm/virt.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/hw/arm/virt.c b/hw/arm/virt.c index 2353440..6174abd 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -701,15 +701,37 @@ static void virt_class_init(ObjectClass *oc, void *data) static const TypeInfo machvirt_info = { .name = TYPE_VIRT_MACHINE, .parent = TYPE_MACHINE, + .abstract = true, .instance_size = sizeof(VirtMachineState), .instance_init = virt_instance_init, .class_size = sizeof(VirtMachineClass), .class_init = virt_class_init, }; +static void machvirt_2_2_class_init(ObjectClass *oc, void *data) +{ + MachineClass *mc = MACHINE_CLASS(oc); + static GlobalProperty compat_props[] = { + { /* end of list */ } + }; + + mc->name = "machvirt-2.2"; + mc->desc = "ARM Virtual Machine v2.2"; + mc->alias = "virt"; + mc->is_default = 1; + mc->compat_props = compat_props; +} + +static const TypeInfo machvirt_2_2_info = { + .name = TYPE_VIRT_MACHINE "-2.2", + .parent = TYPE_VIRT_MACHINE, + .class_init = machvirt_2_2_class_init, +}; + static void machvirt_machine_init(void) { type_register_static(&machvirt_info); + type_register_static(&machvirt_2_2_info); } machine_init(machvirt_machine_init); -- 1.8.3.1