diff mbox

[5/5] hw/arm/virt: create the 2.7 machine type

Message ID 1465410291-2971-6-git-send-email-drjones@redhat.com
State New
Headers show

Commit Message

Andrew Jones June 8, 2016, 6:24 p.m. UTC
Signed-off-by: Andrew Jones <drjones@redhat.com>
---
 hw/arm/virt.c | 20 ++++++++++++++++++--
 1 file changed, 18 insertions(+), 2 deletions(-)

Comments

Alex Bennée June 9, 2016, 4:06 p.m. UTC | #1
Andrew Jones <drjones@redhat.com> writes:

> Signed-off-by: Andrew Jones <drjones@redhat.com>


I'm confused. These steps have introduced a bunch of boiler plate to set
the default virt machine type so we can introduce 2.7 which is an alias
of the existing 2.6? Wouldn't this be better of waiting until there is a
concrete difference or have I missed something subtle here?

> ---
>  hw/arm/virt.c | 20 ++++++++++++++++++--
>  1 file changed, 18 insertions(+), 2 deletions(-)
>
> diff --git a/hw/arm/virt.c b/hw/arm/virt.c
> index 017c244a46f41..323ffd4689641 100644
> --- a/hw/arm/virt.c
> +++ b/hw/arm/virt.c
> @@ -42,6 +42,7 @@
>  #include "sysemu/sysemu.h"
>  #include "sysemu/kvm.h"
>  #include "hw/boards.h"
> +#include "hw/compat.h"
>  #include "hw/loader.h"
>  #include "exec/address-spaces.h"
>  #include "qemu/bitops.h"
> @@ -1423,7 +1424,7 @@ static void machvirt_machine_init(void)
>  }
>  type_init(machvirt_machine_init);
>
> -static void virt_2_6_instance_init(Object *obj)
> +static void virt_2_7_instance_init(Object *obj)
>  {
>      VirtMachineState *vms = VIRT_MACHINE(obj);
>
> @@ -1456,7 +1457,22 @@ static void virt_2_6_instance_init(Object *obj)
>                                      "Valid values are 2, 3 and host", NULL);
>  }
>
> +static void virt_machine_2_7_options(MachineClass *mc)
> +{
> +}
> +DEFINE_VIRT_MACHINE_AS_LATEST(2, 7)
> +
> +#define VIRT_COMPAT_2_6 \
> +    HW_COMPAT_2_6
> +
> +static void virt_2_6_instance_init(Object *obj)
> +{
> +    virt_2_7_instance_init(obj);
> +}
> +
>  static void virt_machine_2_6_options(MachineClass *mc)
>  {
> +    virt_machine_2_7_options(mc);
> +    SET_MACHINE_COMPAT(mc, VIRT_COMPAT_2_6);
>  }
> -DEFINE_VIRT_MACHINE_AS_LATEST(2, 6)
> +DEFINE_VIRT_MACHINE(2, 6)


--
Alex Bennée
Andrew Jones June 9, 2016, 4:19 p.m. UTC | #2
On Thu, Jun 09, 2016 at 05:06:43PM +0100, Alex Bennée wrote:
> 
> Andrew Jones <drjones@redhat.com> writes:
> 
> > Signed-off-by: Andrew Jones <drjones@redhat.com>
> 
> 
> I'm confused. These steps have introduced a bunch of boiler plate to set
> the default virt machine type so we can introduce 2.7 which is an alias
> of the existing 2.6? Wouldn't this be better of waiting until there is a
> concrete difference or have I missed something subtle here?

The concrete difference is the minor number; 7 != 6.

Take a look at how hw/i386/pc and hw/ppc/spapr do this.
I basically just stole from them.

Now, on differences (besides the version); I'm trying to decide
what warrants versioning. There's the obvious migrateable state,
but what about changes to DT/ACPI? We've added NUMA info to the
hardware description for 2.7, but there's no easy way to version
that with the way we currently do it (like this series). Thoughts
on that?

