diff mbox

[15/23] exec.c: initialize memory map

Message ID 1311602584-23409-16-git-send-email-avi@redhat.com
State New
Headers show

Commit Message

Avi Kivity July 25, 2011, 2:02 p.m. UTC
Allocate the root memory region and initialize it.

Signed-off-by: Avi Kivity <avi@redhat.com>
---
 exec.c |   19 +++++++++++++++++++
 1 files changed, 19 insertions(+), 0 deletions(-)

Comments

Anthony Liguori July 25, 2011, 7:17 p.m. UTC | #1
On 07/25/2011 09:02 AM, Avi Kivity wrote:
> Allocate the root memory region and initialize it.
>
> Signed-off-by: Avi Kivity<avi@redhat.com>
> ---
>   exec.c |   19 +++++++++++++++++++
>   1 files changed, 19 insertions(+), 0 deletions(-)
>
> diff --git a/exec.c b/exec.c
> index 2160ded..d51502f 100644
> --- a/exec.c
> +++ b/exec.c
> @@ -33,6 +33,8 @@
>   #include "kvm.h"
>   #include "hw/xen.h"
>   #include "qemu-timer.h"
> +#include "memory.h"
> +#include "exec-memory.h"
>   #if defined(CONFIG_USER_ONLY)
>   #include<qemu.h>
>   #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
> @@ -109,6 +111,9 @@ int phys_ram_fd;
>   static int in_migration;
>
>   RAMList ram_list = { .blocks = QLIST_HEAD_INITIALIZER(ram_list) };
> +
> +static MemoryRegion *system_memory;
> +
>   #endif
>
>   CPUState *first_cpu;
> @@ -197,6 +202,7 @@ typedef struct PhysPageDesc {
>   static void *l1_phys_map[P_L1_SIZE];
>
>   static void io_mem_init(void);
> +static void memory_map_init(void);
>
>   /* io memory support */
>   CPUWriteMemoryFunc *io_mem_write[IO_MEM_NB_ENTRIES][4];
> @@ -571,6 +577,7 @@ void cpu_exec_init_all(unsigned long tb_size)
>       code_gen_ptr = code_gen_buffer;
>       page_init();
>   #if !defined(CONFIG_USER_ONLY)
> +    memory_map_init();
>       io_mem_init();
>   #endif
>   #if !defined(CONFIG_USER_ONLY) || !defined(CONFIG_USE_GUEST_BASE)
> @@ -3807,6 +3814,18 @@ static void io_mem_init(void)
>                                             DEVICE_NATIVE_ENDIAN);
>   }
>
> +static void memory_map_init(void)
> +{
> +    system_memory = qemu_malloc(sizeof(*system_memory));
> +    memory_region_init(system_memory, "system", UINT64_MAX);

Would be nice to #define MEM_REG_SIZE_ALL UINT64_MAX

Without reading the docs, it seems like an odd bit of code otherwise.

Regards,

Anthony Liguori

> +    set_system_memory_map(system_memory);
> +}
> +
> +MemoryRegion *get_system_memory(void)
> +{
> +    return system_memory;
> +}
> +
>   #endif /* !defined(CONFIG_USER_ONLY) */
>
>   /* physical memory access (slow version, mainly for debug) */
Avi Kivity July 26, 2011, 10:55 a.m. UTC | #2
On 07/25/2011 10:17 PM, Anthony Liguori wrote:
>> +static void memory_map_init(void)
>> +{
>> +    system_memory = qemu_malloc(sizeof(*system_memory));
>> +    memory_region_init(system_memory, "system", UINT64_MAX);
>
>
> Would be nice to #define MEM_REG_SIZE_ALL UINT64_MAX
>
> Without reading the docs, it seems like an odd bit of code otherwise.

It's really temporary.  It should come from the machine description and 
specify the processor's system bus width.
diff mbox

Patch

diff --git a/exec.c b/exec.c
index 2160ded..d51502f 100644
--- a/exec.c
+++ b/exec.c
@@ -33,6 +33,8 @@ 
 #include "kvm.h"
 #include "hw/xen.h"
 #include "qemu-timer.h"
+#include "memory.h"
+#include "exec-memory.h"
 #if defined(CONFIG_USER_ONLY)
 #include <qemu.h>
 #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
@@ -109,6 +111,9 @@  int phys_ram_fd;
 static int in_migration;
 
 RAMList ram_list = { .blocks = QLIST_HEAD_INITIALIZER(ram_list) };
+
+static MemoryRegion *system_memory;
+
 #endif
 
 CPUState *first_cpu;
@@ -197,6 +202,7 @@  typedef struct PhysPageDesc {
 static void *l1_phys_map[P_L1_SIZE];
 
 static void io_mem_init(void);
+static void memory_map_init(void);
 
 /* io memory support */
 CPUWriteMemoryFunc *io_mem_write[IO_MEM_NB_ENTRIES][4];
@@ -571,6 +577,7 @@  void cpu_exec_init_all(unsigned long tb_size)
     code_gen_ptr = code_gen_buffer;
     page_init();
 #if !defined(CONFIG_USER_ONLY)
+    memory_map_init();
     io_mem_init();
 #endif
 #if !defined(CONFIG_USER_ONLY) || !defined(CONFIG_USE_GUEST_BASE)
@@ -3807,6 +3814,18 @@  static void io_mem_init(void)
                                           DEVICE_NATIVE_ENDIAN);
 }
 
+static void memory_map_init(void)
+{
+    system_memory = qemu_malloc(sizeof(*system_memory));
+    memory_region_init(system_memory, "system", UINT64_MAX);
+    set_system_memory_map(system_memory);
+}
+
+MemoryRegion *get_system_memory(void)
+{
+    return system_memory;
+}
+
 #endif /* !defined(CONFIG_USER_ONLY) */
 
 /* physical memory access (slow version, mainly for debug) */