All of lore.kernel.org
 help / color / mirror / Atom feed
From: Laszlo Ersek <lersek@redhat.com>
To: Markus Armbruster <armbru@redhat.com>, qemu-devel@nongnu.org
Cc: alex.bennee@linaro.org, kwolf@redhat.com, mreitz@redhat.com,
	qemu-block@nongnu.org, qemu-ppc@nongnu.org
Subject: Re: [Qemu-devel] [PATCH 10/10] hw/arm hw/xtensa: De-duplicate pflash creation code some
Date: Mon, 18 Feb 2019 18:12:27 +0100	[thread overview]
Message-ID: <e993bad5-efc9-a196-afee-4375fc89a37a@redhat.com> (raw)
In-Reply-To: <20190218125615.18970-11-armbru@redhat.com>

On 02/18/19 13:56, Markus Armbruster wrote:
> pflash_cfi01_register() creates a TYPE_CFI_PFLASH01 device, sets
> properties, realizes, and wires up.
> 
> We have three modified copies of it, because their users need to set
> additional properties, or have the wiring done differently.
> 
> Factor out their common part into pflash_cfi01_create().
> 
> Signed-off-by: Markus Armbruster <armbru@redhat.com>
> ---
>  hw/arm/vexpress.c        | 22 +++++-----------------
>  hw/arm/virt.c            | 26 +++++++++-----------------
>  hw/block/pflash_cfi01.c  | 39 +++++++++++++++++++++++++++------------
>  hw/xtensa/xtfpga.c       | 18 +++++++-----------
>  include/hw/block/flash.h |  8 ++++++++
>  5 files changed, 56 insertions(+), 57 deletions(-)
> 
> diff --git a/hw/arm/vexpress.c b/hw/arm/vexpress.c
> index 00913f2655..b23c63ed24 100644
> --- a/hw/arm/vexpress.c
> +++ b/hw/arm/vexpress.c
> @@ -515,26 +515,14 @@ static void vexpress_modify_dtb(const struct arm_boot_info *info, void *fdt)
>  static PFlashCFI01 *ve_pflash_cfi01_register(hwaddr base, const char *name,
>                                               DriveInfo *di)
>  {
> -    DeviceState *dev = qdev_create(NULL, TYPE_CFI_PFLASH01);
> +    DeviceState *dev;
>  
> -    if (di) {
> -        qdev_prop_set_drive(dev, "drive", blk_by_legacy_dinfo(di),
> -                            &error_abort);
> -    }
> -
> -    qdev_prop_set_uint32(dev, "num-blocks",
> -                         VEXPRESS_FLASH_SIZE / VEXPRESS_FLASH_SECT_SIZE);
> -    qdev_prop_set_uint64(dev, "sector-length", VEXPRESS_FLASH_SECT_SIZE);
> -    qdev_prop_set_uint8(dev, "width", 4);
> +    dev = DEVICE(pflash_cfi01_create(name, VEXPRESS_FLASH_SIZE,
> +                                     di ? blk_by_legacy_dinfo(di) : NULL,
> +                                     VEXPRESS_FLASH_SECT_SIZE,
> +                                     4, 0x89, 0x18, 0x00, 0x00, false));
>      qdev_prop_set_uint8(dev, "device-width", 2);
> -    qdev_prop_set_bit(dev, "big-endian", false);
> -    qdev_prop_set_uint16(dev, "id0", 0x89);
> -    qdev_prop_set_uint16(dev, "id1", 0x18);
> -    qdev_prop_set_uint16(dev, "id2", 0x00);
> -    qdev_prop_set_uint16(dev, "id3", 0x00);
> -    qdev_prop_set_string(dev, "name", name);
>      qdev_init_nofail(dev);
> -
>      sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, base);
>      return CFI_PFLASH01(dev);
>  }
> diff --git a/hw/arm/virt.c b/hw/arm/virt.c
> index b7d53b2b87..7787918483 100644
> --- a/hw/arm/virt.c
> +++ b/hw/arm/virt.c
> @@ -48,6 +48,7 @@
>  #include "exec/address-spaces.h"
>  #include "qemu/bitops.h"
>  #include "qemu/error-report.h"
> +#include "qemu/units.h"
>  #include "hw/pci-host/gpex.h"
>  #include "hw/arm/sysbus-fdt.h"
>  #include "hw/platform-bus.h"
> @@ -875,29 +876,20 @@ static void create_one_flash(const char *name, hwaddr flashbase,
>       * parameters as the flash devices on the Versatile Express board.
>       */
>      DriveInfo *dinfo = drive_get_next(IF_PFLASH);
> -    DeviceState *dev = qdev_create(NULL, TYPE_CFI_PFLASH01);
> -    SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
> -    const uint64_t sectorlength = 256 * 1024;
> +    DeviceState *dev;
> +    SysBusDevice *sbd;
>  
> -    if (dinfo) {
> -        qdev_prop_set_drive(dev, "drive", blk_by_legacy_dinfo(dinfo),
> -                            &error_abort);
> -    }
> +    dev = DEVICE(pflash_cfi01_create(name, flashsize,
> +                                     dinfo ? blk_by_legacy_dinfo(dinfo) : NULL,
> +                                     256 * KiB,
> +                                     4, 0x89, 0x18, 0x00, 0x00, false));
>  
> -    qdev_prop_set_uint32(dev, "num-blocks", flashsize / sectorlength);
> -    qdev_prop_set_uint64(dev, "sector-length", sectorlength);
> -    qdev_prop_set_uint8(dev, "width", 4);
>      qdev_prop_set_uint8(dev, "device-width", 2);
> -    qdev_prop_set_bit(dev, "big-endian", false);
> -    qdev_prop_set_uint16(dev, "id0", 0x89);
> -    qdev_prop_set_uint16(dev, "id1", 0x18);
> -    qdev_prop_set_uint16(dev, "id2", 0x00);
> -    qdev_prop_set_uint16(dev, "id3", 0x00);
> -    qdev_prop_set_string(dev, "name", name);
>      qdev_init_nofail(dev);
>  
> +    sbd = SYS_BUS_DEVICE(dev);
>      memory_region_add_subregion(sysmem, flashbase,
> -                                sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0));
> +                                sysbus_mmio_get_region(sbd, 0));
>  
>      if (file) {
>          char *fn;
> diff --git a/hw/block/pflash_cfi01.c b/hw/block/pflash_cfi01.c
> index 2e161f937f..00c2efd0d7 100644
> --- a/hw/block/pflash_cfi01.c
> +++ b/hw/block/pflash_cfi01.c
> @@ -920,15 +920,14 @@ static void pflash_cfi01_register_types(void)
>  
>  type_init(pflash_cfi01_register_types)
>  
> -PFlashCFI01 *pflash_cfi01_register(hwaddr base,
> -                                   const char *name,
> -                                   hwaddr size,
> -                                   BlockBackend *blk,
> -                                   uint32_t sector_len,
> -                                   int bank_width,
> -                                   uint16_t id0, uint16_t id1,
> -                                   uint16_t id2, uint16_t id3,
> -                                   int be)
> +PFlashCFI01 *pflash_cfi01_create(const char *name,
> +                                 hwaddr size,
> +                                 BlockBackend *blk,
> +                                 uint32_t sector_len,
> +                                 int bank_width,
> +                                 uint16_t id0, uint16_t id1,
> +                                 uint16_t id2, uint16_t id3,
> +                                 int be)
>  {
>      DeviceState *dev = qdev_create(NULL, TYPE_CFI_PFLASH01);
>  
> @@ -945,12 +944,28 @@ PFlashCFI01 *pflash_cfi01_register(hwaddr base,
>      qdev_prop_set_uint16(dev, "id2", id2);
>      qdev_prop_set_uint16(dev, "id3", id3);
>      qdev_prop_set_string(dev, "name", name);
> -    qdev_init_nofail(dev);
> -
> -    sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, base);
>      return CFI_PFLASH01(dev);
>  }
>  
> +PFlashCFI01 *pflash_cfi01_register(hwaddr base,
> +                                   const char *name,
> +                                   hwaddr size,
> +                                   BlockBackend *blk,
> +                                   uint32_t sector_len,
> +                                   int bank_width,
> +                                   uint16_t id0, uint16_t id1,
> +                                   uint16_t id2, uint16_t id3,
> +                                   int be)
> +{
> +    PFlashCFI01 *dev = pflash_cfi01_create(name, size, blk,
> +                                           sector_len, bank_width,
> +                                           id0, id1, id2, id3, be);
> +
> +    qdev_init_nofail(DEVICE(dev));
> +    sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, base);
> +    return dev;
> +}
> +
>  MemoryRegion *pflash_cfi01_get_memory(PFlashCFI01 *fl)
>  {
>      return &fl->mem;
> diff --git a/hw/xtensa/xtfpga.c b/hw/xtensa/xtfpga.c
> index a726d5632a..0e96e73ee2 100644
> --- a/hw/xtensa/xtfpga.c
> +++ b/hw/xtensa/xtfpga.c
> @@ -167,21 +167,17 @@ static PFlashCFI01 *xtfpga_flash_init(MemoryRegion *address_space,
>                                        DriveInfo *dinfo, int be)
>  {
>      SysBusDevice *s;
> -    DeviceState *dev = qdev_create(NULL, TYPE_CFI_PFLASH01);
> +    PFlashCFI01 *dev = pflash_cfi01_create("xtfpga.io.flash",
> +                                           board->flash->size,
> +                                           blk_by_legacy_dinfo(dinfo),
> +                                           board->flash->sector_size,
> +                                           2, 0, 0, 0, 0, be);
>  
> -    qdev_prop_set_drive(dev, "drive", blk_by_legacy_dinfo(dinfo),
> -                        &error_abort);
> -    qdev_prop_set_uint32(dev, "num-blocks",
> -                         board->flash->size / board->flash->sector_size);
> -    qdev_prop_set_uint64(dev, "sector-length", board->flash->sector_size);
> -    qdev_prop_set_uint8(dev, "width", 2);
> -    qdev_prop_set_bit(dev, "big-endian", be);
> -    qdev_prop_set_string(dev, "name", "xtfpga.io.flash");
> -    qdev_init_nofail(dev);
> +    qdev_init_nofail(DEVICE(dev));
>      s = SYS_BUS_DEVICE(dev);
>      memory_region_add_subregion(address_space, board->flash->base,
>                                  sysbus_mmio_get_region(s, 0));
> -    return CFI_PFLASH01(dev);
> +    return dev;
>  }
>  
>  static uint64_t translate_phys_addr(void *opaque, uint64_t addr)
> diff --git a/include/hw/block/flash.h b/include/hw/block/flash.h
> index 24b13eb525..dbb25ba382 100644
> --- a/include/hw/block/flash.h
> +++ b/include/hw/block/flash.h
> @@ -13,6 +13,14 @@
>  
>  typedef struct PFlashCFI01 PFlashCFI01;
>  
> +PFlashCFI01 *pflash_cfi01_create(const char *name,
> +                                 hwaddr size,
> +                                 BlockBackend *blk,
> +                                 uint32_t sector_len,
> +                                 int width,
> +                                 uint16_t id0, uint16_t id1,
> +                                 uint16_t id2, uint16_t id3,
> +                                 int be);
>  PFlashCFI01 *pflash_cfi01_register(hwaddr base,
>                                     const char *name,
>                                     hwaddr size,
> 

Writing this patch must have been "fun"; my eyes are bleeding from
cross-referencing the new parameters with the removed properties. :/

I think the patch is correct.

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

Thanks
Laszlo

  reply	other threads:[~2019-02-18 17:12 UTC|newest]

Thread overview: 97+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-02-18 12:56 [Qemu-devel] [PATCH 00/10] pflash: Fixes and cleanups Markus Armbruster
2019-02-18 12:56 ` [Qemu-devel] [PATCH 01/10] pflash: Rename pflash_t to PFlashCFI01, PFlashCFI02 Markus Armbruster
2019-02-18 16:40   ` Laszlo Ersek
2019-02-19 12:49   ` Philippe Mathieu-Daudé
2019-02-19 13:41     ` Markus Armbruster
2019-02-19 14:33       ` Philippe Mathieu-Daudé
2019-02-21  9:15         ` Markus Armbruster
2019-02-21 16:41           ` Philippe Mathieu-Daudé
2019-02-21 15:07   ` Alex Bennée
2019-02-18 12:56 ` [Qemu-devel] [PATCH 02/10] pflash: Macro PFLASH_BUG() is used just once, expand Markus Armbruster
2019-02-18 16:43   ` Laszlo Ersek
2019-02-18 17:35     ` Markus Armbruster
2019-02-19 12:40   ` Philippe Mathieu-Daudé
2019-02-19 13:11     ` Peter Maydell
2019-02-19 13:46       ` Markus Armbruster
2019-02-21  9:22         ` Markus Armbruster
2019-02-21  9:38           ` Peter Maydell
2019-02-21 12:07             ` Laszlo Ersek
2019-02-21 12:38               ` Peter Maydell
2019-02-21 12:46                 ` Laszlo Ersek
2019-02-21 16:39                   ` Philippe Mathieu-Daudé
2019-02-21 16:55                     ` Laszlo Ersek
2019-02-21 16:19             ` Philippe Mathieu-Daudé
2019-02-21 17:03               ` Markus Armbruster
2019-02-21 18:50                 ` Alex Bennée
2019-02-22  7:17               ` Markus Armbruster
2019-02-21 15:08           ` Alex Bennée
2019-02-18 12:56 ` [Qemu-devel] [PATCH 03/10] hw: Use CFI_PFLASH0{1, 2} and TYPE_CFI_PFLASH0{1, 2} Markus Armbruster
2019-02-18 16:45   ` Laszlo Ersek
2019-02-19 12:41   ` Philippe Mathieu-Daudé
2019-02-21 15:09   ` Alex Bennée
2019-02-18 12:56 ` [Qemu-devel] [PATCH 04/10] sam460ex: Don't size flash memory to match backing image Markus Armbruster
2019-02-18 16:36   ` [Qemu-devel] [Qemu-ppc] " BALATON Zoltan
2019-02-18 17:57     ` Markus Armbruster
2019-02-19  1:19       ` BALATON Zoltan
2019-02-19  5:43         ` Markus Armbruster
2019-02-19 11:34           ` BALATON Zoltan
2019-02-18 12:56 ` [Qemu-devel] [PATCH 05/10] ppc405_boards: " Markus Armbruster
2019-02-19  3:55   ` David Gibson
2019-02-19 15:28   ` [Qemu-devel] [Qemu-ppc] " BALATON Zoltan
2019-02-19 15:55     ` Markus Armbruster
2019-02-21 15:20   ` [Qemu-devel] " Alex Bennée
2019-02-21 16:31     ` Markus Armbruster
2019-02-21 22:18       ` David Gibson
2019-02-22  7:23         ` Markus Armbruster
2019-02-18 12:56 ` [Qemu-devel] [PATCH 06/10] r2d: Flash memory creation is confused about size, mark FIXME Markus Armbruster
2019-02-19 14:03   ` Peter Maydell
2019-02-19 15:45     ` Markus Armbruster
2019-02-19 15:53       ` Philippe Mathieu-Daudé
2019-02-19 17:30         ` Markus Armbruster
2019-03-04  4:57           ` Magnus Damm
2019-03-04  7:25             ` Markus Armbruster
2019-03-04 11:43               ` Philippe Mathieu-Daudé
2019-03-04 15:33                 ` Markus Armbruster
2019-03-05 17:21                   ` Philippe Mathieu-Daudé
2019-03-05 17:25                     ` Peter Maydell
2019-03-05 21:50                       ` Philippe Mathieu-Daudé
2019-03-06  6:03                         ` Markus Armbruster
2019-03-06 14:11                     ` Markus Armbruster
2019-02-19 16:02   ` Philippe Mathieu-Daudé
2019-02-19 16:21     ` Peter Maydell
2019-02-19 17:53       ` Markus Armbruster
2019-02-19 18:11         ` Peter Maydell
2019-02-18 12:56 ` [Qemu-devel] [PATCH 07/10] mips_malta: Clean up definition of flash memory size somewhat Markus Armbruster
2019-02-19 13:02   ` Philippe Mathieu-Daudé
2019-02-19 13:43     ` Markus Armbruster
2019-02-19 16:10       ` Philippe Mathieu-Daudé
2019-02-21 15:27   ` Alex Bennée
2019-02-18 12:56 ` [Qemu-devel] [PATCH 08/10] pflash: Clean up after commit 368a354f02b part 1 Markus Armbruster
2019-02-18 16:50   ` Laszlo Ersek
2019-02-19 16:12   ` Philippe Mathieu-Daudé
2019-02-21 15:57   ` Alex Bennée
2019-02-18 12:56 ` [Qemu-devel] [PATCH 09/10] pflash: Clean up after commit 368a354f02b part 2 Markus Armbruster
2019-02-18 17:01   ` Laszlo Ersek
2019-02-18 17:56     ` Laszlo Ersek
2019-02-19  5:44       ` Markus Armbruster
2019-02-21 16:51   ` Alex Bennée
2019-02-21 17:18     ` Markus Armbruster
2019-02-21 17:36       ` BALATON Zoltan
2019-02-21 18:18         ` Markus Armbruster
2019-02-18 12:56 ` [Qemu-devel] [PATCH 10/10] hw/arm hw/xtensa: De-duplicate pflash creation code some Markus Armbruster
2019-02-18 17:12   ` Laszlo Ersek [this message]
2019-02-19  8:43   ` Max Filippov
2019-02-19 13:01     ` Markus Armbruster
2019-02-19 14:13   ` Peter Maydell
2019-02-19 15:46     ` Markus Armbruster
2019-02-18 13:31 ` [Qemu-devel] [PATCH 00/10] pflash: Fixes and cleanups no-reply
2019-02-18 17:16 ` no-reply
2019-02-18 17:39 ` no-reply
2019-02-19  4:39 ` no-reply
2019-02-19  4:43 ` no-reply
2019-02-19 13:06 ` no-reply
2019-02-19 13:49 ` no-reply
2019-02-19 13:53 ` no-reply
2019-02-19 16:43 ` no-reply
2019-02-27 15:26 ` no-reply
2019-02-27 17:41 ` no-reply

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=e993bad5-efc9-a196-afee-4375fc89a37a@redhat.com \
    --to=lersek@redhat.com \
    --cc=alex.bennee@linaro.org \
    --cc=armbru@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=mreitz@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-ppc@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 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.