qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 1/9] hw/hppa/machine: Allow up to 3840 MB total memory


From: BALATON Zoltan
Subject: Re: [PATCH 1/9] hw/hppa/machine: Allow up to 3840 MB total memory
Date: Thu, 4 Jan 2024 20:58:53 +0100 (CET)
User-agent: Alpine 2.03 (LMD 1266 2009-07-14)

On Thu, 4 Jan 2024, deller@kernel.org wrote:
From: Helge Deller <deller@gmx.de>

The physical hardware allows DIMMs of 4 MB size and above, allowing up
to 3840 MB of memory, but is restricted by setup code to 3 GB.
Increase the limit to allow up to the maximum amount of memory.

Btw. the memory area from 0xf000.0000 to 0xffff.ffff is reserved by
the architecture for firmware and I/O memory and can not be used for
standard memory.

Signed-off-by: Helge Deller <deller@gmx.de>
Noticed-by: Nelson H. F. Beebe <beebe@math.utah.edu>
Fixes: b7746b1194c8 ("hw/hppa/machine: Restrict the total memory size to 3GB")
---
hw/hppa/machine.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/hw/hppa/machine.c b/hw/hppa/machine.c
index c8da7c18d5..6181f4b747 100644
--- a/hw/hppa/machine.c
+++ b/hw/hppa/machine.c
@@ -276,6 +276,7 @@ static TranslateFn 
*machine_HP_common_init_cpus(MachineState *machine)
    unsigned int smp_cpus = machine->smp.cpus;
    TranslateFn *translate;
    MemoryRegion *cpu_region;
+    ram_addr_t ram_max;

    /* Create CPUs.  */
    for (unsigned int i = 0; i < smp_cpus; i++) {
@@ -288,8 +289,10 @@ static TranslateFn 
*machine_HP_common_init_cpus(MachineState *machine)
     */
    if (hppa_is_pa20(&cpu[0]->env)) {
        translate = translate_pa20;
+        ram_max = 0xf0000000;      /* 3.75 GB (limited by 32-bit firmware) */
    } else {
        translate = translate_pa10;
+        ram_max = 0xf0000000;      /* 3.75 GB (32-bit CPU) */

If the value is the same what's the point of setting it here and not once above at definition? It is's only the different comment then you could have a comment saying "3.75 GB, limited by 32-bit firmware on 64 bit CPU" or similar there.

Regards,
BALATON Zoltan

    }

    for (unsigned int i = 0; i < smp_cpus; i++) {
@@ -311,9 +314,9 @@ static TranslateFn 
*machine_HP_common_init_cpus(MachineState *machine)
                                cpu_region);

    /* Main memory region. */
-    if (machine->ram_size > 3 * GiB) {
-        error_report("RAM size is currently restricted to 3GB");
-        exit(EXIT_FAILURE);
+    if (machine->ram_size > ram_max) {
+        info_report("Max RAM size limited to %ld MB", ram_max / MiB);
+        machine->ram_size = ram_max;
    }
    memory_region_add_subregion_overlap(addr_space, 0, machine->ram, -1);

--
2.43.0






reply via email to

[Prev in Thread] Current Thread [Next in Thread]