* [Qemu-devel] [PATCH RFC V2 0/6] Xen: introduce Xen PV target
@ 2014-01-27 12:01 Wei Liu
2014-01-27 12:01 ` [Qemu-devel] [PATCH RFC V2 1/6] configure: factor out list of supported Xen/KVM targets Wei Liu
` (5 more replies)
0 siblings, 6 replies; 10+ messages in thread
From: Wei Liu @ 2014-01-27 12:01 UTC (permalink / raw)
To: xen-devel, qemu-devel
Cc: anthony.perard, peter.maydell, pbonzini, Wei Liu,
stefano.stabellini
This is a prototype based on QEMU's master branch. In fact it's more or
less the same as the last version.
The first 3 patches refactor some code to disentangle Xen PV and HVM
guest in QEMU. They are quite safe to go in.
The 4th patch has the real meat. It introduces Xen PV target,
which contains basically a dummy CPU, then hooks up this Xen PV CPU to
QEMU internal structures.
The last patch introduces xenpv-softmmu, which contains *no* emulation
code. I know that in previous discussion people said that every device
emulation should be included if the target architecture is called null.
But since this target CPU is now called xenpv I don't feel obliged to
include any device emulation in this prototype anymore. :-)
Please note that the existing Xen QEMU build is not affected at all. You
can still use "--enable-xen --target-list=i386-softmmu" (or
x86_64-softmmu") to build qemu-system-{i386,x86_64} and use it for both
HVM and PV guest. This series adds another option to build QEMU with
"--enable-xen --target-list=xenpv-softmmu" and get a QEMU binary
tailored for Xen PV guest. The effect is that we reduce the binary size
from 14MB to 7.3MB.
Wei.
Changes in RFC V2:
* more refactoring
* include Paolo's patch to factor out list of Xen / KVM targets
Paolo Bonzini (1):
configure: factor out list of supported Xen/KVM targets
Wei Liu (5):
xen: move Xen PV machine files to hw/xenpv
xen: move Xen HVM files under hw/i386/xen
xen: factor out common functions
xen: implement Xen PV target
xen: introduce xenpv-softmmu.mak
Makefile.target | 6 +-
arch_init.c | 2 +
configure | 61 ++++++++++-------
cpu-exec.c | 2 +
default-configs/xenpv-softmmu.mak | 2 +
hw/i386/Makefile.objs | 2 +-
hw/i386/xen/Makefile.objs | 1 +
hw/{ => i386}/xen/xen_apic.c | 0
hw/{ => i386}/xen/xen_platform.c | 0
hw/{ => i386}/xen/xen_pvdevice.c | 0
hw/xen/Makefile.objs | 1 -
hw/xenpv/Makefile.objs | 2 +
hw/{i386 => xenpv}/xen_domainbuild.c | 0
hw/{i386 => xenpv}/xen_domainbuild.h | 0
hw/{i386 => xenpv}/xen_machine_pv.c | 0
include/sysemu/arch_init.h | 1 +
target-xenpv/Makefile.objs | 1 +
target-xenpv/cpu-qom.h | 64 ++++++++++++++++++
target-xenpv/cpu.h | 66 ++++++++++++++++++
target-xenpv/helper.c | 32 +++++++++
target-xenpv/translate.c | 27 ++++++++
xen-common-stub.c | 19 ++++++
xen-common.c | 123 ++++++++++++++++++++++++++++++++++
xen-stub.c => xen-hvm-stub.c | 18 ++---
xen-all.c => xen-hvm.c | 121 +++------------------------------
xen-mapcache-stub.c | 39 +++++++++++
26 files changed, 442 insertions(+), 148 deletions(-)
create mode 100644 default-configs/xenpv-softmmu.mak
create mode 100644 hw/i386/xen/Makefile.objs
rename hw/{ => i386}/xen/xen_apic.c (100%)
rename hw/{ => i386}/xen/xen_platform.c (100%)
rename hw/{ => i386}/xen/xen_pvdevice.c (100%)
create mode 100644 hw/xenpv/Makefile.objs
rename hw/{i386 => xenpv}/xen_domainbuild.c (100%)
rename hw/{i386 => xenpv}/xen_domainbuild.h (100%)
rename hw/{i386 => xenpv}/xen_machine_pv.c (100%)
create mode 100644 target-xenpv/Makefile.objs
create mode 100644 target-xenpv/cpu-qom.h
create mode 100644 target-xenpv/cpu.h
create mode 100644 target-xenpv/helper.c
create mode 100644 target-xenpv/helper.h
create mode 100644 target-xenpv/translate.c
create mode 100644 xen-common-stub.c
create mode 100644 xen-common.c
rename xen-stub.c => xen-hvm-stub.c (91%)
rename xen-all.c => xen-hvm.c (93%)
create mode 100644 xen-mapcache-stub.c
--
1.7.10.4
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Qemu-devel] [PATCH RFC V2 1/6] configure: factor out list of supported Xen/KVM targets
2014-01-27 12:01 [Qemu-devel] [PATCH RFC V2 0/6] Xen: introduce Xen PV target Wei Liu
@ 2014-01-27 12:01 ` Wei Liu
2014-01-27 12:01 ` [Qemu-devel] [PATCH RFC V2 2/6] xen: move Xen PV machine files to hw/xenpv Wei Liu
` (4 subsequent siblings)
5 siblings, 0 replies; 10+ messages in thread
From: Wei Liu @ 2014-01-27 12:01 UTC (permalink / raw)
To: xen-devel, qemu-devel
Cc: anthony.perard, peter.maydell, pbonzini, stefano.stabellini
From: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
configure | 58 +++++++++++++++++++++++++++++++++++-----------------------
1 file changed, 35 insertions(+), 23 deletions(-)
diff --git a/configure b/configure
index 07b6be3..549b9cc 100755
--- a/configure
+++ b/configure
@@ -4372,6 +4372,32 @@ if test "$linux" = "yes" ; then
fi
fi
+supported_kvm_target() {
+ test "$kvm" = "yes" || return 1
+ test "$target_softmmu" = "yes" || return 1
+ case "$target_name:$cpu" in
+ arm:arm | aarch64:aarch64 | \
+ i386:i386 | i386:x86_64 | x86_64:i386 | x86_64:x86_64 | \
+ ppc:ppc | ppcemb:ppc | ppc64:ppc | \
+ ppc:ppc64 | ppcemb:ppc64 | ppc64:ppc64 | \
+ s390x:s390x)
+ return 0
+ ;;
+ esac
+ return 1
+}
+
+supported_xen_target() {
+ test "$xen" = "yes" || return 1
+ test "$target_softmmu" = "yes" || return 1
+ case "$target_name:$cpu" in
+ i386:i386 | i386:x86_64 | x86_64:i386 | x86_64:x86_64)
+ return 0
+ ;;
+ esac
+ return 1
+}
+
for target in $target_list; do
target_dir="$target"
config_target_mak=$target_dir/config-target.mak
@@ -4538,34 +4564,20 @@ if [ "$TARGET_ABI_DIR" = "" ]; then
TARGET_ABI_DIR=$TARGET_ARCH
fi
echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
-case "$target_name" in
- i386|x86_64)
- if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
- echo "CONFIG_XEN=y" >> $config_target_mak
- if test "$xen_pci_passthrough" = yes; then
+
+if supported_xen_target; then
+ echo "CONFIG_XEN=y" >> $config_target_mak
+ if test "$xen_pci_passthrough" = yes; then
echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
- fi
fi
- ;;
- *)
-esac
-case "$target_name" in
- aarch64|arm|i386|x86_64|ppcemb|ppc|ppc64|s390x)
+fi
+if supported_kvm_target; then
# Make sure the target and host cpus are compatible
- if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
- \( "$target_name" = "$cpu" -o \
- \( "$target_name" = "ppcemb" -a "$cpu" = "ppc" \) -o \
- \( "$target_name" = "ppc64" -a "$cpu" = "ppc" \) -o \
- \( "$target_name" = "ppc" -a "$cpu" = "ppc64" \) -o \
- \( "$target_name" = "ppcemb" -a "$cpu" = "ppc64" \) -o \
- \( "$target_name" = "x86_64" -a "$cpu" = "i386" \) -o \
- \( "$target_name" = "i386" -a "$cpu" = "x86_64" \) \) ; then
- echo "CONFIG_KVM=y" >> $config_target_mak
- if test "$vhost_net" = "yes" ; then
+ echo "CONFIG_KVM=y" >> $config_target_mak
+ if test "$vhost_net" = "yes" ; then
echo "CONFIG_VHOST_NET=y" >> $config_target_mak
- fi
fi
-esac
+fi
if test "$target_bigendian" = "yes" ; then
echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
fi
--
1.7.10.4
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [Qemu-devel] [PATCH RFC V2 2/6] xen: move Xen PV machine files to hw/xenpv
2014-01-27 12:01 [Qemu-devel] [PATCH RFC V2 0/6] Xen: introduce Xen PV target Wei Liu
2014-01-27 12:01 ` [Qemu-devel] [PATCH RFC V2 1/6] configure: factor out list of supported Xen/KVM targets Wei Liu
@ 2014-01-27 12:01 ` Wei Liu
2014-01-27 12:01 ` [Qemu-devel] [PATCH RFC V2 3/6] xen: move Xen HVM files under hw/i386/xen Wei Liu
` (3 subsequent siblings)
5 siblings, 0 replies; 10+ messages in thread
From: Wei Liu @ 2014-01-27 12:01 UTC (permalink / raw)
To: xen-devel, qemu-devel
Cc: anthony.perard, peter.maydell, pbonzini, Wei Liu,
stefano.stabellini
Signed-off-by: Wei Liu <wei.liu2@citrix.com>
---
hw/i386/Makefile.objs | 2 +-
hw/xenpv/Makefile.objs | 2 ++
hw/{i386 => xenpv}/xen_domainbuild.c | 0
hw/{i386 => xenpv}/xen_domainbuild.h | 0
hw/{i386 => xenpv}/xen_machine_pv.c | 0
5 files changed, 3 insertions(+), 1 deletion(-)
create mode 100644 hw/xenpv/Makefile.objs
rename hw/{i386 => xenpv}/xen_domainbuild.c (100%)
rename hw/{i386 => xenpv}/xen_domainbuild.h (100%)
rename hw/{i386 => xenpv}/xen_machine_pv.c (100%)
diff --git a/hw/i386/Makefile.objs b/hw/i386/Makefile.objs
index 09ac433..0faccd7 100644
--- a/hw/i386/Makefile.objs
+++ b/hw/i386/Makefile.objs
@@ -2,7 +2,7 @@ obj-$(CONFIG_KVM) += kvm/
obj-y += multiboot.o smbios.o
obj-y += pc.o pc_piix.o pc_q35.o
obj-y += pc_sysfw.o
-obj-$(CONFIG_XEN) += xen_domainbuild.o xen_machine_pv.o
+obj-$(CONFIG_XEN) += ../xenpv/
obj-y += kvmvapic.o
obj-y += acpi-build.o
diff --git a/hw/xenpv/Makefile.objs b/hw/xenpv/Makefile.objs
new file mode 100644
index 0000000..49f6e9e
--- /dev/null
+++ b/hw/xenpv/Makefile.objs
@@ -0,0 +1,2 @@
+# Xen PV machine support
+obj-$(CONFIG_XEN) += xen_domainbuild.o xen_machine_pv.o
diff --git a/hw/i386/xen_domainbuild.c b/hw/xenpv/xen_domainbuild.c
similarity index 100%
rename from hw/i386/xen_domainbuild.c
rename to hw/xenpv/xen_domainbuild.c
diff --git a/hw/i386/xen_domainbuild.h b/hw/xenpv/xen_domainbuild.h
similarity index 100%
rename from hw/i386/xen_domainbuild.h
rename to hw/xenpv/xen_domainbuild.h
diff --git a/hw/i386/xen_machine_pv.c b/hw/xenpv/xen_machine_pv.c
similarity index 100%
rename from hw/i386/xen_machine_pv.c
rename to hw/xenpv/xen_machine_pv.c
--
1.7.10.4
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [Qemu-devel] [PATCH RFC V2 3/6] xen: move Xen HVM files under hw/i386/xen
2014-01-27 12:01 [Qemu-devel] [PATCH RFC V2 0/6] Xen: introduce Xen PV target Wei Liu
2014-01-27 12:01 ` [Qemu-devel] [PATCH RFC V2 1/6] configure: factor out list of supported Xen/KVM targets Wei Liu
2014-01-27 12:01 ` [Qemu-devel] [PATCH RFC V2 2/6] xen: move Xen PV machine files to hw/xenpv Wei Liu
@ 2014-01-27 12:01 ` Wei Liu
2014-01-27 12:01 ` [Qemu-devel] [PATCH RFC V2 4/6] xen: factor out common functions Wei Liu
` (2 subsequent siblings)
5 siblings, 0 replies; 10+ messages in thread
From: Wei Liu @ 2014-01-27 12:01 UTC (permalink / raw)
To: xen-devel, qemu-devel
Cc: anthony.perard, peter.maydell, pbonzini, Wei Liu,
stefano.stabellini
Signed-off-by: Wei Liu <wei.liu2@citrix.com>
---
hw/i386/Makefile.objs | 2 +-
hw/i386/xen/Makefile.objs | 1 +
hw/{ => i386}/xen/xen_apic.c | 0
hw/{ => i386}/xen/xen_platform.c | 0
hw/{ => i386}/xen/xen_pvdevice.c | 0
hw/xen/Makefile.objs | 1 -
6 files changed, 2 insertions(+), 2 deletions(-)
create mode 100644 hw/i386/xen/Makefile.objs
rename hw/{ => i386}/xen/xen_apic.c (100%)
rename hw/{ => i386}/xen/xen_platform.c (100%)
rename hw/{ => i386}/xen/xen_pvdevice.c (100%)
diff --git a/hw/i386/Makefile.objs b/hw/i386/Makefile.objs
index 0faccd7..77dcf06 100644
--- a/hw/i386/Makefile.objs
+++ b/hw/i386/Makefile.objs
@@ -2,7 +2,7 @@ obj-$(CONFIG_KVM) += kvm/
obj-y += multiboot.o smbios.o
obj-y += pc.o pc_piix.o pc_q35.o
obj-y += pc_sysfw.o
-obj-$(CONFIG_XEN) += ../xenpv/
+obj-$(CONFIG_XEN) += ../xenpv/ xen/
obj-y += kvmvapic.o
obj-y += acpi-build.o
diff --git a/hw/i386/xen/Makefile.objs b/hw/i386/xen/Makefile.objs
new file mode 100644
index 0000000..801a68d
--- /dev/null
+++ b/hw/i386/xen/Makefile.objs
@@ -0,0 +1 @@
+obj-y += xen_platform.o xen_apic.o xen_pvdevice.o
diff --git a/hw/xen/xen_apic.c b/hw/i386/xen/xen_apic.c
similarity index 100%
rename from hw/xen/xen_apic.c
rename to hw/i386/xen/xen_apic.c
diff --git a/hw/xen/xen_platform.c b/hw/i386/xen/xen_platform.c
similarity index 100%
rename from hw/xen/xen_platform.c
rename to hw/i386/xen/xen_platform.c
diff --git a/hw/xen/xen_pvdevice.c b/hw/i386/xen/xen_pvdevice.c
similarity index 100%
rename from hw/xen/xen_pvdevice.c
rename to hw/i386/xen/xen_pvdevice.c
diff --git a/hw/xen/Makefile.objs b/hw/xen/Makefile.objs
index ce640c6..a0ca0aa 100644
--- a/hw/xen/Makefile.objs
+++ b/hw/xen/Makefile.objs
@@ -1,6 +1,5 @@
# xen backend driver support
common-obj-$(CONFIG_XEN_BACKEND) += xen_backend.o xen_devconfig.o
-obj-$(CONFIG_XEN_I386) += xen_platform.o xen_apic.o xen_pvdevice.o
obj-$(CONFIG_XEN_PCI_PASSTHROUGH) += xen-host-pci-device.o
obj-$(CONFIG_XEN_PCI_PASSTHROUGH) += xen_pt.o xen_pt_config_init.o xen_pt_msi.o
--
1.7.10.4
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [Qemu-devel] [PATCH RFC V2 4/6] xen: factor out common functions
2014-01-27 12:01 [Qemu-devel] [PATCH RFC V2 0/6] Xen: introduce Xen PV target Wei Liu
` (2 preceding siblings ...)
2014-01-27 12:01 ` [Qemu-devel] [PATCH RFC V2 3/6] xen: move Xen HVM files under hw/i386/xen Wei Liu
@ 2014-01-27 12:01 ` Wei Liu
2014-01-27 12:01 ` [Qemu-devel] [PATCH RFC V2 5/6] xen: implement Xen PV target Wei Liu
2014-01-27 12:01 ` [Qemu-devel] [PATCH RFC V2 6/6] xen: introduce xenpv-softmmu.mak Wei Liu
5 siblings, 0 replies; 10+ messages in thread
From: Wei Liu @ 2014-01-27 12:01 UTC (permalink / raw)
To: xen-devel, qemu-devel
Cc: anthony.perard, peter.maydell, pbonzini, Wei Liu,
stefano.stabellini
So common functions used by both HVM and PV are factored out from
xen-all.c to xen-common.c.
Finally rename xen-all.c to xen-hvm.c, as those functions are only
useful to HVM guest.
Create *-stub files and modify Makefile.target to reflect the changes.
Signed-off-by: Wei Liu <wei.liu2@citrix.com>
---
Makefile.target | 6 ++-
xen-common-stub.c | 19 +++++++
xen-common.c | 123 ++++++++++++++++++++++++++++++++++++++++++
xen-stub.c => xen-hvm-stub.c | 18 +++----
xen-all.c => xen-hvm.c | 121 ++++-------------------------------------
xen-mapcache-stub.c | 39 ++++++++++++++
6 files changed, 203 insertions(+), 123 deletions(-)
create mode 100644 xen-common-stub.c
create mode 100644 xen-common.c
rename xen-stub.c => xen-hvm-stub.c (91%)
rename xen-all.c => xen-hvm.c (93%)
create mode 100644 xen-mapcache-stub.c
diff --git a/Makefile.target b/Makefile.target
index af6ac7e..9c9e1c7 100644
--- a/Makefile.target
+++ b/Makefile.target
@@ -120,8 +120,10 @@ obj-y += dump.o
LIBS+=$(libs_softmmu)
# xen support
-obj-$(CONFIG_XEN) += xen-all.o xen-mapcache.o
-obj-$(call lnot,$(CONFIG_XEN)) += xen-stub.o
+obj-$(CONFIG_XEN) += xen-common.o
+obj-$(CONFIG_XEN_I386) += xen-hvm.o xen-mapcache.o
+obj-$(call lnot,$(CONFIG_XEN)) += xen-common-stub.o
+obj-$(call lnot,$(CONFIG_XEN_I386)) += xen-hvm-stub.o xen-mapcache-stub.o
# Hardware support
ifeq ($(TARGET_NAME), sparc64)
diff --git a/xen-common-stub.c b/xen-common-stub.c
new file mode 100644
index 0000000..3152018
--- /dev/null
+++ b/xen-common-stub.c
@@ -0,0 +1,19 @@
+/*
+ * Copyright (C) 2014 Citrix Systems UK Ltd.
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2 or later.
+ * See the COPYING file in the top-level directory.
+ */
+
+#include "qemu-common.h"
+#include "hw/xen/xen.h"
+
+void xenstore_store_pv_console_info(int i, CharDriverState *chr)
+{
+}
+
+int xen_init(void)
+{
+ return -ENOSYS;
+}
+
diff --git a/xen-common.c b/xen-common.c
new file mode 100644
index 0000000..5207318
--- /dev/null
+++ b/xen-common.c
@@ -0,0 +1,123 @@
+/*
+ * Copyright (C) 2014 Citrix Systems UK Ltd.
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2. See
+ * the COPYING file in the top-level directory.
+ *
+ * Contributions after 2012-01-13 are licensed under the terms of the
+ * GNU GPL, version 2 or (at your option) any later version.
+ */
+
+#include "hw/xen/xen_backend.h"
+#include "qmp-commands.h"
+#include "sysemu/char.h"
+
+//#define DEBUG_XEN
+
+#ifdef DEBUG_XEN
+#define DPRINTF(fmt, ...) \
+ do { fprintf(stderr, "xen: " fmt, ## __VA_ARGS__); } while (0)
+#else
+#define DPRINTF(fmt, ...) \
+ do { } while (0)
+#endif
+
+static int store_dev_info(int domid, CharDriverState *cs, const char *string)
+{
+ struct xs_handle *xs = NULL;
+ char *path = NULL;
+ char *newpath = NULL;
+ char *pts = NULL;
+ int ret = -1;
+
+ /* Only continue if we're talking to a pty. */
+ if (strncmp(cs->filename, "pty:", 4)) {
+ return 0;
+ }
+ pts = cs->filename + 4;
+
+ /* We now have everything we need to set the xenstore entry. */
+ xs = xs_open(0);
+ if (xs == NULL) {
+ fprintf(stderr, "Could not contact XenStore\n");
+ goto out;
+ }
+
+ path = xs_get_domain_path(xs, domid);
+ if (path == NULL) {
+ fprintf(stderr, "xs_get_domain_path() error\n");
+ goto out;
+ }
+ newpath = realloc(path, (strlen(path) + strlen(string) +
+ strlen("/tty") + 1));
+ if (newpath == NULL) {
+ fprintf(stderr, "realloc error\n");
+ goto out;
+ }
+ path = newpath;
+
+ strcat(path, string);
+ strcat(path, "/tty");
+ if (!xs_write(xs, XBT_NULL, path, pts, strlen(pts))) {
+ fprintf(stderr, "xs_write for '%s' fail", string);
+ goto out;
+ }
+ ret = 0;
+
+out:
+ free(path);
+ xs_close(xs);
+
+ return ret;
+}
+
+void xenstore_store_pv_console_info(int i, CharDriverState *chr)
+{
+ if (i == 0) {
+ store_dev_info(xen_domid, chr, "/console");
+ } else {
+ char buf[32];
+ snprintf(buf, sizeof(buf), "/device/console/%d", i);
+ store_dev_info(xen_domid, chr, buf);
+ }
+}
+
+
+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), "device-model/%u/state", xen_domid);
+ if (!xs_write(xs, XBT_NULL, path, state, strlen(state))) {
+ fprintf(stderr, "error recording dm state\n");
+ exit(1);
+ }
+}
+
+
+static void xen_change_state_handler(void *opaque, int running,
+ RunState state)
+{
+ if (running) {
+ /* record state running */
+ xenstore_record_dm_state(xenstore, "running");
+ }
+}
+
+int xen_init(void)
+{
+ xen_xc = xen_xc_interface_open(0, 0, 0);
+ if (xen_xc == XC_HANDLER_INITIAL_VALUE) {
+ 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;
+}
+
diff --git a/xen-stub.c b/xen-hvm-stub.c
similarity index 91%
rename from xen-stub.c
rename to xen-hvm-stub.c
index ad189a6..00fa9b3 100644
--- a/xen-stub.c
+++ b/xen-hvm-stub.c
@@ -12,10 +12,7 @@
#include "hw/xen/xen.h"
#include "exec/memory.h"
#include "qmp-commands.h"
-
-void xenstore_store_pv_console_info(int i, CharDriverState *chr)
-{
-}
+#include "hw/xen/xen_common.h"
int xen_pci_slot_get_pirq(PCIDevice *pci_dev, int irq_num)
{
@@ -47,24 +44,23 @@ qemu_irq *xen_interrupt_controller_init(void)
return NULL;
}
-int xen_init(void)
+void xen_register_framebuffer(MemoryRegion *mr)
{
- return -ENOSYS;
}
-void xen_register_framebuffer(MemoryRegion *mr)
+void xen_modified_memory(ram_addr_t start, ram_addr_t length)
{
}
-void qmp_xen_set_global_dirty_log(bool enable, Error **errp)
+int xen_hvm_init(MemoryRegion **ram_memory)
{
+ return 0;
}
-void xen_modified_memory(ram_addr_t start, ram_addr_t length)
+void qmp_xen_set_global_dirty_log(bool enable, Error **errp)
{
}
-int xen_hvm_init(MemoryRegion **ram_memory)
+void xen_shutdown_fatal_error(const char *fmt, ...)
{
- return 0;
}
diff --git a/xen-all.c b/xen-hvm.c
similarity index 93%
rename from xen-all.c
rename to xen-hvm.c
index 4a594bd..0a49055 100644
--- a/xen-all.c
+++ b/xen-hvm.c
@@ -26,9 +26,9 @@
#include <xen/hvm/params.h>
#include <xen/hvm/e820.h>
-//#define DEBUG_XEN
+//#define DEBUG_XEN_HVM
-#ifdef DEBUG_XEN
+#ifdef DEBUG_XEN_HVM
#define DPRINTF(fmt, ...) \
do { fprintf(stderr, "xen: " fmt, ## __VA_ARGS__); } while (0)
#else
@@ -569,15 +569,6 @@ static MemoryListener xen_memory_listener = {
.priority = 10,
};
-void qmp_xen_set_global_dirty_log(bool enable, Error **errp)
-{
- if (enable) {
- memory_global_dirty_log_start();
- } else {
- memory_global_dirty_log_stop();
- }
-}
-
/* get the ioreq packets from share mem */
static ioreq_t *cpu_get_ioreq_from_shared_memory(XenIOState *state, int vcpu)
{
@@ -880,82 +871,6 @@ static void cpu_handle_ioreq(void *opaque)
}
}
-static int store_dev_info(int domid, CharDriverState *cs, const char *string)
-{
- struct xs_handle *xs = NULL;
- char *path = NULL;
- char *newpath = NULL;
- char *pts = NULL;
- int ret = -1;
-
- /* Only continue if we're talking to a pty. */
- if (strncmp(cs->filename, "pty:", 4)) {
- return 0;
- }
- pts = cs->filename + 4;
-
- /* We now have everything we need to set the xenstore entry. */
- xs = xs_open(0);
- if (xs == NULL) {
- fprintf(stderr, "Could not contact XenStore\n");
- goto out;
- }
-
- path = xs_get_domain_path(xs, domid);
- if (path == NULL) {
- fprintf(stderr, "xs_get_domain_path() error\n");
- goto out;
- }
- newpath = realloc(path, (strlen(path) + strlen(string) +
- strlen("/tty") + 1));
- if (newpath == NULL) {
- fprintf(stderr, "realloc error\n");
- goto out;
- }
- path = newpath;
-
- strcat(path, string);
- strcat(path, "/tty");
- if (!xs_write(xs, XBT_NULL, path, pts, strlen(pts))) {
- fprintf(stderr, "xs_write for '%s' fail", string);
- goto out;
- }
- ret = 0;
-
-out:
- free(path);
- xs_close(xs);
-
- return ret;
-}
-
-void xenstore_store_pv_console_info(int i, CharDriverState *chr)
-{
- if (i == 0) {
- store_dev_info(xen_domid, chr, "/console");
- } else {
- char buf[32];
- snprintf(buf, sizeof(buf), "/device/console/%d", i);
- store_dev_info(xen_domid, chr, buf);
- }
-}
-
-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), "device-model/%u/state", xen_domid);
- if (!xs_write(xs, XBT_NULL, path, state, strlen(state))) {
- fprintf(stderr, "error recording dm state\n");
- exit(1);
- }
-}
-
static void xen_main_loop_prepare(XenIOState *state)
{
int evtchn_fd = -1;
@@ -973,17 +888,6 @@ static void xen_main_loop_prepare(XenIOState *state)
}
-/* Initialise Xen */
-
-static void xen_change_state_handler(void *opaque, int running,
- RunState state)
-{
- if (running) {
- /* record state running */
- xenstore_record_dm_state(xenstore, "running");
- }
-}
-
static void xen_hvm_change_state_handler(void *opaque, int running,
RunState rstate)
{
@@ -1001,18 +905,6 @@ static void xen_exit_notifier(Notifier *n, void *data)
xs_daemon_close(state->xenstore);
}
-int xen_init(void)
-{
- xen_xc = xen_xc_interface_open(0, 0, 0);
- if (xen_xc == XC_HANDLER_INITIAL_VALUE) {
- 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;
-}
-
static void xen_read_physmap(XenIOState *state)
{
XenPhysmap *physmap = NULL;
@@ -1226,3 +1118,12 @@ void xen_modified_memory(ram_addr_t start, ram_addr_t length)
}
}
}
+
+void qmp_xen_set_global_dirty_log(bool enable, Error **errp)
+{
+ if (enable) {
+ memory_global_dirty_log_start();
+ } else {
+ memory_global_dirty_log_stop();
+ }
+}
diff --git a/xen-mapcache-stub.c b/xen-mapcache-stub.c
new file mode 100644
index 0000000..f4ddf53
--- /dev/null
+++ b/xen-mapcache-stub.c
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2014 Citrix Ltd.
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2. See
+ * the COPYING file in the top-level directory.
+ *
+ * Contributions after 2012-01-13 are licensed under the terms of the
+ * GNU GPL, version 2 or (at your option) any later version.
+ */
+
+#include "config.h"
+
+#include <sys/resource.h>
+
+#include "hw/xen/xen_backend.h"
+
+#include <xen/hvm/params.h>
+
+#include "sysemu/xen-mapcache.h"
+#include "trace.h"
+
+uint8_t *xen_map_cache(hwaddr phys_addr, hwaddr size,
+ uint8_t lock)
+{
+ abort();
+ return NULL;
+}
+
+ram_addr_t xen_ram_addr_from_mapcache(void *ptr)
+{
+ abort();
+ return 0;
+}
+
+void xen_invalidate_map_cache_entry(uint8_t *buffer)
+{
+ abort();
+}
+
--
1.7.10.4
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [Qemu-devel] [PATCH RFC V2 5/6] xen: implement Xen PV target
2014-01-27 12:01 [Qemu-devel] [PATCH RFC V2 0/6] Xen: introduce Xen PV target Wei Liu
` (3 preceding siblings ...)
2014-01-27 12:01 ` [Qemu-devel] [PATCH RFC V2 4/6] xen: factor out common functions Wei Liu
@ 2014-01-27 12:01 ` Wei Liu
2014-01-27 12:01 ` [Qemu-devel] [PATCH RFC V2 6/6] xen: introduce xenpv-softmmu.mak Wei Liu
5 siblings, 0 replies; 10+ messages in thread
From: Wei Liu @ 2014-01-27 12:01 UTC (permalink / raw)
To: xen-devel, qemu-devel
Cc: anthony.perard, peter.maydell, pbonzini, Wei Liu,
stefano.stabellini
Basically it's a dummy CPU that doens't do anything. This patch contains
necessary hooks to make QEMU compile.
Signed-off-by: Wei Liu <wei.liu2@citrix.com>
---
arch_init.c | 2 ++
cpu-exec.c | 2 ++
include/sysemu/arch_init.h | 1 +
target-xenpv/Makefile.objs | 1 +
target-xenpv/cpu-qom.h | 64 ++++++++++++++++++++++++++++++++++++++++++
target-xenpv/cpu.h | 66 ++++++++++++++++++++++++++++++++++++++++++++
target-xenpv/helper.c | 32 +++++++++++++++++++++
target-xenpv/translate.c | 27 ++++++++++++++++++
8 files changed, 195 insertions(+)
create mode 100644 target-xenpv/Makefile.objs
create mode 100644 target-xenpv/cpu-qom.h
create mode 100644 target-xenpv/cpu.h
create mode 100644 target-xenpv/helper.c
create mode 100644 target-xenpv/helper.h
create mode 100644 target-xenpv/translate.c
diff --git a/arch_init.c b/arch_init.c
index e0acbc5..a15de61 100644
--- a/arch_init.c
+++ b/arch_init.c
@@ -101,6 +101,8 @@ int graphic_depth = 32;
#define QEMU_ARCH QEMU_ARCH_XTENSA
#elif defined(TARGET_UNICORE32)
#define QEMU_ARCH QEMU_ARCH_UNICORE32
+#elif defined(TARGET_XENPV)
+#define QEMU_ARCH QEMU_ARCH_XENPV
#endif
const uint32_t arch_type = QEMU_ARCH;
diff --git a/cpu-exec.c b/cpu-exec.c
index 30cfa2a..531e92a 100644
--- a/cpu-exec.c
+++ b/cpu-exec.c
@@ -258,6 +258,7 @@ int cpu_exec(CPUArchState *env)
#elif defined(TARGET_CRIS)
#elif defined(TARGET_S390X)
#elif defined(TARGET_XTENSA)
+#elif defined(TARGET_XENPV)
/* XXXXX */
#else
#error unsupported target CPU
@@ -713,6 +714,7 @@ int cpu_exec(CPUArchState *env)
#elif defined(TARGET_CRIS)
#elif defined(TARGET_S390X)
#elif defined(TARGET_XTENSA)
+#elif defined(TARGET_XENPV)
/* XXXXX */
#else
#error unsupported target CPU
diff --git a/include/sysemu/arch_init.h b/include/sysemu/arch_init.h
index be71bca..66ea63f 100644
--- a/include/sysemu/arch_init.h
+++ b/include/sysemu/arch_init.h
@@ -22,6 +22,7 @@ enum {
QEMU_ARCH_OPENRISC = 8192,
QEMU_ARCH_UNICORE32 = 0x4000,
QEMU_ARCH_MOXIE = 0x8000,
+ QEMU_ARCH_XENPV = 0x10000,
};
extern const uint32_t arch_type;
diff --git a/target-xenpv/Makefile.objs b/target-xenpv/Makefile.objs
new file mode 100644
index 0000000..8a60866
--- /dev/null
+++ b/target-xenpv/Makefile.objs
@@ -0,0 +1 @@
+obj-y += helper.o translate.o
diff --git a/target-xenpv/cpu-qom.h b/target-xenpv/cpu-qom.h
new file mode 100644
index 0000000..61135a6
--- /dev/null
+++ b/target-xenpv/cpu-qom.h
@@ -0,0 +1,64 @@
+/*
+ * QEMU XenPV CPU
+ *
+ * Copyright (c) 2014 Citrix Systems UK Ltd
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, see
+ * <http://www.gnu.org/licenses/lgpl-2.1.html>
+ */
+#ifndef QEMU_XENPV_CPU_QOM_H
+#define QEMU_XENPV_CPU_QOM_H
+
+#include "qom/cpu.h"
+#include "cpu.h"
+#include "qapi/error.h"
+
+#define TYPE_XENPV_CPU "xenpv-cpu"
+
+/**
+ * XenPVCPUClass:
+ * @parent_realize: The parent class' realize handler.
+ * @parent_reset: The parent class' reset handler.
+ *
+ */
+typedef struct XenPVCPUClass {
+ /*< private >*/
+ CPUClass parent_class;
+ /*< public >*/
+
+ DeviceRealize parent_realize;
+ void (*parent_reset)(CPUState *cpu);
+} XenPVCPUClass;
+
+/**
+ * XenPVCPU:
+ * @env: #CPUXenPVState
+ *
+ */
+typedef struct XenPVCPU {
+ /*< private >*/
+ CPUState parent_obj;
+ /*< public >*/
+ CPUXenPVState env;
+} XenPVCPU;
+
+static inline XenPVCPU *noarch_env_get_cpu(CPUXenPVState *env)
+{
+ return container_of(env, XenPVCPU, env);
+}
+
+#define ENV_GET_CPU(e) CPU(noarch_env_get_cpu(e))
+
+#endif
+
diff --git a/target-xenpv/cpu.h b/target-xenpv/cpu.h
new file mode 100644
index 0000000..0e65707
--- /dev/null
+++ b/target-xenpv/cpu.h
@@ -0,0 +1,66 @@
+/*
+ * XenPV virtual CPU header
+ *
+ * Copyright (c) 2014 Citrix Systems UK Ltd
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ */
+#ifndef CPU_XENPV_H
+#define CPU_XENPV_H
+
+#include "config.h"
+#include "qemu-common.h"
+
+#define TARGET_LONG_BITS 64
+#define TARGET_PAGE_BITS 12
+#define TARGET_PHYS_ADDR_SPACE_BITS 52
+#define TARGET_VIRT_ADDR_SPACE_BITS 47
+#define NB_MMU_MODES 1
+
+#define CPUArchState struct CPUXenPVState
+
+#include "exec/cpu-defs.h"
+
+typedef struct CPUXenPVState {
+ CPU_COMMON
+} CPUXenPVState;
+
+#include "cpu-qom.h"
+
+static inline int cpu_mmu_index (CPUXenPVState *env)
+{
+ abort();
+}
+
+static inline void cpu_get_tb_cpu_state(CPUXenPVState *env, target_ulong *pc,
+ target_ulong *cs_base, int *flags)
+{
+ abort();
+}
+
+static inline bool cpu_has_work(CPUState *cs)
+{
+ abort();
+ return false;
+}
+
+int cpu_xenpv_exec(CPUXenPVState *s);
+#define cpu_exec cpu_xenpv_exec
+
+#include "exec/cpu-all.h"
+
+#include "exec/exec-all.h"
+
+#endif /* CPU_XENPV_H */
+
diff --git a/target-xenpv/helper.c b/target-xenpv/helper.c
new file mode 100644
index 0000000..225a063
--- /dev/null
+++ b/target-xenpv/helper.c
@@ -0,0 +1,32 @@
+#include "cpu.h"
+#include "helper.h"
+#if !defined(CONFIG_USER_ONLY)
+#include "exec/softmmu_exec.h"
+#endif
+
+#if !defined(CONFIG_USER_ONLY)
+
+#define MMUSUFFIX _mmu
+
+#define SHIFT 0
+#include "exec/softmmu_template.h"
+
+#define SHIFT 1
+#include "exec/softmmu_template.h"
+
+#define SHIFT 2
+#include "exec/softmmu_template.h"
+
+#define SHIFT 3
+#include "exec/softmmu_template.h"
+
+#endif
+
+#if !defined(CONFIG_USER_ONLY)
+void tlb_fill(CPUXenPVState *env, target_ulong addr, int is_write,
+ int mmu_idx, uintptr_t retaddr)
+{
+ abort();
+}
+#endif
+
diff --git a/target-xenpv/helper.h b/target-xenpv/helper.h
new file mode 100644
index 0000000..e69de29
diff --git a/target-xenpv/translate.c b/target-xenpv/translate.c
new file mode 100644
index 0000000..4bc84e5
--- /dev/null
+++ b/target-xenpv/translate.c
@@ -0,0 +1,27 @@
+#include <inttypes.h>
+#include "qemu/host-utils.h"
+#include "cpu.h"
+#include "disas/disas.h"
+#include "tcg-op.h"
+
+#include "helper.h"
+#define GEN_HELPER 1
+#include "helper.h"
+
+void gen_intermediate_code(CPUXenPVState *env, TranslationBlock *tb)
+{
+ abort();
+}
+
+void gen_intermediate_code_pc(CPUXenPVState *env, TranslationBlock *tb)
+{
+ abort();
+}
+
+void restore_state_to_opc(CPUXenPVState *env, TranslationBlock *tb,
+ int pc_pos)
+{
+ abort();
+}
+
+
--
1.7.10.4
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [Qemu-devel] [PATCH RFC V2 6/6] xen: introduce xenpv-softmmu.mak
2014-01-27 12:01 [Qemu-devel] [PATCH RFC V2 0/6] Xen: introduce Xen PV target Wei Liu
` (4 preceding siblings ...)
2014-01-27 12:01 ` [Qemu-devel] [PATCH RFC V2 5/6] xen: implement Xen PV target Wei Liu
@ 2014-01-27 12:01 ` Wei Liu
2014-07-04 15:10 ` Stefano Stabellini
5 siblings, 1 reply; 10+ messages in thread
From: Wei Liu @ 2014-01-27 12:01 UTC (permalink / raw)
To: xen-devel, qemu-devel
Cc: anthony.perard, peter.maydell, pbonzini, Wei Liu,
stefano.stabellini
Signed-off-by: Wei Liu <wei.liu2@citrix.com>
---
configure | 7 +++++--
default-configs/xenpv-softmmu.mak | 2 ++
2 files changed, 7 insertions(+), 2 deletions(-)
create mode 100644 default-configs/xenpv-softmmu.mak
diff --git a/configure b/configure
index 549b9cc..b713d93 100755
--- a/configure
+++ b/configure
@@ -4391,7 +4391,7 @@ supported_xen_target() {
test "$xen" = "yes" || return 1
test "$target_softmmu" = "yes" || return 1
case "$target_name:$cpu" in
- i386:i386 | i386:x86_64 | x86_64:i386 | x86_64:x86_64)
+ i386:i386 | i386:x86_64 | x86_64:i386 | x86_64:x86_64 | xenpv:*)
return 0
;;
esac
@@ -4538,6 +4538,9 @@ case "$target_name" in
;;
unicore32)
;;
+ xenpv)
+ TARGET_ARCH=xenpv
+ ;;
xtensa|xtensaeb)
TARGET_ARCH=xtensa
;;
@@ -4567,7 +4570,7 @@ echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
if supported_xen_target; then
echo "CONFIG_XEN=y" >> $config_target_mak
- if test "$xen_pci_passthrough" = yes; then
+ if test "$target_name" != "xenpv" -a "$xen_pci_passthrough" = yes; then
echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
fi
fi
diff --git a/default-configs/xenpv-softmmu.mak b/default-configs/xenpv-softmmu.mak
new file mode 100644
index 0000000..773f128
--- /dev/null
+++ b/default-configs/xenpv-softmmu.mak
@@ -0,0 +1,2 @@
+# Default configuration for xenpv-softmmu
+# Yes it is empty as we don't need to include any device emulation code
--
1.7.10.4
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] [PATCH RFC V2 6/6] xen: introduce xenpv-softmmu.mak
2014-01-27 12:01 ` [Qemu-devel] [PATCH RFC V2 6/6] xen: introduce xenpv-softmmu.mak Wei Liu
@ 2014-07-04 15:10 ` Stefano Stabellini
2014-07-09 13:20 ` Wei Liu
0 siblings, 1 reply; 10+ messages in thread
From: Stefano Stabellini @ 2014-07-04 15:10 UTC (permalink / raw)
To: Wei Liu
Cc: peter.maydell, stefano.stabellini, qemu-devel, pbonzini,
anthony.perard, xen-devel
I realize now that patch #5 and #6 of this series feel through the
cracks. Could you please rebase and resend?
On Mon, 27 Jan 2014, Wei Liu wrote:
> Signed-off-by: Wei Liu <wei.liu2@citrix.com>
> ---
> configure | 7 +++++--
> default-configs/xenpv-softmmu.mak | 2 ++
> 2 files changed, 7 insertions(+), 2 deletions(-)
> create mode 100644 default-configs/xenpv-softmmu.mak
>
> diff --git a/configure b/configure
> index 549b9cc..b713d93 100755
> --- a/configure
> +++ b/configure
> @@ -4391,7 +4391,7 @@ supported_xen_target() {
> test "$xen" = "yes" || return 1
> test "$target_softmmu" = "yes" || return 1
> case "$target_name:$cpu" in
> - i386:i386 | i386:x86_64 | x86_64:i386 | x86_64:x86_64)
> + i386:i386 | i386:x86_64 | x86_64:i386 | x86_64:x86_64 | xenpv:*)
> return 0
> ;;
> esac
> @@ -4538,6 +4538,9 @@ case "$target_name" in
> ;;
> unicore32)
> ;;
> + xenpv)
> + TARGET_ARCH=xenpv
> + ;;
> xtensa|xtensaeb)
> TARGET_ARCH=xtensa
> ;;
> @@ -4567,7 +4570,7 @@ echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
>
> if supported_xen_target; then
> echo "CONFIG_XEN=y" >> $config_target_mak
> - if test "$xen_pci_passthrough" = yes; then
> + if test "$target_name" != "xenpv" -a "$xen_pci_passthrough" = yes; then
> echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
> fi
> fi
> diff --git a/default-configs/xenpv-softmmu.mak b/default-configs/xenpv-softmmu.mak
> new file mode 100644
> index 0000000..773f128
> --- /dev/null
> +++ b/default-configs/xenpv-softmmu.mak
> @@ -0,0 +1,2 @@
> +# Default configuration for xenpv-softmmu
> +# Yes it is empty as we don't need to include any device emulation code
> --
> 1.7.10.4
>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] [PATCH RFC V2 6/6] xen: introduce xenpv-softmmu.mak
2014-07-04 15:10 ` Stefano Stabellini
@ 2014-07-09 13:20 ` Wei Liu
2014-07-09 13:30 ` Stefano Stabellini
0 siblings, 1 reply; 10+ messages in thread
From: Wei Liu @ 2014-07-09 13:20 UTC (permalink / raw)
To: Stefano Stabellini
Cc: peter.maydell, Wei Liu, qemu-devel, pbonzini, anthony.perard,
xen-devel
On Fri, Jul 04, 2014 at 04:10:13PM +0100, Stefano Stabellini wrote:
> I realize now that patch #5 and #6 of this series feel through the
> cracks. Could you please rebase and resend?
>
Hi Peter and Paolo
I would like to ask for your suggestion on how to move this forward.
The first few refactoring patches have been upstreamed. These two
patches (and a dependency patch which is not included here) seem to be
the last missing bits to have QEMU binary for Xen on ARM. We would
really like to find a way to upstream these changes and avoid forking.
Wei.
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] [PATCH RFC V2 6/6] xen: introduce xenpv-softmmu.mak
2014-07-09 13:20 ` Wei Liu
@ 2014-07-09 13:30 ` Stefano Stabellini
0 siblings, 0 replies; 10+ messages in thread
From: Stefano Stabellini @ 2014-07-09 13:30 UTC (permalink / raw)
To: Wei Liu
Cc: peter.maydell, Stefano Stabellini, qemu-devel, pbonzini,
anthony.perard, xen-devel
On Wed, 9 Jul 2014, Wei Liu wrote:
> On Fri, Jul 04, 2014 at 04:10:13PM +0100, Stefano Stabellini wrote:
> > I realize now that patch #5 and #6 of this series feel through the
> > cracks. Could you please rebase and resend?
> >
>
> Hi Peter and Paolo
>
> I would like to ask for your suggestion on how to move this forward.
>
> The first few refactoring patches have been upstreamed. These two
> patches (and a dependency patch which is not included here) seem to be
> the last missing bits to have QEMU binary for Xen on ARM. We would
> really like to find a way to upstream these changes and avoid forking.
Actually I don't think that this could cause any forking (at least in
upstream Xen) even if the patches are not accepted. But it would be nice
to have a smaller and lighter QEMU for ARM with just the PV backend.
Otherwise we'll have to run a big fat qemu-system-i386 even for ARM
guests, a bit overkill given that we only need the backends.
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2014-07-09 13:31 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-01-27 12:01 [Qemu-devel] [PATCH RFC V2 0/6] Xen: introduce Xen PV target Wei Liu
2014-01-27 12:01 ` [Qemu-devel] [PATCH RFC V2 1/6] configure: factor out list of supported Xen/KVM targets Wei Liu
2014-01-27 12:01 ` [Qemu-devel] [PATCH RFC V2 2/6] xen: move Xen PV machine files to hw/xenpv Wei Liu
2014-01-27 12:01 ` [Qemu-devel] [PATCH RFC V2 3/6] xen: move Xen HVM files under hw/i386/xen Wei Liu
2014-01-27 12:01 ` [Qemu-devel] [PATCH RFC V2 4/6] xen: factor out common functions Wei Liu
2014-01-27 12:01 ` [Qemu-devel] [PATCH RFC V2 5/6] xen: implement Xen PV target Wei Liu
2014-01-27 12:01 ` [Qemu-devel] [PATCH RFC V2 6/6] xen: introduce xenpv-softmmu.mak Wei Liu
2014-07-04 15:10 ` Stefano Stabellini
2014-07-09 13:20 ` Wei Liu
2014-07-09 13:30 ` Stefano Stabellini
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).