* [Qemu-devel] [PULL 0/5] Xen patch queue 2011-07-23
@ 2011-07-22 12:43 Alexander Graf
2011-07-22 12:43 ` [Qemu-devel] [PATCH 1/5] xen: introduce xen_change_state_handler Alexander Graf
` (4 more replies)
0 siblings, 5 replies; 6+ messages in thread
From: Alexander Graf @ 2011-07-22 12:43 UTC (permalink / raw)
To: QEMU-devel Developers; +Cc: Anthony Liguori
Hi Anthony,
This is a rebase of the last xen-next pull request, this time without the
xen-mapcache build breakage fix, as that's been fixed meanwhile.
Please pull.
Alex
The following changes since commit 1167bfd63d983eaa4816ee0edb185f98ff070d6d:
Anthony Liguori (1):
Open 1.0 development branch.
are available in the git repository at:
git://repo.or.cz/qemu/agraf.git xen-next
Alexander Graf (2):
xen: remove CONFIG_XEN_MAPCACHE
xen: make xen_enabled even more clever
Anthony PERARD (3):
xen: introduce xen_change_state_handler
xen: Fix xen_enabled().
exec.c: Use ram_addr_t in cpu_physical_memory_rw(...).
configure | 8 +++++---
exec.c | 4 ++--
hw/xen.h | 2 +-
xen-all.c | 25 ++++++++++++++++++-------
4 files changed, 26 insertions(+), 13 deletions(-)
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Qemu-devel] [PATCH 1/5] xen: introduce xen_change_state_handler
2011-07-22 12:43 [Qemu-devel] [PULL 0/5] Xen patch queue 2011-07-23 Alexander Graf
@ 2011-07-22 12:43 ` Alexander Graf
2011-07-22 12:43 ` [Qemu-devel] [PATCH 2/5] xen: Fix xen_enabled() Alexander Graf
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Alexander Graf @ 2011-07-22 12:43 UTC (permalink / raw)
To: QEMU-devel Developers; +Cc: Anthony PERARD, Anthony Liguori, Stefano Stabellini
From: Anthony PERARD <anthony.perard@citrix.com>
Remove the call to xenstore_record_dm_state from xen_main_loop_prepare
that is HVM specific.
Add a new vm_change_state_handler shared between xen_pv and xen_hvm
machines to record the VM state to xenstore.
Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
xen-all.c | 25 ++++++++++++++++++-------
1 files changed, 18 insertions(+), 7 deletions(-)
diff --git a/xen-all.c b/xen-all.c
index 167bed6..83c5476 100644
--- a/xen-all.c
+++ b/xen-all.c
@@ -797,12 +797,17 @@ void xenstore_store_pv_console_info(int i, CharDriverState *chr)
}
}
-static void xenstore_record_dm_state(XenIOState *s, const char *state)
+static void xenstore_record_dm_state(struct xs_handle *xs, const char *state)
{
char path[50];
+ if (xs == NULL) {
+ fprintf(stderr, "xenstore connection not initialized\n");
+ exit(1);
+ }
+
snprintf(path, sizeof (path), "/local/domain/0/device-model/%u/state", xen_domid);
- if (!xs_write(s->xenstore, XBT_NULL, path, state, strlen(state))) {
+ if (!xs_write(xs, XBT_NULL, path, state, strlen(state))) {
fprintf(stderr, "error recording dm state\n");
exit(1);
}
@@ -823,15 +828,20 @@ static void xen_main_loop_prepare(XenIOState *state)
if (evtchn_fd != -1) {
qemu_set_fd_handler(evtchn_fd, cpu_handle_ioreq, NULL, state);
}
-
- /* record state running */
- xenstore_record_dm_state(state, "running");
}
/* Initialise Xen */
-static void xen_vm_change_state_handler(void *opaque, int running, int reason)
+static void xen_change_state_handler(void *opaque, int running, int reason)
+{
+ if (running) {
+ /* record state running */
+ xenstore_record_dm_state(xenstore, "running");
+ }
+}
+
+static void xen_hvm_change_state_handler(void *opaque, int running, int reason)
{
XenIOState *state = opaque;
if (running) {
@@ -854,6 +864,7 @@ int xen_init(void)
xen_be_printf(NULL, 0, "can't open xen interface\n");
return -1;
}
+ qemu_add_vm_change_state_handler(xen_change_state_handler, NULL);
return 0;
}
@@ -915,7 +926,7 @@ int xen_hvm_init(void)
xen_map_cache_init();
xen_ram_init(ram_size);
- qemu_add_vm_change_state_handler(xen_vm_change_state_handler, state);
+ qemu_add_vm_change_state_handler(xen_hvm_change_state_handler, state);
state->client = xen_cpu_phys_memory_client;
QLIST_INIT(&state->physmap);
--
1.6.0.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Qemu-devel] [PATCH 2/5] xen: Fix xen_enabled().
2011-07-22 12:43 [Qemu-devel] [PULL 0/5] Xen patch queue 2011-07-23 Alexander Graf
2011-07-22 12:43 ` [Qemu-devel] [PATCH 1/5] xen: introduce xen_change_state_handler Alexander Graf
@ 2011-07-22 12:43 ` Alexander Graf
2011-07-22 12:43 ` [Qemu-devel] [PATCH 3/5] exec.c: Use ram_addr_t in cpu_physical_memory_rw(...) Alexander Graf
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Alexander Graf @ 2011-07-22 12:43 UTC (permalink / raw)
To: QEMU-devel Developers; +Cc: Anthony PERARD, Anthony Liguori
From: Anthony PERARD <anthony.perard@citrix.com>
Use the "host" CONFIG_ define instead of the "target" one.
Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Acked-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
hw/xen.h | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/hw/xen.h b/hw/xen.h
index e432705..43b95d6 100644
--- a/hw/xen.h
+++ b/hw/xen.h
@@ -24,7 +24,7 @@ extern int xen_allowed;
static inline int xen_enabled(void)
{
-#ifdef CONFIG_XEN
+#ifdef CONFIG_XEN_BACKEND
return xen_allowed;
#else
return 0;
--
1.6.0.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Qemu-devel] [PATCH 3/5] exec.c: Use ram_addr_t in cpu_physical_memory_rw(...).
2011-07-22 12:43 [Qemu-devel] [PULL 0/5] Xen patch queue 2011-07-23 Alexander Graf
2011-07-22 12:43 ` [Qemu-devel] [PATCH 1/5] xen: introduce xen_change_state_handler Alexander Graf
2011-07-22 12:43 ` [Qemu-devel] [PATCH 2/5] xen: Fix xen_enabled() Alexander Graf
@ 2011-07-22 12:43 ` Alexander Graf
2011-07-22 12:43 ` [Qemu-devel] [PATCH 4/5] xen: remove CONFIG_XEN_MAPCACHE Alexander Graf
2011-07-22 12:43 ` [Qemu-devel] [PATCH 5/5] xen: make xen_enabled even more clever Alexander Graf
4 siblings, 0 replies; 6+ messages in thread
From: Alexander Graf @ 2011-07-22 12:43 UTC (permalink / raw)
To: QEMU-devel Developers; +Cc: Anthony PERARD, Anthony Liguori
From: Anthony PERARD <anthony.perard@citrix.com>
As the variable pd and addr1 inside the function cpu_physical_memory_rw
are mean to handle a RAM address, they should be of the ram_addr_t type
instead of unsigned long.
Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Acked-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
exec.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/exec.c b/exec.c
index 2160ded..0393d39 100644
--- a/exec.c
+++ b/exec.c
@@ -3858,7 +3858,7 @@ void cpu_physical_memory_rw(target_phys_addr_t addr, uint8_t *buf,
uint8_t *ptr;
uint32_t val;
target_phys_addr_t page;
- unsigned long pd;
+ ram_addr_t pd;
PhysPageDesc *p;
while (len > 0) {
@@ -3898,7 +3898,7 @@ void cpu_physical_memory_rw(target_phys_addr_t addr, uint8_t *buf,
l = 1;
}
} else {
- unsigned long addr1;
+ ram_addr_t addr1;
addr1 = (pd & TARGET_PAGE_MASK) + (addr & ~TARGET_PAGE_MASK);
/* RAM case */
ptr = qemu_get_ram_ptr(addr1);
--
1.6.0.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Qemu-devel] [PATCH 4/5] xen: remove CONFIG_XEN_MAPCACHE
2011-07-22 12:43 [Qemu-devel] [PULL 0/5] Xen patch queue 2011-07-23 Alexander Graf
` (2 preceding siblings ...)
2011-07-22 12:43 ` [Qemu-devel] [PATCH 3/5] exec.c: Use ram_addr_t in cpu_physical_memory_rw(...) Alexander Graf
@ 2011-07-22 12:43 ` Alexander Graf
2011-07-22 12:43 ` [Qemu-devel] [PATCH 5/5] xen: make xen_enabled even more clever Alexander Graf
4 siblings, 0 replies; 6+ messages in thread
From: Alexander Graf @ 2011-07-22 12:43 UTC (permalink / raw)
To: QEMU-devel Developers; +Cc: Anthony Liguori
We were still exporting CONFIG_XEN_MAPCACHE, even though it's completely
unused by now. Remove it.
Signed-off-by: Alexander Graf <agraf@suse.de>
---
configure | 3 ---
1 files changed, 0 insertions(+), 3 deletions(-)
diff --git a/configure b/configure
index 6911c3b..90fe09f 100755
--- a/configure
+++ b/configure
@@ -3277,9 +3277,6 @@ case "$target_arch2" in
if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
target_phys_bits=64
echo "CONFIG_XEN=y" >> $config_target_mak
- if test "$cpu" = "i386" -o "$cpu" = "x86_64"; then
- echo "CONFIG_XEN_MAPCACHE=y" >> $config_target_mak
- fi
fi
esac
case "$target_arch2" in
--
1.6.0.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Qemu-devel] [PATCH 5/5] xen: make xen_enabled even more clever
2011-07-22 12:43 [Qemu-devel] [PULL 0/5] Xen patch queue 2011-07-23 Alexander Graf
` (3 preceding siblings ...)
2011-07-22 12:43 ` [Qemu-devel] [PATCH 4/5] xen: remove CONFIG_XEN_MAPCACHE Alexander Graf
@ 2011-07-22 12:43 ` Alexander Graf
4 siblings, 0 replies; 6+ messages in thread
From: Alexander Graf @ 2011-07-22 12:43 UTC (permalink / raw)
To: QEMU-devel Developers; +Cc: Anthony Liguori
When using xen_enabled() we're currently only checking if xen is enabled
at all during the build. But what if you want to build multiple targets
out of which only one can potentially run xen code?
That means that for generic code we'll still have to fall back to the
variable and potentially slow the code down, but it's not as important as
that is mostly xen device emulation which is not touched for non-xen targets.
The target specific code however can with this patch see that it's unable to
ever execute xen code. We can thus always return 0 on xen_enabled(), giving
gcc enough hints to evict the mapcache code from the target memory management
code.
Signed-off-by: Alexander Graf <agraf@suse.de>
Acked-by: Anthony PERARD <anthony.perard@citrix.com>
---
configure | 5 +++++
hw/xen.h | 2 +-
2 files changed, 6 insertions(+), 1 deletions(-)
diff --git a/configure b/configure
index 90fe09f..e5ecec9 100755
--- a/configure
+++ b/configure
@@ -3277,7 +3277,12 @@ case "$target_arch2" in
if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
target_phys_bits=64
echo "CONFIG_XEN=y" >> $config_target_mak
+ else
+ echo "CONFIG_NO_XEN=y" >> $config_target_mak
fi
+ ;;
+ *)
+ echo "CONFIG_NO_XEN=y" >> $config_target_mak
esac
case "$target_arch2" in
i386|x86_64|ppcemb|ppc|ppc64|s390x)
diff --git a/hw/xen.h b/hw/xen.h
index 43b95d6..2162111 100644
--- a/hw/xen.h
+++ b/hw/xen.h
@@ -24,7 +24,7 @@ extern int xen_allowed;
static inline int xen_enabled(void)
{
-#ifdef CONFIG_XEN_BACKEND
+#if defined(CONFIG_XEN_BACKEND) && !defined(CONFIG_NO_XEN)
return xen_allowed;
#else
return 0;
--
1.6.0.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
end of thread, other threads:[~2011-07-23 20:27 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-07-22 12:43 [Qemu-devel] [PULL 0/5] Xen patch queue 2011-07-23 Alexander Graf
2011-07-22 12:43 ` [Qemu-devel] [PATCH 1/5] xen: introduce xen_change_state_handler Alexander Graf
2011-07-22 12:43 ` [Qemu-devel] [PATCH 2/5] xen: Fix xen_enabled() Alexander Graf
2011-07-22 12:43 ` [Qemu-devel] [PATCH 3/5] exec.c: Use ram_addr_t in cpu_physical_memory_rw(...) Alexander Graf
2011-07-22 12:43 ` [Qemu-devel] [PATCH 4/5] xen: remove CONFIG_XEN_MAPCACHE Alexander Graf
2011-07-22 12:43 ` [Qemu-devel] [PATCH 5/5] xen: make xen_enabled even more clever Alexander Graf
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).