diff options
author | Philippe Mathieu-Daudé <f4bug@amsat.org> | 2020-01-09 01:05:24 +0100 |
---|---|---|
committer | Richard Henderson <richard.henderson@linaro.org> | 2020-01-27 10:49:51 -0800 |
commit | b7746b1194c8b15d8a31ba0cc308175bcb4b96f8 (patch) | |
tree | 2730e9b4b4ebc4ef15a07fcd1a27f6030bd753d2 /hw/hppa | |
parent | 8262863d4b59aed7e22866234dcfd3d8fb016a6b (diff) |
hw/hppa/machine: Restrict the total memory size to 3GB
The hardware expects DIMM slots of 1 or 2 GB, allowing up to
4 GB of memory. We want to accept the same amount of memory the
hardware can deal with. DIMMs of 768MB are not available.
However we have to deal with a firmware limitation: currently
SeaBIOS only supports 32-bit, and expects the RAM size in a
32-bit register. When using a 4GB configuration, the 32-bit
register get truncated and we report a size of 0MB to SeaBIOS,
which ends halting the machine:
$ qemu-system-hppa -m 4g -serial stdio
SeaBIOS: Machine configured with too little memory (0 MB), minimum is 16 MB.
SeaBIOS wants SYSTEM HALT.
The easiest way is to restrict the machine to 3GB of memory.
Acked-by: Helge Deller <deller@gmx.de>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-Id: <20200109000525.24744-3-f4bug@amsat.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Diffstat (limited to 'hw/hppa')
-rw-r--r-- | hw/hppa/machine.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/hw/hppa/machine.c b/hw/hppa/machine.c index e57530950a..57cb4e0f34 100644 --- a/hw/hppa/machine.c +++ b/hw/hppa/machine.c @@ -92,12 +92,11 @@ static void machine_hppa_init(MachineState *machine) g_free(name); } - /* Limit main memory. */ - if (ram_size > FIRMWARE_START) { - machine->ram_size = ram_size = FIRMWARE_START; - } - /* Main memory region. */ + if (machine->ram_size > 3 * GiB) { + error_report("RAM size is currently restricted to 3GB"); + exit(EXIT_FAILURE); + } ram_region = g_new(MemoryRegion, 1); memory_region_allocate_system_memory(ram_region, OBJECT(machine), "ram", ram_size); |