diff mbox

[3/4] pc: Add 2.9 machine-types

Message ID 1482866480-26208-4-git-send-email-ehabkost@redhat.com
State New
Headers show

Commit Message

Eduardo Habkost Dec. 27, 2016, 7:21 p.m. UTC
Cc: "Michael S. Tsirkin" <mst@redhat.com>
Cc: Laszlo Ersek <lersek@redhat.com>
Cc: Igor Mammedov <imammedo@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
 include/hw/i386/pc.h |  1 +
 hw/i386/pc_piix.c    | 15 ++++++++++++---
 hw/i386/pc_q35.c     | 13 +++++++++++--
 3 files changed, 24 insertions(+), 5 deletions(-)

Comments

Igor Mammedov Dec. 30, 2016, 1:38 p.m. UTC | #1
On Tue, 27 Dec 2016 17:21:19 -0200
Eduardo Habkost <ehabkost@redhat.com> wrote:

> Cc: "Michael S. Tsirkin" <mst@redhat.com>
> Cc: Laszlo Ersek <lersek@redhat.com>
> Cc: Igor Mammedov <imammedo@redhat.com>
> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>

> ---
>  include/hw/i386/pc.h |  1 +
>  hw/i386/pc_piix.c    | 15 ++++++++++++---
>  hw/i386/pc_q35.c     | 13 +++++++++++--
>  3 files changed, 24 insertions(+), 5 deletions(-)
> 
> diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
> index b22e699..ceeacca 100644
> --- a/include/hw/i386/pc.h
> +++ b/include/hw/i386/pc.h
> @@ -375,6 +375,7 @@ int e820_get_num_entries(void);
>  bool e820_get_entry(int, uint32_t, uint64_t *, uint64_t *);
>  
>  #define PC_COMPAT_2_8 \
> +    HW_COMPAT_2_8
>  
>  #define PC_COMPAT_2_7 \
>      HW_COMPAT_2_7 \
> diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
> index 5e1adbe..9f102aa 100644
> --- a/hw/i386/pc_piix.c
> +++ b/hw/i386/pc_piix.c
> @@ -437,13 +437,24 @@ static void pc_i440fx_machine_options(MachineClass *m)
>      m->default_display = "std";
>  }
>  
> -static void pc_i440fx_2_8_machine_options(MachineClass *m)
> +static void pc_i440fx_2_9_machine_options(MachineClass *m)
>  {
>      pc_i440fx_machine_options(m);
>      m->alias = "pc";
>      m->is_default = 1;
>  }
>  
> +DEFINE_I440FX_MACHINE(v2_9, "pc-i440fx-2.9", NULL,
> +                      pc_i440fx_2_9_machine_options);
> +
> +static void pc_i440fx_2_8_machine_options(MachineClass *m)
> +{
> +    pc_i440fx_2_9_machine_options(m);
> +    m->is_default = 0;
> +    m->alias = NULL;
> +    SET_MACHINE_COMPAT(m, PC_COMPAT_2_8);
> +}
> +
>  DEFINE_I440FX_MACHINE(v2_8, "pc-i440fx-2.8", NULL,
>                        pc_i440fx_2_8_machine_options);
>  
> @@ -451,8 +462,6 @@ DEFINE_I440FX_MACHINE(v2_8, "pc-i440fx-2.8", NULL,
>  static void pc_i440fx_2_7_machine_options(MachineClass *m)
>  {
>      pc_i440fx_2_8_machine_options(m);
> -    m->is_default = 0;
> -    m->alias = NULL;
>      SET_MACHINE_COMPAT(m, PC_COMPAT_2_7);
>  }
>  
> diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
> index d042fe0..dd792a8 100644
> --- a/hw/i386/pc_q35.c
> +++ b/hw/i386/pc_q35.c
> @@ -301,19 +301,28 @@ static void pc_q35_machine_options(MachineClass *m)
>      m->max_cpus = 288;
>  }
>  
> -static void pc_q35_2_8_machine_options(MachineClass *m)
> +static void pc_q35_2_9_machine_options(MachineClass *m)
>  {
>      pc_q35_machine_options(m);
>      m->alias = "q35";
>  }
>  
> +DEFINE_Q35_MACHINE(v2_9, "pc-q35-2.9", NULL,
> +                   pc_q35_2_9_machine_options);
> +
> +static void pc_q35_2_8_machine_options(MachineClass *m)
> +{
> +    pc_q35_2_9_machine_options(m);
> +    m->alias = NULL;
> +    SET_MACHINE_COMPAT(m, PC_COMPAT_2_8);
> +}
> +
>  DEFINE_Q35_MACHINE(v2_8, "pc-q35-2.8", NULL,
>                     pc_q35_2_8_machine_options);
>  
>  static void pc_q35_2_7_machine_options(MachineClass *m)
>  {
>      pc_q35_2_8_machine_options(m);
> -    m->alias = NULL;
>      m->max_cpus = 255;
>      SET_MACHINE_COMPAT(m, PC_COMPAT_2_7);
>  }
Laszlo Ersek Jan. 4, 2017, 2:01 p.m. UTC | #2
On 12/27/16 20:21, Eduardo Habkost wrote:
> Cc: "Michael S. Tsirkin" <mst@redhat.com>
> Cc: Laszlo Ersek <lersek@redhat.com>
> Cc: Igor Mammedov <imammedo@redhat.com>
> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
> ---
>  include/hw/i386/pc.h |  1 +
>  hw/i386/pc_piix.c    | 15 ++++++++++++---
>  hw/i386/pc_q35.c     | 13 +++++++++++--
>  3 files changed, 24 insertions(+), 5 deletions(-)
> 
> diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
> index b22e699..ceeacca 100644
> --- a/include/hw/i386/pc.h
> +++ b/include/hw/i386/pc.h
> @@ -375,6 +375,7 @@ int e820_get_num_entries(void);
>  bool e820_get_entry(int, uint32_t, uint64_t *, uint64_t *);
>  
>  #define PC_COMPAT_2_8 \
> +    HW_COMPAT_2_8
>  
>  #define PC_COMPAT_2_7 \
>      HW_COMPAT_2_7 \

Here I would recommend two things:
- introduce an empty PC_COMPAT_2_9 macro
- in the PC_COMPAT_2_8 macro being modified, add a trailing backslash
  after HW_COMPAT_2_8

Both of these aim at keeping up the current pattern; namely, for the
most recent machine type, a PC_COMPAT macro should exist (even if empty
/ unused), plus each PC_COMPAT macro should be extensible by plain
appending (hence the final trailing backslash).

Functionally the above hunk is good of course, so I'll leave it to you
whether you actually want to address my comments.

The rest looks fine; I should be able to rebase my broadcast SMI (v5)
stuff to this.

Changed or unchanged:

Reviewed-by: Laszlo Ersek <lersek@redhat.com>

Thanks
Laszlo

> diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
> index 5e1adbe..9f102aa 100644
> --- a/hw/i386/pc_piix.c
> +++ b/hw/i386/pc_piix.c
> @@ -437,13 +437,24 @@ static void pc_i440fx_machine_options(MachineClass *m)
>      m->default_display = "std";
>  }
>  
> -static void pc_i440fx_2_8_machine_options(MachineClass *m)
> +static void pc_i440fx_2_9_machine_options(MachineClass *m)
>  {
>      pc_i440fx_machine_options(m);
>      m->alias = "pc";
>      m->is_default = 1;
>  }
>  
> +DEFINE_I440FX_MACHINE(v2_9, "pc-i440fx-2.9", NULL,
> +                      pc_i440fx_2_9_machine_options);
> +
> +static void pc_i440fx_2_8_machine_options(MachineClass *m)
> +{
> +    pc_i440fx_2_9_machine_options(m);
> +    m->is_default = 0;
> +    m->alias = NULL;
> +    SET_MACHINE_COMPAT(m, PC_COMPAT_2_8);
> +}
> +
>  DEFINE_I440FX_MACHINE(v2_8, "pc-i440fx-2.8", NULL,
>                        pc_i440fx_2_8_machine_options);
>  
> @@ -451,8 +462,6 @@ DEFINE_I440FX_MACHINE(v2_8, "pc-i440fx-2.8", NULL,
>  static void pc_i440fx_2_7_machine_options(MachineClass *m)
>  {
>      pc_i440fx_2_8_machine_options(m);
> -    m->is_default = 0;
> -    m->alias = NULL;
>      SET_MACHINE_COMPAT(m, PC_COMPAT_2_7);
>  }
>  
> diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
> index d042fe0..dd792a8 100644
> --- a/hw/i386/pc_q35.c
> +++ b/hw/i386/pc_q35.c
> @@ -301,19 +301,28 @@ static void pc_q35_machine_options(MachineClass *m)
>      m->max_cpus = 288;
>  }
>  
> -static void pc_q35_2_8_machine_options(MachineClass *m)
> +static void pc_q35_2_9_machine_options(MachineClass *m)
>  {
>      pc_q35_machine_options(m);
>      m->alias = "q35";
>  }
>  
> +DEFINE_Q35_MACHINE(v2_9, "pc-q35-2.9", NULL,
> +                   pc_q35_2_9_machine_options);
> +
> +static void pc_q35_2_8_machine_options(MachineClass *m)
> +{
> +    pc_q35_2_9_machine_options(m);
> +    m->alias = NULL;
> +    SET_MACHINE_COMPAT(m, PC_COMPAT_2_8);
> +}
> +
>  DEFINE_Q35_MACHINE(v2_8, "pc-q35-2.8", NULL,
>                     pc_q35_2_8_machine_options);
>  
>  static void pc_q35_2_7_machine_options(MachineClass *m)
>  {
>      pc_q35_2_8_machine_options(m);
> -    m->alias = NULL;
>      m->max_cpus = 255;
>      SET_MACHINE_COMPAT(m, PC_COMPAT_2_7);
>  }
>
Eduardo Habkost Jan. 4, 2017, 2:20 p.m. UTC | #3
On Wed, Jan 04, 2017 at 03:01:07PM +0100, Laszlo Ersek wrote:
> On 12/27/16 20:21, Eduardo Habkost wrote:
> > Cc: "Michael S. Tsirkin" <mst@redhat.com>
> > Cc: Laszlo Ersek <lersek@redhat.com>
> > Cc: Igor Mammedov <imammedo@redhat.com>
> > Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
> > ---
> >  include/hw/i386/pc.h |  1 +
> >  hw/i386/pc_piix.c    | 15 ++++++++++++---
> >  hw/i386/pc_q35.c     | 13 +++++++++++--
> >  3 files changed, 24 insertions(+), 5 deletions(-)
> > 
> > diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
> > index b22e699..ceeacca 100644
> > --- a/include/hw/i386/pc.h
> > +++ b/include/hw/i386/pc.h
> > @@ -375,6 +375,7 @@ int e820_get_num_entries(void);
> >  bool e820_get_entry(int, uint32_t, uint64_t *, uint64_t *);
> >  
> >  #define PC_COMPAT_2_8 \
> > +    HW_COMPAT_2_8
> >  
> >  #define PC_COMPAT_2_7 \
> >      HW_COMPAT_2_7 \
> 
> Here I would recommend two things:
> - introduce an empty PC_COMPAT_2_9 macro
> - in the PC_COMPAT_2_8 macro being modified, add a trailing backslash
>   after HW_COMPAT_2_8
> 
> Both of these aim at keeping up the current pattern; namely, for the
> most recent machine type, a PC_COMPAT macro should exist (even if empty
> / unused),

Why? An empty and unused macro would only confuse people reading
the code. The empty PC_COMPAT_2_8 macro was added to the 2.8 tree
by mistake in commit 14c985cffa6c.

>            plus each PC_COMPAT macro should be extensible by plain
> appending (hence the final trailing backslash).

Good idea.

> 
> Functionally the above hunk is good of course, so I'll leave it to you
> whether you actually want to address my comments.
> 
> The rest looks fine; I should be able to rebase my broadcast SMI (v5)
> stuff to this.
> 
> Changed or unchanged:
> 
> Reviewed-by: Laszlo Ersek <lersek@redhat.com>

Thanks!

> 
> Thanks
> Laszlo
> 
> > diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
> > index 5e1adbe..9f102aa 100644
> > --- a/hw/i386/pc_piix.c
> > +++ b/hw/i386/pc_piix.c
> > @@ -437,13 +437,24 @@ static void pc_i440fx_machine_options(MachineClass *m)
> >      m->default_display = "std";
> >  }
> >  
> > -static void pc_i440fx_2_8_machine_options(MachineClass *m)
> > +static void pc_i440fx_2_9_machine_options(MachineClass *m)
> >  {
> >      pc_i440fx_machine_options(m);
> >      m->alias = "pc";
> >      m->is_default = 1;
> >  }
> >  
> > +DEFINE_I440FX_MACHINE(v2_9, "pc-i440fx-2.9", NULL,
> > +                      pc_i440fx_2_9_machine_options);
> > +
> > +static void pc_i440fx_2_8_machine_options(MachineClass *m)
> > +{
> > +    pc_i440fx_2_9_machine_options(m);
> > +    m->is_default = 0;
> > +    m->alias = NULL;
> > +    SET_MACHINE_COMPAT(m, PC_COMPAT_2_8);
> > +}
> > +
> >  DEFINE_I440FX_MACHINE(v2_8, "pc-i440fx-2.8", NULL,
> >                        pc_i440fx_2_8_machine_options);
> >  
> > @@ -451,8 +462,6 @@ DEFINE_I440FX_MACHINE(v2_8, "pc-i440fx-2.8", NULL,
> >  static void pc_i440fx_2_7_machine_options(MachineClass *m)
> >  {
> >      pc_i440fx_2_8_machine_options(m);
> > -    m->is_default = 0;
> > -    m->alias = NULL;
> >      SET_MACHINE_COMPAT(m, PC_COMPAT_2_7);
> >  }
> >  
> > diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
> > index d042fe0..dd792a8 100644
> > --- a/hw/i386/pc_q35.c
> > +++ b/hw/i386/pc_q35.c
> > @@ -301,19 +301,28 @@ static void pc_q35_machine_options(MachineClass *m)
> >      m->max_cpus = 288;
> >  }
> >  
> > -static void pc_q35_2_8_machine_options(MachineClass *m)
> > +static void pc_q35_2_9_machine_options(MachineClass *m)
> >  {
> >      pc_q35_machine_options(m);
> >      m->alias = "q35";
> >  }
> >  
> > +DEFINE_Q35_MACHINE(v2_9, "pc-q35-2.9", NULL,
> > +                   pc_q35_2_9_machine_options);
> > +
> > +static void pc_q35_2_8_machine_options(MachineClass *m)
> > +{
> > +    pc_q35_2_9_machine_options(m);
> > +    m->alias = NULL;
> > +    SET_MACHINE_COMPAT(m, PC_COMPAT_2_8);
> > +}
> > +
> >  DEFINE_Q35_MACHINE(v2_8, "pc-q35-2.8", NULL,
> >                     pc_q35_2_8_machine_options);
> >  
> >  static void pc_q35_2_7_machine_options(MachineClass *m)
> >  {
> >      pc_q35_2_8_machine_options(m);
> > -    m->alias = NULL;
> >      m->max_cpus = 255;
> >      SET_MACHINE_COMPAT(m, PC_COMPAT_2_7);
> >  }
> > 
>
Laszlo Ersek Jan. 4, 2017, 4:40 p.m. UTC | #4
On 01/04/17 15:20, Eduardo Habkost wrote:
> On Wed, Jan 04, 2017 at 03:01:07PM +0100, Laszlo Ersek wrote:
>> On 12/27/16 20:21, Eduardo Habkost wrote:
>>> Cc: "Michael S. Tsirkin" <mst@redhat.com>
>>> Cc: Laszlo Ersek <lersek@redhat.com>
>>> Cc: Igor Mammedov <imammedo@redhat.com>
>>> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
>>> ---
>>>  include/hw/i386/pc.h |  1 +
>>>  hw/i386/pc_piix.c    | 15 ++++++++++++---
>>>  hw/i386/pc_q35.c     | 13 +++++++++++--
>>>  3 files changed, 24 insertions(+), 5 deletions(-)
>>>
>>> diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
>>> index b22e699..ceeacca 100644
>>> --- a/include/hw/i386/pc.h
>>> +++ b/include/hw/i386/pc.h
>>> @@ -375,6 +375,7 @@ int e820_get_num_entries(void);
>>>  bool e820_get_entry(int, uint32_t, uint64_t *, uint64_t *);
>>>  
>>>  #define PC_COMPAT_2_8 \
>>> +    HW_COMPAT_2_8
>>>  
>>>  #define PC_COMPAT_2_7 \
>>>      HW_COMPAT_2_7 \
>>
>> Here I would recommend two things:
>> - introduce an empty PC_COMPAT_2_9 macro
>> - in the PC_COMPAT_2_8 macro being modified, add a trailing backslash
>>   after HW_COMPAT_2_8
>>
>> Both of these aim at keeping up the current pattern; namely, for the
>> most recent machine type, a PC_COMPAT macro should exist (even if empty
>> / unused),
> 
> Why? An empty and unused macro would only confuse people reading
> the code. The empty PC_COMPAT_2_8 macro was added to the 2.8 tree
> by mistake in commit 14c985cffa6c.

* First, the mistake was not in commit 14c985cffa6cb -- I see that "git
blame" fingers that commit, but if you actually show the commit, it
added the macro with a non-empty replacement text:

+#define PC_COMPAT_2_8 \
+    {\
+        .driver   = TYPE_X86_CPU,\
+        .property = "l3-cache",\
+        .value    = "off",\
+    },
+
+

Instead, the mistake was (apparently) in commit 152fcbecad37, where
PC_COMPAT_2_8 was "emptied", but preserved.

* Second, you do realize periodic contributors / reviewers like me
cannot be expected to do a good job writing / reviewing patches if
existing practice in the tree cannot be trusted as example.

If a standalone (empty) PC_COMPAT_2_9 macro is wrong / confusing (which
I agree it could be), then the empty PC_COMPAT_2_8 macro was wrong /
confusing just the same, and the reviewers of 152fcbecad37 should have
arguably caught it at that time.

Anyway, my R-b stands, with whichever updates you prefer from my
suggestions.

Thanks
Laszlo

> 
>>            plus each PC_COMPAT macro should be extensible by plain
>> appending (hence the final trailing backslash).
> 
> Good idea.
> 
>>
>> Functionally the above hunk is good of course, so I'll leave it to you
>> whether you actually want to address my comments.
>>
>> The rest looks fine; I should be able to rebase my broadcast SMI (v5)
>> stuff to this.
>>
>> Changed or unchanged:
>>
>> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
> 
> Thanks!
> 
>>
>> Thanks
>> Laszlo
>>
>>> diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
>>> index 5e1adbe..9f102aa 100644
>>> --- a/hw/i386/pc_piix.c
>>> +++ b/hw/i386/pc_piix.c
>>> @@ -437,13 +437,24 @@ static void pc_i440fx_machine_options(MachineClass *m)
>>>      m->default_display = "std";
>>>  }
>>>  
>>> -static void pc_i440fx_2_8_machine_options(MachineClass *m)
>>> +static void pc_i440fx_2_9_machine_options(MachineClass *m)
>>>  {
>>>      pc_i440fx_machine_options(m);
>>>      m->alias = "pc";
>>>      m->is_default = 1;
>>>  }
>>>  
>>> +DEFINE_I440FX_MACHINE(v2_9, "pc-i440fx-2.9", NULL,
>>> +                      pc_i440fx_2_9_machine_options);
>>> +
>>> +static void pc_i440fx_2_8_machine_options(MachineClass *m)
>>> +{
>>> +    pc_i440fx_2_9_machine_options(m);
>>> +    m->is_default = 0;
>>> +    m->alias = NULL;
>>> +    SET_MACHINE_COMPAT(m, PC_COMPAT_2_8);
>>> +}
>>> +
>>>  DEFINE_I440FX_MACHINE(v2_8, "pc-i440fx-2.8", NULL,
>>>                        pc_i440fx_2_8_machine_options);
>>>  
>>> @@ -451,8 +462,6 @@ DEFINE_I440FX_MACHINE(v2_8, "pc-i440fx-2.8", NULL,
>>>  static void pc_i440fx_2_7_machine_options(MachineClass *m)
>>>  {
>>>      pc_i440fx_2_8_machine_options(m);
>>> -    m->is_default = 0;
>>> -    m->alias = NULL;
>>>      SET_MACHINE_COMPAT(m, PC_COMPAT_2_7);
>>>  }
>>>  
>>> diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
>>> index d042fe0..dd792a8 100644
>>> --- a/hw/i386/pc_q35.c
>>> +++ b/hw/i386/pc_q35.c
>>> @@ -301,19 +301,28 @@ static void pc_q35_machine_options(MachineClass *m)
>>>      m->max_cpus = 288;
>>>  }
>>>  
>>> -static void pc_q35_2_8_machine_options(MachineClass *m)
>>> +static void pc_q35_2_9_machine_options(MachineClass *m)
>>>  {
>>>      pc_q35_machine_options(m);
>>>      m->alias = "q35";
>>>  }
>>>  
>>> +DEFINE_Q35_MACHINE(v2_9, "pc-q35-2.9", NULL,
>>> +                   pc_q35_2_9_machine_options);
>>> +
>>> +static void pc_q35_2_8_machine_options(MachineClass *m)
>>> +{
>>> +    pc_q35_2_9_machine_options(m);
>>> +    m->alias = NULL;
>>> +    SET_MACHINE_COMPAT(m, PC_COMPAT_2_8);
>>> +}
>>> +
>>>  DEFINE_Q35_MACHINE(v2_8, "pc-q35-2.8", NULL,
>>>                     pc_q35_2_8_machine_options);
>>>  
>>>  static void pc_q35_2_7_machine_options(MachineClass *m)
>>>  {
>>>      pc_q35_2_8_machine_options(m);
>>> -    m->alias = NULL;
>>>      m->max_cpus = 255;
>>>      SET_MACHINE_COMPAT(m, PC_COMPAT_2_7);
>>>  }
>>>
>>
>
Eduardo Habkost Jan. 4, 2017, 5:46 p.m. UTC | #5
On Wed, Jan 04, 2017 at 05:40:08PM +0100, Laszlo Ersek wrote:
> On 01/04/17 15:20, Eduardo Habkost wrote:
> > On Wed, Jan 04, 2017 at 03:01:07PM +0100, Laszlo Ersek wrote:
> >> On 12/27/16 20:21, Eduardo Habkost wrote:
> >>> Cc: "Michael S. Tsirkin" <mst@redhat.com>
> >>> Cc: Laszlo Ersek <lersek@redhat.com>
> >>> Cc: Igor Mammedov <imammedo@redhat.com>
> >>> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
> >>> ---
> >>>  include/hw/i386/pc.h |  1 +
> >>>  hw/i386/pc_piix.c    | 15 ++++++++++++---
> >>>  hw/i386/pc_q35.c     | 13 +++++++++++--
> >>>  3 files changed, 24 insertions(+), 5 deletions(-)
> >>>
> >>> diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
> >>> index b22e699..ceeacca 100644
> >>> --- a/include/hw/i386/pc.h
> >>> +++ b/include/hw/i386/pc.h
> >>> @@ -375,6 +375,7 @@ int e820_get_num_entries(void);
> >>>  bool e820_get_entry(int, uint32_t, uint64_t *, uint64_t *);
> >>>  
> >>>  #define PC_COMPAT_2_8 \
> >>> +    HW_COMPAT_2_8
> >>>  
> >>>  #define PC_COMPAT_2_7 \
> >>>      HW_COMPAT_2_7 \
> >>
> >> Here I would recommend two things:
> >> - introduce an empty PC_COMPAT_2_9 macro
> >> - in the PC_COMPAT_2_8 macro being modified, add a trailing backslash
> >>   after HW_COMPAT_2_8
> >>
> >> Both of these aim at keeping up the current pattern; namely, for the
> >> most recent machine type, a PC_COMPAT macro should exist (even if empty
> >> / unused),
> > 
> > Why? An empty and unused macro would only confuse people reading
> > the code. The empty PC_COMPAT_2_8 macro was added to the 2.8 tree
> > by mistake in commit 14c985cffa6c.
> 
> * First, the mistake was not in commit 14c985cffa6cb -- I see that "git
> blame" fingers that commit, but if you actually show the commit, it
> added the macro with a non-empty replacement text:
> 
> +#define PC_COMPAT_2_8 \
> +    {\
> +        .driver   = TYPE_X86_CPU,\
> +        .property = "l3-cache",\
> +        .value    = "off",\
> +    },
> +
> +

The mistake on 14c985cffa6c was adding a macro that was not used
for anything.

> 
> Instead, the mistake was (apparently) in commit 152fcbecad37, where
> PC_COMPAT_2_8 was "emptied", but preserved.

Yes, I agree this was (also) a mistake.

> 
> * Second, you do realize periodic contributors / reviewers like me
> cannot be expected to do a good job writing / reviewing patches if
> existing practice in the tree cannot be trusted as example.

I agree completely. :)

> 
> If a standalone (empty) PC_COMPAT_2_9 macro is wrong / confusing (which
> I agree it could be), then the empty PC_COMPAT_2_8 macro was wrong /
> confusing just the same, and the reviewers of 152fcbecad37 should have
> arguably caught it at that time.

Yes, I agree. I just thought you had a reason to believe the
existing empty macro was useful for something.

I did ask Igor to remove the PC_COMPAT_2_8 macro[1]. Michael and
Igor insisted that this should be done by a separate patch. That
additional patch was never written, though, and that's also my
fault (I just forgot about it after sending my R-b).

[1] https://www.mail-archive.com/qemu-devel@nongnu.org/msg398426.html


> 
> Anyway, my R-b stands, with whichever updates you prefer from my
> suggestions.

Thanks!

> 
> Thanks
> Laszlo
> 
> > 
> >>            plus each PC_COMPAT macro should be extensible by plain
> >> appending (hence the final trailing backslash).
> > 
> > Good idea.
> > 
> >>
> >> Functionally the above hunk is good of course, so I'll leave it to you
> >> whether you actually want to address my comments.
> >>
> >> The rest looks fine; I should be able to rebase my broadcast SMI (v5)
> >> stuff to this.
> >>
> >> Changed or unchanged:
> >>
> >> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
> > 
> > Thanks!
> > 
> >>
> >> Thanks
> >> Laszlo
> >>
> >>> diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
> >>> index 5e1adbe..9f102aa 100644
> >>> --- a/hw/i386/pc_piix.c
> >>> +++ b/hw/i386/pc_piix.c
> >>> @@ -437,13 +437,24 @@ static void pc_i440fx_machine_options(MachineClass *m)
> >>>      m->default_display = "std";
> >>>  }
> >>>  
> >>> -static void pc_i440fx_2_8_machine_options(MachineClass *m)
> >>> +static void pc_i440fx_2_9_machine_options(MachineClass *m)
> >>>  {
> >>>      pc_i440fx_machine_options(m);
> >>>      m->alias = "pc";
> >>>      m->is_default = 1;
> >>>  }
> >>>  
> >>> +DEFINE_I440FX_MACHINE(v2_9, "pc-i440fx-2.9", NULL,
> >>> +                      pc_i440fx_2_9_machine_options);
> >>> +
> >>> +static void pc_i440fx_2_8_machine_options(MachineClass *m)
> >>> +{
> >>> +    pc_i440fx_2_9_machine_options(m);
> >>> +    m->is_default = 0;
> >>> +    m->alias = NULL;
> >>> +    SET_MACHINE_COMPAT(m, PC_COMPAT_2_8);
> >>> +}
> >>> +
> >>>  DEFINE_I440FX_MACHINE(v2_8, "pc-i440fx-2.8", NULL,
> >>>                        pc_i440fx_2_8_machine_options);
> >>>  
> >>> @@ -451,8 +462,6 @@ DEFINE_I440FX_MACHINE(v2_8, "pc-i440fx-2.8", NULL,
> >>>  static void pc_i440fx_2_7_machine_options(MachineClass *m)
> >>>  {
> >>>      pc_i440fx_2_8_machine_options(m);
> >>> -    m->is_default = 0;
> >>> -    m->alias = NULL;
> >>>      SET_MACHINE_COMPAT(m, PC_COMPAT_2_7);
> >>>  }
> >>>  
> >>> diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
> >>> index d042fe0..dd792a8 100644
> >>> --- a/hw/i386/pc_q35.c
> >>> +++ b/hw/i386/pc_q35.c
> >>> @@ -301,19 +301,28 @@ static void pc_q35_machine_options(MachineClass *m)
> >>>      m->max_cpus = 288;
> >>>  }
> >>>  
> >>> -static void pc_q35_2_8_machine_options(MachineClass *m)
> >>> +static void pc_q35_2_9_machine_options(MachineClass *m)
> >>>  {
> >>>      pc_q35_machine_options(m);
> >>>      m->alias = "q35";
> >>>  }
> >>>  
> >>> +DEFINE_Q35_MACHINE(v2_9, "pc-q35-2.9", NULL,
> >>> +                   pc_q35_2_9_machine_options);
> >>> +
> >>> +static void pc_q35_2_8_machine_options(MachineClass *m)
> >>> +{
> >>> +    pc_q35_2_9_machine_options(m);
> >>> +    m->alias = NULL;
> >>> +    SET_MACHINE_COMPAT(m, PC_COMPAT_2_8);
> >>> +}
> >>> +
> >>>  DEFINE_Q35_MACHINE(v2_8, "pc-q35-2.8", NULL,
> >>>                     pc_q35_2_8_machine_options);
> >>>  
> >>>  static void pc_q35_2_7_machine_options(MachineClass *m)
> >>>  {
> >>>      pc_q35_2_8_machine_options(m);
> >>> -    m->alias = NULL;
> >>>      m->max_cpus = 255;
> >>>      SET_MACHINE_COMPAT(m, PC_COMPAT_2_7);
> >>>  }
> >>>
> >>
> > 
>
diff mbox

Patch

diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
index b22e699..ceeacca 100644
--- a/include/hw/i386/pc.h
+++ b/include/hw/i386/pc.h
@@ -375,6 +375,7 @@  int e820_get_num_entries(void);
 bool e820_get_entry(int, uint32_t, uint64_t *, uint64_t *);
 
 #define PC_COMPAT_2_8 \
+    HW_COMPAT_2_8
 
 #define PC_COMPAT_2_7 \
     HW_COMPAT_2_7 \
diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
index 5e1adbe..9f102aa 100644
--- a/hw/i386/pc_piix.c
+++ b/hw/i386/pc_piix.c
@@ -437,13 +437,24 @@  static void pc_i440fx_machine_options(MachineClass *m)
     m->default_display = "std";
 }
 
-static void pc_i440fx_2_8_machine_options(MachineClass *m)
+static void pc_i440fx_2_9_machine_options(MachineClass *m)
 {
     pc_i440fx_machine_options(m);
     m->alias = "pc";
     m->is_default = 1;
 }
 
+DEFINE_I440FX_MACHINE(v2_9, "pc-i440fx-2.9", NULL,
+                      pc_i440fx_2_9_machine_options);
+
+static void pc_i440fx_2_8_machine_options(MachineClass *m)
+{
+    pc_i440fx_2_9_machine_options(m);
+    m->is_default = 0;
+    m->alias = NULL;
+    SET_MACHINE_COMPAT(m, PC_COMPAT_2_8);
+}
+
 DEFINE_I440FX_MACHINE(v2_8, "pc-i440fx-2.8", NULL,
                       pc_i440fx_2_8_machine_options);
 
