[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH RFC 1/8] exec: Fix Xen RAM allocation with unusu
From: |
Stefano Stabellini |
Subject: |
Re: [Qemu-devel] [PATCH RFC 1/8] exec: Fix Xen RAM allocation with unusual options |
Date: |
Thu, 13 Jun 2013 12:54:45 +0100 |
User-agent: |
Alpine 2.02 (DEB 1266 2009-07-14) |
On Thu, 13 Jun 2013, Markus Armbruster wrote:
> Issues:
>
> * We try to obey -mem-path even though it can't work with Xen.
>
> * To implement -machine mem-merge, we call
> memory_try_enable_merging(new_block->host, size). But with Xen,
> new_block->host remains null. Oops.
>
> Fix by separating Xen allocation from normal allocation.
>
> Signed-off-by: Markus Armbruster <address@hidden>
Acked-by: Stefano Stabellini <address@hidden>
> exec.c | 20 ++++++++++++--------
> 1 file changed, 12 insertions(+), 8 deletions(-)
>
> diff --git a/exec.c b/exec.c
> index 5b8b40d..b424e12 100644
> --- a/exec.c
> +++ b/exec.c
> @@ -1081,6 +1081,12 @@ ram_addr_t qemu_ram_alloc_from_ptr(ram_addr_t size,
> void *host,
> if (host) {
> new_block->host = host;
> new_block->flags |= RAM_PREALLOC_MASK;
> + } else if (xen_enabled()) {
> + if (mem_path) {
> + fprintf(stderr, "-mem-path not supported with Xen\n");
> + exit(1);
> + }
> + xen_ram_alloc(new_block->offset, size, mr);
> } else {
> if (mem_path) {
> #if defined (__linux__) && !defined(TARGET_S390X)
> @@ -1094,9 +1100,7 @@ ram_addr_t qemu_ram_alloc_from_ptr(ram_addr_t size,
> void *host,
> exit(1);
> #endif
> } else {
> - if (xen_enabled()) {
> - xen_ram_alloc(new_block->offset, size, mr);
> - } else if (kvm_enabled()) {
> + if (kvm_enabled()) {
> /* some s390/kvm configurations have special constraints */
> new_block->host = kvm_ram_alloc(size);
> } else {
> @@ -1174,6 +1178,8 @@ void qemu_ram_free(ram_addr_t addr)
> ram_list.version++;
> if (block->flags & RAM_PREALLOC_MASK) {
> ;
> + } else if (xen_enabled()) {
> + xen_invalidate_map_cache_entry(block->host);
> } else if (mem_path) {
> #if defined (__linux__) && !defined(TARGET_S390X)
> if (block->fd) {
> @@ -1186,11 +1192,7 @@ void qemu_ram_free(ram_addr_t addr)
> abort();
> #endif
> } else {
> - if (xen_enabled()) {
> - xen_invalidate_map_cache_entry(block->host);
> - } else {
> - qemu_anon_ram_free(block->host, block->length);
> - }
> + qemu_anon_ram_free(block->host, block->length);
> }
> g_free(block);
> break;
> @@ -1214,6 +1216,8 @@ void qemu_ram_remap(ram_addr_t addr, ram_addr_t length)
> vaddr = block->host + offset;
> if (block->flags & RAM_PREALLOC_MASK) {
> ;
> + } else if (xen_enabled()) {
> + abort();
> } else {
> flags = MAP_FIXED;
> munmap(vaddr, length);
> --
> 1.7.11.7
>
- [Qemu-devel] [PATCH RFC 0/8] Guest memory allocation fixes & cleanup, Markus Armbruster, 2013/06/13
- [Qemu-devel] [PATCH RFC 2/8] exec: Clean up fall back when -mem-path allocation fails, Markus Armbruster, 2013/06/13
- [Qemu-devel] [PATCH RFC 3/8] exec: Reduce ifdeffery around -mem-path, Markus Armbruster, 2013/06/13
- [Qemu-devel] [PATCH RFC 6/8] exec: Clean up unnecessary S390 ifdeffery, Markus Armbruster, 2013/06/13
- [Qemu-devel] [PATCH RFC 1/8] exec: Fix Xen RAM allocation with unusual options, Markus Armbruster, 2013/06/13
- Re: [Qemu-devel] [PATCH RFC 1/8] exec: Fix Xen RAM allocation with unusual options,
Stefano Stabellini <=
- [Qemu-devel] [PATCH RFC 4/8] s390: Simplify the RAM allocation hook, Markus Armbruster, 2013/06/13
- [Qemu-devel] [PATCH RFC 8/8] pc_sysfw: Fix ISA BIOS init for ridiculously big flash, Markus Armbruster, 2013/06/13
- [Qemu-devel] [PATCH RFC 7/8] exec: Don't abort when we can't allocate guest memory, Markus Armbruster, 2013/06/13