From patchwork Sun Dec 18 15:32:47 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Avi Kivity X-Patchwork-Id: 132092 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [140.186.70.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 4CFB7B6FE1 for ; Mon, 19 Dec 2011 02:33:34 +1100 (EST) Received: from localhost ([::1]:51543 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RcIjy-0002lk-Sc for incoming@patchwork.ozlabs.org; Sun, 18 Dec 2011 10:33:30 -0500 Received: from eggs.gnu.org ([140.186.70.92]:36926) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RcIjl-0002ec-Pt for qemu-devel@nongnu.org; Sun, 18 Dec 2011 10:33:19 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RcIjj-00039e-Uy for qemu-devel@nongnu.org; Sun, 18 Dec 2011 10:33:17 -0500 Received: from mx1.redhat.com ([209.132.183.28]:59477) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RcIjj-00039K-LC for qemu-devel@nongnu.org; Sun, 18 Dec 2011 10:33:15 -0500 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id pBIFXBxh026579 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Sun, 18 Dec 2011 10:33:11 -0500 Received: from cleopatra.tlv.redhat.com (cleopatra.tlv.redhat.com [10.35.255.11]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id pBIFXAtd013156; Sun, 18 Dec 2011 10:33:10 -0500 Received: from s01.tlv.redhat.com (s01.tlv.redhat.com [10.35.255.8]) by cleopatra.tlv.redhat.com (Postfix) with ESMTP id 89988250B9F; Sun, 18 Dec 2011 17:33:04 +0200 (IST) From: Avi Kivity To: Stefano Stabellini Date: Sun, 18 Dec 2011 17:32:47 +0200 Message-Id: <1324222368-25156-2-git-send-email-avi@redhat.com> In-Reply-To: <1324222368-25156-1-git-send-email-avi@redhat.com> References: <1324222368-25156-1-git-send-email-avi@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 209.132.183.28 Cc: xen-devel@lists.xensource.com, qemu-devel@nongnu.org Subject: [Qemu-devel] [PATCH 1/2] memory, xen: pass MemoryRegion to xen_ram_alloc() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Currently xen_ram_alloc() relies on ram_addr, which is going away. Give it something else to use as a cookie. Signed-off-by: Avi Kivity --- exec-obsolete.h | 7 +++++-- exec.c | 10 ++++++---- hw/xen.h | 4 +++- memory.c | 6 +++--- xen-all.c | 2 +- xen-stub.c | 3 ++- 6 files changed, 20 insertions(+), 12 deletions(-) diff --git a/exec-obsolete.h b/exec-obsolete.h index bf0dea5..1d0b610 100644 --- a/exec-obsolete.h +++ b/exec-obsolete.h @@ -25,9 +25,12 @@ #ifndef CONFIG_USER_ONLY +#include "memory.h" + ram_addr_t qemu_ram_alloc_from_ptr(DeviceState *dev, const char *name, - ram_addr_t size, void *host); -ram_addr_t qemu_ram_alloc(DeviceState *dev, const char *name, ram_addr_t size); + ram_addr_t size, void *host, MemoryRegion *mr); +ram_addr_t qemu_ram_alloc(DeviceState *dev, const char *name, ram_addr_t size, + MemoryRegion *mr); void qemu_ram_free(ram_addr_t addr); void qemu_ram_free_from_ptr(ram_addr_t addr); diff --git a/exec.c b/exec.c index 8fbf7e4..05336a5 100644 --- a/exec.c +++ b/exec.c @@ -2918,7 +2918,8 @@ static ram_addr_t last_ram_offset(void) } ram_addr_t qemu_ram_alloc_from_ptr(DeviceState *dev, const char *name, - ram_addr_t size, void *host) + ram_addr_t size, void *host, + MemoryRegion *mr) { RAMBlock *new_block, *block; @@ -2974,7 +2975,7 @@ ram_addr_t qemu_ram_alloc_from_ptr(DeviceState *dev, const char *name, } #else if (xen_enabled()) { - xen_ram_alloc(new_block->offset, size); + xen_ram_alloc(new_block->offset, size, mr); } else { new_block->host = qemu_vmalloc(size); } @@ -2997,9 +2998,10 @@ ram_addr_t qemu_ram_alloc_from_ptr(DeviceState *dev, const char *name, return new_block->offset; } -ram_addr_t qemu_ram_alloc(DeviceState *dev, const char *name, ram_addr_t size) +ram_addr_t qemu_ram_alloc(DeviceState *dev, const char *name, ram_addr_t size, + MemoryRegion *mr) { - return qemu_ram_alloc_from_ptr(dev, name, size, NULL); + return qemu_ram_alloc_from_ptr(dev, name, size, NULL, mr); } void qemu_ram_free_from_ptr(ram_addr_t addr) diff --git a/hw/xen.h b/hw/xen.h index 2162111..f9f66e8 100644 --- a/hw/xen.h +++ b/hw/xen.h @@ -44,7 +44,9 @@ void xen_vcpu_init(void); void xenstore_store_pv_console_info(int i, struct CharDriverState *chr); #if defined(NEED_CPU_H) && !defined(CONFIG_USER_ONLY) -void xen_ram_alloc(ram_addr_t ram_addr, ram_addr_t size); +struct MemoryRegion; +void xen_ram_alloc(ram_addr_t ram_addr, ram_addr_t size, + struct MemoryRegion *mr); #endif #if defined(CONFIG_XEN) && CONFIG_XEN_CTRL_INTERFACE_VERSION < 400 diff --git a/memory.c b/memory.c index d2ba9c4..cbd6988 100644 --- a/memory.c +++ b/memory.c @@ -985,7 +985,7 @@ void memory_region_init_ram(MemoryRegion *mr, memory_region_init(mr, name, size); mr->terminates = true; mr->destructor = memory_region_destructor_ram; - mr->ram_addr = qemu_ram_alloc(dev, name, size); + mr->ram_addr = qemu_ram_alloc(dev, name, size, mr); mr->backend_registered = true; } @@ -998,7 +998,7 @@ void memory_region_init_ram_ptr(MemoryRegion *mr, memory_region_init(mr, name, size); mr->terminates = true; mr->destructor = memory_region_destructor_ram_from_ptr; - mr->ram_addr = qemu_ram_alloc_from_ptr(dev, name, size, ptr); + mr->ram_addr = qemu_ram_alloc_from_ptr(dev, name, size, ptr, mr); mr->backend_registered = true; } @@ -1025,7 +1025,7 @@ void memory_region_init_rom_device(MemoryRegion *mr, mr->opaque = opaque; mr->terminates = true; mr->destructor = memory_region_destructor_rom_device; - mr->ram_addr = qemu_ram_alloc(dev, name, size); + mr->ram_addr = qemu_ram_alloc(dev, name, size, mr); mr->ram_addr |= cpu_register_io_memory(memory_region_read_thunk, memory_region_write_thunk, mr, diff --git a/xen-all.c b/xen-all.c index b5e28ab..b441fc1 100644 --- a/xen-all.c +++ b/xen-all.c @@ -181,7 +181,7 @@ static void xen_ram_init(ram_addr_t ram_size) } } -void xen_ram_alloc(ram_addr_t ram_addr, ram_addr_t size) +void xen_ram_alloc(ram_addr_t ram_addr, ram_addr_t size, MemoryRegion *mr) { unsigned long nr_pfn; xen_pfn_t *pfn_list; diff --git a/xen-stub.c b/xen-stub.c index efe2ab5..5fa400f 100644 --- a/xen-stub.c +++ b/xen-stub.c @@ -8,6 +8,7 @@ #include "qemu-common.h" #include "hw/xen.h" +#include "memory.h" void xenstore_store_pv_console_info(int i, CharDriverState *chr) { @@ -30,7 +31,7 @@ void xen_cmos_set_s3_resume(void *opaque, int irq, int level) { } -void xen_ram_alloc(ram_addr_t ram_addr, ram_addr_t size) +void xen_ram_alloc(ram_addr_t ram_addr, ram_addr_t size, MemoryRegion *mr) { }