Ax3000 SoC reserves 3136 MiB memory for access totally QEMU allows -m option to set the ram_size which would cause the inconsistent size issue while running in QMP
This patch adds a guard to check if ram_size is different from RAM size of SoC and setup the default_ram_size Signed-off-by: Kuan-Jui Chiu <[email protected]> --- hw/arm/ax3000-boards.c | 9 +++++++++ include/hw/arm/ax3000-soc.h | 1 + 2 files changed, 10 insertions(+) diff --git a/hw/arm/ax3000-boards.c b/hw/arm/ax3000-boards.c index a499890317..4fd04e42f3 100644 --- a/hw/arm/ax3000-boards.c +++ b/hw/arm/ax3000-boards.c @@ -10,6 +10,7 @@ #include "hw/arm/axiado-boards.h" #include "hw/arm/boot.h" #include "hw/arm/machines-qom.h" +#include "qemu/cutils.h" #include "qemu/error-report.h" #include "qom/object.h" @@ -22,6 +23,13 @@ static void ax3000_machine_init(MachineState *machine) { Ax3000MachineState *ams = AX3000_MACHINE(machine); + if (machine->ram_size != AX3000_DRAM_SIZE) { + g_autofree char *size_str = size_to_str(AX3000_DRAM_SIZE); + + error_report("Invalid RAM size, should be %s", size_str); + exit(1); + } + ams->soc = AX3000_SOC(object_new(TYPE_AX3000_SOC)); object_property_add_child(OBJECT(machine), "soc", OBJECT(ams->soc)); sysbus_realize_and_unref(SYS_BUS_DEVICE(ams->soc), &error_fatal); @@ -39,6 +47,7 @@ static void ax3000_machine_class_init(ObjectClass *oc, const void *data) mc->min_cpus = AX3000_NUM_CPUS; mc->max_cpus = AX3000_NUM_CPUS; mc->default_cpu_type = ARM_CPU_TYPE_NAME("cortex-a53"); + mc->default_ram_size = AX3000_DRAM_SIZE; } static const TypeInfo ax3000_machine_types[] = { diff --git a/include/hw/arm/ax3000-soc.h b/include/hw/arm/ax3000-soc.h index 032edafff4..f1cfabe1bd 100644 --- a/include/hw/arm/ax3000-soc.h +++ b/include/hw/arm/ax3000-soc.h @@ -25,6 +25,7 @@ OBJECT_DECLARE_TYPE(Ax3000SoCState, Ax3000SoCClass, AX3000_SOC) #define AX3000_DRAM0_SIZE (1088 * MiB) #define AX3000_DRAM1_BASE 0x400000000 #define AX3000_DRAM1_SIZE (2 * GiB) +#define AX3000_DRAM_SIZE (AX3000_DRAM0_SIZE + AX3000_DRAM1_SIZE) #define AX3000_GIC_DIST_BASE 0x80300000 #define AX3000_GIC_DIST_SIZE (64 * KiB) -- 2.34.1
