qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Peter Maydell <peter.maydell@linaro.org>
To: Alistair Francis <alistair@alistair23.me>
Cc: "qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
	"alistair23@gmail.com" <alistair23@gmail.com>
Subject: Re: [Qemu-devel] [PATCH v1 4/5] hw/arm: Add the STM32F4xx SoC
Date: Fri, 3 May 2019 14:51:39 +0100	[thread overview]
Message-ID: <CAFEAcA9gxWQ4Lr8-DS7ExdZuDF8xHSCY7AmkHKEs1uCTVmA+Ow@mail.gmail.com> (raw)
In-Reply-To: <PSXP216MB0277F0C5EFED03D58540BD70DD340@PSXP216MB0277.KORP216.PROD.OUTLOOK.COM>

On Thu, 2 May 2019 at 06:41, Alistair Francis <alistair@alistair23.me> wrote:
>
> Signed-off-by: Alistair Francis <alistair@alistair23.me>
> ---
>  MAINTAINERS                     |   8 +
>  default-configs/arm-softmmu.mak |   1 +
>  hw/arm/Kconfig                  |   3 +
>  hw/arm/Makefile.objs            |   1 +
>  hw/arm/stm32f405_soc.c          | 306 ++++++++++++++++++++++++++++++++
>  include/hw/arm/stm32f405_soc.h  |  74 ++++++++
>  6 files changed, 393 insertions(+)
>  create mode 100644 hw/arm/stm32f405_soc.c
>  create mode 100644 include/hw/arm/stm32f405_soc.h
>

