- Enable blktapctrl when qemu-traditional is required to satisfy

build dependencies.  Remove binaries after build if xend is
  disabled

- update ifarch usage in xen.spec to cover also arm
- blktapctrl is used only by xend
- fix xend-tools-xend sub pkg handling 
- default to gcc47 for sles11sp3 builds
- remove all latex packages from BuildRequires
- aarch64-rename-PSR_MODE_ELxx-to-match-linux-headers.patch

- add arch dependent install suffix for /boot/xen files

- Set max_cpus==4 for non-x86_64 builds

- Update to Xen 4.4.0 RC3 c/s 28321

- Add flex and bison to BuildRequires, needed by previous patch

- fate#316071: add discard support for file backed storage (qdisk)
  libxl.add-option-for-discard-support-to-xl-disk-conf.patch

OBS-URL: https://build.opensuse.org/package/show/Virtualization/xen?expand=0&rev=296
This commit is contained in:
Charles Arnold 2014-02-03 23:53:57 +00:00 committed by Git OBS Bridge
parent 5eed528ac8
commit af6dcd473d
14 changed files with 363 additions and 193 deletions

View File

@ -0,0 +1,37 @@
From 98abe3b337e69371678859c4cfd19df61aebb0d9 Mon Sep 17 00:00:00 2001
From: Olaf Hering <olaf@aepfle.de>
Date: Sun, 2 Feb 2014 20:42:42 +0100
Subject: aarch64: rename PSR_MODE_ELxx to match linux headers
https://bugs.launchpad.net/linaro-aarch64/+bug/1169164
Signed-off-by: Olaf Hering <olaf@aepfle.de>
---
xen/include/public/arch-arm.h | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/xen/include/public/arch-arm.h b/xen/include/public/arch-arm.h
index 7496556..95f2a7c 100644
--- a/xen/include/public/arch-arm.h
+++ b/xen/include/public/arch-arm.h
@@ -342,13 +342,13 @@ typedef uint64_t xen_callback_t;
/* 64 bit modes */
#define PSR_MODE_BIT 0x10 /* Set iff AArch32 */
-#define PSR_MODE_EL3h 0x0d
-#define PSR_MODE_EL3t 0x0c
-#define PSR_MODE_EL2h 0x09
-#define PSR_MODE_EL2t 0x08
-#define PSR_MODE_EL1h 0x05
-#define PSR_MODE_EL1t 0x04
-#define PSR_MODE_EL0t 0x00
+#define PSR_MODE_EL3h 0x0000000d
+#define PSR_MODE_EL3t 0x0000000c
+#define PSR_MODE_EL2h 0x00000009
+#define PSR_MODE_EL2t 0x00000008
+#define PSR_MODE_EL1h 0x00000005
+#define PSR_MODE_EL1t 0x00000004
+#define PSR_MODE_EL0t 0x00000000
#define PSR_GUEST32_INIT (PSR_ABT_MASK|PSR_FIQ_MASK|PSR_IRQ_MASK|PSR_MODE_SVC)
#define PSR_GUEST64_INIT (PSR_ABT_MASK|PSR_FIQ_MASK|PSR_IRQ_MASK|PSR_MODE_EL1h)

View File

@ -696,7 +696,7 @@ Index: xen-4.4.0-testing/xen/include/public/io/blkif.h
===================================================================
--- xen-4.4.0-testing.orig/xen/include/public/io/blkif.h
+++ xen-4.4.0-testing/xen/include/public/io/blkif.h
@@ -444,7 +444,7 @@
@@ -453,7 +453,7 @@
* Used in SLES sources for device specific command packet
* contained within the request. Reserved for that purpose.
*/

View File

