From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:53662) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QlQen-0004bu-RW for qemu-devel@nongnu.org; Mon, 25 Jul 2011 15:17:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QlQem-00006l-FL for qemu-devel@nongnu.org; Mon, 25 Jul 2011 15:17:37 -0400 Received: from mail-gx0-f173.google.com ([209.85.161.173]:46924) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QlQem-00006e-AH for qemu-devel@nongnu.org; Mon, 25 Jul 2011 15:17:36 -0400 Received: by gxk26 with SMTP id 26so2900139gxk.4 for ; Mon, 25 Jul 2011 12:17:35 -0700 (PDT) Message-ID: <4E2DC14E.5080408@codemonkey.ws> Date: Mon, 25 Jul 2011 14:17:34 -0500 From: Anthony Liguori MIME-Version: 1.0 References: <1311602584-23409-1-git-send-email-avi@redhat.com> <1311602584-23409-16-git-send-email-avi@redhat.com> In-Reply-To: <1311602584-23409-16-git-send-email-avi@redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 15/23] exec.c: initialize memory map List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Avi Kivity Cc: qemu-devel@nongnu.org, kvm@vger.kernel.org On 07/25/2011 09:02 AM, Avi Kivity wrote: > Allocate the root memory region and initialize it. > > Signed-off-by: Avi Kivity > --- > 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 > #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) */