From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1O6T3T-0003yl-LJ for qemu-devel@nongnu.org; Mon, 26 Apr 2010 14:29:15 -0400 Received: from [140.186.70.92] (port=43175 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1O6T3R-0003wE-Qr for qemu-devel@nongnu.org; Mon, 26 Apr 2010 14:29:15 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1O6T3P-00041l-UC for qemu-devel@nongnu.org; Mon, 26 Apr 2010 14:29:13 -0400 Received: from mail-pv0-f173.google.com ([74.125.83.173]:51703) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1O6T3P-00041a-Lh for qemu-devel@nongnu.org; Mon, 26 Apr 2010 14:29:11 -0400 Received: by pvh1 with SMTP id 1so280185pvh.4 for ; Mon, 26 Apr 2010 11:29:10 -0700 (PDT) Message-ID: <4BD5DB72.3030707@codemonkey.ws> Date: Mon, 26 Apr 2010 13:29:06 -0500 From: Anthony Liguori MIME-Version: 1.0 References: <2e085c19aac78e6c4335eac4fffeb5cfca4bbb26.1272304746.git.mtosatti@redhat.com> In-Reply-To: <2e085c19aac78e6c4335eac4fffeb5cfca4bbb26.1272304746.git.mtosatti@redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: [Qemu-devel] Re: [PATCH 10/10] introduce qemu_ram_map List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Marcelo Tosatti Cc: Anthony Liguori , Cam Macdonell , qemu-devel@nongnu.org, kvm@vger.kernel.org On 04/26/2010 12:59 PM, Marcelo Tosatti wrote: > Which allows drivers to register an mmaped region into ram block mappings. > To be used by device assignment driver. > > This is not kvm specific and not required by this pull request so it shouldn't really be part of the pull. Something like this should only be added when there's an actual consumer. Regards, Anthony Liguori > CC: Cam Macdonell > Signed-off-by: Marcelo Tosatti > --- > cpu-common.h | 1 + > exec.c | 28 ++++++++++++++++++++++++++++ > 2 files changed, 29 insertions(+), 0 deletions(-) > > diff --git a/cpu-common.h b/cpu-common.h > index b24cecc..2dfde6f 100644 > --- a/cpu-common.h > +++ b/cpu-common.h > @@ -40,6 +40,7 @@ static inline void cpu_register_physical_memory(target_phys_addr_t start_addr, > } > > ram_addr_t cpu_get_physical_page_desc(target_phys_addr_t addr); > +ram_addr_t qemu_ram_map(ram_addr_t size, void *host); > ram_addr_t qemu_ram_alloc(ram_addr_t); > void qemu_ram_free(ram_addr_t addr); > /* This should only be used for ram local to a device. */ > diff --git a/exec.c b/exec.c > index 14d1fd7..648a9c9 100644 > --- a/exec.c > +++ b/exec.c > @@ -2789,6 +2789,34 @@ static void *file_ram_alloc(ram_addr_t memory, const char *path) > } > #endif > > +ram_addr_t qemu_ram_map(ram_addr_t size, void *host) > +{ > + RAMBlock *new_block; > + > + size = TARGET_PAGE_ALIGN(size); > + new_block = qemu_malloc(sizeof(*new_block)); > + > + new_block->host = host; > + > + new_block->offset = last_ram_offset; > + new_block->length = size; > + > + new_block->next = ram_blocks; > + ram_blocks = new_block; > + > + phys_ram_dirty = qemu_realloc(phys_ram_dirty, > + (last_ram_offset + size)>> TARGET_PAGE_BITS); > + memset(phys_ram_dirty + (last_ram_offset>> TARGET_PAGE_BITS), > + 0xff, size>> TARGET_PAGE_BITS); > + > + last_ram_offset += size; > + > + if (kvm_enabled()) > + kvm_setup_guest_memory(new_block->host, size); > + > + return new_block->offset; > +} > + > ram_addr_t qemu_ram_alloc(ram_addr_t size) > { > RAMBlock *new_block; >