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 - [email protected]
+
+- 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 - [email protected]
+
+- 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 - [email protected]
+
+- 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 - [email protected]
+
+- 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 - [email protected]
+
+- 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 - [email protected]
+
+- 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 - [email protected]
+
+- Update gcc9-ignore-warnings.patch to fix build in SLE12
+
+-------------------------------------------------------------------
+Thu Mar  7 15:28:02 UTC 2019 - [email protected]
+
+- 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 <[email protected]>
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 <[email protected]>
---
 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 <[email protected]>
-Date:   Tue Mar 5 13:54:42 2019 +0100
+commit 07c181c83e03a860d806305369cd677c24df9b78
+Author: Andrew Cooper <[email protected]>
+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 <[email protected]>
-    Tested-by: Juergen Gross <[email protected]>
-    Reviewed-by: Andrew Cooper <[email protected]>
+    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 <[email protected]>
+    Signed-off-by: Andrew Cooper <[email protected]>
+    Reviewed-by: Igor Druzhinin <[email protected]>
+    Reviewed-by: Roger Pau MonnĂ© <[email protected]>
+    Acked-by: George Dunlap <[email protected]>
+    Release-acked-by: Juergen Gross <[email protected]>
+    (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 [email protected]
-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 <[email protected]>
+
+Tools backport requests should also be copied to:
+
+       Ian Jackson <[email protected]>
+
 
        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"

Reply via email to