On [2021 Oct 18] Mon 15:26:08, Cédric Le Goater wrote:
> Because AddressSpaces must not be sysbus-mapped, commit e9c568dbc225
> ("hw/arm/aspeed: Do not sysbus-map mmio flash region directly, use
> alias") introduced an alias for the flash mmio region.
>
> Using a container is cleaner.
>
> Cc: Philippe Mathieu-Daudé <[email protected]>
> Signed-off-by: Cédric Le Goater <[email protected]>
Reviewed-by: Francisco Iglesias <[email protected]>
> ---
> include/hw/ssi/aspeed_smc.h | 2 +-
> hw/ssi/aspeed_smc.c | 11 +++++++----
> 2 files changed, 8 insertions(+), 5 deletions(-)
>
> diff --git a/include/hw/ssi/aspeed_smc.h b/include/hw/ssi/aspeed_smc.h
> index ad3c80f2d809..61d23ec1f13e 100644
> --- a/include/hw/ssi/aspeed_smc.h
> +++ b/include/hw/ssi/aspeed_smc.h
> @@ -52,8 +52,8 @@ struct AspeedSMCState {
> SysBusDevice parent_obj;
>
> MemoryRegion mmio;
> + MemoryRegion mmio_flash_container;
> MemoryRegion mmio_flash;
> - MemoryRegion mmio_flash_alias;
>
> qemu_irq irq;
>
> diff --git a/hw/ssi/aspeed_smc.c b/hw/ssi/aspeed_smc.c
> index 1770985230b0..d4f03881ddf5 100644
> --- a/hw/ssi/aspeed_smc.c
> +++ b/hw/ssi/aspeed_smc.c
> @@ -1218,14 +1218,17 @@ static void aspeed_smc_realize(DeviceState *dev,
> Error **errp)
> * window in which the flash modules are mapped. The size and
> * address depends on the SoC model and controller type.
> */
> + memory_region_init(&s->mmio_flash_container, OBJECT(s),
> + TYPE_ASPEED_SMC ".container",
> + asc->flash_window_size);
> + sysbus_init_mmio(sbd, &s->mmio_flash_container);
> +
> memory_region_init_io(&s->mmio_flash, OBJECT(s),
> &aspeed_smc_flash_default_ops, s,
> TYPE_ASPEED_SMC ".flash",
> asc->flash_window_size);
> - memory_region_init_alias(&s->mmio_flash_alias, OBJECT(s),
> - TYPE_ASPEED_SMC ".flash",
> - &s->mmio_flash, 0, asc->flash_window_size);
> - sysbus_init_mmio(sbd, &s->mmio_flash_alias);
> + memory_region_add_subregion(&s->mmio_flash_container, 0x0,
> + &s->mmio_flash);
>
> /*
> * Let's create a sub memory region for each possible peripheral. All
> --
> 2.31.1
>
>