Thanks,
drew

> 
> > ---
> >  hw/arm/virt.c | 20 ++++++++++++++++++--
> >  1 file changed, 18 insertions(+), 2 deletions(-)
> >
> > diff --git a/hw/arm/virt.c b/hw/arm/virt.c
> > index 017c244a46f41..323ffd4689641 100644
> > --- a/hw/arm/virt.c
> > +++ b/hw/arm/virt.c
> > @@ -42,6 +42,7 @@
> >  #include "sysemu/sysemu.h"
> >  #include "sysemu/kvm.h"
> >  #include "hw/boards.h"
> > +#include "hw/compat.h"
> >  #include "hw/loader.h"
> >  #include "exec/address-spaces.h"
> >  #include "qemu/bitops.h"
> > @@ -1423,7 +1424,7 @@ static void machvirt_machine_init(void)
> >  }
> >  type_init(machvirt_machine_init);
> >
> > -static void virt_2_6_instance_init(Object *obj)
> > +static void virt_2_7_instance_init(Object *obj)
> >  {
> >      VirtMachineState *vms = VIRT_MACHINE(obj);
> >
> > @@ -1456,7 +1457,22 @@ static void virt_2_6_instance_init(Object *obj)
> >                                      "Valid values are 2, 3 and host", NULL);
> >  }
> >
> > +static void virt_machine_2_7_options(MachineClass *mc)
> > +{
> > +}
> > +DEFINE_VIRT_MACHINE_AS_LATEST(2, 7)
> > +
> > +#define VIRT_COMPAT_2_6 \
> > +    HW_COMPAT_2_6
> > +
> > +static void virt_2_6_instance_init(Object *obj)
> > +{
> > +    virt_2_7_instance_init(obj);
> > +}
> > +
> >  static void virt_machine_2_6_options(MachineClass *mc)
> >  {
> > +    virt_machine_2_7_options(mc);
> > +    SET_MACHINE_COMPAT(mc, VIRT_COMPAT_2_6);
> >  }
> > -DEFINE_VIRT_MACHINE_AS_LATEST(2, 6)
> > +DEFINE_VIRT_MACHINE(2, 6)
> 
> 
> --
> Alex Bennée
diff mbox

Patch

diff --git a/hw/arm/virt.c b/hw/arm/virt.c
index 017c244a46f41..323ffd4689641 100644
--- a/hw/arm/virt.c
+++ b/hw/arm/virt.c
@@ -42,6 +42,7 @@ 
 #include "sysemu/sysemu.h"
 #include "sysemu/kvm.h"
 #include "hw/boards.h"
+#include "hw/compat.h"
 #include "hw/loader.h"
 #include "exec/address-spaces.h"
 #include "qemu/bitops.h"
@@ -1423,7 +1424,7 @@  static void machvirt_machine_init(void)
 }
 type_init(machvirt_machine_init);
 
-static void virt_2_6_instance_init(Object *obj)
+static void virt_2_7_instance_init(Object *obj)
 {
     VirtMachineState *vms = VIRT_MACHINE(obj);
 
@@ -1456,7 +1457,22 @@  static void virt_2_6_instance_init(Object *obj)
                                     "Valid values are 2, 3 and host", NULL);
 }
 
+static void virt_machine_2_7_options(MachineClass *mc)
+{
+}
+DEFINE_VIRT_MACHINE_AS_LATEST(2, 7)
+
+#define VIRT_COMPAT_2_6 \
+    HW_COMPAT_2_6
+
+static void virt_2_6_instance_init(Object *obj)
+{
+    virt_2_7_instance_init(obj);
+}
+
 static void virt_machine_2_6_options(MachineClass *mc)
 {
+    virt_machine_2_7_options(mc);
+    SET_MACHINE_COMPAT(mc, VIRT_COMPAT_2_6);
 }
-DEFINE_VIRT_MACHINE_AS_LATEST(2, 6)
+DEFINE_VIRT_MACHINE(2, 6)