diff mbox

[v5,08/14] memory: record below_4g_mem_size, above_4g_mem_size

Message ID 56400275bcf35f314526a1dd2da4a249ae22e12d.1372234719.git.hutao@cn.fujitsu.com
State New
Headers show

Commit Message

Hu Tao June 26, 2013, 9:13 a.m. UTC
Signed-off-by: Hu Tao <hutao@cn.fujitsu.com>
---
 hw/i386/pc.c         | 17 ++++++++---------
 include/hw/i386/pc.h |  2 ++
 2 files changed, 10 insertions(+), 9 deletions(-)
diff mbox

Patch

diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index 5bb4989..55056b1 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -1288,7 +1288,6 @@  static int memory_controller_init(PCIDevice *dev)
     MemoryController *m = MEMORY_CONTROLLER(dev);
     MemoryControllerClass *c = MEMORY_CONTROLLER_GET_CLASS(dev);
     ram_addr_t ram_size;
-    hwaddr below_4g_mem_size, above_4g_mem_size;
     hwaddr pci_hole_start, pci_hole_size;
     hwaddr pci_hole64_start, pci_hole64_size;
     int i;
@@ -1296,11 +1295,11 @@  static int memory_controller_init(PCIDevice *dev)
     g_assert(m->system_memory != NULL);
 
     if(m->ram_size > c->pci_hole_start) {
-        below_4g_mem_size = c->pci_hole_start;
-        above_4g_mem_size = m->ram_size - c->pci_hole_start;
+        m->below_4g_mem_size = c->pci_hole_start;
+        m->above_4g_mem_size = m->ram_size - c->pci_hole_start;
     } else {
-        below_4g_mem_size = m->ram_size;
-        above_4g_mem_size = 0;
+        m->below_4g_mem_size = m->ram_size;
+        m->above_4g_mem_size = 0;
     }
 
     /* Allocate RAM.  We allocate it as a single memory region and use
@@ -1310,16 +1309,16 @@  static int memory_controller_init(PCIDevice *dev)
     memory_region_init_ram(&m->ram, "pc.ram", m->ram_size);
     vmstate_register_ram_global(&m->ram);
     memory_region_init_alias(&m->ram_below_4g, "ram-below-4g", &m->ram,
-                             0, below_4g_mem_size);
+                             0, m->below_4g_mem_size);
     memory_region_add_subregion(m->system_memory, 0, &m->ram_below_4g);
-    if (above_4g_mem_size > 0) {
+    if (m->above_4g_mem_size > 0) {
         memory_region_init_alias(&m->ram_above_4g, "ram-above-4g", &m->ram,
-                                 below_4g_mem_size, above_4g_mem_size);
+                                 m->below_4g_mem_size, m->above_4g_mem_size);
         memory_region_add_subregion(m->system_memory, c->pci_hole_end,
                                     &m->ram_above_4g);
     }
 
-    pci_hole_start = below_4g_mem_size;
+    pci_hole_start = m->below_4g_mem_size;
     pci_hole_size = c->pci_hole_end - pci_hole_start;
 
     pci_hole64_start = c->pci_hole_end + m->ram_size - pci_hole_start;
diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
index 5d36558..e2cbc1b 100644
--- a/include/hw/i386/pc.h
+++ b/include/hw/i386/pc.h
@@ -46,6 +46,8 @@  typedef struct MemoryController {
     MemoryRegion ram;
     MemoryRegion ram_below_4g;
     MemoryRegion ram_above_4g;
+    hwaddr below_4g_mem_size;
+    hwaddr above_4g_mem_size;
 } MemoryController;
 
 void mc_update_pam(MemoryController *d);