On 3/12/21 7:28 PM, Philippe Mathieu-Daudé wrote: > The flash mmio region is exposed as an AddressSpace. > AddressSpaces must not be sysbus-mapped, therefore map > the region using an alias. > > Signed-off-by: Philippe Mathieu-Daudé <f4...@amsat.org>
That does the trick but you need an extra change in the model. The fixes are in my aspeed-6.0 branch on GH and they survive the last patch of your series : [PATCH 5/5] memory: Make sure root MR won't be added as subregion I will upstream for 6.1. Thanks, C. > --- > include/hw/ssi/aspeed_smc.h | 1 + > hw/ssi/aspeed_smc.c | 4 +++- > 2 files changed, 4 insertions(+), 1 deletion(-) > > diff --git a/include/hw/ssi/aspeed_smc.h b/include/hw/ssi/aspeed_smc.h > index 16c03fe64f3..e3c96cecbd8 100644 > --- a/include/hw/ssi/aspeed_smc.h > +++ b/include/hw/ssi/aspeed_smc.h > @@ -84,6 +84,7 @@ struct AspeedSMCState { > > MemoryRegion mmio; > MemoryRegion mmio_flash; > + MemoryRegion mmio_flash_alias; > > qemu_irq irq; > int irqline; > diff --git a/hw/ssi/aspeed_smc.c b/hw/ssi/aspeed_smc.c > index 16addee4dc8..aa26578bdac 100644 > --- a/hw/ssi/aspeed_smc.c > +++ b/hw/ssi/aspeed_smc.c > @@ -1386,7 +1386,9 @@ static void aspeed_smc_realize(DeviceState *dev, Error > **errp) > memory_region_init_io(&s->mmio_flash, OBJECT(s), > &aspeed_smc_flash_default_ops, s, name, > s->ctrl->flash_window_size); > - sysbus_init_mmio(sbd, &s->mmio_flash); > + memory_region_init_alias(&s->mmio_flash_alias, OBJECT(s), name, > + &s->mmio_flash, 0, s->ctrl->flash_window_size); > + sysbus_init_mmio(sbd, &s->mmio_flash_alias); > > s->flashes = g_new0(AspeedSMCFlash, s->ctrl->max_peripherals); > >