@ -0,0 +1,129 @@
References: FATE#316071
Subject: libxl: add option for discard support to xl disk configuration
Handle new option discard=on|off for disk configuration. It is supposed
to disable discard support if file based backing storage was
intentionally created non-sparse to avoid fragmentation of the file.
The option is a boolean and intended for the backend driver. A new
boolean property "discard-enable" is written to the backend node. An
upcoming patch for qemu will make use of this property. The kernel
blkback driver may be updated as well to disable discard for phy based
backing storage.
This change does not break ABI. Instead of adding a new member ->discard_enable
to struct libxl_device_disk the existing ->readwrite member is reused.
Signed-off-by: Olaf Hering <olaf@aepfle.de>
---
docs/misc/xl-disk-configuration.txt | 15 +++++++++++++++
tools/libxl/libxl.c | 2 ++
tools/libxl/libxl.h | 11 +++++++++++
tools/libxl/libxlu_disk.c | 3 +++
tools/libxl/libxlu_disk_i.h | 2 +-
tools/libxl/libxlu_disk_l.l | 4 ++++
6 files changed, 36 insertions(+), 1 deletion(-)
Index: xen-4.4.0-testing/docs/misc/xl-disk-configuration.txt
===================================================================
--- xen-4.4.0-testing.orig/docs/misc/xl-disk-configuration.txt
+++ xen-4.4.0-testing/docs/misc/xl-disk-configuration.txt
@@ -178,6 +178,21 @@ information to be interpreted by the exe
These scripts are normally called "block-<script>".
+discard=<boolean>
+---------------
+
+Description: Instruct backend to advertise discard support to frontend
+Supported values: on, off, 0, 1
+Mandatory: No
+Default value: on if, available for that backend typ
+
+This option is an advisory setting for the backend driver, depending of the
+value, to advertise discard support (TRIM, UNMAP) to the frontend. The real
+benefit of this option is to be able to force it off rather than on. It allows
+to disable "hole punching" for file based backends which were intentionally
+created non-sparse to avoid fragmentation of the file.
+
+
============================================
DEPRECATED PARAMETERS, PREFIXES AND SYNTAXES
Index: xen-4.4.0-testing/tools/libxl/libxl.c
===================================================================
--- xen-4.4.0-testing.orig/tools/libxl/libxl.c
+++ xen-4.4.0-testing/tools/libxl/libxl.c
@@ -2196,6 +2196,8 @@ static void device_disk_add(libxl__egc *
flexarray_append(back, disk->readwrite ? "w" : "r");
flexarray_append(back, "device-type");
flexarray_append(back, disk->is_cdrom ? "cdrom" : "disk");
+ if (disk->readwrite == LIBXL_HAVE_LIBXL_DEVICE_DISK_DISCARD_DISABLE_MAGIC)
+ flexarray_append_pair(back, "discard-enable", "0");
flexarray_append(front, "backend-id");
flexarray_append(front, libxl__sprintf(gc, "%d", disk->backend_domid));
Index: xen-4.4.0-testing/tools/libxl/libxl.h
===================================================================
--- xen-4.4.0-testing.orig/tools/libxl/libxl.h
+++ xen-4.4.0-testing/tools/libxl/libxl.h
@@ -95,6 +95,17 @@
#define LIBXL_HAVE_BUILDINFO_EVENT_CHANNELS 1
/*
+ * The libxl_device_disk lacks discard_enable field, disabling discard
+ * is supported without breaking the ABI. This is done by overloading
+ * struct libxl_device_disk->readwrite:
+ * readwrite == 0: disk is readonly, no discard
+ * readwrite == 1: disk is readwrite, backend driver may enable discard
+ * readwrite == MAGIC: disk is readwrite, backend driver should not offer
+ * discard to the frontend driver.
+ */
+#define LIBXL_HAVE_LIBXL_DEVICE_DISK_DISCARD_DISABLE_MAGIC 0xdcadU
+
+/*
* libxl ABI compatibility
*
* The only guarantee which libxl makes regarding ABI compatibility
Index: xen-4.4.0-testing/tools/libxl/libxlu_disk.c
===================================================================
--- xen-4.4.0-testing.orig/tools/libxl/libxlu_disk.c
+++ xen-4.4.0-testing/tools/libxl/libxlu_disk.c
@@ -80,6 +80,9 @@ int xlu_disk_parse(XLU_Config *cfg,
disk->format = LIBXL_DISK_FORMAT_EMPTY;
}
+ if (disk->readwrite && dpc.disable_discard)
+ disk->readwrite = LIBXL_HAVE_LIBXL_DEVICE_DISK_DISCARD_DISABLE_MAGIC;
+
if (!disk->vdev) {
xlu__disk_err(&dpc,0, "no vdev specified");
goto x_err;
Index: xen-4.4.0-testing/tools/libxl/libxlu_disk_i.h
===================================================================
--- xen-4.4.0-testing.orig/tools/libxl/libxlu_disk_i.h
+++ xen-4.4.0-testing/tools/libxl/libxlu_disk_i.h
@@ -10,7 +10,7 @@ typedef struct {
void *scanner;
YY_BUFFER_STATE buf;
libxl_device_disk *disk;
- int access_set, had_depr_prefix;
+ int access_set, disable_discard, had_depr_prefix;
const char *spec;
} DiskParseContext;
Index: xen-4.4.0-testing/tools/libxl/libxlu_disk_l.l
===================================================================
--- xen-4.4.0-testing.orig/tools/libxl/libxlu_disk_l.l
+++ xen-4.4.0-testing/tools/libxl/libxlu_disk_l.l
@@ -173,6 +173,10 @@ backendtype=[^,]*,? { STRIP(','); setbac
vdev=[^,]*,? { STRIP(','); SAVESTRING("vdev", vdev, FROMEQUALS); }
script=[^,]*,? { STRIP(','); SAVESTRING("script", script, FROMEQUALS); }
+discard=on,? { DPC->disable_discard = 0; }
+discard=1,? { DPC->disable_discard = 0; }
+discard=off,? { DPC->disable_discard = 1; }
+discard=0,? { DPC->disable_discard = 1; }
/* the target magic parameter, eats the rest of the string */

View File

@ -6,7 +6,7 @@ Index: xen-4.4.0-testing/unmodified_drivers/linux-2.6/platform-pci/platform-pci.
===================================================================
--- xen-4.4.0-testing.orig/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
+++ xen-4.4.0-testing/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
@@ -322,7 +322,10 @@ static int check_platform_magic(struct d
@@ -337,7 +337,10 @@ static int check_platform_magic(struct d
if (magic != XEN_IOPORT_MAGIC_VAL) {
err = "unrecognised magic value";

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:3b56a36923b59d32ee786e4f43f4b6cf31f260d8244ca62fc9a2dcc6fc9e7dcc
size 7571075
oid sha256:59ff093f019bef266d60fdf799321b322d98664a4cb410fc064706d165e103d5
size 7572593

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:09f3f0d1ddfa65ac71bd67da2ba45992f5945bacd551cce01e6ea50aec96bca0
size 3213079
oid sha256:554f1d2575ee8650425dcceec67de6cabcab54c185648a4a606713c680eaf492
size 3212156

View File

@ -1,21 +1,23 @@
References: FATE#316071
Subject: [RFC] qemu-upstream: add discard support for xen_disk
Subject: qemu-upstream: add discard support for xen_disk
Implement discard support for xen_disk. It makes use of the existing
discard code in qemu.
The discard support is enabled unconditionally. But it would be worth to
have a knob to disable it in case the backing file was intentionally
created non-sparse to avoid fragmentation.
How could this be knob be passed from domU.cfg:disk=[] to the actual
qemu process? Perhaps introduce an option discard=on|off|ignore|unmap.
The discard support is enabled unconditionally. The tool stack may provide a
property "discard-enable" in the backend node to optionally disable discard
support. This is helpful in case the backing file was intentionally created
non-sparse to avoid fragmentation.
v2:
rename xenstore property from discard_enable to discard-enable
move discard_req to case BLKIF_OP_DISCARD
Signed-off-by: Olaf Hering <olaf@aepfle.de>
---
tools/qemu-xen-dir-remote/hw/block/xen_blkif.h | 12 ++++++++
tools/qemu-xen-dir-remote/hw/block/xen_disk.c | 36 +++++++++++++++++++++++++
2 files changed, 48 insertions(+)
tools/qemu-xen-dir-remote/hw/block/xen_blkif.h | 12 ++++++++++
tools/qemu-xen-dir-remote/hw/block/xen_disk.c | 30 +++++++++++++++++++++++++
2 files changed, 42 insertions(+)
Index: xen-4.4.0-testing/tools/qemu-xen-dir-remote/hw/block/xen_blkif.h
===================================================================
@ -51,16 +53,7 @@ Index: xen-4.4.0-testing/tools/qemu-xen-dir-remote/hw/block/xen_disk.c
===================================================================
--- xen-4.4.0-testing.orig/tools/qemu-xen-dir-remote/hw/block/xen_disk.c
+++ xen-4.4.0-testing/tools/qemu-xen-dir-remote/hw/block/xen_disk.c
@@ -68,6 +68,8 @@ struct ioreq {
int presync;
int postsync;
uint8_t mapped;
+ int64_t sector_num;
+ int nb_sectors;
/* grant mapping */
uint32_t domids[BLKIF_MAX_SEGMENTS_PER_REQUEST];
@@ -114,6 +116,7 @@ struct XenBlkDev {
@@ -114,6 +114,7 @@ struct XenBlkDev {
int requests_finished;
/* Persistent grants extension */
@ -68,64 +61,53 @@ Index: xen-4.4.0-testing/tools/qemu-xen-dir-remote/hw/block/xen_disk.c
gboolean feature_persistent;
GTree *persistent_gnts;
unsigned int persistent_gnt_count;
@@ -232,6 +235,7 @@ static void ioreq_release(struct ioreq *
static int ioreq_parse(struct ioreq *ioreq)
{
struct XenBlkDev *blkdev = ioreq->blkdev;
+ struct blkif_request_discard *discard_req = (void *)&ioreq->req;
uintptr_t mem;
size_t len;
int i;
@@ -244,6 +248,10 @@ static int ioreq_parse(struct ioreq *ior
case BLKIF_OP_READ:
ioreq->prot = PROT_WRITE; /* to memory */
@@ -253,6 +254,8 @@ static int ioreq_parse(struct ioreq *ior
case BLKIF_OP_WRITE:
ioreq->prot = PROT_READ; /* from memory */
break;
+ case BLKIF_OP_DISCARD:
+ ioreq->sector_num = discard_req->sector_number;
+ ioreq->nb_sectors = discard_req->nr_sectors;
+ return 0;
case BLKIF_OP_FLUSH_DISKCACHE:
ioreq->presync = 1;
if (!ioreq->req.nr_segments) {
@@ -521,6 +529,13 @@ static int ioreq_runio_qemu_aio(struct i
default:
xen_be_printf(&blkdev->xendev, 0, "error: unknown operation (%d)\n",
ioreq->req.operation);
@@ -521,6 +524,16 @@ static int ioreq_runio_qemu_aio(struct i
&ioreq->v, ioreq->v.size / BLOCK_SIZE,
qemu_aio_complete, ioreq);
break;
+ case BLKIF_OP_DISCARD:
+ bdrv_acct_start(blkdev->bs, &ioreq->acct, ioreq->nb_sectors * BLOCK_SIZE, BDRV_ACCT_WRITE);
+ {
+ struct blkif_request_discard *discard_req = (void *)&ioreq->req;
+ bdrv_acct_start(blkdev->bs, &ioreq->acct, discard_req->nr_sectors * BLOCK_SIZE, BDRV_ACCT_WRITE);
+ ioreq->aio_inflight++;
+ bdrv_aio_discard(blkdev->bs,
+ ioreq->sector_num, ioreq->nb_sectors,
+ discard_req->sector_number, discard_req->nr_sectors,
+ qemu_aio_complete, ioreq);
+ break;
+ }
default:
/* unknown operation (shouldn't happen -- parse catches this) */
goto err;
@@ -699,6 +714,23 @@ static void blk_alloc(struct XenDevice *
@@ -699,6 +712,19 @@ static void blk_alloc(struct XenDevice *
}
}
+static void blk_parse_discard(struct XenBlkDev *blkdev)
+{
+ int flags = BDRV_O_UNMAP;
+#if 0
+ char *s = xenstore_read_be_str(&blkdev->xendev, "toolstack-options-discard");
+ int enable;
+
+ if (s && bdrv_parse_discard_flags(s, &flags) < 0) {
+ xen_be_printf(xendev, 0, "property toolstack-discard-options failed to parse: %s\n", s);
+ return;
+ }
+#endif
+ blkdev->feature_discard = !!(flags & BDRV_O_UNMAP);
+ if (!blkdev->feature_discard)
+ return;
+ xenstore_write_be_int(&blkdev->xendev, "feature-discard", 1);
+ blkdev->feature_discard = true;
+
+ if (xenstore_read_be_int(&blkdev->xendev, "discard-enable", &enable) == 0)
+ blkdev->feature_discard = !!enable;
+
+ if (blkdev->feature_discard)
+ xenstore_write_be_int(&blkdev->xendev, "feature-discard", 1);
+}
+
static int blk_init(struct XenDevice *xendev)
{
struct XenBlkDev *blkdev = container_of(xendev, struct XenBlkDev, xendev);
@@ -766,6 +798,8 @@ static int blk_init(struct XenDevice *xe
@@ -766,6 +792,8 @@ static int blk_init(struct XenDevice *xe
xenstore_write_be_int(&blkdev->xendev, "feature-persistent", 1);
xenstore_write_be_int(&blkdev->xendev, "info", info);
@ -134,7 +116,7 @@ Index: xen-4.4.0-testing/tools/qemu-xen-dir-remote/hw/block/xen_disk.c
g_free(directiosafe);
return 0;
@@ -801,6 +835,8 @@ static int blk_connect(struct XenDevice
@@ -801,6 +829,8 @@ static int blk_connect(struct XenDevice
qflags |= BDRV_O_RDWR;
readonly = false;
}

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:25e28a2c8b953e6764b76a47c5543ef986ed14864e4b6575ad82b2002c355aa6
size 366253
oid sha256:84121ad5559806fc92fb032a94929a2c9c47719369a913cca677e2e2b9a70e7b
size 366155

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c60b78517141f58aeb10a7cce305bb6576d2cc45dd6bd112fbe700ae958a5221
size 4350072
oid sha256:782788ab7f071adc277781f0478681fc267d576cff682c0343d7663e987cc29c
size 4351908

View File

@ -1,3 +1,46 @@
-------------------------------------------------------------------
Sun Feb 3 16:38:34 MST 2014 - carnold@suse.de
- Enable blktapctrl when qemu-traditional is required to satisfy
build dependencies. Remove binaries after build if xend is
disabled
-------------------------------------------------------------------
Sun Feb 2 22:47:34 CET 2014 - ohering@suse.de
- update ifarch usage in xen.spec to cover also arm
- blktapctrl is used only by xend
- fix xend-tools-xend sub pkg handling
- default to gcc47 for sles11sp3 builds
- remove all latex packages from BuildRequires
- aarch64-rename-PSR_MODE_ELxx-to-match-linux-headers.patch
-------------------------------------------------------------------
Sun Feb 2 19:43:05 CET 2014 - ohering@suse.de
- add arch dependent install suffix for /boot/xen files
-------------------------------------------------------------------
Sat Feb 1 13:39:03 CET 2014 - ohering@suse.de
- Set max_cpus==4 for non-x86_64 builds
-------------------------------------------------------------------
Fri Jan 31 08:41:15 MST 2014 - carnold@suse.com
- Update to Xen 4.4.0 RC3 c/s 28321
-------------------------------------------------------------------
Thu Jan 30 23:10:22 CET 2014 - ohering@suse.de
- Add flex and bison to BuildRequires, needed by previous patch
-------------------------------------------------------------------
Thu Jan 30 17:19:10 CET 2014 - ohering@suse.de
- fate#316071: add discard support for file backed storage (qdisk)
libxl.add-option-for-discard-support-to-xl-disk-conf.patch
-------------------------------------------------------------------
Thu Jan 27 19:53:39 MST 2014 - carnold@suse.com

229
xen.spec
View File

@ -20,39 +20,57 @@ Name: xen
ExclusiveArch: %ix86 x86_64 %arm aarch64
%define xvers 4.4
%define xvermaj 4
%define changeset 28287
%define changeset 28321
%define xen_build_dir xen-4.4.0-testing
%ifarch %arm aarch64
#
%define with_kmp 0
%define with_xend 0
%define with_xend_tools_pkg 0
%define with_debug 0
%define with_stubdom 0
%define with_dom0_support 1
%else
%define with_gdbsx 0
%define with_dom0_support 0
%define with_qemu_traditional 0
#
%ifarch x86_64
%define with_kmp 1
%define with_debug 1
%define with_stubdom 1
%define with_gdbsx 1
%define with_dom0_support 1
%define with_qemu_traditional 1
%define with_xend_tools_pkg 0
%if %suse_version > 1230
%define with_xend_tools_pkg 1
%endif
%if %suse_version > 1230
%define with_xend 1
%else
%define with_xend 1
%endif
%else
%define with_xend 0
%define with_stubdom 0
%define with_dom0_support 0
%define with_qemu_traditional 0
%endif
#
%ifarch %arm aarch64
%define with_dom0_support 1
%endif
# EFI requires gcc46 or newer
# its available in 12.1 or >= sles11sp2
%if %suse_version == 1210 || %suse_version == 1110
%define with_gcc46 1
#
%define max_cpus 4
%ifarch x86_64
%define max_cpus 512
%endif
#
%define xen_install_suffix %{nil}
%ifarch x86_64
%define xen_install_suffix .gz
%endif
# EFI requires gcc 4.6 or newer
# gcc46 is available in 12.1 or sles11sp2
# gcc47 is available in sles11sp3
# 12.2+ have gcc 4.7 as default compiler
%if %suse_version == 1110
%define with_gcc47 1
%else
%define with_gcc46 0
%define with_gcc47 0
%endif
%define _fwdefdir /etc/sysconfig/SuSEfirewall2.d/services
%if %suse_version >= 1230
@ -66,40 +84,31 @@ BuildRequires: libfdt1-devel
%ifarch %ix86 x86_64
BuildRequires: dev86
%endif
BuildRequires: bison
BuildRequires: fdupes
BuildRequires: flex
BuildRequires: glib2-devel
BuildRequires: libaio-devel
BuildRequires: libbz2-devel
BuildRequires: libpixman-1-0-devel
BuildRequires: libuuid-devel
BuildRequires: libxml2-devel
BuildRequires: libyajl-devel
BuildRequires: libpixman-1-0-devel
%if %{?with_qemu_traditional}0
BuildRequires: libSDL-devel
BuildRequires: pciutils-devel
%endif
%if %{?with_stubdom}0
%if 0%{?suse_version} < 1230
BuildRequires: texinfo
%else
BuildRequires: makeinfo
%endif
%endif
BuildRequires: ncurses-devel
BuildRequires: openssl-devel
BuildRequires: python-devel
BuildRequires: transfig
%if %suse_version >= 1030
BuildRequires: texinfo
BuildRequires: texlive
%if %suse_version > 1220
BuildRequires: texlive-latex
BuildRequires: texlive-courier
BuildRequires: texlive-dvips
BuildRequires: texlive-helvetic
BuildRequires: texlive-psnfss
BuildRequires: texlive-times
BuildRequires: tex(a4.sty)
BuildRequires: tex(a4wide.sty)
BuildRequires: tex(fancyhdr.sty)
BuildRequires: tex(parskip.sty)
BuildRequires: tex(setspace.sty)
%endif
%else
BuildRequires: te_ams
BuildRequires: te_latex
BuildRequires: tetex
%endif
%if %suse_version >= 1230
%if %{?with_systemd}0
BuildRequires: systemd
%endif
%if %suse_version >= 1120
@ -113,15 +122,11 @@ BuildRequires: acpica
%endif
%endif
%ifarch x86_64
%if %{?with_gcc46}0
BuildRequires: gcc46
BuildRequires: libgcc46
BuildRequires: libgcc46-32bit
%if %{?with_gcc47}0
BuildRequires: gcc47
%endif
BuildRequires: glibc-32bit
BuildRequires: glibc-devel-32bit
%define max_cpus 512
%define pae_enabled n
%endif
%if %{?with_kmp}0
BuildRequires: kernel-source
@ -134,7 +139,7 @@ BuildRequires: xorg-x11-util-devel
%endif
%endif
Version: 4.4.0_02
Version: 4.4.0_03
Release: 0
PreReq: %insserv_prereq %fillup_prereq
Summary: Xen Virtualization: Hypervisor (aka VMM aka Microkernel)
@ -307,6 +312,8 @@ Patch461: blktapctrl-default-to-ioemu.patch
Patch462: blktapctrl-disable-debug-printf.patch
Patch463: blktap-pv-cdrom.patch
Patch464: set-mtu-from-bridge-for-tap-interface.patch
Patch465: libxl.add-option-for-discard-support-to-xl-disk-conf.patch
Patch466: aarch64-rename-PSR_MODE_ELxx-to-match-linux-headers.patch
# Hypervisor and PV driver Patches
Patch501: x86-ioapic-ack-default.patch
Patch502: x86-cpufreq-report.patch
@ -432,7 +439,7 @@ Authors:
%if %{?with_xend}0
%if %suse_version > 1230
%if %{?with_xend_tools_pkg}0
%package xend-tools
Summary: Xen Virtualization: Control tools for domain 0
Group: System/Kernel
@ -658,6 +665,8 @@ Authors:
%patch462 -p1
%patch463 -p1
%patch464 -p1
%patch465 -p1
%patch466 -p1
# Hypervisor and PV driver Patches
%patch501 -p1
%patch502 -p1
@ -694,9 +703,12 @@ configure_flags="${configure_flags} --enable-qemu-traditional"
configure_flags="${configure_flags} --disable-qemu-traditional"
%endif
%if %{?with_xend}0
configure_flags="${configure_flags} --enable-xend"
configure_flags="${configure_flags} --enable-xend --enable-blktap1"
%else
configure_flags="${configure_flags} --disable-xend"
%if %{?with_qemu_traditional}0
configure_flags="${configure_flags} --disable-xend --enable-blktap1"
%endif
configure_flags="${configure_flags} --disable-xend --disable-blktap1"
%endif
./configure \
--enable-xenapi \
@ -706,7 +718,7 @@ configure_flags="${configure_flags} --disable-xend"
--sbindir=%{_sbindir} \
--libdir=%{_libdir} \
--datadir=%{_datadir} \
--enable-blktap1 ${configure_flags}
${configure_flags}
%if %{?with_dom0_support}0
CFLAGS_SAVE=$CFLAGS
%ifarch %ix86 x86_64
@ -714,7 +726,6 @@ make -C xenalyze.hg CC="gcc -I../xen/include -DMAX_CPUS=%{max_cpus} ${RPM_OPT_FL
%endif
make -C tools/include/xen-foreign %{?_smp_mflags}
make tools docs %{?_smp_mflags}
make -C tools/debugger/gdbsx
%if %{?with_xend}0
make -C tools/xen-utils-0.1 XEN_INTREE_BUILD=yes XEN_ROOT=$PWD
%endif
@ -744,10 +755,10 @@ export EXTRA_CFLAGS_XEN_TOOLS="$RPM_OPT_FLAGS"
export EXTRA_CFLAGS_QEMU_TRADITIONAL="$RPM_OPT_FLAGS"
export EXTRA_CFLAGS_QEMU_XEN="$RPM_OPT_FLAGS"
# EFI
%ifarch x86_64 %arm aarch64
%if %{?with_dom0_support}0
make -C xen install \
%if %{?with_gcc46}0
CC=gcc-4.6 \
%if %{?with_gcc47}0
CC=gcc-4.7 \
%endif
max_phys_cpus=%{max_cpus} debug=n crash_debug=n DESTDIR=$RPM_BUILD_ROOT %{?_smp_mflags}
make -C xen clean
@ -756,28 +767,26 @@ install_xen()
local ext=""
if [ -n "$1" ]; then
ext="-$1"
mv $RPM_BUILD_ROOT/boot/xen-%{version}-%{release}.gz \
$RPM_BUILD_ROOT/boot/xen${ext}-%{version}-%{release}.gz
mv $RPM_BUILD_ROOT/boot/xen-%{version}-%{release}%{xen_install_suffix} \
$RPM_BUILD_ROOT/boot/xen${ext}-%{version}-%{release}%{xen_install_suffix}
mv $RPM_BUILD_ROOT/boot/xen-syms-%{version}-%{release} \
$RPM_BUILD_ROOT/boot/xen-syms${ext}-%{version}-%{release}
fi
rm $RPM_BUILD_ROOT/boot/xen-%{xvers}.gz
rm $RPM_BUILD_ROOT/boot/xen-%{xvermaj}.gz
rm $RPM_BUILD_ROOT/boot/xen.gz
rm $RPM_BUILD_ROOT/boot/xen-%{xvers}%{xen_install_suffix}
rm $RPM_BUILD_ROOT/boot/xen-%{xvermaj}%{xen_install_suffix}
rm $RPM_BUILD_ROOT/boot/xen%{xen_install_suffix}
# Do not link to links; grub cannot follow.
ln -s xen${ext}-%{version}-%{release}.gz $RPM_BUILD_ROOT/boot/xen${ext}-%{xvers}.gz
ln -s xen${ext}-%{version}-%{release}.gz $RPM_BUILD_ROOT/boot/xen${ext}-%{xvermaj}.gz
ln -s xen${ext}-%{version}-%{release}.gz $RPM_BUILD_ROOT/boot/xen${ext}.gz
ln -s xen${ext}-%{version}-%{release}%{xen_install_suffix} $RPM_BUILD_ROOT/boot/xen${ext}-%{xvers}%{xen_install_suffix}
ln -s xen${ext}-%{version}-%{release}%{xen_install_suffix} $RPM_BUILD_ROOT/boot/xen${ext}-%{xvermaj}%{xen_install_suffix}
ln -s xen${ext}-%{version}-%{release}%{xen_install_suffix} $RPM_BUILD_ROOT/boot/xen${ext}%{xen_install_suffix}
ln -sf xen-syms${ext}-%{version}-%{release} $RPM_BUILD_ROOT/boot/xen-syms${ext}
}
%ifnarch %arm aarch64
%if %{?with_debug}0
make -C xen install max_phys_cpus=%{max_cpus} pae=%{pae_enabled} debug=y crash_debug=y DESTDIR=$RPM_BUILD_ROOT %{?_smp_mflags}
make -C xen install max_phys_cpus=%{max_cpus} debug=y crash_debug=y DESTDIR=$RPM_BUILD_ROOT %{?_smp_mflags}
install_xen dbg
make -C xen clean
%endif
%endif
make -C xen install max_phys_cpus=%{max_cpus} pae=%{pae_enabled} debug=n crash_debug=n DESTDIR=$RPM_BUILD_ROOT %{?_smp_mflags}
make -C xen install max_phys_cpus=%{max_cpus} debug=n crash_debug=n DESTDIR=$RPM_BUILD_ROOT %{?_smp_mflags}
install_xen
make -C xen clean
make -C tools/include/xen-foreign %{?_smp_mflags}
@ -787,12 +796,12 @@ make -C tools install \
DESTDIR=$RPM_BUILD_ROOT MANDIR=%{_mandir} %{?_smp_mflags}
rm -f $RPM_BUILD_ROOT/usr/sbin/{qcow-create,img2qcow,qcow2raw}
echo > xen.files.txt
%ifarch x86_64
# EFI depends on gcc46
# EFI depends on gcc47
if test -d $RPM_BUILD_ROOT%{_libdir}/efi
then
echo %{_libdir}/efi >> xen.files.txt
fi
%ifarch x86_64
cp -avL xenalyze.hg/dump-raw $RPM_BUILD_ROOT/%{_bindir}/xenalyze.dump-raw
cp -avL xenalyze.hg/xenalyze $RPM_BUILD_ROOT/%{_bindir}
%endif
@ -845,17 +854,14 @@ done
mkdir -p $RPM_BUILD_ROOT/etc/init.d
install tools/hotplug/Linux/init.d/xendomains $RPM_BUILD_ROOT/etc/init.d/xendomains
ln -s /etc/init.d/xendomains $RPM_BUILD_ROOT/usr/sbin/rcxendomains
%ifnarch %arm aarch64
install %SOURCE34 $RPM_BUILD_ROOT/etc/init.d/pciback
ln -s /etc/init.d/pciback $RPM_BUILD_ROOT/usr/sbin/rcpciback
install %SOURCE35 $RPM_BUILD_ROOT/var/adm/fillup-templates/sysconfig.pciback
%endif
mkdir -p $RPM_BUILD_ROOT/etc/modprobe.d
install -m644 %SOURCE26 $RPM_BUILD_ROOT/etc/modprobe.d/xen_loop.conf
# Xend init scripts and related programs
%if %{?with_xend}0
%ifnarch %arm aarch64
mkdir -p $RPM_BUILD_ROOT/var/lib/xen/xend-db/domain
mkdir -p $RPM_BUILD_ROOT/var/lib/xen/xend-db/migrate
mkdir -p $RPM_BUILD_ROOT/var/lib/xen/xend-db/vnet
@ -877,7 +883,6 @@ mkdir -p %{buildroot}%{_unitdir}
install -m 644 %{SOURCE56} %{buildroot}%{_unitdir}/xend.service
%endif
%endif
%endif
# Example config
mkdir -p $RPM_BUILD_ROOT/etc/xen/{vm,examples,scripts}
@ -971,9 +976,11 @@ rm -f $RPM_BUILD_ROOT/usr/sbin/xen-python-path
rm -f $RPM_BUILD_ROOT/usr/sbin/xen-list
rm -f $RPM_BUILD_ROOT/usr/sbin/xen-destroy
rm -f $RPM_BUILD_ROOT/usr/sbin/xen-vmresync
rm -f $RPM_BUILD_ROOT/usr/sbin/blktapctrl
rm -f $RPM_BUILD_ROOT/etc/xen/scripts/xend-relocation.sh
rm -f $RPM_BUILD_ROOT/etc/xen/scripts/domain-lock*
rm -f $RPM_BUILD_ROOT/etc/xen/scripts/vm-monitor
rm -f $RPM_BUILD_ROOT/etc/xen/scripts/blktap
rm -f $RPM_BUILD_ROOT/etc/xen/xm-config.xml
rm -f $RPM_BUILD_ROOT/etc/xen/*.sxp
rm -f $RPM_BUILD_ROOT/usr/share/man/man1/xm*
@ -1015,26 +1022,22 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/*.so.*
%files -f xen.files.txt
%defattr(-,root,root)
/boot/xen-%{version}-%{release}.gz
/boot/xen-%{xvermaj}.gz
/boot/xen-%{xvers}.gz
%ifnarch %arm aarch64
/boot/xen-%{version}-%{release}%{xen_install_suffix}
/boot/xen-%{xvermaj}%{xen_install_suffix}
/boot/xen-%{xvers}%{xen_install_suffix}
%if %{?with_debug}0
/boot/xen-dbg-%{version}-%{release}.gz
/boot/xen-dbg-%{xvermaj}.gz
/boot/xen-dbg-%{xvers}.gz
/boot/xen-dbg.gz
%endif
/boot/xen-dbg-%{version}-%{release}%{xen_install_suffix}
/boot/xen-dbg-%{xvermaj}%{xen_install_suffix}
/boot/xen-dbg-%{xvers}%{xen_install_suffix}
/boot/xen-dbg%{xen_install_suffix}
%endif
/boot/xen-syms
/boot/xen-syms-%{version}-%{release}
%ifnarch %arm aarch64
%if %{?with_debug}0
/boot/xen-syms-dbg
/boot/xen-syms-dbg-%{version}-%{release}
%endif
%endif
/boot/xen.gz
/boot/xen%{xen_install_suffix}
%files libs
%defattr(-,root,root)
@ -1043,7 +1046,7 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/*.so.*
%files tools
%defattr(-,root,root)
%ifnarch %arm aarch64
%ifarch %ix86 x86_64
/usr/bin/xenalyze
/usr/bin/xenalyze.dump-raw
%endif
@ -1051,65 +1054,51 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/*.so.*
/usr/bin/xenstore*
/usr/bin/xentrace*
/usr/bin/pygrub
%ifnarch %arm aarch64
%if %{?with_qemu_traditional}0
/usr/bin/tapdisk-ioemu
%endif
/usr/bin/remus
/usr/bin/xencov_split
/usr/sbin/blktapctrl
%endif
#/usr/sbin/flask-*
/usr/sbin/tap*
/usr/sbin/rcxendomains
%ifnarch %arm aarch64
/usr/sbin/rcpciback
/usr/sbin/xenbaked
%endif
/usr/sbin/xenconsoled
/usr/sbin/xencov
%ifnarch %arm aarch64
/usr/sbin/xen-hptool
/usr/sbin/xen-hvmcrash
/usr/sbin/xen-hvmctx
/usr/sbin/xenlockprof
/usr/sbin/xen-lowmemd
/usr/sbin/xenmon.py
/usr/sbin/xenperf
/usr/sbin/xenpm
/usr/sbin/xenpmd
%endif
/usr/sbin/xen-ringwatch
/usr/sbin/xenstored
%ifnarch %arm aarch64
/usr/sbin/xen-tmem-list-parse
%endif
/usr/sbin/xentop
%ifnarch %arm aarch64
/usr/sbin/xentrace_setmask
%endif
/usr/sbin/xenwatchdogd
/usr/sbin/gtracestat
/usr/sbin/gtraceview
/usr/sbin/lock-util
/usr/sbin/td-util
%ifnarch %arm aarch64
/usr/sbin/vhd-update
/usr/sbin/vhd-util
%if %{?with_gdbsx}0
/usr/sbin/gdbsx
%endif
/usr/sbin/xl
%ifnarch %arm aarch64
%ifarch %ix86 x86_64
/usr/sbin/xen-hptool
/usr/sbin/xen-hvmcrash
/usr/sbin/xen-hvmctx
/usr/sbin/xen-lowmemd
/usr/sbin/kdd
%endif
%dir %attr(700,root,root) /etc/xen
%dir /etc/xen/scripts
%ifnarch %arm aarch64
%if %{?with_qemu_traditional}0
/etc/xen/scripts/qemu-ifup
%endif
%endif
/etc/xen/scripts/blktap
/etc/xen/scripts/block*
/etc/xen/scripts/external-device-migrate
/etc/xen/scripts/hotplugpath.sh
@ -1127,16 +1116,14 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/*.so.*
%ifarch x86_64 aarch64
/usr/lib/xen
%endif
%ifnarch %arm aarch64
/var/adm/fillup-templates/sysconfig.pciback
%endif
/var/adm/fillup-templates/sysconfig.xencommons
/var/adm/fillup-templates/sysconfig.xendomains
%dir /var/lib/xen
%dir %attr(700,root,root) /var/lib/xen/images
%dir %attr(700,root,root) /var/lib/xen/save
%dir %attr(700,root,root) /var/lib/xen/dump
%ifnarch %arm aarch64
%ifarch %ix86 x86_64
%dir %attr(700,root,root) /var/lib/xen/xenpaging
%endif
%dir /var/lib/xenstored
@ -1156,9 +1143,7 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/*.so.*
%config /etc/init.d/xencommons
%config /etc/init.d/xendomains
%config /etc/init.d/xen-watchdog
%ifnarch %arm aarch64
%config /etc/init.d/pciback
%endif
%if %{?with_systemd}0
%{_unitdir}/xencommons.service
%{_unitdir}/xendomains.service
@ -1177,12 +1162,10 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/*.so.*
%{_datadir}/qemu-xen/*
%endif
%if %{?with_qemu_traditional}0
%ifnarch %arm aarch64
%dir %{_datadir}/xen
%dir %{_datadir}/xen/qemu
%{_datadir}/xen/qemu/*
%endif
%endif
%dir %{_libdir}/python%{pyver}/site-packages/grub
%dir %{_libdir}/python%{pyver}/site-packages/xen
%dir %{_libdir}/python%{pyver}/site-packages/xen/lowlevel
@ -1209,14 +1192,11 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/*.so.*
%{_mandir}/man8/*.8.gz
%if %{?with_xend}0
%if %suse_version > 1230
%if %{?with_xend_tools_pkg}0
%files xend-tools
%endif
%defattr(-,root,root)
%ifnarch %arm aarch64
/etc/udev/rules.d/40-xend.rules
%endif
%ifnarch %arm aarch64
/usr/sbin/rcxend
/usr/sbin/xm
/usr/sbin/xend
@ -1225,6 +1205,7 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/*.so.*
/usr/sbin/xen-list
/usr/sbin/xen-destroy
/usr/sbin/xen-vmresync
/usr/sbin/blktapctrl
%dir /var/lib/xen/xend-db
%dir /var/lib/xen/xend-db/domain
%dir /var/lib/xen/xend-db/migrate
@ -1240,11 +1221,10 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/*.so.*
%if %{?with_systemd}0
%{_unitdir}/xend.service
%endif
%endif
%dir %attr(700,root,root) /etc/xen
%config(noreplace) /etc/xen/*.sxp
%config(noreplace) /etc/xen/*.xml
%ifnarch %arm aarch64
/etc/xen/scripts/blktap
/etc/xen/scripts/xend-relocation.sh
/etc/xen/scripts/domain-lock*
/etc/xen/scripts/vm-monitor
@ -1260,13 +1240,12 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/*.so.*
%{_mandir}/man5/xend-config.sxp.5.gz
%{_mandir}/man1/xen-list.1.gz
%endif
%endif
# with_dom0_support
%endif
%files tools-domU
%defattr(-,root,root)
%ifnarch %arm aarch64
%ifarch %ix86 x86_64
/usr/bin/xen-detect
%endif
/bin/domu-xenstore
@ -1318,7 +1297,6 @@ fi
%endif
%endif
%ifnarch %arm aarch64
%if %{?with_systemd}0
%{fillup_and_insserv -i -y -n xendomains xendomains}
/bin/systemctl enable xendomains.service
@ -1352,11 +1330,11 @@ if [ -f /usr/bin/qemu-io ]; then
rm -f /usr/lib/xen/bin/qemu-io-xen
ln -s /usr/bin/qemu-io /usr/lib/xen/bin/qemu-io-xen
fi
%endif
%if %suse_version > 1230
%if %{?with_xend}0
%if %{?with_xend_tools_pkg}0
%post xend-tools
%endif
%if %{?with_systemd}0
%{fillup_and_insserv -i -y -n xend xend}
/bin/systemctl enable xend.service
@ -1364,7 +1342,6 @@ fi
%{fillup_and_insserv -y -n xend xend}
%endif
%endif
%endif
%preun tools
%if %{?with_systemd}0
@ -1388,7 +1365,9 @@ fi
%if %suse_version > 1230
%if %{?with_xend}0
%if %{?with_xend_tools_pkg}0
%preun xend-tools
%endif
%if %{?with_systemd}0
if [ $1 -eq 0 ]; then
/bin/systemctl disable xend.service
@ -1406,7 +1385,6 @@ fi
%endif
%endif
%{insserv_cleanup}
%ifnarch %arm aarch64
%if %suse_version <= 1230
%if %{?with_xend}0
if [ -f /usr/bin/qemu-img-xen ]; then
@ -1417,11 +1395,12 @@ if [ -f /usr/bin/qemu-nbd-xen ]; then
fi
%endif
%endif
%endif
%if %suse_version > 1230
%if %{?with_xend}0
%if %{?with_xend_tools_pkg}0
%postun xend-tools
%endif
%{restart_on_update xend}
%{insserv_cleanup}
if [ -f /usr/bin/qemu-img-xen ]; then

View File

@ -2,7 +2,7 @@ Index: xen-4.4.0-testing/tools/examples/xend-config.sxp
===================================================================
--- xen-4.4.0-testing.orig/tools/examples/xend-config.sxp
+++ xen-4.4.0-testing/tools/examples/xend-config.sxp
@@ -354,7 +354,7 @@
@@ -357,7 +357,7 @@
# path /<xend-domain-lock-path>/<vm-uuid>
# Return 0 on success, non-zero on error.
#
@ -11,7 +11,7 @@ Index: xen-4.4.0-testing/tools/examples/xend-config.sxp
# -s Lock status. If lock is acquired, print any contents
# on stdout and return 0. Return non-zero if lock is
# available.
@@ -380,6 +380,11 @@
@@ -383,6 +383,11 @@
#
#(xend-domain-lock-utility domain-lock)

View File

@ -12,7 +12,7 @@ Index: xen-4.4.0-testing/tools/examples/xend-config.sxp
===================================================================
--- xen-4.4.0-testing.orig/tools/examples/xend-config.sxp
+++ xen-4.4.0-testing/tools/examples/xend-config.sxp
@@ -321,6 +321,65 @@
@@ -324,6 +324,65 @@
# device assignment could really work properly even after we do this.
#(pci-passthrough-strict-check yes)

View File

@ -129,7 +129,7 @@ Index: xen-4.4.0-testing/tools/libxl/xl_cmdimpl.c
===================================================================
--- xen-4.4.0-testing.orig/tools/libxl/xl_cmdimpl.c
+++ xen-4.4.0-testing/tools/libxl/xl_cmdimpl.c
@@ -1694,6 +1694,8 @@ skip_vfb:
@@ -1726,6 +1726,8 @@ skip_vfb:
xlu_cfg_replace_string (config, "soundhw", &b_info->u.hvm.soundhw, 0);
xlu_cfg_get_defbool(config, "xen_platform_pci",
&b_info->u.hvm.xen_platform_pci, 0);