Hello community,
here is the log from the commit of package xen for openSUSE:Factory checked in at 2019-04-01 12:33:37
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/xen (Old)
and /work/SRC/openSUSE:Factory/.xen.new.25356 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "xen"
Mon Apr 1 12:33:37 2019 rev:263 rq:688873 version:4.12.0_07
Changes:
--------
--- /work/SRC/openSUSE:Factory/xen/xen.changes 2019-03-13 09:07:25.111435115 +0100
+++ /work/SRC/openSUSE:Factory/.xen.new.25356/xen.changes 2019-04-01 12:33:45.293804083 +0200
@@ -1,0 +2,54 @@
+Tue Mar 26 10:06:06 MDT 2019 - carnold@suse.com
+
+- bsc#1130485 - Please drop Requires on multipath-tools in
+ xen-tools. Now using Recommends multipath-tools.
+ xen.spec
+
+-------------------------------------------------------------------
+Mon Mar 25 08:17:31 MDT 2019 - carnold@suse.com
+
+- Update to Xen 4.12.0 RC7 release (fate#325107, fate#323901)
+ xen-4.12.0-testing-src.tar.bz2
+
+-------------------------------------------------------------------
+Wed Mar 20 09:48:26 MDT 2019 - carnold@suse.com
+
+- Update to Xen 4.12.0 RC6 release (fate#325107, fate#323901)
+ xen-4.12.0-testing-src.tar.bz2
+
+-------------------------------------------------------------------
+Fri Mar 15 13:09:29 UTC 2019 - ohering@suse.de
+
+- bsc#1026236 - add Xen cmdline option "suse_vtsc_tolerance" to
+ avoid TSC emulation for HVM domUs if their expected frequency
+ does not match exactly the frequency of the receiving host
+ xen.bug1026236.suse_vtsc_tolerance.patch
+
+-------------------------------------------------------------------
+Mon Mar 11 11:24:42 MDT 2019 - carnold@suse.com
+
+- Update to Xen 4.12.0 RC5 release (fate#325107, fate#323901)
+ xen-4.12.0-testing-src.tar.bz2
+
+-------------------------------------------------------------------
+Mon Mar 11 05:58:59 MDT 2019 - carnold@suse.com
+
+- jsc#SLE-3059 - Disable Xen auto-ballooning
+- Add CONFIG_DOM0_MEM to the spec file for managing dom0 memory.
+ xen.spec
+- Disable autoballooning in xl.con
+ xl-conf-disable-autoballoon.patch
+
+-------------------------------------------------------------------
+Thu Mar 7 17:55:20 UTC 2019 - ohering@suse.de
+
+- Update gcc9-ignore-warnings.patch to fix build in SLE12
+
+-------------------------------------------------------------------
+Thu Mar 7 15:28:02 UTC 2019 - ohering@suse.de
+
+- bsc#1126325 - fix crash in libxl in error path
+ Setup of grant_tables and other variables may fail
+ libxl.prepare-environment-for-domcreate_stream_done.patch
+
+-------------------------------------------------------------------
New:
----
libxl.prepare-environment-for-domcreate_stream_done.patch
xen.bug1026236.suse_vtsc_tolerance.patch
xl-conf-disable-autoballoon.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ xen.spec ++++++
--- /var/tmp/diff_new_pack.pd7zGq/_old 2019-04-01 12:33:48.205804830 +0200
+++ /var/tmp/diff_new_pack.pd7zGq/_new 2019-04-01 12:33:48.205804830 +0200
@@ -127,7 +127,7 @@
BuildRequires: pesign-obs-integration
%endif
-Version: 4.12.0_04
+Version: 4.12.0_07
Release: 0
Summary: Xen Virtualization: Hypervisor (aka VMM aka Microkernel)
License: GPL-2.0-only
@@ -167,10 +167,11 @@
Patch401: vif-bridge-no-iptables.patch
Patch402: vif-bridge-tap-fix.patch
Patch403: xl-conf-default-bridge.patch
-Patch404: xen-arch-kconfig-nr_cpus.patch
-Patch405: suse-xendomains-service.patch
-Patch406: replace-obsolete-network-configuration-commands-in-s.patch
-Patch407: disable-building-pv-shim.patch
+Patch404: xl-conf-disable-autoballoon.patch
+Patch405: xen-arch-kconfig-nr_cpus.patch
+Patch406: suse-xendomains-service.patch
+Patch407: replace-obsolete-network-configuration-commands-in-s.patch
+Patch408: disable-building-pv-shim.patch
# Needs to go upstream
Patch420: suspend_evtchn_lock.patch
Patch421: xenpaging.doc.patch
@@ -195,12 +196,14 @@
Patch465: xen.libxl.dmmd.patch
Patch466: libxl.set-migration-constraints-from-cmdline.patch
Patch467: xenstore-run-in-studomain.patch
+Patch468: libxl.prepare-environment-for-domcreate_stream_done.patch
# python3 conversion patches
Patch500: build-python3-conversion.patch
Patch501: pygrub-python3-conversion.patch
Patch502: migration-python3-conversion.patch
Patch503: bin-python3-conversion.patch
# Hypervisor and PV driver Patches
+Patch600: xen.bug1026236.suse_vtsc_tolerance.patch
Patch601: x86-ioapic-ack-default.patch
Patch602: x86-cpufreq-report.patch
Patch621: xen.build-compare.doc_html.patch
@@ -262,7 +265,7 @@
Requires: qemu-arm
%endif
Requires: %{name}-libs = %{version}-%{release}
-Requires: multipath-tools
+Recommends: multipath-tools
Requires: python3
Requires: python3-curses
%ifarch %{ix86} x86_64
@@ -365,6 +368,7 @@
%patch405 -p1
%patch406 -p1
%patch407 -p1
+%patch408 -p1
# Needs to go upstream
%patch420 -p1
%patch421 -p1
@@ -389,12 +393,14 @@
%patch465 -p1
%patch466 -p1
%patch467 -p1
+%patch468 -p1
# python3 conversion patches
%patch500 -p1
%patch501 -p1
%patch502 -p1
%patch503 -p1
# Hypervisor and PV driver Patches
+%patch600 -p1
%patch601 -p1
%patch602 -p1
%patch621 -p1
@@ -736,12 +742,14 @@
rm -fv xen/.config
%if %{with xen_debug}
echo CONFIG_DEBUG=y > xen/.config
+echo "CONFIG_DOM0_MEM=\"1G+10%,max:64G\"" >> xen/.config
yes '' | make -C xen oldconfig
make -C xen install DEBUG_DIR=/boot DESTDIR=%{buildroot} CC=$CC %{?_smp_mflags}
install_xen dbg
make -C xen clean
%endif
echo CONFIG_DEBUG=n > xen/.config
+echo "CONFIG_DOM0_MEM=\"1G+10%,max:64G\"" >> xen/.config
yes '' | make -C xen oldconfig
make -C xen install DEBUG_DIR=/boot DESTDIR=%{buildroot} CC=$CC %{?_smp_mflags}
install_xen
++++++ gcc9-ignore-warnings.patch ++++++
--- /var/tmp/diff_new_pack.pd7zGq/_old 2019-04-01 12:33:48.313804858 +0200
+++ /var/tmp/diff_new_pack.pd7zGq/_new 2019-04-01 12:33:48.317804858 +0200
@@ -65,11 +65,13 @@
===================================================================
--- xen-4.12.0-testing.orig/xen/arch/x86/cpu/mtrr/generic.c
+++ xen-4.12.0-testing/xen/arch/x86/cpu/mtrr/generic.c
-@@ -179,6 +179,7 @@ static void __init print_fixed(unsigned
+@@ -179,6 +179,9 @@ static void __init print_fixed(unsigned
}
}
++#if __GNUC__ > 8
+#pragma GCC diagnostic ignored "-Wformat-overflow"
++#endif
static void __init print_mtrr_state(const char *level)
{
unsigned int i;
++++++ libxl.prepare-environment-for-domcreate_stream_done.patch ++++++
From: Olaf Hering
Date: Thu, 7 Mar 2019 11:51:51 +0100
Subject: libxl: prepare environment for domcreate_stream_done
References: bsc#1126325
The function domcreate_bootloader_done may branch early to
domcreate_stream_done, in case some error occoured. Here srs->dcs will be
NULL, which leads to a crash.
It is unclear what the purpose of that backpointer is. Perhaps it can be
removed, and domcreate_stream_done could use CONTAINER_OF.
Signed-off-by: Olaf Hering
---
tools/libxl/libxl_create.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c
index a4e74a5cd2..989ce6d5bd 100644
--- a/tools/libxl/libxl_create.c
+++ b/tools/libxl/libxl_create.c
@@ -1093,6 +1093,10 @@ static void domcreate_bootloader_done(libxl__egc *egc,
return;
}
+ /* Prepare environment for domcreate_stream_done */
+ if (!dcs->srs.dcs)
+ dcs->srs.dcs = dcs;
+
/* Restore */
callbacks->restore_results = libxl__srm_callout_callback_restore_results;
@@ -1116,7 +1120,6 @@ static void domcreate_bootloader_done(libxl__egc *egc,
goto out;
dcs->srs.ao = ao;
- dcs->srs.dcs = dcs;
dcs->srs.fd = restore_fd;
dcs->srs.legacy = (dcs->restore_params.stream_version == 1);
dcs->srs.back_channel = false;
++++++ xen-4.12.0-testing-src.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xen-4.12.0-testing/ChangeLog new/xen-4.12.0-testing/ChangeLog
--- old/xen-4.12.0-testing/ChangeLog 2019-03-05 15:57:43.000000000 +0100
+++ new/xen-4.12.0-testing/ChangeLog 2019-03-25 15:16:43.000000000 +0100
@@ -1,28 +1,30 @@
-commit 329b00e4d49f70185561d7cc4b076c77869888a0
-Author: Jan Beulich
-Date: Tue Mar 5 13:54:42 2019 +0100
+commit 07c181c83e03a860d806305369cd677c24df9b78
+Author: Andrew Cooper
+Date: Thu Mar 21 19:36:48 2019 +0000
- x86/pv: _toggle_guest_pt() may not skip TLB flush for shadow mode guests
+ passthrough/vtd: Drop the "workaround_bios_bug" logic entirely
- For shadow mode guests (e.g. PV ones forced into that mode as L1TF
- mitigation, or during migration) update_cr3() -> sh_update_cr3() may
- result in a change to the (shadow) root page table (compared to the
- previous one when running the same vCPU with the same PCID). This can,
- first and foremost, be a result of memory pressure on the shadow memory
- pool of the domain. Shadow code legitimately relies on the original
- (prior to commit 5c81d260c2 ["xen/x86: use PCID feature"]) behavior of
- the subsequent CR3 write to flush the TLB of entries still left from
- walks with an earlier, different (shadow) root page table.
-
- Restore the flushing behavior, also for the second CR3 write on the exit
- path to guest context when XPTI is active. For the moment accept that
- this will introduce more flushes than are strictly necessary - no flush
- would be needed when the (shadow) root page table doesn't actually
- change, but this information isn't readily (i.e. without introducing a
- layering violation) available here.
-
- This is XSA-294.
-
- Signed-off-by: Jan Beulich
- Tested-by: Juergen Gross
- Reviewed-by: Andrew Cooper
+ It turns out that this code was previously dead.
+
+ c/s dcf41790 " x86/mmcfg/drhd: Move acpi_mmcfg_init() call before calling
+ acpi_parse_dmar()" resulted in PCI segment 0 now having been initialised
+ enough for acpi_parse_one_drhd() to not take the
+
+ /* Skip checking if segment is not accessible yet. */
+
+ path unconditionally. However, some systems have DMAR tables which list
+ devices which are disabled by user choice (in particular, Dell PowerEdge R740
+ with I/O AT DMA disabled), and turning off all IOMMU functionality in this
+ case is entirely unhelpful behaviour.
+
+ Leave the warning which identifies the problematic devices, but drop the
+ remaining logic. This leaves the system in better overall state, and working
+ in the same way that it did in previous releases.
+
+ Reported-by: Igor Druzhinin
+ Signed-off-by: Andrew Cooper
+ Reviewed-by: Igor Druzhinin
+ Reviewed-by: Roger Pau Monné
+ Acked-by: George Dunlap
+ Release-acked-by: Juergen Gross
+ (cherry picked from commit 74dadb8556c6a0972fa422b5ae346589ace404b6)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xen-4.12.0-testing/MAINTAINERS new/xen-4.12.0-testing/MAINTAINERS
--- old/xen-4.12.0-testing/MAINTAINERS 2019-03-05 15:57:43.000000000 +0100
+++ new/xen-4.12.0-testing/MAINTAINERS 2019-03-25 15:16:43.000000000 +0100
@@ -50,9 +50,16 @@
information.
Backport requests should be made on the xen-devel@lists.xenproject.org
-list. Remember to copy the appropriate stable branch maintainer who
-will be listed in this section of the MAINTAINERS file in the
-appropriate branch.
+list. Remember to copy the appropriate stable branch maintainer.
+
+The maintainer for this branch is:
+
+ Jan Beulich
+
+Tools backport requests should also be copied to:
+
+ Ian Jackson
+
Unstable Subsystem Maintainers
==============================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xen-4.12.0-testing/README new/xen-4.12.0-testing/README
--- old/xen-4.12.0-testing/README 2019-03-05 15:57:43.000000000 +0100
+++ new/xen-4.12.0-testing/README 2019-03-25 15:16:43.000000000 +0100
@@ -46,7 +46,7 @@
- GCC 4.8 or later
- GNU Binutils 2.24 or later
* Development install of zlib (e.g., zlib-dev)
- * Development install of Python v2.4 or later (e.g., python-dev)
+ * Development install of Python 2, v2.4 or later (e.g., python-dev)
* Development install of curses (e.g., libncurses-dev)
* Development install of openssl (e.g., openssl-dev)
* Development install of x11 (e.g. xorg-x11-dev)
@@ -177,10 +177,16 @@
Various tools, such as pygrub, have the following runtime dependencies:
- * Python 2.3 or later.
+ * Python 2, v2.4 or later.
URL: http://www.python.org/
Debian: python
+Note that the build system expects `python` to be python2. If your system
+has `python` pointing to python3 (as in the case of Arch Linux or Anaconda),
+you'll need to specify a path to a python2 binary when running configure:
+
+ PYTHON=/usr/bin/python2 ./configure
+
Intel(R) Trusted Execution Technology Support
=============================================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xen-4.12.0-testing/docs/misc/xen-command-line.pandoc new/xen-4.12.0-testing/docs/misc/xen-command-line.pandoc
--- old/xen-4.12.0-testing/docs/misc/xen-command-line.pandoc 2019-03-05 15:57:43.000000000 +0100
+++ new/xen-4.12.0-testing/docs/misc/xen-command-line.pandoc 2019-03-25 15:16:43.000000000 +0100
@@ -1173,8 +1173,7 @@
### iommu
= List of [ <bool>, verbose, debug, force, required,
sharept, intremap, intpost,
- snoop, qinval, igfx, workaround_bios_bug,
- amd-iommu-perdev-intremap,
+ snoop, qinval, igfx, amd-iommu-perdev-intremap,
dom0-{passthrough,strict} ]
All sub-options are boolean in nature.
@@ -1259,10 +1258,6 @@
similar to Linux's `intel_iommu=igfx_off` option. If specifying `no-igfx`
fixes anything, please report the problem.
-* The `workaround_bios_bug` boolean is disabled by default. It can be used
- to ignore errors when parsing the ACPI tables, and finding a listed PCI
- device which doesn't appear to exist in the system.
-
The following options are specific to AMD-Vi hardware:
* The `amd-iommu-perdev-intremap` boolean controls whether the interrupt
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xen-4.12.0-testing/tools/Rules.mk new/xen-4.12.0-testing/tools/Rules.mk
--- old/xen-4.12.0-testing/tools/Rules.mk 2019-03-05 15:57:43.000000000 +0100
+++ new/xen-4.12.0-testing/tools/Rules.mk 2019-03-25 15:16:43.000000000 +0100
@@ -33,7 +33,7 @@
XENSTORE_XENSTORED ?= y
# A debug build of tools?
-debug ?= y
+debug ?= n
debug_symbols ?= $(debug)
# Set CONFIG_GOLANG=y in .config (or in make) to build golang
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xen-4.12.0-testing/tools/libfsimage/common/fsimage_plugin.c new/xen-4.12.0-testing/tools/libfsimage/common/fsimage_plugin.c
--- old/xen-4.12.0-testing/tools/libfsimage/common/fsimage_plugin.c 2019-03-05 15:57:43.000000000 +0100
+++ new/xen-4.12.0-testing/tools/libfsimage/common/fsimage_plugin.c 2019-03-25 15:16:43.000000000 +0100
@@ -121,7 +121,7 @@
static int load_plugins(void)
{
- const char *fsdir = getenv("FSIMAGE_FSDIR");
+ const char *fsdir = getenv("XEN_FSIMAGE_FSDIR");
struct dirent *dp = NULL;
DIR *dir = NULL;
char *tmp = NULL;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xen-4.12.0-testing/tools/libxc/xc_core.c new/xen-4.12.0-testing/tools/libxc/xc_core.c
--- old/xen-4.12.0-testing/tools/libxc/xc_core.c 2019-03-05 15:57:43.000000000 +0100
+++ new/xen-4.12.0-testing/tools/libxc/xc_core.c 2019-03-25 15:16:43.000000000 +0100
@@ -459,12 +459,6 @@
struct xc_core_section_headers *sheaders = NULL;
Elf64_Shdr *shdr;
- if ( xc_domain_get_guest_width(xch, domid, &dinfo->guest_width) != 0 )
- {
- PERROR("Could not get address size for domain");
- return sts;
- }
-
xc_core_arch_context_init(&arch_ctxt);
if ( (dump_mem_start = malloc(DUMP_INCREMENT*PAGE_SIZE)) == NULL )
{
@@ -487,6 +481,40 @@
}
auto_translated_physmap = xc_core_arch_auto_translated_physmap(&info);
+ if ( !auto_translated_physmap )
+
+ {
+ if ( xc_domain_get_guest_width(xch, domid, &dinfo->guest_width) != 0 )
+ {
+ PERROR("Could not get address size for domain");
+ goto out;
+ }
+ }
+ else
+ {
+ /*
+ * Autotranslated guest never sets guest width in the first
+ * place. Force guest_width to be sizeof(unsigned long) so
+ * code below functions properly.
+ *
+ * Here is why this is correct.
+ *
+ * 1. Before f969bc9fc, xc_domain_get_guest_width for HVM (x86
+ * and ARM) always returned hypervisor's idea of
+ * sizeof(unsigned long).
+ *
+ * 2. There has never been a situation in which hypervisor's
+ * word width is smaller than toolstack domain's (i.e. no
+ * 32bit hypervisor + 64bit toolstack).
+ *
+ * Predicates in code test guest_width against toolstack
+ * domain's sizeof(unsigned long), so setting guest_width to
+ * toolstack domain's idea of sizeof(unsigned long) matches
+ * the original behaviour for HVM guests.
+ */
+ dinfo->guest_width = sizeof(unsigned long);
+ }
+
if ( domid != info.domid )
{
PERROR("Domain %d does not exist", domid);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xen-4.12.0-testing/xen/Kconfig.debug new/xen-4.12.0-testing/xen/Kconfig.debug
--- old/xen-4.12.0-testing/xen/Kconfig.debug 2019-03-05 15:57:43.000000000 +0100
+++ new/xen-4.12.0-testing/xen/Kconfig.debug 2019-03-25 15:16:43.000000000 +0100
@@ -3,7 +3,7 @@
config DEBUG
bool "Developer Checks"
- default y
+ default n
---help---
If you say Y here this will enable developer checks such as asserts
and extra printks. This option is intended for development purposes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xen-4.12.0-testing/xen/arch/x86/flushtlb.c new/xen-4.12.0-testing/xen/arch/x86/flushtlb.c
--- old/xen-4.12.0-testing/xen/arch/x86/flushtlb.c 2019-03-05 15:57:43.000000000 +0100
+++ new/xen-4.12.0-testing/xen/arch/x86/flushtlb.c 2019-03-25 15:16:43.000000000 +0100
@@ -122,6 +122,7 @@
write_cr4(old_cr4);
}
else if ( use_invpcid )
+ {
/*
* Flushing the TLB via INVPCID is necessary only in case PCIDs are
* in use, which is true only with INVPCID being available.
@@ -132,6 +133,19 @@
*/
invpcid_flush_all_nonglobals();
+ /*
+ * CR4.PCIDE needs to be set before the CR3 write below. Otherwise
+ * - the CR3 write will fault when CR3.NOFLUSH is set (which is the
+ * case normally),
+ * - the subsequent CR4 write will fault if CR3.PCID != 0.
+ */
+ if ( (old_cr4 & X86_CR4_PCIDE) < (cr4 & X86_CR4_PCIDE) )
+ {
+ write_cr4(cr4);
+ old_cr4 = cr4;
+ }
+ }
+
/*
* If we don't change PCIDs, the CR3 write below needs to flush this very
* PCID, even when a full flush was performed above, as we are currently
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xen-4.12.0-testing/xen/drivers/passthrough/io.c new/xen-4.12.0-testing/xen/drivers/passthrough/io.c
--- old/xen-4.12.0-testing/xen/drivers/passthrough/io.c 2019-03-05 15:57:43.000000000 +0100
+++ new/xen-4.12.0-testing/xen/drivers/passthrough/io.c 2019-03-25 15:16:43.000000000 +0100
@@ -869,7 +869,8 @@
void hvm_dpci_msi_eoi(struct domain *d, int vector)
{
- if ( !iommu_enabled || !hvm_domain_irq(d)->dpci )
+ if ( !iommu_enabled ||
+ (!hvm_domain_irq(d)->dpci && !is_hardware_domain(d)) )
return;
spin_lock(&d->event_lock);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xen-4.12.0-testing/xen/drivers/passthrough/iommu.c new/xen-4.12.0-testing/xen/drivers/passthrough/iommu.c
--- old/xen-4.12.0-testing/xen/drivers/passthrough/iommu.c 2019-03-05 15:57:43.000000000 +0100
+++ new/xen-4.12.0-testing/xen/drivers/passthrough/iommu.c 2019-03-25 15:16:43.000000000 +0100
@@ -30,7 +30,6 @@
bool_t __read_mostly iommu_enabled;
bool_t __read_mostly force_iommu;
bool_t __read_mostly iommu_verbose;
-bool_t __read_mostly iommu_workaround_bios_bug;
bool_t __read_mostly iommu_igfx = 1;
bool_t __read_mostly iommu_snoop = 1;
bool_t __read_mostly iommu_qinval = 1;
@@ -74,8 +73,6 @@
else if ( (val = parse_boolean("force", s, ss)) >= 0 ||
(val = parse_boolean("required", s, ss)) >= 0 )
force_iommu = val;
- else if ( (val = parse_boolean("workaround_bios_bug", s, ss)) >= 0 )
- iommu_workaround_bios_bug = val;
else if ( (val = parse_boolean("igfx", s, ss)) >= 0 )
iommu_igfx = val;
else if ( (val = parse_boolean("verbose", s, ss)) >= 0 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xen-4.12.0-testing/xen/drivers/passthrough/vtd/dmar.c new/xen-4.12.0-testing/xen/drivers/passthrough/vtd/dmar.c
--- old/xen-4.12.0-testing/xen/drivers/passthrough/vtd/dmar.c 2019-03-05 15:57:43.000000000 +0100
+++ new/xen-4.12.0-testing/xen/drivers/passthrough/vtd/dmar.c 2019-03-25 15:16:43.000000000 +0100
@@ -514,7 +514,7 @@
else
{
u8 b, d, f;
- unsigned int i = 0, invalid_cnt = 0;
+ unsigned int i = 0;
union {
const void *raw;
const struct acpi_dmar_device_scope *scope;
@@ -536,37 +536,12 @@
f = PCI_FUNC(dmaru->scope.devices[i]);
if ( !pci_device_detect(drhd->segment, b, d, f) )
- {
printk(XENLOG_WARNING VTDPREFIX
" Non-existent device (%04x:%02x:%02x.%u) in this DRHD's scope!\n",
drhd->segment, b, d, f);
- invalid_cnt++;
- }
}
- if ( invalid_cnt )
- {
- if ( iommu_workaround_bios_bug &&
- invalid_cnt == dmaru->scope.devices_cnt )
- {
- printk(XENLOG_WARNING VTDPREFIX
- " Workaround BIOS bug: ignoring DRHD (no devices in its scope are PCI discoverable)\n");
-
- scope_devices_free(&dmaru->scope);
- iommu_free(dmaru);
- xfree(dmaru);
- }
- else
- {
- printk(XENLOG_WARNING VTDPREFIX
- " DRHD is invalid (some devices in its scope are not PCI discoverable)\n");
- printk(XENLOG_WARNING VTDPREFIX
- " Try \"iommu=force\" or \"iommu=workaround_bios_bug\" if you really want VT-d\n");
- ret = -EINVAL;
- }
- }
- else
- acpi_register_drhd_unit(dmaru);
+ acpi_register_drhd_unit(dmaru);
}
out:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xen-4.12.0-testing/xen/include/xen/iommu.h new/xen-4.12.0-testing/xen/include/xen/iommu.h
--- old/xen-4.12.0-testing/xen/include/xen/iommu.h 2019-03-05 15:57:43.000000000 +0100
+++ new/xen-4.12.0-testing/xen/include/xen/iommu.h 2019-03-25 15:16:43.000000000 +0100
@@ -53,8 +53,7 @@
}
extern bool_t iommu_enable, iommu_enabled;
-extern bool_t force_iommu, iommu_verbose;
-extern bool_t iommu_workaround_bios_bug, iommu_igfx;
+extern bool_t force_iommu, iommu_verbose, iommu_igfx;
extern bool_t iommu_snoop, iommu_qinval, iommu_intremap, iommu_intpost;
extern bool_t iommu_hap_pt_share;
extern bool_t iommu_debug;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xen-4.12.0-testing/xen/tools/gen-cpuid.py new/xen-4.12.0-testing/xen/tools/gen-cpuid.py
--- old/xen-4.12.0-testing/xen/tools/gen-cpuid.py 2019-03-05 15:57:43.000000000 +0100
+++ new/xen-4.12.0-testing/xen/tools/gen-cpuid.py 2019-03-25 15:16:43.000000000 +0100
@@ -197,7 +197,7 @@
# %XMM support, without specific inter-dependencies. Additionally
# AMD has a special mis-alignment sub-mode.
SSE: [SSE2, SSE3, SSSE3, SSE4A, MISALIGNSSE,
- AESNI, SHA],
+ AESNI, PCLMULQDQ, SHA],
# SSE2 was re-specified as core instructions for 64bit.
SSE2: [LM],
++++++ xen.bug1026236.suse_vtsc_tolerance.patch ++++++
suse_vtsc_tolerance=<val>
Reference: bsc#1026236
To avoid emulation of vTSC after live migration or save/restore allow
different clock frequency up to the specified value. If the frequency
is within the allowed range TSC access by the domU will be performed
at native speed. Otherwise TSC access will be emulated. It is up to
the hostadmin to decide how much tolerance all running domUs can
actually handle. The default is zero tolerance.
--- a/xen/arch/x86/time.c
+++ b/xen/arch/x86/time.c
@@ -42,6 +42,9 @@
static char __initdata opt_clocksource[10];
string_param("clocksource", opt_clocksource);
+static unsigned int __read_mostly opt_suse_vtsc_tolerance;
+integer_param("suse_vtsc_tolerance", opt_suse_vtsc_tolerance);
+
unsigned long __read_mostly cpu_khz; /* CPU clock frequency in kHz. */
DEFINE_SPINLOCK(rtc_lock);
unsigned long pit0_ticks;
@@ -2193,6 +2196,7 @@ int tsc_set_info(struct domain *d,
switch ( tsc_mode )
{
+ bool disable_vtsc;
case TSC_MODE_DEFAULT:
case TSC_MODE_ALWAYS_EMULATE:
d->arch.vtsc_offset = get_s_time() - elapsed_nsec;
@@ -2206,8 +2210,26 @@ int tsc_set_info(struct domain *d,
* When a guest is created, gtsc_khz is passed in as zero, making
* d->arch.tsc_khz == cpu_khz. Thus no need to check incarnation.
*/
+ disable_vtsc = d->arch.tsc_khz == cpu_khz;
+
+ if ( tsc_mode == TSC_MODE_DEFAULT && gtsc_khz &&
+ is_hvm_domain(d) && opt_suse_vtsc_tolerance )
+ {
+ long khz_diff;
+
+ khz_diff = ABS(((long)cpu_khz - gtsc_khz));
+ disable_vtsc = khz_diff <= opt_suse_vtsc_tolerance;
+
+ printk(XENLOG_G_INFO "d%d: host has %lu kHz,"
+ " domU expects %u kHz,"
+ " difference of %ld is %s tolerance of %u\n",
+ d->domain_id, cpu_khz, gtsc_khz, khz_diff,
+ disable_vtsc ? "within" : "outside",
+ opt_suse_vtsc_tolerance);
+ }
+
if ( tsc_mode == TSC_MODE_DEFAULT && host_tsc_is_safe() &&
- (d->arch.tsc_khz == cpu_khz ||
+ ( disable_vtsc ||
(is_hvm_domain(d) &&
hvm_get_tsc_scaling_ratio(d->arch.tsc_khz))) )
{
++++++ xl-conf-disable-autoballoon.patch ++++++
--- xen-4.12.0-testing/tools/examples/xl.conf.orig 2019-03-11 06:17:17.586380817 -0600
+++ xen-4.12.0-testing/tools/examples/xl.conf 2019-03-11 06:17:31.314553910 -0600
@@ -3,7 +3,7 @@
# Control whether dom0 is ballooned down when xen doesn't have enough
# free memory to create a domain. "auto" means only balloon if dom0
# starts with all the host's memory.
-#autoballoon="auto"
+autoballoon="off"
# full path of the lockfile used by xl during domain creation
#lockfile="/var/lock/xl"