[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [RFC 1/7] linux-stubdomain: Compile QEMU
This patch adds a Makefile which downloads, patches, and compiles upstream QEMU for a stubdomain based on a linux kernel. Signed-off-by: Eric Shelton <eshelton@xxxxxxxxx> --- stubdom-linux/.gitignore | 3 ++ stubdom-linux/Makefile | 55 +++++++++++++++++++++++++++++++++++++ stubdom-linux/qemu-configure.patch | 47 +++++++++++++++++++++++++++++++ stubdom-linux/qemu-xen-common.patch | 12 ++++++++ stubdom-linux/qemu-xen-h.patch | 18 ++++++++++++ stubdom-linux/qemu-xen-hvm.patch | 36 ++++++++++++++++++++++++ 6 files changed, 171 insertions(+) create mode 100644 stubdom-linux/.gitignore create mode 100644 stubdom-linux/Makefile create mode 100644 stubdom-linux/qemu-configure.patch create mode 100644 stubdom-linux/qemu-xen-common.patch create mode 100644 stubdom-linux/qemu-xen-h.patch create mode 100644 stubdom-linux/qemu-xen-hvm.patch diff --git a/stubdom-linux/.gitignore b/stubdom-linux/.gitignore new file mode 100644 index 0000000..1b5ec08 --- /dev/null +++ b/stubdom-linux/.gitignore @@ -0,0 +1,3 @@ +/qemu-build/ +/qemu-remote +/qemu-remote-remote/ diff --git a/stubdom-linux/Makefile b/stubdom-linux/Makefile new file mode 100644 index 0000000..4e84a61 --- /dev/null +++ b/stubdom-linux/Makefile @@ -0,0 +1,55 @@ +XEN_ROOT = $(CURDIR)/.. + +-include $(XEN_ROOT)/config/Tools.mk +include $(XEN_ROOT)/Config.mk + +# Qemu tree used +QEMU_TREE=git://xenbits.xen.org/qemu-upstream-4.5-testing.git +QEMU_BRANCH=qemu-xen-4.5.0 + +all: + +qemu-build/Makefile: + export GIT=$(GIT); \ + $(XEN_ROOT)/scripts/git-checkout.sh $(QEMU_TREE) $(QEMU_BRANCH) qemu-remote + cd qemu-remote && patch -p1 < ../qemu-configure.patch + cd qemu-remote && patch -p1 < ../qemu-xen-common.patch + cd qemu-remote && patch -p1 < ../qemu-xen-h.patch + cd qemu-remote && patch -p1 < ../qemu-xen-hvm.patch + mkdir -p qemu-build + cd qemu-build && ../qemu-remote/configure \ + --target-list=i386-softmmu \ + --enable-xen \ + --extra-cflags="-I$(XEN_ROOT)/tools/include \ + -I$(XEN_ROOT)/tools/libxc \ + -I$(XEN_ROOT)/tools/xenstore \ + -I$(XEN_ROOT)/tools/xenstore/compat \ + -DDEBUG_XEN" \ + --extra-ldflags="-L$(XEN_ROOT)/tools/libxc -L$(XEN_ROOT)/tools/xenstore" \ + --disable-werror \ + --disable-sdl \ + --disable-kvm \ + --disable-gtk \ + --disable-fdt \ + --disable-bluez \ + --disable-libusb \ + --disable-slirp \ + --disable-pie \ + --disable-docs \ + --disable-vhost-net \ + --disable-spice \ + --disable-guest-agent \ + --audio-drv-list= \ + --disable-smartcard-nss \ + --enable-stubdom \ + --disable-vnc \ + --disable-spice \ + --enable-trace-backend=stderr \ + --disable-curses \ + --python=$(PYTHON) \ + --prefix= + +.PHONY:qemu-build +qemu-build: qemu-build/Makefile +qemu-build/i386-softmmu/qemu-system-i386: qemu-build + $(MAKE) -C qemu-build diff --git a/stubdom-linux/qemu-configure.patch b/stubdom-linux/qemu-configure.patch new file mode 100644 index 0000000..b93132d --- /dev/null +++ b/stubdom-linux/qemu-configure.patch @@ -0,0 +1,47 @@ +--- a/configure 2015-01-21 23:48:23.763333326 -0500 ++++ b/configure 2015-01-21 23:52:30.326666664 -0500 +@@ -300,6 +300,7 @@ + libusb="" + usb_redir="" + glx="" ++stubdom="no" + zlib="yes" + lzo="no" + snappy="no" +@@ -1021,6 +1022,8 @@ + ;; + --enable-usb-redir) usb_redir="yes" + ;; ++ --enable-stubdom) stubdom="yes" ++ ;; + --disable-zlib-test) zlib="no" + ;; + --enable-lzo) lzo="yes" +@@ -1329,6 +1332,7 @@ + --enable-usb-redir enable usb network redirection support + --enable-lzo enable the support of lzo compression library + --enable-snappy enable the support of snappy compression library ++ --enable-stubdom enable building the ioemu-stubdom + --disable-guest-agent disable building of the QEMU Guest Agent + --enable-guest-agent enable building of the QEMU Guest Agent + --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent +@@ -4122,6 +4126,7 @@ + echo "Target Sparc Arch $sparc_cpu" + fi + echo "xen support $xen" ++echo "stubdom support $stubdom" + echo "brlapi support $brlapi" + echo "bluez support $bluez" + echo "Documentation $docs" +@@ -4553,6 +4558,11 @@ + echo "RBD_LIBS=$rbd_libs" >> $config_host_mak + fi + ++# stubdom support ++if test "$stubdom" = "yes"; then ++ echo "CONFIG_STUBDOM=y" >> $config_host_mak ++fi ++ + echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak + if test "$coroutine_pool" = "yes" ; then + echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak diff --git a/stubdom-linux/qemu-xen-common.patch b/stubdom-linux/qemu-xen-common.patch new file mode 100644 index 0000000..b473e36 --- /dev/null +++ b/stubdom-linux/qemu-xen-common.patch @@ -0,0 +1,12 @@ +--- a/xen-common.c 2015-01-25 20:42:36.329999998 -0500 ++++ b/xen-common.c 2015-01-25 20:43:20.346666663 -0500 +@@ -92,7 +92,8 @@ + exit(1); + } + +- snprintf(path, sizeof (path), "device-model/%u/state", xen_domid); ++ snprintf(path, sizeof (path), ++ "/local/domain/0/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); diff --git a/stubdom-linux/qemu-xen-h.patch b/stubdom-linux/qemu-xen-h.patch new file mode 100644 index 0000000..262b1d1 --- /dev/null +++ b/stubdom-linux/qemu-xen-h.patch @@ -0,0 +1,18 @@ +--- a/include/hw/xen/xen.h 2015-01-21 23:54:36.856666662 -0500 ++++ b/include/hw/xen/xen.h 2015-01-21 23:55:39.356666667 -0500 +@@ -28,6 +28,15 @@ + return xen_allowed; + } + ++static inline int xen_stubdom_enable(void) ++{ ++#ifdef CONFIG_STUBDOM ++ return 1; ++#else ++ return 0; ++#endif ++} ++ + int xen_pci_slot_get_pirq(PCIDevice *pci_dev, int irq_num); + void xen_piix3_set_irq(void *opaque, int irq_num, int level); + void xen_piix_pci_write_config_client(uint32_t address, uint32_t val, int len); diff --git a/stubdom-linux/qemu-xen-hvm.patch b/stubdom-linux/qemu-xen-hvm.patch new file mode 100644 index 0000000..ac6a53f --- /dev/null +++ b/stubdom-linux/qemu-xen-hvm.patch @@ -0,0 +1,36 @@ +--- a/xen-hvm.c 2015-01-21 22:32:42.999999995 -0500 ++++ b/xen-hvm.c 2015-01-21 22:35:17.633333330 -0500 +@@ -1008,6 +1008,10 @@ + state->wakeup.notify = xen_wakeup_notifier; + qemu_register_wakeup_notifier(&state->wakeup); + ++ if (xen_stubdom_enable()) { ++ xc_set_hvm_param(xen_xc, xen_domid, HVM_PARAM_DM_DOMAIN, DOMID_SELF); ++ } ++ + xc_get_hvm_param(xen_xc, xen_domid, HVM_PARAM_IOREQ_PFN, &ioreq_pfn); + DPRINTF("shared page at pfn %lx\n", ioreq_pfn); + state->shared_page = xc_map_foreign_range(xen_xc, xen_domid, XC_PAGE_SIZE, +@@ -1063,6 +1067,7 @@ + memory_listener_register(&state->memory_listener, &address_space_memory); + state->log_for_dirtybit = NULL; + ++#ifndef CONFIG_STUBDOM + /* Initialize backend core & drivers */ + if (xen_be_init() != 0) { + fprintf(stderr, "%s: xen backend core setup failed\n", __FUNCTION__); +@@ -1071,6 +1076,14 @@ + xen_be_register("console", &xen_console_ops); + xen_be_register("vkbd", &xen_kbdmouse_ops); + xen_be_register("qdisk", &xen_blkdev_ops); ++#else ++ xenstore = xs_daemon_open(); ++ if (!xenstore) { ++ xen_be_printf(NULL, 0, "can't connect to xenstored\n"); ++ return -1; ++ } ++#endif ++ + xen_read_physmap(state); + + return 0; -- 1.8.5.5 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |