All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Gibson <david@gibson.dropbear.id.au>
To: Thomas Huth <thuth@redhat.com>
Cc: lvivier@redhat.com, qemu-devel@nongnu.org, ehabkost@redhat.com,
	aik@ozlabs.ru, mdroth@linux.vnet.ibm.com, agraf@suse.de,
	qemu-ppc@nongnu.org
Subject: Re: [Qemu-devel] [PATCHv2 02/10] pseries: Rearrange versioned machine type code
Date: Wed, 9 Dec 2015 13:53:44 +1100	[thread overview]
Message-ID: <20151209025344.GV20139@voom.fritz.box> (raw)
In-Reply-To: <56655DA6.3080104@redhat.com>

[-- Attachment #1: Type: text/plain, Size: 9795 bytes --]

On Mon, Dec 07, 2015 at 11:21:26AM +0100, Thomas Huth wrote:
> On 07/12/15 04:34, David Gibson wrote:
> > hw/ppc/spapr.c has a number of definitions related to the various versioned
> > machine types ("pseries-2.1" .. "pseries-2.5") it defines.  These are
> > mostly arranged by type of function first, then machine version second, and
> > it's not consistent about whether it goes in increasing or decreasing
> > version order.
> > 
> > This rearranges the code to keep all the definitions for a particular
> > machine version together, and arrange then consistently in order most
> > recent to least recent.
> > 
> > This brings us closer to matching the way PC does things, and makes later
> > cleanups easier to follow.
> > 
> > Apart from adding some comments marking each section, this is a pure
> > mechanical rearrangement with no semantic changes.
> > 
> > Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
> > ---
> >  hw/ppc/spapr.c | 180 +++++++++++++++++++++++++++++++--------------------------
> >  1 file changed, 98 insertions(+), 82 deletions(-)
> > 
> > diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> > index a69856f..c126e10 100644
> > --- a/hw/ppc/spapr.c
> > +++ b/hw/ppc/spapr.c
> > @@ -2301,9 +2301,53 @@ static const TypeInfo spapr_machine_info = {
> >      },
> >  };
> >  
> > +/*
> > + * pseries-2.5
> > + */
> > +static void spapr_machine_2_5_class_init(ObjectClass *oc, void *data)
> > +{
> > +    MachineClass *mc = MACHINE_CLASS(oc);
> > +    sPAPRMachineClass *smc = SPAPR_MACHINE_CLASS(oc);
> > +
> > +    mc->desc = "pSeries Logical Partition (PAPR compliant) v2.5";
> > +    mc->alias = "pseries";
> > +    mc->is_default = 1;
> > +    smc->dr_lmb_enabled = true;
> > +}
> > +
> > +static const TypeInfo spapr_machine_2_5_info = {
> > +    .name          = MACHINE_TYPE_NAME("pseries-2.5"),
> > +    .parent        = TYPE_SPAPR_MACHINE,
> > +    .class_init    = spapr_machine_2_5_class_init,
> > +};
> > +
> > +/*
> > + * pseries-2.4
> > + */
> >  #define SPAPR_COMPAT_2_4 \
> >          HW_COMPAT_2_4
> >  
> > +static void spapr_machine_2_4_class_init(ObjectClass *oc, void *data)
> > +{
> > +    static GlobalProperty compat_props[] = {
> > +        SPAPR_COMPAT_2_4
> > +        { /* end of list */ }
> > +    };
> > +    MachineClass *mc = MACHINE_CLASS(oc);
> > +
> > +    mc->desc = "pSeries Logical Partition (PAPR compliant) v2.4";
> > +    mc->compat_props = compat_props;
> > +}
> > +
> > +static const TypeInfo spapr_machine_2_4_info = {
> > +    .name          = MACHINE_TYPE_NAME("pseries-2.4"),
> > +    .parent        = TYPE_SPAPR_MACHINE,
> > +    .class_init    = spapr_machine_2_4_class_init,
> > +};
> > +
> > +/*
> > + * pseries-2.3
> > + */
> >  #define SPAPR_COMPAT_2_3 \
> >          SPAPR_COMPAT_2_4 \
> >          HW_COMPAT_2_3 \
> > @@ -2313,72 +2357,61 @@ static const TypeInfo spapr_machine_info = {
> >              .value    = "off",\
> >          },
> >  
> > -#define SPAPR_COMPAT_2_2 \
> > -        SPAPR_COMPAT_2_3 \
> > -        HW_COMPAT_2_2 \
> > -        {\
> > -            .driver   = TYPE_SPAPR_PCI_HOST_BRIDGE,\
> > -            .property = "mem_win_size",\
> > -            .value    = "0x20000000",\
> > -        },
> > -
> > -#define SPAPR_COMPAT_2_1 \
> > -        SPAPR_COMPAT_2_2 \
> > -        HW_COMPAT_2_1
> > -
> >  static void spapr_compat_2_3(Object *obj)
> >  {
> >      savevm_skip_section_footers();
> >      global_state_set_optional();
> >  }
> >  
> > -static void spapr_compat_2_2(Object *obj)
> > -{
> > -    spapr_compat_2_3(obj);
> > -}
> > -
> > -static void spapr_compat_2_1(Object *obj)
> > -{
> > -    spapr_compat_2_2(obj);
> > -}
> > -
> >  static void spapr_machine_2_3_instance_init(Object *obj)
> >  {
> >      spapr_compat_2_3(obj);
> >      spapr_machine_initfn(obj);
> >  }
> >  
> > -static void spapr_machine_2_2_instance_init(Object *obj)
> > -{
> > -    spapr_compat_2_2(obj);
> > -    spapr_machine_initfn(obj);
> > -}
> > -
> > -static void spapr_machine_2_1_instance_init(Object *obj)
> > -{
> > -    spapr_compat_2_1(obj);
> > -    spapr_machine_initfn(obj);
> > -}
> > -
> > -static void spapr_machine_2_1_class_init(ObjectClass *oc, void *data)
> > +static void spapr_machine_2_3_class_init(ObjectClass *oc, void *data)
> >  {
> > -    MachineClass *mc = MACHINE_CLASS(oc);
> >      static GlobalProperty compat_props[] = {
> > -        SPAPR_COMPAT_2_1
> > +        SPAPR_COMPAT_2_3
> >          { /* end of list */ }
> >      };
> > +    MachineClass *mc = MACHINE_CLASS(oc);
> >  
> > -    mc->desc = "pSeries Logical Partition (PAPR compliant) v2.1";
> > +    mc->desc = "pSeries Logical Partition (PAPR compliant) v2.3";
> >      mc->compat_props = compat_props;
> >  }
> >  
> > -static const TypeInfo spapr_machine_2_1_info = {
> > -    .name          = MACHINE_TYPE_NAME("pseries-2.1"),
> > +static const TypeInfo spapr_machine_2_3_info = {
> > +    .name          = MACHINE_TYPE_NAME("pseries-2.3"),
> >      .parent        = TYPE_SPAPR_MACHINE,
> > -    .class_init    = spapr_machine_2_1_class_init,
> > -    .instance_init = spapr_machine_2_1_instance_init,
> > +    .class_init    = spapr_machine_2_3_class_init,
> > +    .instance_init = spapr_machine_2_3_instance_init,
> >  };
> >  
> > +/*
> > + * pseries-2.2
> > + */
> > +
> > +#define SPAPR_COMPAT_2_2 \
> > +        SPAPR_COMPAT_2_3 \
> > +        HW_COMPAT_2_2 \
> > +        {\
> > +            .driver   = TYPE_SPAPR_PCI_HOST_BRIDGE,\
> > +            .property = "mem_win_size",\
> > +            .value    = "0x20000000",\
> > +        },
> > +
> > +static void spapr_compat_2_2(Object *obj)
> > +{
> > +    spapr_compat_2_3(obj);
> > +}
> > +
> > +static void spapr_machine_2_2_instance_init(Object *obj)
> > +{
> > +    spapr_compat_2_2(obj);
> > +    spapr_machine_initfn(obj);
> > +}
> > +
> >  static void spapr_machine_2_2_class_init(ObjectClass *oc, void *data)
> >  {
> >      static GlobalProperty compat_props[] = {
> > @@ -2398,58 +2431,41 @@ static const TypeInfo spapr_machine_2_2_info = {
> >      .instance_init = spapr_machine_2_2_instance_init,
> >  };
> >  
> > -static void spapr_machine_2_3_class_init(ObjectClass *oc, void *data)
> > -{
> > -    static GlobalProperty compat_props[] = {
> > -        SPAPR_COMPAT_2_3
> > -        { /* end of list */ }
> > -    };
> > -    MachineClass *mc = MACHINE_CLASS(oc);
> > +/*
> > + * pseries-2.1
> > + */
> > +#define SPAPR_COMPAT_2_1 \
> > +        SPAPR_COMPAT_2_2 \
> > +        HW_COMPAT_2_1
> >  
> > -    mc->desc = "pSeries Logical Partition (PAPR compliant) v2.3";
> > -    mc->compat_props = compat_props;
> > +static void spapr_compat_2_1(Object *obj)
> > +{
> > +    spapr_compat_2_2(obj);
> >  }
> >  
> > -static const TypeInfo spapr_machine_2_3_info = {
> > -    .name          = MACHINE_TYPE_NAME("pseries-2.3"),
> > -    .parent        = TYPE_SPAPR_MACHINE,
> > -    .class_init    = spapr_machine_2_3_class_init,
> > -    .instance_init = spapr_machine_2_3_instance_init,
> > -};
> > +static void spapr_machine_2_1_instance_init(Object *obj)
> > +{
> > +    spapr_compat_2_1(obj);
> > +    spapr_machine_initfn(obj);
> > +}
> >  
> > -static void spapr_machine_2_4_class_init(ObjectClass *oc, void *data)
> > +static void spapr_machine_2_1_class_init(ObjectClass *oc, void *data)
> >  {
> > +    MachineClass *mc = MACHINE_CLASS(oc);
> >      static GlobalProperty compat_props[] = {
> > -        SPAPR_COMPAT_2_4
> > +        SPAPR_COMPAT_2_1
> >          { /* end of list */ }
> >      };
> > -    MachineClass *mc = MACHINE_CLASS(oc);
> >  
> > -    mc->desc = "pSeries Logical Partition (PAPR compliant) v2.4";
> > +    mc->desc = "pSeries Logical Partition (PAPR compliant) v2.1";
> >      mc->compat_props = compat_props;
> >  }
> >  
> > -static const TypeInfo spapr_machine_2_4_info = {
> > -    .name          = MACHINE_TYPE_NAME("pseries-2.4"),
> > -    .parent        = TYPE_SPAPR_MACHINE,
> > -    .class_init    = spapr_machine_2_4_class_init,
> > -};
> > -
> > -static void spapr_machine_2_5_class_init(ObjectClass *oc, void *data)
> > -{
> > -    MachineClass *mc = MACHINE_CLASS(oc);
> > -    sPAPRMachineClass *smc = SPAPR_MACHINE_CLASS(oc);
> > -
> > -    mc->desc = "pSeries Logical Partition (PAPR compliant) v2.5";
> > -    mc->alias = "pseries";
> > -    mc->is_default = 1;
> > -    smc->dr_lmb_enabled = true;
> > -}
> > -
> > -static const TypeInfo spapr_machine_2_5_info = {
> > -    .name          = MACHINE_TYPE_NAME("pseries-2.5"),
> > +static const TypeInfo spapr_machine_2_1_info = {
> > +    .name          = MACHINE_TYPE_NAME("pseries-2.1"),
> >      .parent        = TYPE_SPAPR_MACHINE,
> > -    .class_init    = spapr_machine_2_5_class_init,
> > +    .class_init    = spapr_machine_2_1_class_init,
> > +    .instance_init = spapr_machine_2_1_instance_init,
> >  };
> >  
> >  static void spapr_machine_register_types(void)
> 
> The patch might have been a little bit easier to read if you'd moved the
> next two cleanup patches before this one in the series, but as far as I
> can see, it's all clean code movement, without further modification, and
> IMHO it also makes sense, so:

Yeah, maybe. But because this is a big code move, doing so would have
meant basically rewriting both patches from scratch, which was more
hassle than I wanted.

> Reviewed-by: Thomas Huth <thuth@redhat.com>
> 
> 

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

  reply	other threads:[~2015-12-09  4:13 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-07  3:34 [Qemu-devel] [PATCHv2 00/10] Clean up pseries machine versioning David Gibson
2015-12-07  3:34 ` [Qemu-devel] [PATCHv2 01/10] pseries: Remove redundant setting of mc->name for pseries-2.5 machine David Gibson
2015-12-09  3:31   ` Alexey Kardashevskiy
2015-12-07  3:34 ` [Qemu-devel] [PATCHv2 02/10] pseries: Rearrange versioned machine type code David Gibson
2015-12-07 10:21   ` Thomas Huth
2015-12-09  2:53     ` David Gibson [this message]
2015-12-09  3:43   ` Alexey Kardashevskiy
2015-12-07  3:34 ` [Qemu-devel] [PATCHv2 03/10] pseries: Remove redundant calls to spapr_machine_initfn() David Gibson
2015-12-07 10:25   ` Thomas Huth
2015-12-09  3:32   ` Alexey Kardashevskiy
2015-12-07  3:34 ` [Qemu-devel] [PATCHv2 04/10] pseries: Remove versions from mc->desc David Gibson
2015-12-07 10:07   ` Thomas Huth
2015-12-09  3:32   ` Alexey Kardashevskiy
2015-12-07  3:34 ` [Qemu-devel] [PATCHv2 05/10] Move SET_MACHINE_COMPAT macro to boards.h David Gibson
2015-12-09  3:32   ` Alexey Kardashevskiy
2015-12-07  3:34 ` [Qemu-devel] [PATCHv2 06/10] pseries: Use SET_MACHINE_COMPAT David Gibson
2015-12-07 10:27   ` Thomas Huth
2015-12-09  3:32   ` Alexey Kardashevskiy
2015-12-07  3:34 ` [Qemu-devel] [PATCHv2 07/10] pseries: DEFINE_SPAPR_MACHINE David Gibson
2015-12-08  2:38   ` [Qemu-devel] [Qemu-ppc] " Sam Bobroff
2015-12-09  3:30     ` Alexey Kardashevskiy
2015-12-09  3:38       ` Alexey Kardashevskiy
2015-12-07  3:34 ` [Qemu-devel] [PATCHv2 08/10] pseries: Restructure class_options functions David Gibson
2015-12-09  3:36   ` Alexey Kardashevskiy
2015-12-07  3:34 ` [Qemu-devel] [PATCHv2 09/10] pseries: Improve setting of default machine version David Gibson
2015-12-09  3:37   ` Alexey Kardashevskiy
2015-12-07  3:34 ` [Qemu-devel] [PATCHv2 10/10] pseries: Add pseries-2.6 machine type David Gibson
2015-12-09  3:37   ` Alexey Kardashevskiy
2015-12-09  4:37 ` [Qemu-devel] [PATCHv2 00/10] Clean up pseries machine versioning David Gibson

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=20151209025344.GV20139@voom.fritz.box \
    --to=david@gibson.dropbear.id.au \
    --cc=agraf@suse.de \
    --cc=aik@ozlabs.ru \
    --cc=ehabkost@redhat.com \
    --cc=lvivier@redhat.com \
    --cc=mdroth@linux.vnet.ibm.com \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.