[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v3 43/86] hppa: allow max ram size upto 4Gb
From: |
Igor Mammedov |
Subject: |
[PATCH v3 43/86] hppa: allow max ram size upto 4Gb |
Date: |
Tue, 7 Jan 2020 16:34:38 +0100 |
Real hardware allows to plug in up to 4Gb RAM into memory slots.
So allow user specify up to 4Gb and map all of it into guest
address space.
PS:
* guest will still see 3840m being reported in
cpu[0]->env.gr[26] and won't be avare of remaining
~248Mb, as it doesn't have other means to discover
RAM above firmware ROM.
* use local ram_size to avoid changing global one
which shouldn't be changed boards and will be removed
in the future
Requested-by: Helge Deller <address@hidden>
Signed-off-by: Igor Mammedov <address@hidden>
---
v2:
- make main ram -1 prio, so it wouldn't conflict with other regions
starting from 0xf9000000
(Philippe Mathieu-Daudé <address@hidden>)
- avoid type size comparision error on migw32 host with ram_addr_t
- simplify code a bit using local ram_size var.
- rewrite commit message
v3:
- drop "hppa: drop RAM size fixup"
- rewrite commit message
- use 64-bit local ram_size to workaround always false
condition "if (ram_size > 4 * GiB)" when building on
32-bit host (mingw-32) as it's preffered over ifdefs.
---
hw/hppa/machine.c | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
diff --git a/hw/hppa/machine.c b/hw/hppa/machine.c
index 5d0de26..d63b61e 100644
--- a/hw/hppa/machine.c
+++ b/hw/hppa/machine.c
@@ -73,10 +73,9 @@ static void machine_hppa_init(MachineState *machine)
MemoryRegion *ram_region;
MemoryRegion *cpu_region;
long i;
+ uint64_t ram_size = machine->ram_size;
unsigned int smp_cpus = machine->smp.cpus;
- ram_size = machine->ram_size;
-
/* Create CPUs. */
for (i = 0; i < smp_cpus; i++) {
char *name = g_strdup_printf("cpu%ld-io-eir", i);
@@ -91,15 +90,17 @@ static void machine_hppa_init(MachineState *machine)
}
/* Limit main memory. */
- if (ram_size > FIRMWARE_START) {
- machine->ram_size = ram_size = FIRMWARE_START;
+ if (ram_size > 4 * GiB) {
+ error_report("RAM size more than 4Gb is not supported");
+ exit(EXIT_FAILURE);
}
+ ram_size = ram_size > FIRMWARE_START ? FIRMWARE_START : ram_size;
/* Main memory region. */
ram_region = g_new(MemoryRegion, 1);
memory_region_allocate_system_memory(ram_region, OBJECT(machine),
"ram", ram_size);
- memory_region_add_subregion(addr_space, 0, ram_region);
+ memory_region_add_subregion_overlap(addr_space, 0, ram_region, -1);
/* Init Dino (PCI host bus chip). */
pci_bus = dino_init(addr_space, &rtc_irq, &serial_irq);
@@ -246,6 +247,8 @@ static void machine_hppa_init(MachineState *machine)
static void hppa_machine_reset(MachineState *ms)
{
unsigned int smp_cpus = ms->smp.cpus;
+ uint64_t ram_size = ms->ram_size > FIRMWARE_START ? FIRMWARE_START :
+ ms->ram_size;
int i;
qemu_devices_reset();
--
2.7.4
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [PATCH v3 43/86] hppa: allow max ram size upto 4Gb,
Igor Mammedov <=