@@ -451,8 +462,6 @@  DEFINE_I440FX_MACHINE(v2_8, "pc-i440fx-2.8", NULL,
 static void pc_i440fx_2_7_machine_options(MachineClass *m)
 {
     pc_i440fx_2_8_machine_options(m);
-    m->is_default = 0;
-    m->alias = NULL;
     SET_MACHINE_COMPAT(m, PC_COMPAT_2_7);
 }
 
diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
index d042fe0..dd792a8 100644
--- a/hw/i386/pc_q35.c
+++ b/hw/i386/pc_q35.c
@@ -301,19 +301,28 @@  static void pc_q35_machine_options(MachineClass *m)
     m->max_cpus = 288;
 }
 
-static void pc_q35_2_8_machine_options(MachineClass *m)
+static void pc_q35_2_9_machine_options(MachineClass *m)
 {
     pc_q35_machine_options(m);
     m->alias = "q35";
 }
 
+DEFINE_Q35_MACHINE(v2_9, "pc-q35-2.9", NULL,
+                   pc_q35_2_9_machine_options);
+
+static void pc_q35_2_8_machine_options(MachineClass *m)
+{
+    pc_q35_2_9_machine_options(m);
+    m->alias = NULL;
+    SET_MACHINE_COMPAT(m, PC_COMPAT_2_8);
+}
+
 DEFINE_Q35_MACHINE(v2_8, "pc-q35-2.8", NULL,
                    pc_q35_2_8_machine_options);
 
 static void pc_q35_2_7_machine_options(MachineClass *m)
 {
     pc_q35_2_8_machine_options(m);
-    m->alias = NULL;
     m->max_cpus = 255;
     SET_MACHINE_COMPAT(m, PC_COMPAT_2_7);
 }