On 1/4/21 7:24 PM, Philippe Mathieu-Daudé wrote: > On 1/4/21 6:39 PM, Philippe Mathieu-Daudé wrote: >> On 1/4/21 4:01 PM, Peter Maydell wrote: >>> On Mon, 4 Jan 2021 at 13:59, Philippe Mathieu-Daudé <f4...@amsat.org> wrote: >>>> I don't have access to OSX host. I'll see to install an aarch32 chroot and >>>> keep testing (not sure what can differ from an i386 guest). >>>> If I can't find anything I'll resend the same series without the Loongson-3 >>>> machine, which is the single part adding QOM objects. > > OK I guess I found the problem, we have: > > struct LoongsonMachineState { > MachineState parent_obj; > MemoryRegion *pio_alias; > MemoryRegion *mmio_alias; > MemoryRegion *ecam_alias; > }; > > Then: > > static inline void loongson3_virt_devices_init(MachineState *machine, > DeviceState *pic) > { > int i; > qemu_irq irq; > PCIBus *pci_bus; > DeviceState *dev; > MemoryRegion *mmio_reg, *ecam_reg; > LoongsonMachineState *s = LOONGSON_MACHINE(machine); > > LoongsonMachineState is never allocated... Accessing its MR lead > to BOF.
I'm going to respin with this (pass 32-bit tests): -- >8 -- diff --git a/hw/mips/loongson3_virt.c b/hw/mips/loongson3_virt.c index e3723d3dd0f..d4a82fa5367 100644 --- a/hw/mips/loongson3_virt.c +++ b/hw/mips/loongson3_virt.c @@ -612,8 +612,10 @@ static void mips_loongson3_virt_init(MachineState *machine) loongson3_virt_devices_init(machine, liointc); } -static void mips_loongson3_virt_machine_init(MachineClass *mc) +static void loongson3v_machine_class_init(ObjectClass *oc, void *data) { + MachineClass *mc = MACHINE_CLASS(oc); + mc->desc = "Loongson-3 Virtualization Platform"; mc->init = mips_loongson3_virt_init; mc->block_default_type = IF_IDE; @@ -624,4 +626,13 @@ static void mips_loongson3_virt_machine_init(MachineClass *mc) mc->minimum_page_bits = 14; } -DEFINE_MACHINE("loongson3-virt", mips_loongson3_virt_machine_init) +static const TypeInfo loongson3_machine_types[] = { + { + .name = TYPE_LOONGSON_MACHINE, + .parent = TYPE_MACHINE, + .instance_size = sizeof(LoongsonMachineState), + .class_init = loongson3v_machine_class_init, + } +}; + +DEFINE_TYPES(loongson3_machine_types) --- Thanks Peter for catching this (we really need a 32-bit host runner on GitLab...). Phil.