On Wed, Jul 27, 2022 at 12:27:14PM +0200, Cédric Le Goater wrote: > A MachineState object is used as a owner of the RAM region and this > asserts in memory_region_init_ram() when QEMU is built with > CONFIG_QOM_CAST_DEBUG : > > /* This will assert if owner is neither NULL nor a DeviceState. > * We only want the owner here for the purposes of defining a > * unique name for migration. TODO: Ideally we should implement > * a naming scheme for Objects which are not DeviceStates, in > * which case we can relax this restriction. > */ > owner_dev = DEVICE(owner); > > Use the BMC and BIC objects as the owners of their memory regions. > > Cc: Peter Delevoryas <pe...@pjd.dev> > Fixes: 778e14cc5cd5 ("aspeed: Add AST2600 (BMC) to fby35") > Signed-off-by: Cédric Le Goater <c...@kaod.org> > ---
Looks good to me, thanks for fixing this Cedric! Peter Reviewed-by: Peter Delevoryas <pe...@pjd.dev> > hw/arm/fby35.c | 14 +++++++++----- > 1 file changed, 9 insertions(+), 5 deletions(-) > > diff --git a/hw/arm/fby35.c b/hw/arm/fby35.c > index 79605f306462..90c04bbc3389 100644 > --- a/hw/arm/fby35.c > +++ b/hw/arm/fby35.c > @@ -72,11 +72,13 @@ static void fby35_bmc_init(Fby35State *s) > { > DriveInfo *drive0 = drive_get(IF_MTD, 0, 0); > > - memory_region_init(&s->bmc_memory, OBJECT(s), "bmc-memory", UINT64_MAX); > - memory_region_init_ram(&s->bmc_dram, OBJECT(s), "bmc-dram", > + object_initialize_child(OBJECT(s), "bmc", &s->bmc, "ast2600-a3"); > + > + memory_region_init(&s->bmc_memory, OBJECT(&s->bmc), "bmc-memory", > + UINT64_MAX); > + memory_region_init_ram(&s->bmc_dram, OBJECT(&s->bmc), "bmc-dram", > FBY35_BMC_RAM_SIZE, &error_abort); > > - object_initialize_child(OBJECT(s), "bmc", &s->bmc, "ast2600-a3"); > object_property_set_int(OBJECT(&s->bmc), "ram-size", FBY35_BMC_RAM_SIZE, > &error_abort); > object_property_set_link(OBJECT(&s->bmc), "memory", > OBJECT(&s->bmc_memory), > @@ -120,9 +122,11 @@ static void fby35_bic_init(Fby35State *s) > s->bic_sysclk = clock_new(OBJECT(s), "SYSCLK"); > clock_set_hz(s->bic_sysclk, 200000000ULL); > > - memory_region_init(&s->bic_memory, OBJECT(s), "bic-memory", UINT64_MAX); > - > object_initialize_child(OBJECT(s), "bic", &s->bic, "ast1030-a1"); > + > + memory_region_init(&s->bic_memory, OBJECT(&s->bic), "bic-memory", > + UINT64_MAX); > + > qdev_connect_clock_in(DEVICE(&s->bic), "sysclk", s->bic_sysclk); > object_property_set_link(OBJECT(&s->bic), "memory", > OBJECT(&s->bic_memory), > &error_abort); > -- > 2.37.1 >