From 32d7e1602231dde347380e21cd147cc36aefe22b Mon Sep 17 00:00:00 2001 From: Jakub Bogusz Date: Sat, 3 Oct 2015 21:37:43 +0200 Subject: [PATCH] - started update to 4.5.1 (note: new sonames, xend is gone) - updated dumpdir,make,net-disable-iptables-on-bridge,paths,python_scripts,symbols patches - removed ulong,xsa99 patches - removed xend patches and init/configuration files (no longer applicable) --- xen-configure-xend.patch | 37 ---- xen-dumpdir.patch | 57 +++-- xen-make.patch | 11 - xen-net-disable-iptables-on-bridge.patch | 11 +- xen-paths.patch | 14 +- xen-python_scripts.patch | 36 ---- xen-symbols.patch | 14 -- xen-ulong.patch | 20 -- xen.spec | 235 +++++++-------------- xend-pci-loop.patch | 19 -- xend.catchbt.patch | 30 --- xend.init | 86 -------- xend.service | 17 -- xend.tmpfiles | 2 - xsa99.patch | 257 ----------------------- 15 files changed, 128 insertions(+), 718 deletions(-) delete mode 100644 xen-configure-xend.patch delete mode 100644 xen-ulong.patch delete mode 100644 xend-pci-loop.patch delete mode 100644 xend.catchbt.patch delete mode 100644 xend.init delete mode 100644 xend.service delete mode 100644 xend.tmpfiles delete mode 100644 xsa99.patch diff --git a/xen-configure-xend.patch b/xen-configure-xend.patch deleted file mode 100644 index 0bdc932..0000000 --- a/xen-configure-xend.patch +++ /dev/null @@ -1,37 +0,0 @@ -diff -up xen-3.4.0/tools/examples/xend-config.sxp.config xen-3.4.0/tools/examples/xend-config.sxp ---- xen-3.4.0/tools/examples/xend-config.sxp.config 2009-05-20 17:12:50.000000000 +0200 -+++ xen-3.4.0/tools/examples/xend-config.sxp 2009-05-20 17:15:35.000000000 +0200 -@@ -58,11 +58,11 @@ - - - #(xend-http-server no) --#(xend-unix-server no) -+(xend-unix-server yes) - #(xend-tcp-xmlrpc-server no) - #(xend-unix-xmlrpc-server yes) --#(xend-relocation-server no) --(xend-relocation-server yes) -+(xend-relocation-server no) -+#(xend-relocation-server yes) - #(xend-relocation-ssl-server no) - #(xend-udev-event-server no) - -@@ -154,7 +154,8 @@ - # two fake interfaces per guest domain. To do things like this, write - # yourself a wrapper script, and call network-bridge from it, as appropriate. - # --(network-script network-bridge) -+#(network-script network-bridge) -+(network-script /bin/true) - - # The script used to control virtual interfaces. This can be overridden on a - # per-vif basis when creating a domain or a configuring a new vif. The -@@ -186,7 +187,7 @@ - # dom0-min-mem is the lowest permissible memory level (in MB) for dom0. - # This is a minimum both for auto-ballooning (as enabled by - # enable-dom0-ballooning below) and for xm mem-set when applied to dom0. --(dom0-min-mem 196) -+(dom0-min-mem 256) - - # Whether to enable auto-ballooning of dom0 to allow domUs to be created. - # If enable-dom0-ballooning = no, dom0 will never balloon out. diff --git a/xen-dumpdir.patch b/xen-dumpdir.patch index c0e7186..771dec0 100644 --- a/xen-dumpdir.patch +++ b/xen-dumpdir.patch @@ -10,23 +10,40 @@ diff -up xen-3.4.0/tools/Makefile.dump xen-3.4.0/tools/Makefile $(INSTALL_DIR) $(DESTDIR)/var/log/xen $(INSTALL_DIR) $(DESTDIR)/var/lib/xen $(INSTALL_DIR) $(DESTDIR)/var/lock/subsys ---- xen-4.0.0/tools/python/xen/xend/XendDomainInfo.py.orig 2010-02-02 20:43:01.000000000 +0000 -+++ xen-4.0.0/tools/python/xen/xend/XendDomainInfo.py 2010-02-02 21:36:57.000000000 +0000 -@@ -2287,7 +2287,7 @@ - # To prohibit directory traversal - based_name = os.path.basename(self.info['name_label']) - -- coredir = "/var/xen/dump/%s" % (based_name) -+ coredir = "/var/lib/xen/dump/%s" % (based_name) - if not os.path.exists(coredir): - try: - mkdir.parents(coredir, stat.S_IRWXU) -@@ -2296,7 +2296,7 @@ - - if not os.path.isdir(coredir): - # Use former directory to dump core -- coredir = '/var/xen/dump' -+ coredir = '/var/lib/xen/dump' - - this_time = time.strftime("%Y-%m%d-%H%M.%S", time.localtime()) - corefile = "%s/%s-%s.%s.core" % (coredir, this_time, +--- xen-4.5.1/tools/libxl/xl_cmdimpl.c.orig 2015-06-22 15:41:35.000000000 +0200 ++++ xen-4.5.1/tools/libxl/xl_cmdimpl.c 2015-10-01 17:45:14.267331067 +0200 +@@ -2092,7 +2092,7 @@ + char *corefile; + int rc; + +- if (asprintf(&corefile, "/var/xen/dump/%s", d_config->c_info.name) < 0) { ++ if (asprintf(&corefile, "/var/lib/xen/dump/%s", d_config->c_info.name) < 0) { + LOG("failed to construct core dump path"); + } else { + LOG("dumping core to %s", corefile); +--- xen-4.5.1/docs/man/xl.cfg.pod.5.orig 2015-06-22 15:41:35.000000000 +0200 ++++ xen-4.5.1/docs/man/xl.cfg.pod.5 2015-10-01 17:46:38.750661228 +0200 +@@ -298,12 +298,12 @@ + + =item B + +-write a "coredump" of the domain to F and then ++write a "coredump" of the domain to F and then + destroy the domain. + + =item B + +-write a "coredump" of the domain to F and then ++write a "coredump" of the domain to F and then + restart the domain. + + =back +@@ -1605,7 +1605,7 @@ + =head1 FILES + + F +-F ++F + + =head1 BUGS + diff --git a/xen-make.patch b/xen-make.patch index 077b0cb..cf57b89 100644 --- a/xen-make.patch +++ b/xen-make.patch @@ -9,14 +9,3 @@ $(LIBS_DEPENDS):subdirs-all vhd-util: vhd-util.o $(LIBS_DEPENDS) ---- xen-4.4.1/tools/python/Makefile.orig 2014-09-02 08:20:19.000000000 +0200 -+++ xen-4.4.1/tools/python/Makefile 2014-10-25 23:17:56.515472047 +0200 -@@ -21,7 +21,7 @@ - .PHONY: install - install: install-dtd - CC="$(CC)" CFLAGS="$(CFLAGS)" $(PYTHON) setup.py install \ -- $(PYTHON_PREFIX_ARG) --root="$(DESTDIR)" --force --xend=$(CONFIG_XEND) -+ $(PYTHON_PREFIX_ARG) --skip-build --root="$(DESTDIR)" --force --xend=$(CONFIG_XEND) - - $(INSTALL_DIR) $(DESTDIR)$(SBINDIR) - ifeq ($(CONFIG_XEND),y) diff --git a/xen-net-disable-iptables-on-bridge.patch b/xen-net-disable-iptables-on-bridge.patch index 8908041..2f33eb4 100644 --- a/xen-net-disable-iptables-on-bridge.patch +++ b/xen-net-disable-iptables-on-bridge.patch @@ -1,13 +1,10 @@ -diff -dur -x '*.orig' -x '*.rej' -x '*~' xen-4.2.0.orig/tools/hotplug/Linux/vif-bridge xen-4.2.0/tools/hotplug/Linux/vif-bridge ---- xen-4.2.0.orig/tools/hotplug/Linux/vif-bridge 2012-09-17 12:21:18.000000000 +0200 -+++ xen-4.2.0/tools/hotplug/Linux/vif-bridge 2012-10-22 13:05:43.000000000 +0200 -@@ -101,10 +101,6 @@ +--- xen-4.5.1/tools/hotplug/Linux/vif-bridge.orig 2015-10-01 17:51:47.613981230 +0200 ++++ xen-4.5.1/tools/hotplug/Linux/vif-bridge 2015-10-01 17:51:51.330647734 +0200 +@@ -93,8 +93,6 @@ ;; esac --if [ "$type_if" = vif ]; then -- handle_iptable --fi +-handle_iptable - call_hooks vif post diff --git a/xen-paths.patch b/xen-paths.patch index 662488b..c2a05b2 100644 --- a/xen-paths.patch +++ b/xen-paths.patch @@ -1,11 +1,11 @@ ---- xen-4.4.0/tools/Makefile~ 2014-03-12 14:39:28.000000000 +0000 -+++ xen-4.4.0/tools/Makefile 2014-03-12 14:41:53.427783318 +0000 -@@ -188,7 +188,7 @@ - cd qemu-xen-dir; \ +--- xen-4.5.1/tools/Makefile.orig 2015-10-03 17:22:11.716804023 +0200 ++++ xen-4.5.1/tools/Makefile 2015-10-03 19:37:54.219795649 +0200 +@@ -207,7 +207,7 @@ $$source/configure --enable-xen --target-list=i386-softmmu \ $(QEMU_XEN_ENABLE_DEBUG) \ -- --prefix=$(PREFIX) \ -+ --prefix=$(PREFIX) --libexecdir=$(LIBEXEC) \ + --prefix=$(LIBEXEC) \ +- --libdir=$(LIBEXEC_LIB) \ ++ --libdir=$(LIBEXEC_LIB) --libexecdir=$(LIBEXEC_LIB) \ + --includedir=$(LIBEXEC_INC) \ --source-path=$$source \ --extra-cflags="-I$(XEN_ROOT)/tools/include \ - -I$(XEN_ROOT)/tools/libxc \ diff --git a/xen-python_scripts.patch b/xen-python_scripts.patch index 74f7483..417a9cc 100644 --- a/xen-python_scripts.patch +++ b/xen-python_scripts.patch @@ -7,33 +7,6 @@ diff -dur xen-4.2.0.orig/tools/misc/xenpvnetboot xen-4.2.0/tools/misc/xenpvnetbo # # Copyright (C) 2010 Oracle. All rights reserved. # -diff -dur xen-4.2.0.orig/tools/python/xen/remus/save.py xen-4.2.0/tools/python/xen/remus/save.py ---- xen-4.2.0.orig/tools/python/xen/remus/save.py 2012-09-17 12:21:18.000000000 +0200 -+++ xen-4.2.0/tools/python/xen/remus/save.py 2012-10-22 10:46:30.000000000 +0200 -@@ -1,4 +1,4 @@ --#!/usr/bin/env python -+#!/usr/bin/python - - import os, select, socket, threading, time, signal, xmlrpclib - -diff -dur xen-4.2.0.orig/tools/python/xen/remus/vm.py xen-4.2.0/tools/python/xen/remus/vm.py ---- xen-4.2.0.orig/tools/python/xen/remus/vm.py 2012-09-17 12:21:18.000000000 +0200 -+++ xen-4.2.0/tools/python/xen/remus/vm.py 2012-10-22 10:46:30.000000000 +0200 -@@ -1,4 +1,4 @@ --#!/usr/bin/env python -+#!/usr/bin/python - - import xmlrpclib - -diff -dur xen-4.2.0.orig/tools/python/xen/xend/XendSXPDev.py xen-4.2.0/tools/python/xen/xend/XendSXPDev.py ---- xen-4.2.0.orig/tools/python/xen/xend/XendSXPDev.py 2012-09-17 12:21:19.000000000 +0200 -+++ xen-4.2.0/tools/python/xen/xend/XendSXPDev.py 2012-10-22 10:46:30.000000000 +0200 -@@ -1,4 +1,4 @@ --#!/usr/bin/env python -+#!/usr/bin/python - # - # Helper functions for dealing with the sxp representation of devices - diff -dur xen-4.2.0.orig/tools/qemu-xen/scripts/analyse-9p-simpletrace.py xen-4.2.0/tools/qemu-xen/scripts/analyse-9p-simpletrace.py --- xen-4.2.0.orig/tools/qemu-xen/scripts/analyse-9p-simpletrace.py 2012-09-10 20:10:52.000000000 +0200 +++ xen-4.2.0/tools/qemu-xen/scripts/analyse-9p-simpletrace.py 2012-10-22 10:46:30.000000000 +0200 @@ -52,12 +25,3 @@ diff -dur xen-4.2.0.orig/tools/qemu-xen/scripts/simpletrace.py xen-4.2.0/tools/q # # Pretty-printer for simple trace backend binary trace files # -diff -dur xen-4.2.0.orig/tools/remus/remus xen-4.2.0/tools/remus/remus ---- xen-4.2.0.orig/tools/remus/remus 2012-09-17 12:21:19.000000000 +0200 -+++ xen-4.2.0/tools/remus/remus 2012-10-22 10:46:30.000000000 +0200 -@@ -1,4 +1,4 @@ --#!/usr/bin/env python -+#!/usr/bin/python - # - # This is a save process which also buffers outgoing I/O between - # rounds, so that external viewers never see anything that hasn't diff --git a/xen-symbols.patch b/xen-symbols.patch index dbf1772..db30fd8 100644 --- a/xen-symbols.patch +++ b/xen-symbols.patch @@ -10,17 +10,3 @@ diff -dur xen-4.2.0.orig/tools/libfsimage/common/Makefile xen-4.2.0/tools/libfsi LDFLAGS = $(LDFLAGS-y) CFLAGS += $(PTHREAD_CFLAGS) -diff -dur xen-4.2.0.orig/tools/libxl/Makefile xen-4.2.0/tools/libxl/Makefile ---- xen-4.2.0.orig/tools/libxl/Makefile 2012-09-17 12:21:18.000000000 +0200 -+++ xen-4.2.0/tools/libxl/Makefile 2012-10-23 09:24:52.000000000 +0200 -@@ -173,8 +173,8 @@ - libxlutil.so.$(XLUMAJOR): libxlutil.so.$(XLUMAJOR).$(XLUMINOR) - ln -sf $< $@ - --libxlutil.so.$(XLUMAJOR).$(XLUMINOR): $(LIBXLU_OBJS) -- $(CC) $(LDFLAGS) -Wl,$(SONAME_LDFLAG) -Wl,libxlutil.so.$(XLUMAJOR) $(SHLIB_LDFLAGS) -o $@ $^ $(LIBXLU_LIBS) $(APPEND_LDFLAGS) -+libxlutil.so.$(XLUMAJOR).$(XLUMINOR): $(LIBXLU_OBJS) libxenlight.so -+ $(CC) $(LDFLAGS) -Wl,$(SONAME_LDFLAG) -Wl,libxlutil.so.$(XLUMAJOR) $(SHLIB_LDFLAGS) -o $@ $^ $(LIBXLU_LIBS) -L. -lxenlight $(APPEND_LDFLAGS) - - libxlutil.a: $(LIBXLU_OBJS) - $(AR) rcs libxlutil.a $^ diff --git a/xen-ulong.patch b/xen-ulong.patch deleted file mode 100644 index 9842e65..0000000 --- a/xen-ulong.patch +++ /dev/null @@ -1,20 +0,0 @@ ---- xen-4.2.1/tools/debugger/gdbsx/xg/xg_main.c.orig 2012-12-17 16:00:22.000000000 +0100 -+++ xen-4.2.1/tools/debugger/gdbsx/xg/xg_main.c 2013-01-13 08:38:22.865825568 +0100 -@@ -178,7 +178,7 @@ - hypercall.op = __HYPERVISOR_domctl; - hypercall.arg[0] = (unsigned long)&domctl; - -- rc = ioctl(_dom0_fd, IOCTL_PRIVCMD_HYPERCALL, (ulong)&hypercall); -+ rc = ioctl(_dom0_fd, IOCTL_PRIVCMD_HYPERCALL, (unsigned long)&hypercall); - if (domctlarg && sz) - munlock(domctlarg, sz); - return rc; -@@ -218,7 +218,7 @@ - hypercall.arg[0] = (unsigned long)XENVER_capabilities; - hypercall.arg[1] = (unsigned long)&xen_caps; - -- rc = ioctl(_dom0_fd, IOCTL_PRIVCMD_HYPERCALL, (ulong)&hypercall); -+ rc = ioctl(_dom0_fd, IOCTL_PRIVCMD_HYPERCALL, (unsigned long)&hypercall); - munlock(&xen_caps, sizeof(xen_caps)); - XGTRC("XENCAPS:%s\n", xen_caps); - diff --git a/xen.spec b/xen.spec index 950dddc..2b7a6b7 100644 --- a/xen.spec +++ b/xen.spec @@ -1,5 +1,7 @@ # # TODO: +# - verify upstream systemd .services vs SOURCES +# at least patch to use PLD-specific # - check if other tools/libs are not usable in domU, move them to -guest # packages if so # - pass bconds to qemu configure script (tricky, as the script is called from @@ -9,18 +11,17 @@ # - mini-os objects are relinked on install (because of .PHONY rules used to make them) # # Conditional build: -%bcond_without qemu_traditional # without qemu-xen-traditional -%bcond_without opengl # OpenGL support in Xen qemu -%bcond_without sdl # SDL support in Xen qemu -%bcond_without bluetooth # bluetooth support in Xen qemu -%bcond_without brlapi # brlapi support in Xen qemu -%bcond_without ocaml # Ocaml libraries for Xen tools -%bcond_without efi # EFI hypervisor -%bcond_without hypervisor # Xen hypervisor build -%bcond_without stubdom # stubdom build -%bcond_without xsm # XSM security module (by default, Flask) -%bcond_without blktap1 # blktap1 support -%bcond_without xend # include the obsolete xend & xm +%bcond_without qemu_traditional # without qemu-xen-traditional +%bcond_without opengl # OpenGL support in Xen qemu +%bcond_without sdl # SDL support in Xen qemu +%bcond_without bluetooth # bluetooth support in Xen qemu +%bcond_without brlapi # brlapi support in Xen qemu +%bcond_without ocaml # Ocaml libraries for Xen tools +%bcond_without efi # EFI hypervisor +%bcond_without hypervisor # Xen hypervisor build +%bcond_without stubdom # stubdom build +%bcond_without xsm # XSM security module (by default, Flask) +%bcond_without blktap1 # blktap1 support %ifnarch %{x8664} arm %undefine with_hypervisor @@ -41,12 +42,12 @@ Summary: Xen - a virtual machine monitor Summary(pl.UTF-8): Xen - monitor maszyny wirtualnej Name: xen -Version: 4.4.3 -Release: 1 +Version: 4.5.1 +Release: 0.1 License: GPL v2, interface parts on BSD-like Group: Applications/System Source0: http://bits.xensource.com/oss-xen/release/%{version}/%{name}-%{version}.tar.gz -# Source0-md5: fae37c3afc92e7d5d3e93fbe9b81ec2c +# Source0-md5: d12dc9e5e8bd22a68b5c7f53119221f1 # used by stubdoms Source10: %{xen_extfiles_url}/lwip-1.3.0.tar.gz # Source10-md5: 36cc57650cffda9a0269493be2a169bb @@ -66,25 +67,24 @@ Source18: http://xenbits.xen.org/xen-extfiles/tpm_emulator-%{tpm_emulator_versio # Source18-md5: e26becb8a6a2b6695f6b3e8097593db8 Source19: ftp://ftp.gmplib.org/pub/gmp-%{gmp_version}/gmp-%{gmp_version}.tar.bz2 # Source19-md5: dd60683d7057917e34630b4a787932e8 -Source30: proc-xen.mount -Source31: var-lib-xenstored.mount +#Source30: proc-xen.mount +#Source31: var-lib-xenstored.mount Source32: blktapctrl.service Source33: blktapctrl.sysconfig -Source34: xenconsoled.service +#Source34: xenconsoled.service +# XXX: upstream xenconsoled expects xencommons Source35: xenconsoled.sysconfig -Source36: xenstored.service +#Source36: xenstored.service +# XXX: upstream xenstored expects xencommons Source37: xenstored.sysconfig Source38: xenstored.tmpfiles -Source39: xend.service -Source40: xend.tmpfiles -Source41: xen-watchdog.service -Source42: xen-dom0-modules-load.conf +#Source41: xen-watchdog.service +#Source42: xen-dom0-modules-load.conf Source43: xendomains.sh -Source44: xendomains.service -Source45: xen-qemu-dom0-disk-backend.service +#Source44: xendomains.service +#Source45: xen-qemu-dom0-disk-backend.service Source46: xen-qemu-dom0-disk-backend.init # sysvinit scripts -Source50: xend.init Source51: xenconsoled.init Source52: xenstored.init Source53: xen-watchdog.init @@ -100,48 +100,34 @@ Patch0: %{name}-python_scripts.patch Patch1: %{name}-symbols.patch Patch2: %{name}-curses.patch Patch3: pygrubfix.patch -Patch4: xend.catchbt.patch -Patch5: xend-pci-loop.patch Patch6: %{name}-dumpdir.patch # Warning: this disables ingress filtering implemented in xen scripts! Patch7: %{name}-net-disable-iptables-on-bridge.patch -Patch8: %{name}-configure-xend.patch Patch9: %{name}-gawk.patch Patch10: %{name}-qemu.patch -Patch11: %{name}-ulong.patch Patch12: %{name}-doc.patch Patch13: %{name}-paths.patch Patch14: %{name}-no_fetcher.patch Patch15: odd-glib2-fix.patch Patch16: %{name}-gmp-abi.patch -# based on: http://xenbits.xen.org/xsa/xsa99.patch -Patch17: xsa99.patch Patch18: %{name}-make.patch Patch19: %{name}-no_Werror.patch # http://git.alpinelinux.org/cgit/aports/plain/main/xen/gnutls-3.4.0.patch Patch20: %{name}-gnutls-3.4.patch URL: http://www.xen.org/products/xenhyp.html -%if %{with qemu_traditional} -%{?with_opengl:BuildRequires: OpenGL-devel} -%{?with_sdl:BuildRequires: SDL-devel >= 1.2.1} -%endif +BuildRequires: autoconf >= 2.67 %ifarch %{ix86} %{x8664} BuildRequires: acpica -BuildRequires: autoconf BuildRequires: bcc BuildRequires: bin86 %endif -%if %{with qemu_traditional} -%{?with_bluetooth:BuildRequires: bluez-libs-devel} -%{?with_brlapi:BuildRequires: brlapi-devel} -%endif %{?with_efi:BuildRequires: binutils >= 3:2.23.51.0.3-2} BuildRequires: bzip2-devel -BuildRequires: curl-devel -BuildRequires: cyrus-sasl-devel >= 2 %if %{with xsm} BuildRequires: checkpolicy %endif +BuildRequires: curl-devel +BuildRequires: cyrus-sasl-devel >= 2 BuildRequires: e2fsprogs-devel BuildRequires: gcc >= 6:4.1 %ifarch %{x8664} @@ -150,17 +136,21 @@ BuildRequires: gcc-multilib-32 >= 6:4.1 BuildRequires: gettext-tools BuildRequires: glib2-devel >= 1:2.12 BuildRequires: gnutls-devel -BuildRequires: keyutils-devel +BuildRequires: keyutils-devel BuildRequires: latex2html >= 2008 BuildRequires: libaio-devel BuildRequires: libcap-devel +%ifarch arm aarch64 +BuildRequires: libfdt-devel +%endif BuildRequires: libjpeg-devel +BuildRequires: libnl-devel >= 3.2.8 BuildRequires: libpng-devel BuildRequires: libuuid-devel BuildRequires: lzo-devel >= 2 BuildRequires: ncurses-devel %if %{with ocaml} -BuildRequires: ocaml >= 3.04-7 +BuildRequires: ocaml >= 3.11.0 BuildRequires: ocaml-findlib %endif BuildRequires: nss-devel >= 3.12.8 @@ -178,17 +168,21 @@ BuildRequires: texlive-dvips BuildRequires: texlive-latex-psnfss BuildRequires: texlive-xetex BuildRequires: transfig -%{?with_qemu_traditional:BuildRequires: vde2-devel} BuildRequires: which # for xfsctl () BuildRequires: xfsprogs-devel +BuildRequires: xz-devel +BuildRequires: yajl-devel +BuildRequires: zlib-devel %if %{with qemu_traditional} +%{?with_opengl:BuildRequires: OpenGL-devel} +%{?with_sdl:BuildRequires: SDL-devel >= 1.2.1} +%{?with_bluetooth:BuildRequires: bluez-libs-devel} +%{?with_brlapi:BuildRequires: brlapi-devel} +BuildRequires: vde2-devel BuildRequires: xorg-lib-libX11-devel BuildRequires: xorg-lib-libXext-devel %endif -BuildRequires: xz-devel -BuildRequires: yajl-devel -BuildRequires: zlib-devel %if %{with qemu_traditional} # FIXME: see qemu configure comments on top of spec %{!?with_opengl:BuildConflicts: OpenGL-devel} @@ -217,6 +211,7 @@ Requires: which Requires: %{name}-guest = %{version}-%{release} Obsoletes: xen-doc Obsoletes: xen-udev +Obsoletes: xen-xend ExclusiveArch: %{ix86} %{x8664} arm %ifarch %{ix86} %{x8664} # for HVM @@ -225,7 +220,7 @@ Suggests: qemu-system-x86 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) # some PPC/SPARC boot images in ELF format -%define _noautostrip .*%{_datadir}/\\(xen\\|qemu-xen\\)/qemu/\\(openbios-.*\\|palcode-clipper\\|s390-ccw.img\\) +%define _noautostrip .*%{_datadir}/\\(xen\\|qemu-xen\\)/qemu/\\(openbios-.*\\|palcode-clipper\\|s390-ccw.img\\) %description This package contains the Xen hypervisor and Xen tools, needed to run @@ -312,19 +307,6 @@ Static Xen libraries. %description static -l pl.UTF-8 Statyczne biblioteki Xena. -%package xend -Summary: xend daemon -Summary(pl.UTF-8): Demon xend -Group: Daemons -Requires(post,preun,postun): systemd-units >= 38 -Requires: systemd-units >= 38 - -%description xend -xend daemon. - -%description xend -l pl.UTF-8 -Demon xend. - %package -n ocaml-xen Summary: OCaml bindings for Xen Summary(pl.UTF-8): Wiązania OCamla dla Xena @@ -384,11 +366,11 @@ Xen Python modules for both dom0 and domU virtual machines. Moduły Pythona dla maszyn wirtualnych dom0 i domU. %package -n bash-completion-%{name} -Summary: bash-completion for Xen (xl) +Summary: bash-completion for Xen (xl) Summary(pl.UTF-8): Bashowe dopełnianie poleceń dla Xena (xl) -Group: Applications/Shells -Requires: %{name} = %{version}-%{release} -Requires: bash-completion +Group: Applications/Shells +Requires: %{name} = %{version}-%{release} +Requires: bash-completion %description -n bash-completion-%{name} This package provides bash-completion for Xen (xl). @@ -416,20 +398,15 @@ Nadzorca Xen w postaci, która może być uruchomiona wprost z firmware %patch1 -p1 %patch2 -p1 %patch3 -p1 -%patch4 -p1 -%patch5 -p1 %patch6 -p1 %patch7 -p1 -%patch8 -p1 %patch9 -p1 %patch10 -p1 -%patch11 -p1 %patch12 -p1 %patch13 -p1 %patch14 -p1 %patch15 -p1 %patch16 -p1 -%patch17 -p1 %patch18 -p1 %patch19 -p1 %patch20 -p1 @@ -462,24 +439,23 @@ export PATH=$(pwd)/our-ld:$PATH export CFLAGS="%{rpmcflags} -I/usr/include/ncurses" export CXXFLAGS="%{rpmcflags} -I/usr/include/ncurses" -# NOTE: -# - there is a quoting bug (in tools/driver/Makefile) that causes -# openssl is used instead of gcrypt; that's OK, openssl is obligatory -# anyway (see configure), gcrypt is optional +# NOTE on ac_cv_*: +# - use openssl (libcrypto) instead of libgcrypt as openssl is obligatory anyway # - prevent libiconv from being detected (not needed with glibc) %configure \ CPPFLAGS="%{rpmcppflags} -I/usr/include/ncurses" \ + ac_cv_lib_gcrypt_gcry_md_hash_buffer=no \ ac_cv_lib_iconv_libiconv_open=no \ - %{__enable_disable qemu_traditional qemu-traditional} \ %{__enable_disable blktap1 blktap1} \ - %{__enable_disable xend xend} \ + --disable-debug \ + %{__enable_disable qemu_traditional qemu-traditional} \ --with-system-seabios=/usr/share/seabios/bios.bin \ %ifarch %{x8664} --with-system-qemu=/usr/bin/qemu-system-x86_64 \ %else --with-system-qemu=/usr/bin/qemu-system-i386 \ %endif - --disable-debug + --with-systemd=%{systemdunitdir} %{__make} -j1 dist-xen dist-tools dist-docs \ %{!?with_ocaml:OCAML_TOOLS=n} \ @@ -521,32 +497,24 @@ ln -s %{_prefix}/lib/%{name}/bin/qemu-dm $RPM_BUILD_ROOT%{_libdir}/%{name}/bin/q %endif %endif -install %{SOURCE30} $RPM_BUILD_ROOT%{systemdunitdir}/proc-xen.mount -install %{SOURCE31} $RPM_BUILD_ROOT%{systemdunitdir}/var-lib-xenstored.mount +#install %{SOURCE30} $RPM_BUILD_ROOT%{systemdunitdir}/proc-xen.mount +#install %{SOURCE31} $RPM_BUILD_ROOT%{systemdunitdir}/var-lib-xenstored.mount %if %{with blktap1} install %{SOURCE32} $RPM_BUILD_ROOT%{systemdunitdir}/blktapctrl.service install %{SOURCE33} $RPM_BUILD_ROOT/etc/sysconfig/blktapctrl %endif -install %{SOURCE34} $RPM_BUILD_ROOT%{systemdunitdir}/xenconsoled.service +#install %{SOURCE34} $RPM_BUILD_ROOT%{systemdunitdir}/xenconsoled.service install %{SOURCE35} $RPM_BUILD_ROOT/etc/sysconfig/xenconsoled -install %{SOURCE36} $RPM_BUILD_ROOT%{systemdunitdir}/xenstored.service +#install %{SOURCE36} $RPM_BUILD_ROOT%{systemdunitdir}/xenstored.service install %{SOURCE37} $RPM_BUILD_ROOT/etc/sysconfig/xenstored -install %{SOURCE38} $RPM_BUILD_ROOT%{systemdtmpfilesdir}/xenstored.conf -%if %{with xend} -install %{SOURCE39} $RPM_BUILD_ROOT%{systemdunitdir}/xend.service -install %{SOURCE40} $RPM_BUILD_ROOT%{systemdtmpfilesdir}/xend.conf -%endif -install %{SOURCE41} $RPM_BUILD_ROOT%{systemdunitdir}/xen-watchdog.service -install %{SOURCE42} $RPM_BUILD_ROOT/etc/modules-load.d/xen-dom0.conf +#install %{SOURCE41} $RPM_BUILD_ROOT%{systemdunitdir}/xen-watchdog.service +#install %{SOURCE42} $RPM_BUILD_ROOT/etc/modules-load.d/xen-dom0.conf install %{SOURCE43} $RPM_BUILD_ROOT%{_prefix}/lib/%{name}/bin/xendomains.sh -install %{SOURCE44} $RPM_BUILD_ROOT%{systemdunitdir}/xendomains.service -install %{SOURCE45} $RPM_BUILD_ROOT%{systemdunitdir}/xen-qemu-dom0-disk-backend.service +#install %{SOURCE44} $RPM_BUILD_ROOT%{systemdunitdir}/xendomains.service +#install %{SOURCE45} $RPM_BUILD_ROOT%{systemdunitdir}/xen-qemu-dom0-disk-backend.service # sysvinit scripts %{__rm} $RPM_BUILD_ROOT/etc/rc.d/init.d/* %{__rm} $RPM_BUILD_ROOT/etc/sysconfig/xencommons -%if %{with xend} -install %{SOURCE50} $RPM_BUILD_ROOT/etc/rc.d/init.d/xend -%endif install %{SOURCE51} $RPM_BUILD_ROOT/etc/rc.d/init.d/xenconsoled install %{SOURCE52} $RPM_BUILD_ROOT/etc/rc.d/init.d/xenstored install %{SOURCE53} $RPM_BUILD_ROOT/etc/rc.d/init.d/xen-watchdog @@ -554,6 +522,8 @@ install %{SOURCE54} $RPM_BUILD_ROOT/etc/rc.d/init.d/xendomains install %{SOURCE46} $RPM_BUILD_ROOT/etc/rc.d/init.d/xen-qemu-dom0-disk-backend install %{SOURCE55} $RPM_BUILD_ROOT/etc/logrotate.d/xen install %{SOURCE56} $RPM_BUILD_ROOT%{systemdtmpfilesdir}/xen.conf +install -d $RPM_BUILD_ROOT/var/run/xenstored +install %{SOURCE38} $RPM_BUILD_ROOT%{systemdtmpfilesdir}/xenstored.conf install %{SOURCE60} $RPM_BUILD_ROOT%{_prefix}/lib/%{name}/bin/xen-init-list install %{SOURCE61} $RPM_BUILD_ROOT%{_prefix}/lib/%{name}/bin/xen-toolstack @@ -587,10 +557,6 @@ done %{__rm} -r $RPM_BUILD_ROOT%{_docdir}/xen %{__rm} $RPM_BUILD_ROOT%{_includedir}/%{name}/COPYING -%if %{without xend} -%{__rm} -r $RPM_BUILD_ROOT/var/run/xend -%endif - %clean rm -rf $RPM_BUILD_ROOT @@ -625,20 +591,6 @@ fi %postun %systemd_reload -%post xend -/sbin/chkconfig --add xend -%systemd_post xend.service - -%preun xend -if [ "$1" = "0" ]; then - %service xend stop - /sbin/chkconfig --del xend -fi -%systemd_preun xend.service - -%postun xend -%systemd_reload - %post libs -p /sbin/ldconfig %postun libs -p /sbin/ldconfig @@ -657,7 +609,7 @@ fi /boot/%{name}.gz %endif %if %{with xsm} -/boot/xenpolicy.24 +/boot/xenpolicy-%{version} %endif %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/xenconsoled %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/xenstored @@ -668,14 +620,21 @@ fi %attr(754,root,root) /etc/rc.d/init.d/xenstored %attr(754,root,root) /etc/rc.d/init.d/xendomains %attr(754,root,root) /etc/rc.d/init.d/xen-qemu-dom0-disk-backend -%config(noreplace) %verify(not md5 mtime size) /etc/modules-load.d/xen-dom0.conf +%{_prefix}/lib/modules-load.d/xen.conf %{systemdunitdir}/proc-xen.mount %{systemdunitdir}/var-lib-xenstored.mount +%{systemdunitdir}/xen-init-dom0.service %{systemdunitdir}/xen-watchdog.service %{systemdunitdir}/xenconsoled.service %{systemdunitdir}/xenstored.service +%{systemdunitdir}/xenstored.socket +%{systemdunitdir}/xenstored_ro.socket %{systemdunitdir}/xendomains.service %{systemdunitdir}/xen-qemu-dom0-disk-backend.service +%if %{with blktap1} +%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/blktapctrl +%{systemdunitdir}/blktapctrl.service +%endif %dir %{_sysconfdir}/xen %dir %{_sysconfdir}/xen/auto %dir %{_sysconfdir}/xen/examples @@ -691,7 +650,6 @@ fi %attr(755,root,root) %{_bindir}/qemu-img-xen %attr(755,root,root) %{_bindir}/qemu-nbd-xen %endif -%attr(755,root,root) %{_bindir}/remus %attr(755,root,root) %{_bindir}/xencons %attr(755,root,root) %{_bindir}/xencov_split %attr(755,root,root) %{_bindir}/xentrace* @@ -756,20 +714,15 @@ fi %{_mandir}/man1/xentop.1* %{_mandir}/man1/xentrace_format.1* %{_mandir}/man1/xl.1* -%if %{with xend} -%{_mandir}/man1/xm.1* -%{_mandir}/man5/xend-config.sxp.5* -%endif %{_mandir}/man5/xl.cfg.5* %{_mandir}/man5/xl.conf.5* %{_mandir}/man5/xlcpupool.cfg.5* -%{_mandir}/man5/xmdomain.cfg.5* %{_mandir}/man8/xentrace.8* %{_sharedstatedir}/xen %{_sharedstatedir}/xenstored %dir /var/run/xenstored -%{systemdtmpfilesdir}/xenstored.conf %{systemdtmpfilesdir}/xen.conf +%{systemdtmpfilesdir}/xenstored.conf %dir %attr(0700,root,root) /var/log/xen %dir %attr(0700,root,root) /var/log/xen/console %if %{with qemu_traditional} @@ -794,11 +747,11 @@ fi %attr(755,root,root) %{_libdir}/libvhd.so.*.*.* %attr(755,root,root) %ghost %{_libdir}/libvhd.so.1.0 %attr(755,root,root) %{_libdir}/libxenctrl.so.*.*.* -%attr(755,root,root) %ghost %{_libdir}/libxenctrl.so.4.4 +%attr(755,root,root) %ghost %{_libdir}/libxenctrl.so.4.5 %attr(755,root,root) %{_libdir}/libxenguest.so.*.*.* -%attr(755,root,root) %ghost %{_libdir}/libxenguest.so.4.4 +%attr(755,root,root) %ghost %{_libdir}/libxenguest.so.4.5 %attr(755,root,root) %{_libdir}/libxenlight.so.*.*.* -%attr(755,root,root) %ghost %{_libdir}/libxenlight.so.4.4 +%attr(755,root,root) %ghost %{_libdir}/libxenlight.so.4.5 %attr(755,root,root) %{_libdir}/libxenstat.so.*.* %attr(755,root,root) %ghost %{_libdir}/libxenstat.so.0 %attr(755,root,root) %{_libdir}/libxenvchan.so.*.*.* @@ -864,24 +817,6 @@ fi %{_libdir}/libxenstore.a %{_libdir}/libxlutil.a -%if %{with xend} -%files xend -%defattr(644,root,root,755) -%if %{with blktap1} -%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/blktapctrl -%{systemdunitdir}/blktapctrl.service -%endif -%{systemdunitdir}/xend.service -%attr(754,root,root) %{_sysconfdir}/rc.d/init.d/xend -%config(noreplace) %verify(not md5 mtime size) /etc/udev/rules.d/xend.rules -%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/xen/xm* -%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/xen/xend* -%attr(755,root,root) %{_sbindir}/xend -%attr(755,root,root) %{_sbindir}/xm -%dir %attr(700,root,root) /var/run/xend -%{systemdtmpfilesdir}/xend.conf -%endif - %if %{with ocaml} %files -n ocaml-xen %defattr(644,root,root,755) @@ -936,19 +871,9 @@ fi %files -n python-xen %defattr(644,root,root,755) %attr(755,root,root) %{py_sitedir}/fsimage.so -%{py_sitedir}/grub -%attr(755,root,root) %{py_sitedir}/xen/lowlevel/checkpoint.so -%attr(755,root,root) %{py_sitedir}/xen/lowlevel/flask.so -%attr(755,root,root) %{py_sitedir}/xen/lowlevel/netlink.so -%attr(755,root,root) %{py_sitedir}/xen/lowlevel/ptsname.so +%dir %{py_sitedir}/xen/lowlevel %attr(755,root,root) %{py_sitedir}/xen/lowlevel/xc.so -%if %{with xend} -%{py_sitedir}/xen/remus -%{py_sitedir}/xen/util -%{py_sitedir}/xen/web -%{py_sitedir}/xen/xend -%{py_sitedir}/xen/xm -%endif +%{py_sitedir}/grub %if "%{py_ver}" > "2.4" %{py_sitedir}/pygrub-0.3-py*.egg-info %{py_sitedir}/xen-3.0-py*.egg-info diff --git a/xend-pci-loop.patch b/xend-pci-loop.patch deleted file mode 100644 index 5c4118a..0000000 --- a/xend-pci-loop.patch +++ /dev/null @@ -1,19 +0,0 @@ -# Don't crash due to weird PCI cards (Bug 767742) - -diff -r fb8dd4c67778 tools/python/xen/util/pci.py ---- a/tools/python/xen/util/pci.py Tue Dec 13 14:16:20 2011 -0500 -+++ b/tools/python/xen/util/pci.py Wed Dec 14 15:46:56 2011 -0500 -@@ -1268,7 +1268,12 @@ class PciDevice: - pass - - def get_info_from_sysfs(self): -- self.find_capability(0x11) -+ try: -+ self.find_capability(0x11) -+ except PciDeviceParseError, err: -+ log.error("Caught '%s'" % err) -+ return False -+ - sysfs_mnt = find_sysfs_mnt() - if sysfs_mnt == None: - return False diff --git a/xend.catchbt.patch b/xend.catchbt.patch deleted file mode 100644 index 95eac54..0000000 --- a/xend.catchbt.patch +++ /dev/null @@ -1,30 +0,0 @@ ---- xen-4.1.2/tools/python/xen/xend/image.py.orig 2011-10-20 18:05:44.000000000 +0100 -+++ xen-4.1.2/tools/python/xen/xend/image.py 2011-11-20 20:41:10.730905790 +0000 -@@ -43,7 +43,11 @@ - from xen.util import utils - from xen.xend import osdep - --xc = xen.lowlevel.xc.xc() -+try: -+ xc = xen.lowlevel.xc.xc() -+except Exception: -+ print >>sys.stderr, ('xend/image.py: Error connecting to hypervisor') -+ os._exit(1) - - MAX_GUEST_CMDLINE = 1024 - ---- xen-4.1.2/tools/python/xen/xend/XendLogging.py.orig 2011-10-20 18:05:44.000000000 +0100 -+++ xen-4.1.2/tools/python/xen/xend/XendLogging.py 2012-01-10 21:27:57.304916048 +0000 -@@ -132,7 +132,11 @@ - fileHandler = openFileHandler(filename) - logfilename = filename - except IOError: -- logfilename = tempfile.mkstemp("-xend.log")[1] -+ try: -+ logfilename = tempfile.mkstemp("-xend.log")[1] -+ except IOError: -+ print >>sys.stderr, ('xend/XendLogging.py: Unable to open standard or temporary log file for xend') -+ os._exit(1) - fileHandler = openFileHandler(logfilename) - - fileHandler.setFormatter(logging.Formatter(LOGFILE_FORMAT, DATE_FORMAT)) diff --git a/xend.init b/xend.init deleted file mode 100644 index 2b2b199..0000000 --- a/xend.init +++ /dev/null @@ -1,86 +0,0 @@ -#!/bin/sh -# -# xend Script to start and stop the Xen control daemon. -# -# chkconfig: 2345 95 05 -# description: Starts and stops the Xen control daemon. -# - -# Source function library. -. /etc/rc.d/init.d/functions - -start() { - if [ -f /var/lock/subsys/xend ]; then - msg_already_running "Xen control daemon" - return - fi - if [ ! -f /var/lock/subsys/xenconsoled -o ! -f /var/lock/subsys/xenstored ]; then - echo "xenconsoled and xenstored must be started first" - return - fi - msg_starting "Starting Xen control daemon" - daemon /usr/sbin/xend - RETVAL=$? - [ $RETVAL -eq 0 ] && touch /var/lock/subsys/xend -} - -stop() { - if [ ! -f /var/lock/subsys/xend ]; then - msg_not_running "Xen control daemon" - return - fi - msg_stopping "Stopping Xen control daemon" - killproc xend - rm -f /var/lock/subsys/xend -} - -reload() { - if [ ! -f /var/lock/subsys/xend ]; then - msg_not_running "Xen control daemon" - RETVAL=7 - else - msg_reloading "Reloading Xen control daemon" - killproc /usr/sbin/xend -HUP - RETVAL=$? - fi -} - -condrestart() { - if [ ! -f /var/lock/subsys/xend ]; then - msg_not_running "Xen control daemon" - RETVAL=$1 - else - stop - start - fi -} - -RETVAL=0 -# See how we were called. -case "$1" in - start) - start - ;; - stop) - stop - ;; - restart) - stop - start - ;; - try-restart) - condrestart 0 - ;; - reload|force-reload) - reload - ;; - status) - status xend - exit $? - ;; - *) - msg_usage "$0 {start|stop|restart|try-restart|reload|force-reload|status}" - exit 3 -esac - -exit $RETVAL diff --git a/xend.service b/xend.service deleted file mode 100644 index 0830bc4..0000000 --- a/xend.service +++ /dev/null @@ -1,17 +0,0 @@ -[Unit] -Description=Xend - interface between hypervisor and some applications -Requires=proc-xen.mount -After=proc-xen.mount -Before=libvirtd.service libvirt-guests.service -ConditionPathExists=/proc/xen - -[Service] -Type=forking -PIDFile=/var/run/xend.pid -ExecStartPre=/bin/grep -q control_d /proc/xen/capabilities -ExecStart=/usr/sbin/xend start -ExecStop=/usr/sbin/xend stop -ExecReload=/usr/sbin/xend reload - -[Install] -WantedBy=multi-user.target diff --git a/xend.tmpfiles b/xend.tmpfiles deleted file mode 100644 index 84048e6..0000000 --- a/xend.tmpfiles +++ /dev/null @@ -1,2 +0,0 @@ -d /var/run/xend 0700 root root - -d /var/run/xend/boot 0700 root root - diff --git a/xsa99.patch b/xsa99.patch deleted file mode 100644 index 14e58f4..0000000 --- a/xsa99.patch +++ /dev/null @@ -1,257 +0,0 @@ -diff -durN -x '*~' -x '*.orig' -x '*.rej' xen-4.4.0.orig/tools/libxc/xc_mem_access.c xen-4.4.0/tools/libxc/xc_mem_access.c ---- xen-4.4.0.orig/tools/libxc/xc_mem_access.c 2014-03-10 11:43:57.000000000 +0100 -+++ xen-4.4.0/tools/libxc/xc_mem_access.c 2014-06-18 10:19:54.000000000 +0200 -@@ -24,19 +24,9 @@ - #include "xc_private.h" - - --int xc_mem_access_enable(xc_interface *xch, domid_t domain_id, -- uint32_t *port) -+void *xc_mem_access_enable(xc_interface *xch, domid_t domain_id, uint32_t *port) - { -- if ( !port ) -- { -- errno = EINVAL; -- return -1; -- } -- -- return xc_mem_event_control(xch, domain_id, -- XEN_DOMCTL_MEM_EVENT_OP_ACCESS_ENABLE, -- XEN_DOMCTL_MEM_EVENT_OP_ACCESS, -- port); -+ return xc_mem_event_enable(xch, domain_id, HVM_PARAM_ACCESS_RING_PFN, port); - } - - int xc_mem_access_disable(xc_interface *xch, domid_t domain_id) -diff -durN -x '*~' -x '*.orig' -x '*.rej' xen-4.4.0.orig/tools/libxc/xc_mem_event.c xen-4.4.0/tools/libxc/xc_mem_event.c ---- xen-4.4.0.orig/tools/libxc/xc_mem_event.c 2014-03-10 11:43:57.000000000 +0100 -+++ xen-4.4.0/tools/libxc/xc_mem_event.c 2014-06-18 10:19:54.000000000 +0200 -@@ -56,3 +56,118 @@ - return do_memory_op(xch, mode, &meo, sizeof(meo)); - } - -+void *xc_mem_event_enable(xc_interface *xch, domid_t domain_id, int param, -+ uint32_t *port) -+{ -+ void *ring_page = NULL; -+ unsigned long ring_pfn, mmap_pfn; -+ unsigned int op, mode; -+ int rc1, rc2, saved_errno; -+ -+ if ( !port ) -+ { -+ errno = EINVAL; -+ return NULL; -+ } -+ -+ /* Pause the domain for ring page setup */ -+ rc1 = xc_domain_pause(xch, domain_id); -+ if ( rc1 != 0 ) -+ { -+ PERROR("Unable to pause domain\n"); -+ return NULL; -+ } -+ -+ /* Get the pfn of the ring page */ -+ rc1 = xc_get_hvm_param(xch, domain_id, param, &ring_pfn); -+ if ( rc1 != 0 ) -+ { -+ PERROR("Failed to get pfn of ring page\n"); -+ goto out; -+ } -+ -+ mmap_pfn = ring_pfn; -+ ring_page = xc_map_foreign_batch(xch, domain_id, PROT_READ | PROT_WRITE, -+ &mmap_pfn, 1); -+ if ( mmap_pfn & XEN_DOMCTL_PFINFO_XTAB ) -+ { -+ /* Map failed, populate ring page */ -+ rc1 = xc_domain_populate_physmap_exact(xch, domain_id, 1, 0, 0, -+ &ring_pfn); -+ if ( rc1 != 0 ) -+ { -+ PERROR("Failed to populate ring pfn\n"); -+ goto out; -+ } -+ -+ mmap_pfn = ring_pfn; -+ ring_page = xc_map_foreign_batch(xch, domain_id, PROT_READ | PROT_WRITE, -+ &mmap_pfn, 1); -+ if ( mmap_pfn & XEN_DOMCTL_PFINFO_XTAB ) -+ { -+ PERROR("Could not map the ring page\n"); -+ goto out; -+ } -+ } -+ -+ switch ( param ) -+ { -+ case HVM_PARAM_PAGING_RING_PFN: -+ op = XEN_DOMCTL_MEM_EVENT_OP_PAGING_ENABLE; -+ mode = XEN_DOMCTL_MEM_EVENT_OP_PAGING; -+ break; -+ -+ case HVM_PARAM_ACCESS_RING_PFN: -+ op = XEN_DOMCTL_MEM_EVENT_OP_ACCESS_ENABLE; -+ mode = XEN_DOMCTL_MEM_EVENT_OP_ACCESS; -+ break; -+ -+ case HVM_PARAM_SHARING_RING_PFN: -+ op = XEN_DOMCTL_MEM_EVENT_OP_SHARING_ENABLE; -+ mode = XEN_DOMCTL_MEM_EVENT_OP_SHARING; -+ break; -+ -+ /* -+ * This is for the outside chance that the HVM_PARAM is valid but is invalid -+ * as far as mem_event goes. -+ */ -+ default: -+ errno = EINVAL; -+ rc1 = -1; -+ goto out; -+ } -+ -+ rc1 = xc_mem_event_control(xch, domain_id, op, mode, port); -+ if ( rc1 != 0 ) -+ { -+ PERROR("Failed to enable mem_event\n"); -+ goto out; -+ } -+ -+ /* Remove the ring_pfn from the guest's physmap */ -+ rc1 = xc_domain_decrease_reservation_exact(xch, domain_id, 1, 0, &ring_pfn); -+ if ( rc1 != 0 ) -+ PERROR("Failed to remove ring page from guest physmap"); -+ -+ out: -+ saved_errno = errno; -+ -+ rc2 = xc_domain_unpause(xch, domain_id); -+ if ( rc1 != 0 || rc2 != 0 ) -+ { -+ if ( rc2 != 0 ) -+ { -+ if ( rc1 == 0 ) -+ saved_errno = errno; -+ PERROR("Unable to unpause domain"); -+ } -+ -+ if ( ring_page ) -+ munmap(ring_page, XC_PAGE_SIZE); -+ ring_page = NULL; -+ -+ errno = saved_errno; -+ } -+ -+ return ring_page; -+} -diff -durN -x '*~' -x '*.orig' -x '*.rej' xen-4.4.0.orig/tools/libxc/xenctrl.h xen-4.4.0/tools/libxc/xenctrl.h ---- xen-4.4.0.orig/tools/libxc/xenctrl.h 2014-03-10 11:43:57.000000000 +0100 -+++ xen-4.4.0/tools/libxc/xenctrl.h 2014-06-18 10:19:54.000000000 +0200 -@@ -2040,6 +2040,12 @@ - int xc_mem_event_memop(xc_interface *xch, domid_t domain_id, - unsigned int op, unsigned int mode, - uint64_t gfn, void *buffer); -+/* -+ * Enables mem_event and returns the mapped ring page indicated by param. -+ * param can be HVM_PARAM_PAGING/ACCESS/SHARING_RING_PFN -+ */ -+void *xc_mem_event_enable(xc_interface *xch, domid_t domain_id, int param, -+ uint32_t *port); - - /** - * Mem paging operations. -@@ -2060,7 +2066,13 @@ - * Access tracking operations. - * Supported only on Intel EPT 64 bit processors. - */ --int xc_mem_access_enable(xc_interface *xch, domid_t domain_id, uint32_t *port); -+ -+/* -+ * Enables mem_access and returns the mapped ring page. -+ * Will return NULL on error. -+ * Caller has to unmap this page when done. -+ */ -+void *xc_mem_access_enable(xc_interface *xch, domid_t domain_id, uint32_t *port); - int xc_mem_access_disable(xc_interface *xch, domid_t domain_id); - int xc_mem_access_resume(xc_interface *xch, domid_t domain_id, - unsigned long gfn); -diff -durN -x '*~' -x '*.orig' -x '*.rej' xen-4.4.0.orig/tools/tests/xen-access/xen-access.c xen-4.4.0/tools/tests/xen-access/xen-access.c ---- xen-4.4.0.orig/tools/tests/xen-access/xen-access.c 2014-03-10 11:43:57.000000000 +0100 -+++ xen-4.4.0/tools/tests/xen-access/xen-access.c 2014-06-18 10:20:55.000000000 +0200 -@@ -231,7 +231,6 @@ - xenaccess_t *xenaccess = 0; - xc_interface *xch; - int rc; -- unsigned long ring_pfn, mmap_pfn; - - xch = xc_interface_open(NULL, NULL, 0); - if ( !xch ) -@@ -253,40 +252,12 @@ - /* Initialise lock */ - mem_event_ring_lock_init(&xenaccess->mem_event); - -- /* Map the ring page */ -- xc_get_hvm_param(xch, xenaccess->mem_event.domain_id, -- HVM_PARAM_ACCESS_RING_PFN, &ring_pfn); -- mmap_pfn = ring_pfn; -- xenaccess->mem_event.ring_page = -- xc_map_foreign_batch(xch, xenaccess->mem_event.domain_id, -- PROT_READ | PROT_WRITE, &mmap_pfn, 1); -- if ( mmap_pfn & XEN_DOMCTL_PFINFO_XTAB ) -- { -- /* Map failed, populate ring page */ -- rc = xc_domain_populate_physmap_exact(xenaccess->xc_handle, -- xenaccess->mem_event.domain_id, -- 1, 0, 0, &ring_pfn); -- if ( rc != 0 ) -- { -- PERROR("Failed to populate ring gfn\n"); -- goto err; -- } -- -- mmap_pfn = ring_pfn; -- xenaccess->mem_event.ring_page = -- xc_map_foreign_batch(xch, xenaccess->mem_event.domain_id, -- PROT_READ | PROT_WRITE, &mmap_pfn, 1); -- if ( mmap_pfn & XEN_DOMCTL_PFINFO_XTAB ) -- { -- PERROR("Could not map the ring page\n"); -- goto err; -- } -- } -- -- /* Initialise Xen */ -- rc = xc_mem_access_enable(xenaccess->xc_handle, xenaccess->mem_event.domain_id, -- &xenaccess->mem_event.evtchn_port); -- if ( rc != 0 ) -+ /* Enable mem_access */ -+ xenaccess->mem_event.ring_page = -+ xc_mem_access_enable(xenaccess->xc_handle, -+ xenaccess->mem_event.domain_id, -+ &xenaccess->mem_event.evtchn_port); -+ if ( xenaccess->mem_event.ring_page == NULL ) - { - switch ( errno ) { - case EBUSY: -@@ -296,7 +267,7 @@ - ERROR("EPT not supported for this guest"); - break; - default: -- perror("Error initialising shared page"); -+ perror("Error enabling mem_access"); - break; - } - goto err; -@@ -330,11 +301,6 @@ - (mem_event_sring_t *)xenaccess->mem_event.ring_page, - PAGE_SIZE); - -- /* Now that the ring is set, remove it from the guest's physmap */ -- if ( xc_domain_decrease_reservation_exact(xch, -- xenaccess->mem_event.domain_id, 1, 0, &ring_pfn) ) -- PERROR("Failed to remove ring from guest physmap"); -- - /* Get platform info */ - xenaccess->platform_info = malloc(sizeof(xc_platform_info_t)); - if ( xenaccess->platform_info == NULL ) -- 2.44.0