> +static void stm32f405_soc_realize(DeviceState *dev_soc, Error **errp)
> +{
> +    STM32F405State *s = STM32F405_SOC(dev_soc);
> +    DeviceState *dev, *armv7m;
> +    SysBusDevice *busdev;
> +    Error *err = NULL;
> +    int i;
> +
> +    s->system_memory = get_system_memory();
> +    s->sram = g_new(MemoryRegion, 1);
> +    s->flash = g_new(MemoryRegion, 1);
> +    s->flash_alias = g_new(MemoryRegion, 1);

What I meant by my comment on v1 was that rather than doing
g_new() here you can just have the STM32F405State struct
have
 MemoryRegion sram;
 MemoryRegion flash;
etc

and then instead of
  memory_region_init_ram(s->flash, ...)
you use
  memory_region_init_ram(&s->flash, ...)
etc

which avoids doing separate memory allocations (which would
need to be freed if you then do an error-exit from the
realize function, I think).

And you don't need to have an s->system_memory -- that
can just be a local variable, because it's just caching
the pointer to the global system memory MemoryRegion.

Otherwise
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>

thanks
-- PMM

WARNING: multiple messages have this Message-ID (diff)
From: Peter Maydell <peter.maydell@linaro.org>
To: Alistair Francis <alistair@alistair23.me>
Cc: "alistair23@gmail.com" <alistair23@gmail.com>,
	"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] [PATCH v1 4/5] hw/arm: Add the STM32F4xx SoC
Date: Fri, 3 May 2019 14:51:39 +0100	[thread overview]
Message-ID: <CAFEAcA9gxWQ4Lr8-DS7ExdZuDF8xHSCY7AmkHKEs1uCTVmA+Ow@mail.gmail.com> (raw)
Message-ID: <20190503135139.NdWdovGgapQSi0i9ngUFlDZF1MvRSeaTK3sXfq_w5Eg@z> (raw)
In-Reply-To: <PSXP216MB0277F0C5EFED03D58540BD70DD340@PSXP216MB0277.KORP216.PROD.OUTLOOK.COM>

On Thu, 2 May 2019 at 06:41, Alistair Francis <alistair@alistair23.me> wrote:
>
> Signed-off-by: Alistair Francis <alistair@alistair23.me>
> ---
>  MAINTAINERS                     |   8 +
>  default-configs/arm-softmmu.mak |   1 +
>  hw/arm/Kconfig                  |   3 +
>  hw/arm/Makefile.objs            |   1 +
>  hw/arm/stm32f405_soc.c          | 306 ++++++++++++++++++++++++++++++++
>  include/hw/arm/stm32f405_soc.h  |  74 ++++++++
>  6 files changed, 393 insertions(+)
>  create mode 100644 hw/arm/stm32f405_soc.c
>  create mode 100644 include/hw/arm/stm32f405_soc.h
>

> +static void stm32f405_soc_realize(DeviceState *dev_soc, Error **errp)
> +{
> +    STM32F405State *s = STM32F405_SOC(dev_soc);
> +    DeviceState *dev, *armv7m;
> +    SysBusDevice *busdev;
> +    Error *err = NULL;
> +    int i;
> +
> +    s->system_memory = get_system_memory();
> +    s->sram = g_new(MemoryRegion, 1);
> +    s->flash = g_new(MemoryRegion, 1);
> +    s->flash_alias = g_new(MemoryRegion, 1);

What I meant by my comment on v1 was that rather than doing
g_new() here you can just have the STM32F405State struct
have
 MemoryRegion sram;
 MemoryRegion flash;
etc

and then instead of
  memory_region_init_ram(s->flash, ...)
you use
  memory_region_init_ram(&s->flash, ...)
etc

which avoids doing separate memory allocations (which would
need to be freed if you then do an error-exit from the
realize function, I think).

And you don't need to have an s->system_memory -- that
can just be a local variable, because it's just caching
the pointer to the global system memory MemoryRegion.

Otherwise
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>

thanks
-- PMM


  parent reply	other threads:[~2019-05-03 13:51 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <cover.1556774049.git.alistair@alistair23.me>
2019-05-02  5:40 ` [Qemu-devel] [PATCH v1 1/5] hw/misc: Add the STM32F4xx Sysconfig device Alistair Francis
2019-05-02  5:40   ` Alistair Francis
2019-05-03 13:40   ` Peter Maydell
2019-05-03 13:40     ` Peter Maydell
2019-05-02  5:41 ` [Qemu-devel] [PATCH v1 2/5] hw/misc: Add the STM32F4xx EXTI device Alistair Francis
2019-05-02  5:41   ` Alistair Francis
2019-05-03 13:41   ` Peter Maydell
2019-05-03 13:41     ` Peter Maydell
2019-05-02  5:41 ` [Qemu-devel] [PATCH v1 3/5] armv7m: Allow entry information to be returned Alistair Francis
2019-05-02  5:41   ` Alistair Francis
2019-05-02  5:41 ` [Qemu-devel] [PATCH v1 4/5] hw/arm: Add the STM32F4xx SoC Alistair Francis
2019-05-02  5:41   ` Alistair Francis
2019-05-03 13:51   ` Peter Maydell [this message]
2019-05-03 13:51     ` Peter Maydell
2019-05-02  5:41 ` [Qemu-devel] [PATCH v1 5/5] hw/arm: Add the Netduino Plus 2 Alistair Francis
2019-05-02  5:41   ` Alistair Francis
2019-05-03 13:53   ` Peter Maydell
2019-05-03 13:53     ` Peter Maydell
     [not found] <cover.1556515687.git.alistair@alistair23.me>
2019-04-29  5:33 ` [Qemu-devel] [PATCH v1 4/5] hw/arm: Add the STM32F4xx SoC Alistair Francis
2019-04-29  5:33   ` Alistair Francis
2019-04-29 12:38   ` KONRAD Frederic
2019-04-29 12:38     ` KONRAD Frederic
2019-04-29 17:00     ` Alistair Francis
2019-04-29 17:00       ` Alistair Francis
2019-04-30 18:10       ` KONRAD Frederic
2019-04-30 18:10         ` KONRAD Frederic
2019-04-29 12:43   ` Philippe Mathieu-Daudé
2019-04-29 12:43     ` Philippe Mathieu-Daudé
2019-04-29 17:01     ` Alistair Francis
2019-04-29 17:01       ` Alistair Francis
2019-04-30 15:51       ` Peter Maydell
2019-04-30 15:51         ` Peter Maydell
2019-04-30 15:59   ` Peter Maydell
2019-04-30 15:59     ` Peter Maydell
2019-05-02  5:04     ` Alistair Francis
2019-05-02  5:04       ` Alistair Francis

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=CAFEAcA9gxWQ4Lr8-DS7ExdZuDF8xHSCY7AmkHKEs1uCTVmA+Ow@mail.gmail.com \
    --to=peter.maydell@linaro.org \
    --cc=alistair23@gmail.com \
    --cc=alistair@alistair23.me \
    --cc=qemu-devel@nongnu.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).