qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/9] hw/hppa/machine: Allow up to 3840 MB total memory
  2024-01-04 18:36 [PATCH 0/9] target/hppa qemu v8.2 regression fixes deller
@ 2024-01-04 18:36 ` deller
  2024-01-04 19:58   ` BALATON Zoltan
  2024-01-05 10:36   ` Helge Deller
  0 siblings, 2 replies; 5+ messages in thread
From: deller @ 2024-01-04 18:36 UTC (permalink / raw)
  To: qemu-devel
  Cc: Michael Tokarev, Bruno Haible, Richard Henderson,
	Nelson H . F . Beebe, Helge Deller

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) */
     }
 
     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



^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH 1/9] hw/hppa/machine: Allow up to 3840 MB total memory
  2024-01-04 18:36 ` [PATCH 1/9] hw/hppa/machine: Allow up to 3840 MB total memory deller
@ 2024-01-04 19:58   ` BALATON Zoltan
  2024-01-04 20:27     ` Helge Deller
  2024-01-05 10:36   ` Helge Deller
  1 sibling, 1 reply; 5+ messages in thread
From: BALATON Zoltan @ 2024-01-04 19:58 UTC (permalink / raw)
  To: deller
  Cc: qemu-devel, Michael Tokarev, Bruno Haible, Richard Henderson,
	Nelson H . F . Beebe, Helge Deller

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
>
>
>


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 1/9] hw/hppa/machine: Allow up to 3840 MB total memory
  2024-01-04 19:58   ` BALATON Zoltan
@ 2024-01-04 20:27     ` Helge Deller
  0 siblings, 0 replies; 5+ messages in thread
From: Helge Deller @ 2024-01-04 20:27 UTC (permalink / raw)
  To: BALATON Zoltan, deller
  Cc: qemu-devel, Michael Tokarev, Bruno Haible, Richard Henderson,
	Nelson H . F . Beebe

On 1/4/24 20:58, BALATON Zoltan wrote:
> 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.

Oh, sorry, I missed to explain it...

qemu already supports the 64-bit CPU (hppa64), but using more than
3.75 GB of RAM is limited because the 32-bit firmware (which is
currently shipped) only supports up to max. 4GB.
For more than 4GB, a 64-bit SeaBIOS-hppa firmware is needed.
The current SeaBIOS-hppa git tree already contains the code
to build the firmware with 64-bit support. It already boots up,
but I still need some more bug-fixing until it can be used.

So, keeping two different lines here helps to more easily test
the 64-bit firmware and the final commit to allow more than 4GB
will become a one-liner with an upcoming patch.

Helge


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 1/9] hw/hppa/machine: Allow up to 3840 MB total memory
  2024-01-04 18:36 ` [PATCH 1/9] hw/hppa/machine: Allow up to 3840 MB total memory deller
  2024-01-04 19:58   ` BALATON Zoltan
@ 2024-01-05 10:36   ` Helge Deller
  1 sibling, 0 replies; 5+ messages in thread
From: Helge Deller @ 2024-01-05 10:36 UTC (permalink / raw)
  To: qemu-devel

On 1/4/24 19:36, 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) */
>       }
>
>       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);

Need to use RAM_ADDR_FMT instead of "%ld" here.
Will fix in v2.

Helge


> +        machine->ram_size = ram_max;
>       }
>       memory_region_add_subregion_overlap(addr_space, 0, machine->ram, -1);
>



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 1/9] hw/hppa/machine: Allow up to 3840 MB total memory
@ 2025-02-08 13:44 Alberto
  0 siblings, 0 replies; 5+ messages in thread
From: Alberto @ 2025-02-08 13:44 UTC (permalink / raw)
  To: deller; +Cc: beebe, bruno, deller, mjt, qemu-devel, richard.henderson

[-- Attachment #1: Type: text/plain, Size: 13 bytes --]

Quién sois

[-- Attachment #2: Type: text/html, Size: 35 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2025-02-08 14:55 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-02-08 13:44 [PATCH 1/9] hw/hppa/machine: Allow up to 3840 MB total memory Alberto
  -- strict thread matches above, loose matches on Subject: below --
2024-01-04 18:36 [PATCH 0/9] target/hppa qemu v8.2 regression fixes deller
2024-01-04 18:36 ` [PATCH 1/9] hw/hppa/machine: Allow up to 3840 MB total memory deller
2024-01-04 19:58   ` BALATON Zoltan
2024-01-04 20:27     ` Helge Deller
2024-01-05 10:36   ` Helge Deller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).