diff mbox series

[v2] hw/i386: define _AS_LATEST() macros for machine types

Message ID 20240910163041.3764176-1-berrange@redhat.com (mailing list archive)
State New, archived
Headers show
Series [v2] hw/i386: define _AS_LATEST() macros for machine types | expand

Commit Message

Daniel P. Berrangé Sept. 10, 2024, 4:30 p.m. UTC
Follow the other architecture targets by adding extra macros for
defining a versioned machine type as the latest. This reduces the
size of the changes when introducing new machine types at the start
of each release cycle.

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---

In v2:

 - Rebased on top of new 9.2 machine types

 hw/i386/pc_piix.c    | 11 +++++------
 hw/i386/pc_q35.c     | 11 ++++++-----
 include/hw/i386/pc.h |  4 +++-
 3 files changed, 14 insertions(+), 12 deletions(-)

Comments

Daniel P. Berrangé Oct. 21, 2024, 6:03 p.m. UTC | #1
Ping: for the x86 maintainers.

On Tue, Sep 10, 2024 at 05:30:41PM +0100, Daniel P. Berrangé wrote:
> Follow the other architecture targets by adding extra macros for
> defining a versioned machine type as the latest. This reduces the
> size of the changes when introducing new machine types at the start
> of each release cycle.
> 
> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> Reviewed-by: Cornelia Huck <cohuck@redhat.com>
> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
> ---
> 
> In v2:
> 
>  - Rebased on top of new 9.2 machine types
> 
>  hw/i386/pc_piix.c    | 11 +++++------
>  hw/i386/pc_q35.c     | 11 ++++++-----
>  include/hw/i386/pc.h |  4 +++-
>  3 files changed, 14 insertions(+), 12 deletions(-)
> 
> diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
> index 2bf6865d40..4953676170 100644
> --- a/hw/i386/pc_piix.c
> +++ b/hw/i386/pc_piix.c
> @@ -446,7 +446,10 @@ static void pc_i440fx_init(MachineState *machine)
>  }
>  
>  #define DEFINE_I440FX_MACHINE(major, minor) \
> -    DEFINE_PC_VER_MACHINE(pc_i440fx, "pc-i440fx", pc_i440fx_init, major, minor);
> +    DEFINE_PC_VER_MACHINE(pc_i440fx, "pc-i440fx", pc_i440fx_init, false, NULL, major, minor);
> +
> +#define DEFINE_I440FX_MACHINE_AS_LATEST(major, minor) \
> +    DEFINE_PC_VER_MACHINE(pc_i440fx, "pc-i440fx", pc_i440fx_init, true, "pc", major, minor);
>  
>  static void pc_i440fx_machine_options(MachineClass *m)
>  {
> @@ -477,17 +480,13 @@ static void pc_i440fx_machine_options(MachineClass *m)
>  static void pc_i440fx_machine_9_2_options(MachineClass *m)
>  {
>      pc_i440fx_machine_options(m);
> -    m->alias = "pc";
> -    m->is_default = true;
>  }
>  
> -DEFINE_I440FX_MACHINE(9, 2);
> +DEFINE_I440FX_MACHINE_AS_LATEST(9, 2);
>  
>  static void pc_i440fx_machine_9_1_options(MachineClass *m)
>  {
>      pc_i440fx_machine_9_2_options(m);
> -    m->alias = NULL;
> -    m->is_default = false;
>      compat_props_add(m->compat_props, hw_compat_9_1, hw_compat_9_1_len);
>      compat_props_add(m->compat_props, pc_compat_9_1, pc_compat_9_1_len);
>  }
> diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
> index 8319b6d45e..42bdedbaa4 100644
> --- a/hw/i386/pc_q35.c
> +++ b/hw/i386/pc_q35.c
> @@ -327,10 +327,13 @@ static void pc_q35_init(MachineState *machine)
>  }
>  
>  #define DEFINE_Q35_MACHINE(major, minor) \
> -    DEFINE_PC_VER_MACHINE(pc_q35, "pc-q35", pc_q35_init, major, minor);
> +    DEFINE_PC_VER_MACHINE(pc_q35, "pc-q35", pc_q35_init, false, NULL, major, minor);
> +
> +#define DEFINE_Q35_MACHINE_AS_LATEST(major, minor) \
> +    DEFINE_PC_VER_MACHINE(pc_q35, "pc-q35", pc_q35_init, false, "q35", major, minor);
>  
>  #define DEFINE_Q35_MACHINE_BUGFIX(major, minor, micro) \
> -    DEFINE_PC_VER_MACHINE(pc_q35, "pc-q35", pc_q35_init, major, minor, micro);
> +    DEFINE_PC_VER_MACHINE(pc_q35, "pc-q35", pc_q35_init, false, NULL, major, minor, micro);
>  
>  static void pc_q35_machine_options(MachineClass *m)
>  {
> @@ -359,15 +362,13 @@ static void pc_q35_machine_options(MachineClass *m)
>  static void pc_q35_machine_9_2_options(MachineClass *m)
>  {
>      pc_q35_machine_options(m);
> -    m->alias = "q35";
>  }
>  
> -DEFINE_Q35_MACHINE(9, 2);
> +DEFINE_Q35_MACHINE_AS_LATEST(9, 2);
>  
>  static void pc_q35_machine_9_1_options(MachineClass *m)
>  {
>      pc_q35_machine_9_2_options(m);
> -    m->alias = NULL;
>      compat_props_add(m->compat_props, hw_compat_9_1, hw_compat_9_1_len);
>      compat_props_add(m->compat_props, pc_compat_9_1, pc_compat_9_1_len);
>  }
> diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
> index 14ee06287d..890427c56e 100644
> --- a/include/hw/i386/pc.h
> +++ b/include/hw/i386/pc.h
> @@ -320,7 +320,7 @@ extern const size_t pc_compat_2_3_len;
>      } \
>      type_init(pc_machine_init_##suffix)
>  
> -#define DEFINE_PC_VER_MACHINE(namesym, namestr, initfn, ...) \
> +#define DEFINE_PC_VER_MACHINE(namesym, namestr, initfn, isdefault, malias, ...) \
>      static void MACHINE_VER_SYM(init, namesym, __VA_ARGS__)( \
>          MachineState *machine) \
>      { \
> @@ -334,6 +334,8 @@ extern const size_t pc_compat_2_3_len;
>          MACHINE_VER_SYM(options, namesym, __VA_ARGS__)(mc); \
>          mc->init = MACHINE_VER_SYM(init, namesym, __VA_ARGS__); \
>          MACHINE_VER_DEPRECATION(__VA_ARGS__); \
> +        mc->is_default = isdefault; \
> +        mc->alias = malias; \
>      } \
>      static const TypeInfo MACHINE_VER_SYM(info, namesym, __VA_ARGS__) = \
>      { \
> -- 
> 2.43.0
> 

With regards,
Daniel
Cornelia Huck Nov. 25, 2024, 10:18 a.m. UTC | #2
On Mon, Oct 21 2024, Daniel P. Berrangé <berrange@redhat.com> wrote:

> Ping: for the x86 maintainers.

...has anything ever happened with this patch? It's machine type
creation time again, and it would probably make sense for me to do the
10.0 machine types on top of this.

>
> On Tue, Sep 10, 2024 at 05:30:41PM +0100, Daniel P. Berrangé wrote:
>> Follow the other architecture targets by adding extra macros for
>> defining a versioned machine type as the latest. This reduces the
>> size of the changes when introducing new machine types at the start
>> of each release cycle.
>> 
>> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
>> Reviewed-by: Cornelia Huck <cohuck@redhat.com>
>> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
>> ---
>> 
>> In v2:
>> 
>>  - Rebased on top of new 9.2 machine types
>> 
>>  hw/i386/pc_piix.c    | 11 +++++------
>>  hw/i386/pc_q35.c     | 11 ++++++-----
>>  include/hw/i386/pc.h |  4 +++-
>>  3 files changed, 14 insertions(+), 12 deletions(-)
>> 
>> diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
>> index 2bf6865d40..4953676170 100644
>> --- a/hw/i386/pc_piix.c
>> +++ b/hw/i386/pc_piix.c
>> @@ -446,7 +446,10 @@ static void pc_i440fx_init(MachineState *machine)
>>  }
>>  
>>  #define DEFINE_I440FX_MACHINE(major, minor) \
>> -    DEFINE_PC_VER_MACHINE(pc_i440fx, "pc-i440fx", pc_i440fx_init, major, minor);
>> +    DEFINE_PC_VER_MACHINE(pc_i440fx, "pc-i440fx", pc_i440fx_init, false, NULL, major, minor);
>> +
>> +#define DEFINE_I440FX_MACHINE_AS_LATEST(major, minor) \
>> +    DEFINE_PC_VER_MACHINE(pc_i440fx, "pc-i440fx", pc_i440fx_init, true, "pc", major, minor);
>>  
>>  static void pc_i440fx_machine_options(MachineClass *m)
>>  {
>> @@ -477,17 +480,13 @@ static void pc_i440fx_machine_options(MachineClass *m)
>>  static void pc_i440fx_machine_9_2_options(MachineClass *m)
>>  {
>>      pc_i440fx_machine_options(m);
>> -    m->alias = "pc";
>> -    m->is_default = true;
>>  }
>>  
>> -DEFINE_I440FX_MACHINE(9, 2);
>> +DEFINE_I440FX_MACHINE_AS_LATEST(9, 2);
>>  
>>  static void pc_i440fx_machine_9_1_options(MachineClass *m)
>>  {
>>      pc_i440fx_machine_9_2_options(m);
>> -    m->alias = NULL;
>> -    m->is_default = false;
>>      compat_props_add(m->compat_props, hw_compat_9_1, hw_compat_9_1_len);
>>      compat_props_add(m->compat_props, pc_compat_9_1, pc_compat_9_1_len);
>>  }
>> diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
>> index 8319b6d45e..42bdedbaa4 100644
>> --- a/hw/i386/pc_q35.c
>> +++ b/hw/i386/pc_q35.c
>> @@ -327,10 +327,13 @@ static void pc_q35_init(MachineState *machine)
>>  }
>>  
>>  #define DEFINE_Q35_MACHINE(major, minor) \
>> -    DEFINE_PC_VER_MACHINE(pc_q35, "pc-q35", pc_q35_init, major, minor);
>> +    DEFINE_PC_VER_MACHINE(pc_q35, "pc-q35", pc_q35_init, false, NULL, major, minor);
>> +
>> +#define DEFINE_Q35_MACHINE_AS_LATEST(major, minor) \
>> +    DEFINE_PC_VER_MACHINE(pc_q35, "pc-q35", pc_q35_init, false, "q35", major, minor);
>>  
>>  #define DEFINE_Q35_MACHINE_BUGFIX(major, minor, micro) \
>> -    DEFINE_PC_VER_MACHINE(pc_q35, "pc-q35", pc_q35_init, major, minor, micro);
>> +    DEFINE_PC_VER_MACHINE(pc_q35, "pc-q35", pc_q35_init, false, NULL, major, minor, micro);
>>  
>>  static void pc_q35_machine_options(MachineClass *m)
>>  {
>> @@ -359,15 +362,13 @@ static void pc_q35_machine_options(MachineClass *m)
>>  static void pc_q35_machine_9_2_options(MachineClass *m)
>>  {
>>      pc_q35_machine_options(m);
>> -    m->alias = "q35";
>>  }
>>  
>> -DEFINE_Q35_MACHINE(9, 2);
>> +DEFINE_Q35_MACHINE_AS_LATEST(9, 2);
>>  
>>  static void pc_q35_machine_9_1_options(MachineClass *m)
>>  {
>>      pc_q35_machine_9_2_options(m);
>> -    m->alias = NULL;
>>      compat_props_add(m->compat_props, hw_compat_9_1, hw_compat_9_1_len);
>>      compat_props_add(m->compat_props, pc_compat_9_1, pc_compat_9_1_len);
>>  }
>> diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
>> index 14ee06287d..890427c56e 100644
>> --- a/include/hw/i386/pc.h
>> +++ b/include/hw/i386/pc.h
>> @@ -320,7 +320,7 @@ extern const size_t pc_compat_2_3_len;
>>      } \
>>      type_init(pc_machine_init_##suffix)
>>  
>> -#define DEFINE_PC_VER_MACHINE(namesym, namestr, initfn, ...) \
>> +#define DEFINE_PC_VER_MACHINE(namesym, namestr, initfn, isdefault, malias, ...) \
>>      static void MACHINE_VER_SYM(init, namesym, __VA_ARGS__)( \
>>          MachineState *machine) \
>>      { \
>> @@ -334,6 +334,8 @@ extern const size_t pc_compat_2_3_len;
>>          MACHINE_VER_SYM(options, namesym, __VA_ARGS__)(mc); \
>>          mc->init = MACHINE_VER_SYM(init, namesym, __VA_ARGS__); \
>>          MACHINE_VER_DEPRECATION(__VA_ARGS__); \
>> +        mc->is_default = isdefault; \
>> +        mc->alias = malias; \
>>      } \
>>      static const TypeInfo MACHINE_VER_SYM(info, namesym, __VA_ARGS__) = \
>>      { \
>> -- 
>> 2.43.0
>> 
>
> With regards,
> Daniel
> -- 
> |: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
> |: https://libvirt.org         -o-            https://fstop138.berrange.com :|
> |: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|
Daniel P. Berrangé Nov. 25, 2024, 10:27 a.m. UTC | #3
On Mon, Nov 25, 2024 at 11:18:26AM +0100, Cornelia Huck wrote:
> On Mon, Oct 21 2024, Daniel P. Berrangé <berrange@redhat.com> wrote:
> 
> > Ping: for the x86 maintainers.
> 
> ...has anything ever happened with this patch? It's machine type
> creation time again, and it would probably make sense for me to do the
> 10.0 machine types on top of this.

Still not picked up by the x86 maintainers :-(

I'd suggest you just put it at the start of your 10.0 series.

> 
> >
> > On Tue, Sep 10, 2024 at 05:30:41PM +0100, Daniel P. Berrangé wrote:
> >> Follow the other architecture targets by adding extra macros for
> >> defining a versioned machine type as the latest. This reduces the
> >> size of the changes when introducing new machine types at the start
> >> of each release cycle.
> >> 
> >> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> >> Reviewed-by: Cornelia Huck <cohuck@redhat.com>
> >> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
> >> ---
> >> 
> >> In v2:
> >> 
> >>  - Rebased on top of new 9.2 machine types
> >> 
> >>  hw/i386/pc_piix.c    | 11 +++++------
> >>  hw/i386/pc_q35.c     | 11 ++++++-----
> >>  include/hw/i386/pc.h |  4 +++-
> >>  3 files changed, 14 insertions(+), 12 deletions(-)
> >> 
> >> diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
> >> index 2bf6865d40..4953676170 100644
> >> --- a/hw/i386/pc_piix.c
> >> +++ b/hw/i386/pc_piix.c
> >> @@ -446,7 +446,10 @@ static void pc_i440fx_init(MachineState *machine)
> >>  }
> >>  
> >>  #define DEFINE_I440FX_MACHINE(major, minor) \
> >> -    DEFINE_PC_VER_MACHINE(pc_i440fx, "pc-i440fx", pc_i440fx_init, major, minor);
> >> +    DEFINE_PC_VER_MACHINE(pc_i440fx, "pc-i440fx", pc_i440fx_init, false, NULL, major, minor);
> >> +
> >> +#define DEFINE_I440FX_MACHINE_AS_LATEST(major, minor) \
> >> +    DEFINE_PC_VER_MACHINE(pc_i440fx, "pc-i440fx", pc_i440fx_init, true, "pc", major, minor);
> >>  
> >>  static void pc_i440fx_machine_options(MachineClass *m)
> >>  {
> >> @@ -477,17 +480,13 @@ static void pc_i440fx_machine_options(MachineClass *m)
> >>  static void pc_i440fx_machine_9_2_options(MachineClass *m)
> >>  {
> >>      pc_i440fx_machine_options(m);
> >> -    m->alias = "pc";
> >> -    m->is_default = true;
> >>  }
> >>  
> >> -DEFINE_I440FX_MACHINE(9, 2);
> >> +DEFINE_I440FX_MACHINE_AS_LATEST(9, 2);
> >>  
> >>  static void pc_i440fx_machine_9_1_options(MachineClass *m)
> >>  {
> >>      pc_i440fx_machine_9_2_options(m);
> >> -    m->alias = NULL;
> >> -    m->is_default = false;
> >>      compat_props_add(m->compat_props, hw_compat_9_1, hw_compat_9_1_len);
> >>      compat_props_add(m->compat_props, pc_compat_9_1, pc_compat_9_1_len);
> >>  }
> >> diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
> >> index 8319b6d45e..42bdedbaa4 100644
> >> --- a/hw/i386/pc_q35.c
> >> +++ b/hw/i386/pc_q35.c
> >> @@ -327,10 +327,13 @@ static void pc_q35_init(MachineState *machine)
> >>  }
> >>  
> >>  #define DEFINE_Q35_MACHINE(major, minor) \
> >> -    DEFINE_PC_VER_MACHINE(pc_q35, "pc-q35", pc_q35_init, major, minor);
> >> +    DEFINE_PC_VER_MACHINE(pc_q35, "pc-q35", pc_q35_init, false, NULL, major, minor);
> >> +
> >> +#define DEFINE_Q35_MACHINE_AS_LATEST(major, minor) \
> >> +    DEFINE_PC_VER_MACHINE(pc_q35, "pc-q35", pc_q35_init, false, "q35", major, minor);
> >>  
> >>  #define DEFINE_Q35_MACHINE_BUGFIX(major, minor, micro) \
> >> -    DEFINE_PC_VER_MACHINE(pc_q35, "pc-q35", pc_q35_init, major, minor, micro);
> >> +    DEFINE_PC_VER_MACHINE(pc_q35, "pc-q35", pc_q35_init, false, NULL, major, minor, micro);
> >>  
> >>  static void pc_q35_machine_options(MachineClass *m)
> >>  {
> >> @@ -359,15 +362,13 @@ static void pc_q35_machine_options(MachineClass *m)
> >>  static void pc_q35_machine_9_2_options(MachineClass *m)
> >>  {
> >>      pc_q35_machine_options(m);
> >> -    m->alias = "q35";
> >>  }
> >>  
> >> -DEFINE_Q35_MACHINE(9, 2);
> >> +DEFINE_Q35_MACHINE_AS_LATEST(9, 2);
> >>  
> >>  static void pc_q35_machine_9_1_options(MachineClass *m)
> >>  {
> >>      pc_q35_machine_9_2_options(m);
> >> -    m->alias = NULL;
> >>      compat_props_add(m->compat_props, hw_compat_9_1, hw_compat_9_1_len);
> >>      compat_props_add(m->compat_props, pc_compat_9_1, pc_compat_9_1_len);
> >>  }
> >> diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
> >> index 14ee06287d..890427c56e 100644
> >> --- a/include/hw/i386/pc.h
> >> +++ b/include/hw/i386/pc.h
> >> @@ -320,7 +320,7 @@ extern const size_t pc_compat_2_3_len;
> >>      } \
> >>      type_init(pc_machine_init_##suffix)
> >>  
> >> -#define DEFINE_PC_VER_MACHINE(namesym, namestr, initfn, ...) \
> >> +#define DEFINE_PC_VER_MACHINE(namesym, namestr, initfn, isdefault, malias, ...) \
> >>      static void MACHINE_VER_SYM(init, namesym, __VA_ARGS__)( \
> >>          MachineState *machine) \
> >>      { \
> >> @@ -334,6 +334,8 @@ extern const size_t pc_compat_2_3_len;
> >>          MACHINE_VER_SYM(options, namesym, __VA_ARGS__)(mc); \
> >>          mc->init = MACHINE_VER_SYM(init, namesym, __VA_ARGS__); \
> >>          MACHINE_VER_DEPRECATION(__VA_ARGS__); \
> >> +        mc->is_default = isdefault; \
> >> +        mc->alias = malias; \
> >>      } \
> >>      static const TypeInfo MACHINE_VER_SYM(info, namesym, __VA_ARGS__) = \
> >>      { \
> >> -- 
> >> 2.43.0
> >> 
> >
> > With regards,
> > Daniel
> > -- 
> > |: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
> > |: https://libvirt.org         -o-            https://fstop138.berrange.com :|
> > |: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|
> 

With regards,
Daniel
Cornelia Huck Nov. 25, 2024, 10:29 a.m. UTC | #4
On Mon, Nov 25 2024, Daniel P. Berrangé <berrange@redhat.com> wrote:

> On Mon, Nov 25, 2024 at 11:18:26AM +0100, Cornelia Huck wrote:
>> On Mon, Oct 21 2024, Daniel P. Berrangé <berrange@redhat.com> wrote:
>> 
>> > Ping: for the x86 maintainers.
>> 
>> ...has anything ever happened with this patch? It's machine type
>> creation time again, and it would probably make sense for me to do the
>> 10.0 machine types on top of this.
>
> Still not picked up by the x86 maintainers :-(
>
> I'd suggest you just put it at the start of your 10.0 series.

Yep, that's what I'll be doing.
diff mbox series

Patch

diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
index 2bf6865d40..4953676170 100644
--- a/hw/i386/pc_piix.c
+++ b/hw/i386/pc_piix.c
@@ -446,7 +446,10 @@  static void pc_i440fx_init(MachineState *machine)
 }
 
 #define DEFINE_I440FX_MACHINE(major, minor) \
-    DEFINE_PC_VER_MACHINE(pc_i440fx, "pc-i440fx", pc_i440fx_init, major, minor);
+    DEFINE_PC_VER_MACHINE(pc_i440fx, "pc-i440fx", pc_i440fx_init, false, NULL, major, minor);
+
+#define DEFINE_I440FX_MACHINE_AS_LATEST(major, minor) \
+    DEFINE_PC_VER_MACHINE(pc_i440fx, "pc-i440fx", pc_i440fx_init, true, "pc", major, minor);
 
 static void pc_i440fx_machine_options(MachineClass *m)
 {
@@ -477,17 +480,13 @@  static void pc_i440fx_machine_options(MachineClass *m)
 static void pc_i440fx_machine_9_2_options(MachineClass *m)
 {
     pc_i440fx_machine_options(m);
-    m->alias = "pc";
-    m->is_default = true;
 }
 
-DEFINE_I440FX_MACHINE(9, 2);
+DEFINE_I440FX_MACHINE_AS_LATEST(9, 2);
 
 static void pc_i440fx_machine_9_1_options(MachineClass *m)
 {
     pc_i440fx_machine_9_2_options(m);
-    m->alias = NULL;
-    m->is_default = false;
     compat_props_add(m->compat_props, hw_compat_9_1, hw_compat_9_1_len);
     compat_props_add(m->compat_props, pc_compat_9_1, pc_compat_9_1_len);
 }
diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
index 8319b6d45e..42bdedbaa4 100644
--- a/hw/i386/pc_q35.c
+++ b/hw/i386/pc_q35.c
@@ -327,10 +327,13 @@  static void pc_q35_init(MachineState *machine)
 }
 
 #define DEFINE_Q35_MACHINE(major, minor) \
-    DEFINE_PC_VER_MACHINE(pc_q35, "pc-q35", pc_q35_init, major, minor);
+    DEFINE_PC_VER_MACHINE(pc_q35, "pc-q35", pc_q35_init, false, NULL, major, minor);
+
+#define DEFINE_Q35_MACHINE_AS_LATEST(major, minor) \
+    DEFINE_PC_VER_MACHINE(pc_q35, "pc-q35", pc_q35_init, false, "q35", major, minor);
 
 #define DEFINE_Q35_MACHINE_BUGFIX(major, minor, micro) \
-    DEFINE_PC_VER_MACHINE(pc_q35, "pc-q35", pc_q35_init, major, minor, micro);
+    DEFINE_PC_VER_MACHINE(pc_q35, "pc-q35", pc_q35_init, false, NULL, major, minor, micro);
 
 static void pc_q35_machine_options(MachineClass *m)
 {
@@ -359,15 +362,13 @@  static void pc_q35_machine_options(MachineClass *m)
 static void pc_q35_machine_9_2_options(MachineClass *m)
 {
     pc_q35_machine_options(m);
-    m->alias = "q35";
 }
 
-DEFINE_Q35_MACHINE(9, 2);
+DEFINE_Q35_MACHINE_AS_LATEST(9, 2);
 
 static void pc_q35_machine_9_1_options(MachineClass *m)
 {
     pc_q35_machine_9_2_options(m);
-    m->alias = NULL;
     compat_props_add(m->compat_props, hw_compat_9_1, hw_compat_9_1_len);
     compat_props_add(m->compat_props, pc_compat_9_1, pc_compat_9_1_len);
 }
diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
index 14ee06287d..890427c56e 100644
--- a/include/hw/i386/pc.h
+++ b/include/hw/i386/pc.h
@@ -320,7 +320,7 @@  extern const size_t pc_compat_2_3_len;
     } \
     type_init(pc_machine_init_##suffix)
 
-#define DEFINE_PC_VER_MACHINE(namesym, namestr, initfn, ...) \
+#define DEFINE_PC_VER_MACHINE(namesym, namestr, initfn, isdefault, malias, ...) \
     static void MACHINE_VER_SYM(init, namesym, __VA_ARGS__)( \
         MachineState *machine) \
     { \
@@ -334,6 +334,8 @@  extern const size_t pc_compat_2_3_len;
         MACHINE_VER_SYM(options, namesym, __VA_ARGS__)(mc); \
         mc->init = MACHINE_VER_SYM(init, namesym, __VA_ARGS__); \
         MACHINE_VER_DEPRECATION(__VA_ARGS__); \
+        mc->is_default = isdefault; \
+        mc->alias = malias; \
     } \
     static const TypeInfo MACHINE_VER_SYM(info, namesym, __VA_ARGS__) = \
     { \