[v5,05/18] hw/arm/virt: Move memory map initialization into machvirt_init
diff mbox series

Message ID 20190123101458.12478-6-eric.auger@redhat.com
State New
Headers show
Series
  • ARM virt: Initial RAM expansion and PCDIMM/NVDIMM support
Related show

Commit Message

Auger Eric Jan. 23, 2019, 10:14 a.m. UTC
This patch moves the memory map setup into machvirt_init().
The rationale is the memory map will be soon affected by the
kvm_type() call that happens after virt_instance_init().

Signed-off-by: Eric Auger <eric.auger@redhat.com>
---
 hw/arm/virt.c | 32 +++++++++++++++++++-------------
 1 file changed, 19 insertions(+), 13 deletions(-)

Patch
diff mbox series

diff --git a/hw/arm/virt.c b/hw/arm/virt.c
index ba4088895a..ea1fb3ddfd 100644
--- a/hw/arm/virt.c
+++ b/hw/arm/virt.c
@@ -1359,6 +1359,22 @@  static uint64_t virt_cpu_mp_affinity(VirtMachineState *vms, int idx)
     return arm_cpu_mp_affinity(idx, clustersz);
 }
 
+static void set_memory_map(VirtMachineState *vms)
+{
+    int i;
+
+    vms->memmap = extended_memmap;
+
+    for (i = 0; i < ARRAY_SIZE(a15memmap); i++) {
+        vms->memmap[i] = a15memmap[i];
+    }
+
+    for (i = VIRT_LOWMEMMAP_LAST; i < ARRAY_SIZE(extended_memmap); i++) {
+        vms->memmap[i].base = extended_memmap[i].base + vms->high_io_base;
+        vms->memmap[i].size = extended_memmap[i].size;
+    }
+}
+
 static void machvirt_init(MachineState *machine)
 {
     VirtMachineState *vms = VIRT_MACHINE(machine);
@@ -1373,6 +1389,8 @@  static void machvirt_init(MachineState *machine)
     bool firmware_loaded = bios_name || drive_get(IF_PFLASH, 0, 0);
     bool aarch64 = true;
 
+    set_memory_map(vms);
+
     /* We can probe only here because during property set
      * KVM is not available yet
      */
@@ -1786,7 +1804,6 @@  static void virt_instance_init(Object *obj)
 {
     VirtMachineState *vms = VIRT_MACHINE(obj);
     VirtMachineClass *vmc = VIRT_MACHINE_GET_CLASS(vms);
-    int i;
 
     /* EL3 is disabled by default on virt: this makes us consistent
      * between KVM and TCG for this board, and it also allows us to
@@ -1849,18 +1866,7 @@  static void virt_instance_init(Object *obj)
                                     "Valid values are none and smmuv3",
                                     NULL);
 
-    vms->memmap = extended_memmap;
-
-    for (i = 0; i < ARRAY_SIZE(a15memmap); i++) {
-        vms->memmap[i] = a15memmap[i];
-    }
-
-    vms->high_io_base = S_256GiB; /* Top of the RAM */
-
-    for (i = VIRT_LOWMEMMAP_LAST; i < ARRAY_SIZE(extended_memmap); i++) {
-        vms->memmap[i].base = extended_memmap[i].base + vms->high_io_base;
-        vms->memmap[i].size = extended_memmap[i].size;
-    }
+    vms->high_io_base = S_256GiB; /* default RAM top */
     vms->irqmap = a15irqmap;
 }