[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v4 6/7] exec: add qemu_ram_unmap_hva() API for unmap
From: |
Igor Mammedov |
Subject: |
[Qemu-devel] [PATCH v4 6/7] exec: add qemu_ram_unmap_hva() API for unmapping memory from HVA area |
Date: |
Thu, 9 Jul 2015 13:47:23 +0200 |
it will allow to return atomically return RAMBlock's host
address range into continuos HVA area so that no hole
would appear in there.
also mark RAMBlock with RAM_PREALLOC flag so it won't be
umapped as conventional memory by
reclaim_ramblock()->qemu_anon_ram_free()
Signed-off-by: Igor Mammedov <address@hidden>
---
v2:
* add madvise(DONTNEED) on unmapping
---
exec.c | 12 ++++++++++++
include/exec/cpu-common.h | 1 +
2 files changed, 13 insertions(+)
diff --git a/exec.c b/exec.c
index 08767ab..70ced86 100644
--- a/exec.c
+++ b/exec.c
@@ -1346,11 +1346,23 @@ void *qemu_ram_reserve_hva(ram_addr_t length)
MAP_NORESERVE | MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
}
+void qemu_ram_unmap_hva(ram_addr_t addr)
+{
+ RAMBlock *block = find_ram_block(addr);
+
+ assert(block);
+ mmap(block->host, block->used_length, PROT_NONE,
+ MAP_FIXED | MAP_NORESERVE | MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
+ qemu_madvise(block->host, block->used_length, QEMU_MADV_DONTNEED);
+}
+
void qemu_ram_remap_hva(ram_addr_t addr, void *new_hva)
{
RAMBlock *block = find_ram_block(addr);
assert(block);
+ assert(!(block->flags & RAM_PREALLOC));
+ block->flags |= RAM_PREALLOC;
block->host = mremap(block->host, block->used_length,
block->used_length,
MREMAP_MAYMOVE | MREMAP_FIXED, new_hva);
diff --git a/include/exec/cpu-common.h b/include/exec/cpu-common.h
index 301f50b..4da5cd7 100644
--- a/include/exec/cpu-common.h
+++ b/include/exec/cpu-common.h
@@ -64,6 +64,7 @@ typedef uint32_t CPUReadMemoryFunc(void *opaque, hwaddr addr);
void qemu_ram_remap(ram_addr_t addr, ram_addr_t length);
void *qemu_ram_reserve_hva(ram_addr_t length);
void qemu_ram_remap_hva(ram_addr_t addr, void *new_hva);
+void qemu_ram_unmap_hva(ram_addr_t addr);
/* This should not be used by devices. */
MemoryRegion *qemu_ram_addr_from_host(void *ptr, ram_addr_t *ram_addr);
void qemu_ram_set_idstr(ram_addr_t addr, const char *name, DeviceState *dev);
--
1.8.3.1
- Re: [Qemu-devel] [PATCH v4 4/7] pc: fix QEMU crashing when more than ~50 memory hotplugged, (continued)
- Re: [Qemu-devel] [PATCH v4 4/7] pc: fix QEMU crashing when more than ~50 memory hotplugged, Michael S. Tsirkin, 2015/07/09
- Re: [Qemu-devel] [PATCH v4 4/7] pc: fix QEMU crashing when more than ~50 memory hotplugged, Paolo Bonzini, 2015/07/09
- Re: [Qemu-devel] [PATCH v4 4/7] pc: fix QEMU crashing when more than ~50 memory hotplugged, Michael S. Tsirkin, 2015/07/09
- Re: [Qemu-devel] [PATCH v4 4/7] pc: fix QEMU crashing when more than ~50 memory hotplugged, Igor Mammedov, 2015/07/10
- Re: [Qemu-devel] [PATCH v4 4/7] pc: fix QEMU crashing when more than ~50 memory hotplugged, Michael S. Tsirkin, 2015/07/13
- Re: [Qemu-devel] [PATCH v4 4/7] pc: fix QEMU crashing when more than ~50 memory hotplugged, Igor Mammedov, 2015/07/13
- Re: [Qemu-devel] [PATCH v4 4/7] pc: fix QEMU crashing when more than ~50 memory hotplugged, Michael S. Tsirkin, 2015/07/13
- Re: [Qemu-devel] [PATCH v4 4/7] pc: fix QEMU crashing when more than ~50 memory hotplugged, Igor Mammedov, 2015/07/14
- Re: [Qemu-devel] [PATCH v4 4/7] pc: fix QEMU crashing when more than ~50 memory hotplugged, Michael S. Tsirkin, 2015/07/14
[Qemu-devel] [PATCH v4 3/7] pc: reserve hotpluggable memory range with memory_region_init_hva_range(), Igor Mammedov, 2015/07/09
[Qemu-devel] [PATCH v4 6/7] exec: add qemu_ram_unmap_hva() API for unmapping memory from HVA area,
Igor Mammedov <=
[Qemu-devel] [PATCH v4 2/7] memory: introduce MemoryRegion container with reserved HVA range, Igor Mammedov, 2015/07/09
[Qemu-devel] [PATCH v4 5/7] exec: make sure that RAMBlock descriptor won't be leaked, Igor Mammedov, 2015/07/09
[Qemu-devel] [PATCH v4 1/7] memory: get rid of memory_region_destructor_ram_from_ptr(), Igor Mammedov, 2015/07/09
[Qemu-devel] [PATCH v4 7/7] memory: add support for deleting HVA mapped MemoryRegion, Igor Mammedov, 2015/07/09
Re: [Qemu-devel] [PATCH v4 0/7] Fix QEMU crash during memory hotplug with vhost=on, Igor Mammedov, 2015/07/15