aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilippe Mathieu-Daudé <f4bug@amsat.org>2020-01-09 01:05:24 +0100
committerRichard Henderson <richard.henderson@linaro.org>2020-01-27 10:49:51 -0800
commitb7746b1194c8b15d8a31ba0cc308175bcb4b96f8 (patch)
tree2730e9b4b4ebc4ef15a07fcd1a27f6030bd753d2
parent8262863d4b59aed7e22866234dcfd3d8fb016a6b (diff)
downloadqemu-b7746b1194c8b15d8a31ba0cc308175bcb4b96f8.zip
qemu-b7746b1194c8b15d8a31ba0cc308175bcb4b96f8.tar.gz
qemu-b7746b1194c8b15d8a31ba0cc308175bcb4b96f8.tar.bz2
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>
-rw-r--r--hw/hppa/machine.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/hw/hppa/machine.c b/hw/hppa/machine.c
index e575309..57cb4e0 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);