Message ID | 1311602584-23409-16-git-send-email-avi@redhat.com |
---|---|
State | New |
Headers | show |
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) */
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 --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) */
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(-)