[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 1/2] memory, xen: pass MemoryRegion to xen_ram_alloc()
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 <avi@xxxxxxxxxx> --- 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) { } -- 1.7.7.1 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |