qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Stefan Weil <weil@mail.berlios.de>
To: QEMU Developers <qemu-devel@nongnu.org>
Cc: Anthony PERARD <anthony.perard@citrix.com>,
	Alexander Graf <agraf@suse.de>
Subject: [Qemu-devel] [PATCH] xen: Use conditional compilation for xen map cache (fixes w32 builds)
Date: Wed, 18 May 2011 19:40:41 +0200	[thread overview]
Message-ID: <1305740441-17485-1-git-send-email-weil@mail.berlios.de> (raw)

The current implementation used stubs for systems without XEN.
This is unusual for QEMU and adds unneeded dependencies.

MinGW32 for example does not provide munmap(), so the XEN
code creates compiler warnings (missing prototype).
Compilations without optimisation even result in linker
errors (missing function).

Fix this by using conditional compilation.

Cc: Anthony PERARD <anthony.perard@citrix.com>
Cc: Alexander Graf <agraf@suse.de>
Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
 exec.c |   22 +++++++++++++++++++---
 1 files changed, 19 insertions(+), 3 deletions(-)

diff --git a/exec.c b/exec.c
index a6df2d6..7075e98 100644
--- a/exec.c
+++ b/exec.c
@@ -31,6 +31,7 @@
 #include "hw/hw.h"
 #include "hw/qdev.h"
 #include "osdep.h"
+#include "trace.h"
 #include "kvm.h"
 #include "hw/xen.h"
 #include "qemu-timer.h"
@@ -53,8 +54,10 @@
 #endif
 #endif
 #else /* !CONFIG_USER_ONLY */
+#if defined(CONFIG_XEN_MAPCACHE)
 #include "xen-mapcache.h"
 #endif
+#endif
 
 //#define DEBUG_TB_INVALIDATE
 //#define DEBUG_FLUSH
@@ -2914,12 +2917,14 @@ ram_addr_t qemu_ram_alloc_from_ptr(DeviceState *dev, const char *name,
             new_block->host = mmap((void*)0x1000000, size,
                                    PROT_EXEC|PROT_READ|PROT_WRITE,
                                    MAP_SHARED | MAP_ANONYMOUS, -1, 0);
-#else
+#elif defined(CONFIG_XEN_MAPCACHE)
             if (xen_mapcache_enabled()) {
                 xen_ram_alloc(new_block->offset, size);
             } else {
                 new_block->host = qemu_vmalloc(size);
             }
+#else
+            new_block->host = qemu_vmalloc(size);
 #endif
             qemu_madvise(new_block->host, size, QEMU_MADV_MERGEABLE);
         }
@@ -2967,12 +2972,14 @@ void qemu_ram_free(ram_addr_t addr)
             } else {
 #if defined(TARGET_S390X) && defined(CONFIG_KVM)
                 munmap(block->host, block->length);
-#else
+#elif defined(CONFIG_XEN_MAPCACHE)
                 if (xen_mapcache_enabled()) {
                     qemu_invalidate_entry(block->host);
                 } else {
                     qemu_vfree(block->host);
                 }
+#else
+                qemu_vfree(block->host);
 #endif
             }
             qemu_free(block);
@@ -3061,6 +3068,7 @@ void *qemu_get_ram_ptr(ram_addr_t addr)
                 QLIST_REMOVE(block, next);
                 QLIST_INSERT_HEAD(&ram_list.blocks, block, next);
             }
+#if defined(CONFIG_XEN_MAPCACHE)
             if (xen_mapcache_enabled()) {
                 /* We need to check if the requested address is in the RAM
                  * because we don't want to map the entire memory in QEMU.
@@ -3071,6 +3079,7 @@ void *qemu_get_ram_ptr(ram_addr_t addr)
                     block->host = xen_map_block(block->offset, block->length);
                 }
             }
+#endif
             return block->host + (addr - block->offset);
         }
     }
@@ -3090,6 +3099,7 @@ void *qemu_safe_ram_ptr(ram_addr_t addr)
 
     QLIST_FOREACH(block, &ram_list.blocks, next) {
         if (addr - block->offset < block->length) {
+#if defined(CONFIG_XEN_MAPCACHE)
             if (xen_mapcache_enabled()) {
                 /* We need to check if the requested address is in the RAM
                  * because we don't want to map the entire memory in QEMU.
@@ -3100,6 +3110,7 @@ void *qemu_safe_ram_ptr(ram_addr_t addr)
                     block->host = xen_map_block(block->offset, block->length);
                 }
             }
+#endif
             return block->host + (addr - block->offset);
         }
     }
@@ -3113,7 +3124,7 @@ void *qemu_safe_ram_ptr(ram_addr_t addr)
 void qemu_put_ram_ptr(void *addr)
 {
     trace_qemu_put_ram_ptr(addr);
-
+#if defined(CONFIG_XEN_MAPCACHE)
     if (xen_mapcache_enabled()) {
         RAMBlock *block;
 
@@ -3129,6 +3140,7 @@ void qemu_put_ram_ptr(void *addr)
             qemu_map_cache_unlock(addr);
         }
     }
+#endif
 }
 
 int qemu_ram_addr_from_host(void *ptr, ram_addr_t *ram_addr)
@@ -3147,10 +3159,12 @@ int qemu_ram_addr_from_host(void *ptr, ram_addr_t *ram_addr)
         }
     }
 
+#if defined(CONFIG_XEN_MAPCACHE)
     if (xen_mapcache_enabled()) {
         *ram_addr = qemu_ram_addr_from_mapcache(ptr);
         return 0;
     }
+#endif
 
     return -1;
 }
@@ -4059,6 +4073,7 @@ void cpu_physical_memory_unmap(void *buffer, target_phys_addr_t len,
                 access_len -= l;
             }
         }
+#if defined(CONFIG_XEN_MAPCACHE)
         if (xen_mapcache_enabled()) {
             uint8_t *buffer1 = buffer;
             uint8_t *end_buffer = buffer + len;
@@ -4068,6 +4083,7 @@ void cpu_physical_memory_unmap(void *buffer, target_phys_addr_t len,
                 buffer1 += TARGET_PAGE_SIZE;
             }
         }
+#endif
         return;
     }
     if (is_write) {
-- 
1.7.0.4

             reply	other threads:[~2011-05-18 17:40 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-05-18 17:40 Stefan Weil [this message]
2011-05-18 18:02 ` [Qemu-devel] [PATCH] xen: Use conditional compilation for xen map cache (fixes w32 builds) Jan Kiszka
2011-05-18 18:58   ` Stefan Weil
2011-05-18 19:16     ` Jan Kiszka
2011-05-18 18:27 ` Stefano Stabellini
2011-05-19 14:22   ` Alexander Graf
2011-05-19 17:22     ` Stefano Stabellini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1305740441-17485-1-git-send-email-weil@mail.berlios.de \
    --to=weil@mail.berlios.de \
    --cc=agraf@suse.de \
    --cc=anthony.perard@citrix.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).