Hello community,

here is the log from the commit of package kernel-source for openSUSE:Factory 
checked in at 2015-10-01 09:28:35
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kernel-source (Old)
 and      /work/SRC/openSUSE:Factory/.kernel-source.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "kernel-source"

Changes:
--------
--- /work/SRC/openSUSE:Factory/kernel-source/kernel-debug.changes       
2015-09-02 00:35:00.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.kernel-source.new/kernel-debug.changes  
2015-10-01 09:28:36.000000000 +0200
@@ -1,0 +2,189 @@
+Fri Sep 25 10:21:54 CEST 2015 - [email protected]
+
+- ALSA: hda - Disable power_save_node for Thinkpads (bsc#943982).
+- commit 6996a42
+
+-------------------------------------------------------------------
+Tue Sep 22 21:52:03 CEST 2015 - [email protected]
+
+- Refresh patches.xen/xen3-stack-unwind.
+  XEN needs a fix for stack unwinder too.
+- commit 9c7cacf
+
+-------------------------------------------------------------------
+Tue Sep 22 16:49:30 CEST 2015 - [email protected]
+
+- Update config files.
+- Refresh patches.suse/stack-unwind.
+- Refresh patches.xen/xen3-patch-2.6.27.
+  Reenable dwarf stack unwinder for C. Assembler is not dwarf-friendly
+  annotated (removed in upstream and neither
+  patches.arch/x86_64-unwind-annotations is enabled (yet)), so dwarf
+  unwinder does not work there (yet).
+  This should be fixed by Josh Poimbeouf's stacktool later. But until
+  then, dwarf-unwind at least C and use frame pointers for asm.
+  I.e. no more question marks for most cases:
+   [<ffffffff81008415>] try_stack_unwind+0x175/0x190
+   [<ffffffff81007293>] dump_trace+0x93/0x3a0
+   [<ffffffff8100847b>] show_trace_log_lvl+0x4b/0x60
+   [<ffffffff810076ac>] show_stack_log_lvl+0x10c/0x180
+   [<ffffffff81008515>] show_stack+0x25/0x50
+   [<ffffffff81364619>] dump_stack+0x4b/0x72
+   [<ffffffffa01a302e>] init1+0xe/0x20 [aaa]
+   [<ffffffff810002f3>] do_one_initcall+0xb3/0x200
+   [<ffffffff8116e4da>] do_init_module+0x5f/0x1f6
+   [<ffffffff810ee87e>] load_module+0x15fe/0x1b60
+   [<ffffffff810eefe8>] SYSC_finit_module+0x98/0xc0
+   [<ffffffff810ef02e>] SyS_finit_module+0xe/0x10
+   [<ffffffff816b07b6>] entry_SYSCALL_64_fastpath+0x16/0x75
+  DWARF2 unwinder stuck at entry_SYSCALL_64_fastpath+0x16/0x75
+  Leftover inexact backtrace:
+  <nothing>
+  Instead of the funny:
+   [<ffffffff81364619>] ? dump_stack+0x4b/0x72
+   [<ffffffffa022a02e>] ? init1+0xe/0x20 [aaa]
+   [<ffffffff810002f3>] ? do_one_initcall+0xb3/0x200
+   [<ffffffff8116e4a2>] ? do_init_module+0x27/0x1f6
+   [<ffffffff8116e4da>] ? do_init_module+0x5f/0x1f6
+   [<ffffffff810ee87e>] ? load_module+0x15fe/0x1b60
+   [<ffffffff810eaa40>] ? __symbol_put+0x50/0x50
+   [<ffffffff811e9501>] ? kernel_read+0x41/0x60
+   [<ffffffff810eefe8>] ? SYSC_finit_module+0x98/0xc0
+   [<ffffffff810ef02e>] ? SyS_finit_module+0xe/0x10
+   [<ffffffff816b07b6>] ? entry_SYSCALL_64_fastpath+0x16/0x75
+  where __symbol_put and do_init_module+0x27 should not be there at all.
+- commit 68d392a
+
+-------------------------------------------------------------------
+Tue Sep 22 09:24:12 CEST 2015 - [email protected]
+
+- Linux 4.2.1.
+- commit 0d0e86c
+
+-------------------------------------------------------------------
+Mon Sep 14 17:37:27 CEST 2015 - [email protected]
+
+- Refresh
+  patches.fixes/mmc-sdhci-fix-dma-memory-leak-in-sdhci_pre_req.patch.
+  Fix upstream status.
+- commit 9af8b5d
+
+-------------------------------------------------------------------
+Sun Sep 13 21:45:37 CEST 2015 - [email protected]
+
+- Update config files: ARM64: Raise CPUs to 128
+  There are machines with more than 64 CPUs, allow them
+  to be used. Update vanilla config from default.
+- commit de7016d
+
+-------------------------------------------------------------------
+Fri Sep 11 16:16:31 CEST 2015 - [email protected]
+
+- Update config files.
+  Fix FW fixes fallout (bnc#944661).
+- commit 6a28e38
+
+-------------------------------------------------------------------
+Thu Sep 10 16:15:22 CEST 2015 - [email protected]
+
+- rpm/kernel-spec-macros: Include the version string in the Obsoletes line
+- commit 083cdb4
+
+-------------------------------------------------------------------
+Thu Sep 10 15:19:39 CEST 2015 - [email protected]
+
+- rpm/kernel-binary.spec.in: Obsolete previous builds of the same package 
(boo#867595)
+- commit ffb73eb
+
+-------------------------------------------------------------------
+Wed Sep  9 14:54:24 CEST 2015 - [email protected]
+
+- config/x86_64/ec2: Align CONFIG_STRICT_DEVMEM
+  CONFIG_STRICT_DEVMEM is enabled in every other kernel flavor, so
+  enable it for x86_64/ec2 as well.
+- commit c156734
+
+-------------------------------------------------------------------
+Mon Sep  7 14:30:51 CEST 2015 - [email protected]
+
+- leds:lp55xx: Correct Kconfig dependency for f/w user helper
+  (boo#944661).
+- commit 589a02c
+
+-------------------------------------------------------------------
+Mon Sep  7 13:55:19 CEST 2015 - [email protected]
+
+- Disable CONFIG_FW_LOADER_USER_HELPER_FALLBACK that was reenabled 
unexpectedly (boo#944661)
+- commit 14a23c3
+
+-------------------------------------------------------------------
+Mon Sep  7 12:23:57 CEST 2015 - [email protected]
+
+- Update config files: enable leftover CONFIG_FB_TFT_HX8357D=m for arm
+- commit cae15fc
+
+-------------------------------------------------------------------
+Mon Sep  7 12:13:14 CEST 2015 - [email protected]
+
+- drm/vmwgfx: Allow dropped masters render-node like access on
+  legacy nodes v2 (boo#934266).
+-  vmwgfx: Rework device initialization (boo#934266).
+- commit 28dbc80
+
+-------------------------------------------------------------------
+Mon Sep  7 10:55:54 CEST 2015 - [email protected]
+
+- workqueue: Make flush_workqueue() available again to non
+  GPL modules.
+- commit 82076fa
+
+-------------------------------------------------------------------
+Mon Sep  7 00:44:39 CEST 2015 - [email protected]
+
+- Update config files: update arm config files so that they are up-to-date
+  and don't break build.
+- commit c1a445e
+
+-------------------------------------------------------------------
+Mon Sep  7 00:39:59 CEST 2015 - [email protected]
+
+- bcache: Fix writeback_thread never writing back incomplete
+  stripes.
+- commit 395add4
+
+-------------------------------------------------------------------
+Mon Aug 31 13:17:08 CEST 2015 - [email protected]
+
+- Update Xen patches to 4.2-final.
+- commit 7b8109d
+
+-------------------------------------------------------------------
+Mon Aug 31 11:11:55 CEST 2015 - [email protected]
+
+- Refresh
+  patches.apparmor/apparmor-compatibility-patch-for-v5-network-control.
+  Fix this:
+  patches.apparmor/apparmor-compatibility-patch-for-v5-network-control:25:
+  error: Timestamp after filename
+  by scripts/refresh_patch.sh.
+- commit 2089c9a
+
+-------------------------------------------------------------------
+Mon Aug 31 10:02:14 CEST 2015 - [email protected]
+
+- Refresh
+  
patches.fixes/btrfs-fix-stale-dir-entries-after-unlink-inode-eviction-and-fsync.
+  Fix this:
+  missing header for unified diff at line 107 of patch
+  (Patch is indented 4 spaces.)
+  can't find file to patch at input line 107
+  by commenting also the @@ sign.
+- commit 8e48b46
+
+-------------------------------------------------------------------
+Mon Aug 31 05:08:05 CEST 2015 - [email protected]
+
+- Update to 4.2-final.
+- commit c617119
+
+-------------------------------------------------------------------
@@ -23,0 +213,7 @@
+Wed Aug 26 17:23:55 CEST 2015 - [email protected]
+
+- rpm/constraints.in: Require 14GB worth of disk space on POWER
+  The builds started to fail randomly due to ENOSPC errors.
+- commit b57d276
+
+-------------------------------------------------------------------
++++ 408 more lines (skipped)
++++ between /work/SRC/openSUSE:Factory/kernel-source/kernel-debug.changes
++++ and /work/SRC/openSUSE:Factory/.kernel-source.new/kernel-debug.changes
kernel-default.changes: same change
kernel-desktop.changes: same change
kernel-docs.changes: same change
kernel-ec2.changes: same change
kernel-lpae.changes: same change
kernel-obs-build.changes: same change
kernel-obs-qa-xen.changes: same change
kernel-obs-qa.changes: same change
kernel-pae.changes: same change
kernel-pv.changes: same change
kernel-source.changes: same change
kernel-syms.changes: same change
kernel-vanilla.changes: same change
kernel-xen.changes: same change

Old:
----
  linux-4.1.tar.xz

New:
----
  linux-4.2.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ kernel-debug.spec ++++++
--- /var/tmp/diff_new_pack.pwNTkG/_old  2015-10-01 09:28:44.000000000 +0200
+++ /var/tmp/diff_new_pack.pwNTkG/_new  2015-10-01 09:28:44.000000000 +0200
@@ -19,8 +19,8 @@
 # This makes the OBS store the project cert as %_sourcedir/_projectcert.crt
 # needssslcertforbuild
 
-%define srcversion 4.1
-%define patchversion 4.1.6
+%define srcversion 4.2
+%define patchversion 4.2.1
 %define variant %{nil}
 %define vanilla_only 0
 
@@ -59,9 +59,9 @@
 Summary:        A Debug Version of the Kernel
 License:        GPL-2.0
 Group:          System/Kernel
-Version:        4.1.6
+Version:        4.2.1
 %if 0%{?is_kotd}
-Release:        <RELEASE>.gd867e86
+Release:        <RELEASE>.g6996a42
 %else
 Release:        0
 %endif
@@ -154,6 +154,7 @@
 Provides:       kernel-kdump-base = 2.6.28
 Obsoletes:      kernel-kdump-base <= 2.6.28
 %endif
+%obsolete_rebuilds %name
 Source0:        
http://www.kernel.org/pub/linux/kernel/v4.x/linux-%srcversion.tar.xz
 Source2:        source-post.sh
 Source3:        kernel-source.rpmlintrc
@@ -964,6 +965,7 @@
 Provides:       kernel-kdump-base = 2.6.28
 Obsoletes:      kernel-kdump-base <= 2.6.28
 %endif
+%obsolete_rebuilds %name-base
 %ifarch %ix86
 Conflicts:      libc.so.6()(64bit)
 %endif
@@ -1006,6 +1008,7 @@
 Provides:       kernel-kdump-extra = 2.6.28
 Obsoletes:      kernel-kdump-extra <= 2.6.28
 %endif
+%obsolete_rebuilds %name-extra
 Supplements:    packageand(product(SUSE_SLED):%{name}_%_target_cpu)
 %ifarch %ix86
 Conflicts:      libc.so.6()(64bit)
@@ -1061,6 +1064,7 @@
 Provides:       kernel-kdump-devel = 2.6.28
 Obsoletes:      kernel-kdump-devel <= 2.6.28
 %endif
+%obsolete_rebuilds %name-devel
 PreReq:         coreutils
 
 %description devel

++++++ kernel-default.spec ++++++
--- /var/tmp/diff_new_pack.pwNTkG/_old  2015-10-01 09:28:44.000000000 +0200
+++ /var/tmp/diff_new_pack.pwNTkG/_new  2015-10-01 09:28:44.000000000 +0200
@@ -19,8 +19,8 @@
 # This makes the OBS store the project cert as %_sourcedir/_projectcert.crt
 # needssslcertforbuild
 
-%define srcversion 4.1
-%define patchversion 4.1.6
+%define srcversion 4.2
+%define patchversion 4.2.1
 %define variant %{nil}
 %define vanilla_only 0
 
@@ -59,9 +59,9 @@
 Summary:        The Standard Kernel
 License:        GPL-2.0
 Group:          System/Kernel
-Version:        4.1.6
+Version:        4.2.1
 %if 0%{?is_kotd}
-Release:        <RELEASE>.gd867e86
+Release:        <RELEASE>.g6996a42
 %else
 Release:        0
 %endif
@@ -186,6 +186,7 @@
 Provides:       kernel-bigsmp-base = 3.1
 Obsoletes:      kernel-bigsmp-base <= 3.1
 %endif
+%obsolete_rebuilds %name
 Source0:        
http://www.kernel.org/pub/linux/kernel/v4.x/linux-%srcversion.tar.xz
 Source2:        source-post.sh
 Source3:        kernel-source.rpmlintrc
@@ -251,7 +252,7 @@
 Source120:      kabi.tar.bz2
 Source121:      sysctl.tar.bz2
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
-ExclusiveArch:  aarch64 armv6hl armv7hl %ix86 ppc ppc64 ppc64le s390x x86_64
+ExclusiveArch:  aarch64 armv7hl %ix86 ppc ppc64 ppc64le s390x x86_64
 %define kmp_target_cpu %_target_cpu
 %ifarch %ix86
 # Only i386/default supports i586, mark other flavors' packages as i686
@@ -1009,6 +1010,7 @@
 Provides:       kernel-bigsmp-base = 3.1
 Obsoletes:      kernel-bigsmp-base <= 3.1
 %endif
+%obsolete_rebuilds %name-base
 %ifarch %ix86
 Conflicts:      libc.so.6()(64bit)
 %endif
@@ -1064,6 +1066,7 @@
 Provides:       kernel-bigsmp-extra = 3.1
 Obsoletes:      kernel-bigsmp-extra <= 3.1
 %endif
+%obsolete_rebuilds %name-extra
 Supplements:    packageand(product(SUSE_SLED):%{name}_%_target_cpu)
 %ifarch %ix86
 Conflicts:      libc.so.6()(64bit)
@@ -1132,6 +1135,7 @@
 Provides:       kernel-bigsmp-devel = 3.1
 Obsoletes:      kernel-bigsmp-devel <= 3.1
 %endif
+%obsolete_rebuilds %name-devel
 PreReq:         coreutils
 
 %description devel

++++++ kernel-desktop.spec ++++++
--- /var/tmp/diff_new_pack.pwNTkG/_old  2015-10-01 09:28:44.000000000 +0200
+++ /var/tmp/diff_new_pack.pwNTkG/_new  2015-10-01 09:28:44.000000000 +0200
@@ -19,8 +19,8 @@
 # This makes the OBS store the project cert as %_sourcedir/_projectcert.crt
 # needssslcertforbuild
 
-%define srcversion 4.1
-%define patchversion 4.1.6
+%define srcversion 4.2
+%define patchversion 4.2.1
 %define variant %{nil}
 %define vanilla_only 0
 
@@ -59,9 +59,9 @@
 Summary:        Kernel optimized for the desktop
 License:        GPL-2.0
 Group:          System/Kernel
-Version:        4.1.6
+Version:        4.2.1
 %if 0%{?is_kotd}
-Release:        <RELEASE>.gd867e86
+Release:        <RELEASE>.g6996a42
 %else
 Release:        0
 %endif
@@ -148,6 +148,7 @@
 Provides:       kernel = %version-%source_rel
 
 
+%obsolete_rebuilds %name
 Source0:        
http://www.kernel.org/pub/linux/kernel/v4.x/linux-%srcversion.tar.xz
 Source2:        source-post.sh
 Source3:        kernel-source.rpmlintrc
@@ -967,6 +968,7 @@
 Requires(post): perl-Bootloader
 Requires(post): mkinitrd
 
+%obsolete_rebuilds %name-base
 %ifarch %ix86
 Conflicts:      libc.so.6()(64bit)
 %endif
@@ -1018,6 +1020,7 @@
 Requires(post): perl-Bootloader
 Requires(post): mkinitrd
 
+%obsolete_rebuilds %name-extra
 Supplements:    packageand(product(SUSE_SLED):%{name}_%_target_cpu)
 %ifarch %ix86
 Conflicts:      libc.so.6()(64bit)
@@ -1082,6 +1085,7 @@
 Requires:       kernel-devel%variant = %version-%source_rel
 Supplements:    packageand(%name:kernel-devel%variant)
 
+%obsolete_rebuilds %name-devel
 PreReq:         coreutils
 
 %description devel

++++++ kernel-docs.spec ++++++
--- /var/tmp/diff_new_pack.pwNTkG/_old  2015-10-01 09:28:44.000000000 +0200
+++ /var/tmp/diff_new_pack.pwNTkG/_new  2015-10-01 09:28:44.000000000 +0200
@@ -16,7 +16,7 @@
 #
 
 
-%define patchversion 4.1.6
+%define patchversion 4.2.1
 %define variant %{nil}
 
 %include %_sourcedir/kernel-spec-macros
@@ -27,9 +27,9 @@
 Summary:        Kernel Documentation (man pages)
 License:        GPL-2.0
 Group:          Documentation/Man
-Version:        4.1.6
+Version:        4.2.1
 %if 0%{?is_kotd}
-Release:        <RELEASE>.gd867e86
+Release:        <RELEASE>.g6996a42
 %else
 Release:        0
 %endif

++++++ kernel-ec2.spec ++++++
--- /var/tmp/diff_new_pack.pwNTkG/_old  2015-10-01 09:28:44.000000000 +0200
+++ /var/tmp/diff_new_pack.pwNTkG/_new  2015-10-01 09:28:44.000000000 +0200
@@ -19,8 +19,8 @@
 # This makes the OBS store the project cert as %_sourcedir/_projectcert.crt
 # needssslcertforbuild
 
-%define srcversion 4.1
-%define patchversion 4.1.6
+%define srcversion 4.2
+%define patchversion 4.2.1
 %define variant %{nil}
 %define vanilla_only 0
 
@@ -59,9 +59,9 @@
 Summary:        The Amazon EC2 Xen Kernel
 License:        GPL-2.0
 Group:          System/Kernel
-Version:        4.1.6
+Version:        4.2.1
 %if 0%{?is_kotd}
-Release:        <RELEASE>.gd867e86
+Release:        <RELEASE>.g6996a42
 %else
 Release:        0
 %endif
@@ -148,6 +148,7 @@
 Provides:       kernel = %version-%source_rel
 
 
+%obsolete_rebuilds %name
 Source0:        
http://www.kernel.org/pub/linux/kernel/v4.x/linux-%srcversion.tar.xz
 Source2:        source-post.sh
 Source3:        kernel-source.rpmlintrc
@@ -957,6 +958,7 @@
 Requires(post): perl-Bootloader
 Requires(post): mkinitrd
 
+%obsolete_rebuilds %name-base
 %ifarch %ix86
 Conflicts:      libc.so.6()(64bit)
 %endif
@@ -998,6 +1000,7 @@
 Requires(post): perl-Bootloader
 Requires(post): mkinitrd
 
+%obsolete_rebuilds %name-extra
 Supplements:    packageand(product(SUSE_SLED):%{name}_%_target_cpu)
 %ifarch %ix86
 Conflicts:      libc.so.6()(64bit)
@@ -1052,6 +1055,7 @@
 Requires:       kernel-devel%variant = %version-%source_rel
 Supplements:    packageand(%name:kernel-devel%variant)
 
+%obsolete_rebuilds %name-devel
 PreReq:         coreutils
 
 %description devel

kernel-lpae.spec: same change
++++++ kernel-obs-build.spec ++++++
--- /var/tmp/diff_new_pack.pwNTkG/_old  2015-10-01 09:28:44.000000000 +0200
+++ /var/tmp/diff_new_pack.pwNTkG/_new  2015-10-01 09:28:44.000000000 +0200
@@ -19,7 +19,7 @@
 
 #!BuildIgnore: post-build-checks
 
-%define patchversion 4.1.6
+%define patchversion 4.2.1
 %define variant %{nil}
 
 %include %_sourcedir/kernel-spec-macros
@@ -33,7 +33,7 @@
 %ifarch %ix86 x86_64
 BuildRequires:  kernel-xen
 %endif
-ExclusiveArch:  aarch64 armv6hl armv7hl %ix86 ppc64 ppc64le s390x x86_64
+ExclusiveArch:  aarch64 armv7hl %ix86 ppc64 ppc64le s390x x86_64
 %if 0%{?suse_version} < 1315
 # For SLE 11 
 BuildRequires:  mkinitrd
@@ -45,9 +45,9 @@
 Summary:        package kernel and initrd for OBS VM builds
 License:        GPL-2.0
 Group:          SLES
-Version:        4.1.6
+Version:        4.2.1
 %if 0%{?is_kotd}
-Release:        <RELEASE>.gd867e86
+Release:        <RELEASE>.g6996a42
 %else
 Release:        0
 %endif

++++++ kernel-obs-qa-xen.spec ++++++
--- /var/tmp/diff_new_pack.pwNTkG/_old  2015-10-01 09:28:44.000000000 +0200
+++ /var/tmp/diff_new_pack.pwNTkG/_new  2015-10-01 09:28:44.000000000 +0200
@@ -17,7 +17,7 @@
 # needsrootforbuild
 
 
-%define patchversion 4.1.6
+%define patchversion 4.2.1
 %define variant %{nil}
 
 %include %_sourcedir/kernel-spec-macros
@@ -36,9 +36,9 @@
 Summary:        Basic QA tests for the kernel
 License:        GPL-2.0
 Group:          SLES
-Version:        4.1.6
+Version:        4.2.1
 %if 0%{?is_kotd}
-Release:        <RELEASE>.gd867e86
+Release:        <RELEASE>.g6996a42
 %else
 Release:        0
 %endif

++++++ kernel-obs-qa.spec ++++++
--- /var/tmp/diff_new_pack.pwNTkG/_old  2015-10-01 09:28:44.000000000 +0200
+++ /var/tmp/diff_new_pack.pwNTkG/_new  2015-10-01 09:28:44.000000000 +0200
@@ -17,7 +17,7 @@
 # needsrootforbuild
 
 
-%define patchversion 4.1.6
+%define patchversion 4.2.1
 %define variant %{nil}
 
 %include %_sourcedir/kernel-spec-macros
@@ -28,7 +28,7 @@
 # here as well to avoid that qa and build package build parallel
 BuildRequires:  kernel-obs-build
 BuildRequires:  modutils
-ExclusiveArch:  aarch64 armv6hl armv7hl %ix86 ppc64 ppc64le s390x x86_64
+ExclusiveArch:  aarch64 armv7hl %ix86 ppc64 ppc64le s390x x86_64
 %if 0%{?suse_version} < 1200
 # for SLE 11
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
@@ -36,9 +36,9 @@
 Summary:        Basic QA tests for the kernel
 License:        GPL-2.0
 Group:          SLES
-Version:        4.1.6
+Version:        4.2.1
 %if 0%{?is_kotd}
-Release:        <RELEASE>.gd867e86
+Release:        <RELEASE>.g6996a42
 %else
 Release:        0
 %endif

++++++ kernel-pae.spec ++++++
--- /var/tmp/diff_new_pack.pwNTkG/_old  2015-10-01 09:28:44.000000000 +0200
+++ /var/tmp/diff_new_pack.pwNTkG/_new  2015-10-01 09:28:44.000000000 +0200
@@ -19,8 +19,8 @@
 # This makes the OBS store the project cert as %_sourcedir/_projectcert.crt
 # needssslcertforbuild
 
-%define srcversion 4.1
-%define patchversion 4.1.6
+%define srcversion 4.2
+%define patchversion 4.2.1
 %define variant %{nil}
 %define vanilla_only 0
 
@@ -59,9 +59,9 @@
 Summary:        Kernel with PAE Support
 License:        GPL-2.0
 Group:          System/Kernel
-Version:        4.1.6
+Version:        4.2.1
 %if 0%{?is_kotd}
-Release:        <RELEASE>.gd867e86
+Release:        <RELEASE>.g6996a42
 %else
 Release:        0
 %endif
@@ -156,6 +156,7 @@
 Provides:       kernel-vmi-base = 2.6.38
 Obsoletes:      kernel-vmi-base <= 2.6.38
 %endif
+%obsolete_rebuilds %name
 Source0:        
http://www.kernel.org/pub/linux/kernel/v4.x/linux-%srcversion.tar.xz
 Source2:        source-post.sh
 Source3:        kernel-source.rpmlintrc
@@ -972,6 +973,7 @@
 Provides:       kernel-vmi-base = 2.6.38
 Obsoletes:      kernel-vmi-base <= 2.6.38
 %endif
+%obsolete_rebuilds %name-base
 %ifarch %ix86
 Conflicts:      libc.so.6()(64bit)
 %endif
@@ -1020,6 +1022,7 @@
 Provides:       kernel-vmi-extra = 2.6.38
 Obsoletes:      kernel-vmi-extra <= 2.6.38
 %endif
+%obsolete_rebuilds %name-extra
 Supplements:    packageand(product(SUSE_SLED):%{name}_%_target_cpu)
 %ifarch %ix86
 Conflicts:      libc.so.6()(64bit)
@@ -1081,6 +1084,7 @@
 Provides:       kernel-vmi-devel = 2.6.38
 Obsoletes:      kernel-vmi-devel <= 2.6.38
 %endif
+%obsolete_rebuilds %name-devel
 PreReq:         coreutils
 
 %description devel

++++++ kernel-pv.spec ++++++
--- /var/tmp/diff_new_pack.pwNTkG/_old  2015-10-01 09:28:44.000000000 +0200
+++ /var/tmp/diff_new_pack.pwNTkG/_new  2015-10-01 09:28:44.000000000 +0200
@@ -19,8 +19,8 @@
 # This makes the OBS store the project cert as %_sourcedir/_projectcert.crt
 # needssslcertforbuild
 
-%define srcversion 4.1
-%define patchversion 4.1.6
+%define srcversion 4.2
+%define patchversion 4.2.1
 %define variant %{nil}
 %define vanilla_only 0
 
@@ -59,9 +59,9 @@
 Summary:        The para-virtualized Kernel
 License:        GPL-2.0
 Group:          System/Kernel
-Version:        4.1.6
+Version:        4.2.1
 %if 0%{?is_kotd}
-Release:        <RELEASE>.gd867e86
+Release:        <RELEASE>.g6996a42
 %else
 Release:        0
 %endif
@@ -148,6 +148,7 @@
 Provides:       kernel = %version-%source_rel
 
 
+%obsolete_rebuilds %name
 Source0:        
http://www.kernel.org/pub/linux/kernel/v4.x/linux-%srcversion.tar.xz
 Source2:        source-post.sh
 Source3:        kernel-source.rpmlintrc
@@ -956,6 +957,7 @@
 Requires(post): perl-Bootloader
 Requires(post): mkinitrd
 
+%obsolete_rebuilds %name-base
 %ifarch %ix86
 Conflicts:      libc.so.6()(64bit)
 %endif
@@ -996,6 +998,7 @@
 Requires(post): perl-Bootloader
 Requires(post): mkinitrd
 
+%obsolete_rebuilds %name-extra
 Supplements:    packageand(product(SUSE_SLED):%{name}_%_target_cpu)
 %ifarch %ix86
 Conflicts:      libc.so.6()(64bit)
@@ -1049,6 +1052,7 @@
 Requires:       kernel-devel%variant = %version-%source_rel
 Supplements:    packageand(%name:kernel-devel%variant)
 
+%obsolete_rebuilds %name-devel
 PreReq:         coreutils
 
 %description devel

++++++ kernel-source.spec ++++++
--- /var/tmp/diff_new_pack.pwNTkG/_old  2015-10-01 09:28:44.000000000 +0200
+++ /var/tmp/diff_new_pack.pwNTkG/_new  2015-10-01 09:28:44.000000000 +0200
@@ -17,8 +17,8 @@
 # icecream 0
 
 
-%define srcversion 4.1
-%define patchversion 4.1.6
+%define srcversion 4.2
+%define patchversion 4.2.1
 %define variant %{nil}
 %define vanilla_only 0
 
@@ -30,9 +30,9 @@
 Summary:        The Linux Kernel Sources
 License:        GPL-2.0
 Group:          Development/Sources
-Version:        4.1.6
+Version:        4.2.1
 %if 0%{?is_kotd}
-Release:        <RELEASE>.gd867e86
+Release:        <RELEASE>.g6996a42
 %else
 Release:        0
 %endif

++++++ kernel-syms.spec ++++++
--- /var/tmp/diff_new_pack.pwNTkG/_old  2015-10-01 09:28:44.000000000 +0200
+++ /var/tmp/diff_new_pack.pwNTkG/_new  2015-10-01 09:28:44.000000000 +0200
@@ -24,10 +24,10 @@
 Summary:        Kernel Symbol Versions (modversions)
 License:        GPL-2.0
 Group:          Development/Sources
-Version:        4.1.6
+Version:        4.2.1
 %if %using_buildservice
 %if 0%{?is_kotd}
-Release:        <RELEASE>.gd867e86
+Release:        <RELEASE>.g6996a42
 %else
 Release:        0
 %endif
@@ -38,7 +38,7 @@
 Url:            http://www.kernel.org/
 AutoReqProv:    off
 BuildRequires:  coreutils
-%ifarch aarch64 armv6hl armv7hl %ix86 ppc ppc64 ppc64le s390x x86_64
+%ifarch aarch64 armv7hl %ix86 ppc ppc64 ppc64le s390x x86_64
 Requires:       kernel-default-devel = %version-%source_rel
 %endif
 %ifarch %ix86 x86_64
@@ -62,7 +62,7 @@
 Source:         README.KSYMS
 Requires:       kernel-devel%variant = %version-%source_rel
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
-ExclusiveArch:  %ix86 aarch64 armv6hl armv7hl ppc ppc64 ppc64le s390x x86_64
+ExclusiveArch:  %ix86 aarch64 armv7hl ppc ppc64 ppc64le s390x x86_64
 Prefix:         /usr/src
 
 %description

++++++ kernel-vanilla.spec ++++++
--- /var/tmp/diff_new_pack.pwNTkG/_old  2015-10-01 09:28:44.000000000 +0200
+++ /var/tmp/diff_new_pack.pwNTkG/_new  2015-10-01 09:28:44.000000000 +0200
@@ -19,8 +19,8 @@
 # This makes the OBS store the project cert as %_sourcedir/_projectcert.crt
 # needssslcertforbuild
 
-%define srcversion 4.1
-%define patchversion 4.1.6
+%define srcversion 4.2
+%define patchversion 4.2.1
 %define variant %{nil}
 %define vanilla_only 0
 
@@ -59,9 +59,9 @@
 Summary:        The Standard Kernel - without any SUSE patches
 License:        GPL-2.0
 Group:          System/Kernel
-Version:        4.1.6
+Version:        4.2.1
 %if 0%{?is_kotd}
-Release:        <RELEASE>.gd867e86
+Release:        <RELEASE>.g6996a42
 %else
 Release:        0
 %endif
@@ -148,6 +148,7 @@
 Provides:       kernel = %version-%source_rel
 
 
+%obsolete_rebuilds %name
 Source0:        
http://www.kernel.org/pub/linux/kernel/v4.x/linux-%srcversion.tar.xz
 Source2:        source-post.sh
 Source3:        kernel-source.rpmlintrc
@@ -213,7 +214,7 @@
 Source120:      kabi.tar.bz2
 Source121:      sysctl.tar.bz2
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
-ExclusiveArch:  aarch64 armv6hl armv7hl %ix86 ppc ppc64 ppc64le s390x x86_64
+ExclusiveArch:  aarch64 armv7hl %ix86 ppc ppc64 ppc64le s390x x86_64
 %define kmp_target_cpu %_target_cpu
 %ifarch %ix86
 # Only i386/default supports i586, mark other flavors' packages as i686
@@ -954,6 +955,7 @@
 Requires(post): perl-Bootloader
 Requires(post): mkinitrd
 
+%obsolete_rebuilds %name-base
 %ifarch %ix86
 Conflicts:      libc.so.6()(64bit)
 %endif
@@ -992,6 +994,7 @@
 Requires(post): perl-Bootloader
 Requires(post): mkinitrd
 
+%obsolete_rebuilds %name-extra
 Supplements:    packageand(product(SUSE_SLED):%{name}_%_target_cpu)
 %ifarch %ix86
 Conflicts:      libc.so.6()(64bit)
@@ -1043,6 +1046,7 @@
 Requires:       kernel-devel%variant = %version-%source_rel
 Supplements:    packageand(%name:kernel-devel%variant)
 
+%obsolete_rebuilds %name-devel
 PreReq:         coreutils
 
 %description devel

++++++ kernel-xen.spec ++++++
--- /var/tmp/diff_new_pack.pwNTkG/_old  2015-10-01 09:28:44.000000000 +0200
+++ /var/tmp/diff_new_pack.pwNTkG/_new  2015-10-01 09:28:44.000000000 +0200
@@ -19,8 +19,8 @@
 # This makes the OBS store the project cert as %_sourcedir/_projectcert.crt
 # needssslcertforbuild
 
-%define srcversion 4.1
-%define patchversion 4.1.6
+%define srcversion 4.2
+%define patchversion 4.2.1
 %define variant %{nil}
 %define vanilla_only 0
 
@@ -59,9 +59,9 @@
 Summary:        The Xen Kernel
 License:        GPL-2.0
 Group:          System/Kernel
-Version:        4.1.6
+Version:        4.2.1
 %if 0%{?is_kotd}
-Release:        <RELEASE>.gd867e86
+Release:        <RELEASE>.g6996a42
 %else
 Release:        0
 %endif
@@ -151,6 +151,7 @@
 Obsoletes:      kernel-xenpae <= 2.6.17
 %endif
 
+%obsolete_rebuilds %name
 Source0:        
http://www.kernel.org/pub/linux/kernel/v4.x/linux-%srcversion.tar.xz
 Source2:        source-post.sh
 Source3:        kernel-source.rpmlintrc
@@ -960,6 +961,7 @@
 Requires(post): perl-Bootloader
 Requires(post): mkinitrd
 
+%obsolete_rebuilds %name-base
 %ifarch %ix86
 Conflicts:      libc.so.6()(64bit)
 %endif
@@ -1001,6 +1003,7 @@
 Requires(post): perl-Bootloader
 Requires(post): mkinitrd
 
+%obsolete_rebuilds %name-extra
 Supplements:    packageand(product(SUSE_SLED):%{name}_%_target_cpu)
 %ifarch %ix86
 Conflicts:      libc.so.6()(64bit)
@@ -1055,6 +1058,7 @@
 Requires:       kernel-devel%variant = %version-%source_rel
 Supplements:    packageand(%name:kernel-devel%variant)
 
+%obsolete_rebuilds %name-devel
 PreReq:         coreutils
 
 %description devel

++++++ _constraints ++++++
--- /var/tmp/diff_new_pack.pwNTkG/_old  2015-10-01 09:28:45.000000000 +0200
+++ /var/tmp/diff_new_pack.pwNTkG/_new  2015-10-01 09:28:45.000000000 +0200
@@ -45,7 +45,7 @@
     <hardware>
       <processors>4</processors>
       <disk>
-        <size unit="G">10</size>
+        <size unit="G">14</size>
       </disk>
     </hardware>
   </overwrite>

++++++ config.conf ++++++
--- /var/tmp/diff_new_pack.pwNTkG/_old  2015-10-01 09:28:45.000000000 +0200
+++ /var/tmp/diff_new_pack.pwNTkG/_new  2015-10-01 09:28:45.000000000 +0200
@@ -36,8 +36,8 @@
 +ppc64le       ppc64le/vanilla
 
 # ARM architectures
-+armv6hl       armv6hl/default
-+armv6hl       armv6hl/vanilla
++armv6hl       -!needs_updating armv6hl/default
++armv6hl       -!needs_updating armv6hl/vanilla
 +armv7hl       armv7hl/default
 +armv7hl       armv7hl/vanilla
 +armv7hl       armv7hl/lpae

++++++ config.sh ++++++
--- /var/tmp/diff_new_pack.pwNTkG/_old  2015-10-01 09:28:45.000000000 +0200
+++ /var/tmp/diff_new_pack.pwNTkG/_new  2015-10-01 09:28:45.000000000 +0200
@@ -1,5 +1,5 @@
 # The version of the main tarball to use
-SRCVERSION=4.1
+SRCVERSION=4.2
 # variant of the kernel-source package, either empty or "-rt"
 VARIANT=
 # buildservice projects to build the kernel against

++++++ config.tar.bz2 ++++++
++++ 25886 lines of diff (skipped)

++++++ constraints.in ++++++
--- /var/tmp/diff_new_pack.pwNTkG/_old  2015-10-01 09:28:46.000000000 +0200
+++ /var/tmp/diff_new_pack.pwNTkG/_new  2015-10-01 09:28:46.000000000 +0200
@@ -29,7 +29,7 @@
     <hardware>
       <processors>4</processors>
       <disk>
-        <size unit="G">10</size>
+        <size unit="G">14</size>
       </disk>
     </hardware>
   </overwrite>

++++++ kernel-binary.spec.in ++++++
--- /var/tmp/diff_new_pack.pwNTkG/_old  2015-10-01 09:28:46.000000000 +0200
+++ /var/tmp/diff_new_pack.pwNTkG/_new  2015-10-01 09:28:46.000000000 +0200
@@ -148,6 +148,7 @@
 Provides:       kernel = %version-%source_rel
 @PROVIDES_OBSOLETES@
 @PROVIDES_OBSOLETES_BASE@
+%obsolete_rebuilds %name
 @SOURCES@
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 ExclusiveArch:  @ARCHS@
@@ -828,6 +829,7 @@
 Requires(post): perl-Bootloader
 Requires(post): mkinitrd
 @PROVIDES_OBSOLETES_BASE@
+%obsolete_rebuilds %name-base
 %ifarch %ix86
 Conflicts:      libc.so.6()(64bit)
 %endif
@@ -866,6 +868,7 @@
 Requires(post): perl-Bootloader
 Requires(post): mkinitrd
 @PROVIDES_OBSOLETES_EXTRA@
+%obsolete_rebuilds %name-extra
 Supplements:    packageand(product(SUSE_SLED):%{name}_%_target_cpu)
 %ifarch %ix86
 Conflicts:      libc.so.6()(64bit)
@@ -917,6 +920,7 @@
 Requires:       kernel-devel%variant = %version-%source_rel
 Supplements:    packageand(%name:kernel-devel%variant)
 @PROVIDES_OBSOLETES_DEVEL@
+%obsolete_rebuilds %name-devel
 PreReq:         coreutils
 
 %description devel

++++++ kernel-spec-macros ++++++
--- /var/tmp/diff_new_pack.pwNTkG/_old  2015-10-01 09:28:46.000000000 +0200
+++ /var/tmp/diff_new_pack.pwNTkG/_new  2015-10-01 09:28:46.000000000 +0200
@@ -11,8 +11,14 @@
 # suffix, we keep that suffix and strip the rightmost digit component.
 # This is used in KOTD builds: 2.1.g1234567 -> 2.g1234567
 %define source_rel %release
+%define obsolete_rebuilds() %nil
 %if %using_buildservice
 %define source_rel %(echo %release | sed -r 
's/\\.[0-9]+($|\\.[^.]*[^.0-9][^.]*$)/\\1/')
+# If the rebuild counter is > 1, obsolete all previous rebuilds (boo#867595)
+%define obsolete_rebuilds() %( %{verbose:set -x} \
+       set -- $(echo %release | sed -rn 
's/(.*\\.)([0-9]+)($|\\.[^.]*[^.0-9][^.]*$)/\\1 \\2 \\3/p') \
+       seq 1 $(($2-1)) | sed "s/.*/Obsoletes: %1 = %version-$1&$3/" \
+)
 %endif
 
 # how the kernel release string (uname -r) should look like

++++++ linux-4.1.tar.xz -> linux-4.2.tar.xz ++++++
/work/SRC/openSUSE:Factory/kernel-source/linux-4.1.tar.xz 
/work/SRC/openSUSE:Factory/.kernel-source.new/linux-4.2.tar.xz differ: char 26, 
line 1

++++++ patches.apparmor.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/patches.apparmor/apparmor-compatibility-patch-for-v5-network-control 
new/patches.apparmor/apparmor-compatibility-patch-for-v5-network-control
--- old/patches.apparmor/apparmor-compatibility-patch-for-v5-network-control    
2013-09-24 15:55:10.000000000 +0200
+++ new/patches.apparmor/apparmor-compatibility-patch-for-v5-network-control    
2015-08-31 11:11:55.000000000 +0200
@@ -21,8 +21,8 @@
  create mode 100644 security/apparmor/include/net.h
  create mode 100644 security/apparmor/net.c
 
---- a/security/apparmor/Makefile       2013-09-17 11:00:31.021703815 -0400
-+++ b/security/apparmor/Makefile       2013-09-17 11:00:42.645510072 -0400
+--- a/security/apparmor/Makefile
++++ b/security/apparmor/Makefile
 @@ -4,10 +4,10 @@ obj-$(CONFIG_SECURITY_APPARMOR) += appar
  
  apparmor-y := apparmorfs.o audit.o capability.o context.o ipc.o lib.o match.o 
\
@@ -60,9 +60,9 @@
        $(call cmd,make-rlim)
 +$(obj)/af_names.h : $(srctree)/include/linux/socket.h
 +      $(call cmd,make-af)
---- a/security/apparmor/apparmorfs.c   2013-09-17 11:00:31.021703815 -0400
-+++ b/security/apparmor/apparmorfs.c   2013-09-17 11:00:42.645510072 -0400
-@@ -811,6 +811,7 @@ static struct aa_fs_entry aa_fs_entry_fe
+--- a/security/apparmor/apparmorfs.c
++++ b/security/apparmor/apparmorfs.c
+@@ -809,6 +809,7 @@ static struct aa_fs_entry aa_fs_entry_fe
        AA_FS_FILE_U64("capability",            VFS_CAP_FLAGS_MASK),
        AA_FS_DIR("rlimit",                     aa_fs_entry_rlimit),
        AA_FS_DIR("caps",                       aa_fs_entry_caps),
@@ -70,7 +70,7 @@
        { }
  };
  
-@@ -820,6 +821,8 @@ static struct aa_fs_entry aa_fs_entry_ap
+@@ -818,6 +819,8 @@ static struct aa_fs_entry aa_fs_entry_ap
        AA_FS_FILE_FOPS(".remove", 0640, &aa_fs_profile_remove),
        AA_FS_FILE_FOPS("profiles", 0640, &aa_fs_profiles_fops),
        AA_FS_DIR("features", aa_fs_entry_features),
@@ -79,9 +79,9 @@
        { }
  };
  
---- a/security/apparmor/include/audit.h        2013-09-17 11:00:31.025703750 
-0400
-+++ b/security/apparmor/include/audit.h        2013-09-17 11:00:42.645510072 
-0400
-@@ -126,6 +126,10 @@ struct apparmor_audit_data {
+--- a/security/apparmor/include/audit.h
++++ b/security/apparmor/include/audit.h
+@@ -125,6 +125,10 @@ struct apparmor_audit_data {
                        u32 denied;
                        kuid_t ouid;
                } fs;
@@ -92,8 +92,8 @@
        };
  };
  
---- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ b/security/apparmor/include/net.h  2013-09-17 11:00:42.645510072 -0400
+--- /dev/null
++++ b/security/apparmor/include/net.h
 @@ -0,0 +1,40 @@
 +/*
 + * AppArmor security module
@@ -135,8 +135,8 @@
 +}
 +
 +#endif /* __AA_NET_H */
---- a/security/apparmor/include/policy.h       2013-09-17 11:00:31.025703750 
-0400
-+++ b/security/apparmor/include/policy.h       2013-09-17 11:00:42.645510072 
-0400
+--- a/security/apparmor/include/policy.h
++++ b/security/apparmor/include/policy.h
 @@ -27,6 +27,7 @@
  #include "capability.h"
  #include "domain.h"
@@ -161,8 +161,8 @@
        struct aa_rlimit rlimits;
  
        unsigned char *hash;
---- a/security/apparmor/lsm.c  2013-09-17 11:00:31.025703750 -0400
-+++ b/security/apparmor/lsm.c  2013-09-17 11:00:42.645510072 -0400
+--- a/security/apparmor/lsm.c
++++ b/security/apparmor/lsm.c
 @@ -32,6 +32,7 @@
  #include "include/context.h"
  #include "include/file.h"
@@ -171,7 +171,7 @@
  #include "include/path.h"
  #include "include/policy.h"
  #include "include/procattr.h"
-@@ -615,6 +616,104 @@ static int apparmor_task_setrlimit(struc
+@@ -605,6 +606,104 @@ static int apparmor_task_setrlimit(struc
        return error;
  }
  
@@ -273,31 +273,31 @@
 +      return aa_revalidate_sk(OP_SOCK_SHUTDOWN, sk);
 +}
 +
- static struct security_operations apparmor_ops = {
-       .name =                         "apparmor",
- 
-@@ -647,6 +746,19 @@ static struct security_operations apparm
-       .getprocattr =                  apparmor_getprocattr,
-       .setprocattr =                  apparmor_setprocattr,
- 
-+      .socket_create =                apparmor_socket_create,
-+      .socket_bind =                  apparmor_socket_bind,
-+      .socket_connect =               apparmor_socket_connect,
-+      .socket_listen =                apparmor_socket_listen,
-+      .socket_accept =                apparmor_socket_accept,
-+      .socket_sendmsg =               apparmor_socket_sendmsg,
-+      .socket_recvmsg =               apparmor_socket_recvmsg,
-+      .socket_getsockname =           apparmor_socket_getsockname,
-+      .socket_getpeername =           apparmor_socket_getpeername,
-+      .socket_getsockopt =            apparmor_socket_getsockopt,
-+      .socket_setsockopt =            apparmor_socket_setsockopt,
-+      .socket_shutdown =              apparmor_socket_shutdown,
-+
-       .cred_alloc_blank =             apparmor_cred_alloc_blank,
-       .cred_free =                    apparmor_cred_free,
-       .cred_prepare =                 apparmor_cred_prepare,
---- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ b/security/apparmor/net.c  2013-09-17 11:00:42.649510003 -0400
+ static struct security_hook_list apparmor_hooks[] = {
+       LSM_HOOK_INIT(ptrace_access_check, apparmor_ptrace_access_check),
+       LSM_HOOK_INIT(ptrace_traceme, apparmor_ptrace_traceme),
+@@ -634,6 +733,19 @@ static struct security_hook_list apparmo
+       LSM_HOOK_INIT(getprocattr, apparmor_getprocattr),
+       LSM_HOOK_INIT(setprocattr, apparmor_setprocattr),
+ 
++      LSM_HOOK_INIT(socket_create, apparmor_socket_create),
++      LSM_HOOK_INIT(socket_bind, apparmor_socket_bind),
++      LSM_HOOK_INIT(socket_connect, apparmor_socket_connect),
++      LSM_HOOK_INIT(socket_listen, apparmor_socket_listen),
++      LSM_HOOK_INIT(socket_accept, apparmor_socket_accept),
++      LSM_HOOK_INIT(socket_sendmsg, apparmor_socket_sendmsg),
++      LSM_HOOK_INIT(socket_recvmsg, apparmor_socket_recvmsg),
++      LSM_HOOK_INIT(socket_getsockname, apparmor_socket_getsockname),
++      LSM_HOOK_INIT(socket_getpeername, apparmor_socket_getpeername),
++      LSM_HOOK_INIT(socket_getsockopt, apparmor_socket_getsockopt),
++      LSM_HOOK_INIT(socket_setsockopt, apparmor_socket_setsockopt),
++      LSM_HOOK_INIT(socket_shutdown, apparmor_socket_shutdown),
++
+       LSM_HOOK_INIT(cred_alloc_blank, apparmor_cred_alloc_blank),
+       LSM_HOOK_INIT(cred_free, apparmor_cred_free),
+       LSM_HOOK_INIT(cred_prepare, apparmor_cred_prepare),
+--- /dev/null
++++ b/security/apparmor/net.c
 @@ -0,0 +1,184 @@
 +/*
 + * AppArmor security module
@@ -483,9 +483,9 @@
 +
 +      return error;
 +}
---- a/security/apparmor/policy.c       2013-09-17 11:00:31.029703685 -0400
-+++ b/security/apparmor/policy.c       2013-09-17 11:00:42.649510003 -0400
-@@ -602,6 +602,7 @@ void aa_free_profile(struct aa_profile *
+--- a/security/apparmor/policy.c
++++ b/security/apparmor/policy.c
+@@ -603,6 +603,7 @@ void aa_free_profile(struct aa_profile *
  
        aa_free_file_rules(&profile->file);
        aa_free_cap_rules(&profile->caps);
@@ -493,8 +493,8 @@
        aa_free_rlimit_rules(&profile->rlimits);
  
        kzfree(profile->dirname);
---- a/security/apparmor/policy_unpack.c        2013-09-17 11:00:31.029703685 
-0400
-+++ b/security/apparmor/policy_unpack.c        2013-09-17 11:00:42.649510003 
-0400
+--- a/security/apparmor/policy_unpack.c
++++ b/security/apparmor/policy_unpack.c
 @@ -193,6 +193,19 @@ fail:
        return 0;
  }

++++++ patches.arch.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/patches.arch/arm64-0004-net-xgbe-Add-A0-silicon-support.patch 
new/patches.arch/arm64-0004-net-xgbe-Add-A0-silicon-support.patch
--- old/patches.arch/arm64-0004-net-xgbe-Add-A0-silicon-support.patch   
2015-08-03 20:25:04.000000000 +0200
+++ new/patches.arch/arm64-0004-net-xgbe-Add-A0-silicon-support.patch   
2015-07-06 22:44:45.000000000 +0200
@@ -10370,9 +10370,9 @@
 --- a/drivers/net/phy/Makefile
 +++ b/drivers/net/phy/Makefile
 @@ -34,4 +34,5 @@ obj-$(CONFIG_MDIO_BUS_MUX_MMIOREG) += md
+ obj-$(CONFIG_MDIO_BUS_MUX_MMIOREG) += mdio-mux-mmioreg.o
  obj-$(CONFIG_MDIO_SUN4I)      += mdio-sun4i.o
  obj-$(CONFIG_MDIO_MOXART)     += mdio-moxart.o
- obj-$(CONFIG_AMD_XGBE_PHY)    += amd-xgbe-phy.o
 +obj-$(CONFIG_AMD_XGBE_PHY)    += amd-xgbe-phy-a0.o
  obj-$(CONFIG_MDIO_BCM_UNIMAC) += mdio-bcm-unimac.o
 --- /dev/null
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/patches.arch/arm64-0005-arm64-dts-Add-X-Gene-reboot-driver-dts-node.patch 
new/patches.arch/arm64-0005-arm64-dts-Add-X-Gene-reboot-driver-dts-node.patch
--- 
old/patches.arch/arm64-0005-arm64-dts-Add-X-Gene-reboot-driver-dts-node.patch   
    2015-08-03 20:25:04.000000000 +0200
+++ 
new/patches.arch/arm64-0005-arm64-dts-Add-X-Gene-reboot-driver-dts-node.patch   
    2015-07-06 22:44:45.000000000 +0200
@@ -31,7 +31,7 @@
                        #address-cells = <2>;
                        #size-cells = <2>;
 @@ -469,6 +474,13 @@
-                       clocks = <&pcie4clk 0>;
+                       msi-parent = <&msi>;
                };
  
 +              reboot: reboot@17000014 {

++++++ patches.drivers.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/patches.drivers/0001-qmi_wwan-Add-support-for-Dell-Wireless-5809e-4G-Mode.patch
 
new/patches.drivers/0001-qmi_wwan-Add-support-for-Dell-Wireless-5809e-4G-Mode.patch
--- 
old/patches.drivers/0001-qmi_wwan-Add-support-for-Dell-Wireless-5809e-4G-Mode.patch
 1970-01-01 01:00:00.000000000 +0100
+++ 
new/patches.drivers/0001-qmi_wwan-Add-support-for-Dell-Wireless-5809e-4G-Mode.patch
 2015-09-25 10:21:54.000000000 +0200
@@ -0,0 +1,35 @@
+From 22ebbe4c34da96f1e283baae5956e39d629c18a3 Mon Sep 17 00:00:00 2001
+From: Pieter Hollants <[email protected]>
+Date: Mon, 20 Jul 2015 10:14:13 +0200
+Subject: [PATCH] qmi_wwan: Add support for Dell Wireless 5809e 4G Modem
+References: bnc#937974
+Git-Commit: 2070c48cf2b78af89ba529c00992eaaa18df8ef7
+Patch-Mainline: Queued in subsystem maintainer repository
+Git-repo: http://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git
+
+Added the USB IDs 0x413c:0x81b1 for the "Dell Wireless 5809e Gobi(TM) 4G
+LTE Mobile Broadband Card", a Dell-branded Sierra Wireless EM7305 LTE
+card in M.2 form factor, used eg. in Dell's Latitude E7540 Notebook
+series.
+
+Signed-off-by: Pieter Hollants <[email protected]>
+Signed-off-by: Oliver Neukum <[email protected]>
+---
+ drivers/net/usb/qmi_wwan.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/drivers/net/usb/qmi_wwan.c b/drivers/net/usb/qmi_wwan.c
+index f603f36..f06c687 100644
+--- a/drivers/net/usb/qmi_wwan.c
++++ b/drivers/net/usb/qmi_wwan.c
+@@ -784,6 +784,7 @@ static const struct usb_device_id products[] = {
+       {QMI_FIXED_INTF(0x413c, 0x81a4, 8)},    /* Dell Wireless 5570e HSPA+ 
(42Mbps) Mobile Broadband Card */
+       {QMI_FIXED_INTF(0x413c, 0x81a8, 8)},    /* Dell Wireless 5808 Gobi(TM) 
4G LTE Mobile Broadband Card */
+       {QMI_FIXED_INTF(0x413c, 0x81a9, 8)},    /* Dell Wireless 5808e Gobi(TM) 
4G LTE Mobile Broadband Card */
++      {QMI_FIXED_INTF(0x413c, 0x81b1, 8)},    /* Dell Wireless 5809e Gobi(TM) 
4G LTE Mobile Broadband Card */
+       {QMI_FIXED_INTF(0x03f0, 0x4e1d, 8)},    /* HP lt4111 LTE/EV-DO/HSPA+ 
Gobi 4G Module */
+       {QMI_FIXED_INTF(0x03f0, 0x581d, 4)},    /* HP lt4112 LTE/HSPA+ Gobi 4G 
Module (Huawei me906e) */
+ 
+-- 
+2.1.4
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/patches.drivers/0001-vmwgfx-Rework-device-initialization.patch 
new/patches.drivers/0001-vmwgfx-Rework-device-initialization.patch
--- old/patches.drivers/0001-vmwgfx-Rework-device-initialization.patch  
1970-01-01 01:00:00.000000000 +0100
+++ new/patches.drivers/0001-vmwgfx-Rework-device-initialization.patch  
2015-09-25 10:21:54.000000000 +0200
@@ -0,0 +1,872 @@
+From 153b3d5b037eeb01d1e5610958a5bbd79885b2be Mon Sep 17 00:00:00 2001
+From: Thomas Hellstrom <[email protected]>
+Date: Thu, 25 Jun 2015 10:47:43 -0700
+Subject: [PATCH]  vmwgfx: Rework device initialization
+Git-commit: 153b3d5b037eeb01d1e5610958a5bbd79885b2be
+Patch-mainline: v4.3-rc1
+References: boo#934266
+
+This commit reworks device initialization so that we always enable the
+FIFO at driver load, deferring SVGA enable until either first modeset
+or fbdev enable.
+This should always leave the fifo properly enabled for render- and
+control nodes.
+In addition,
+*) We disable the use of VRAM when SVGA is not enabled.
+*) We simplify PM support so that we only throw out resources on hibernate,
+not on suspend, since the device keeps its state on suspend.
+
+Signed-off-by: Thomas Hellstrom <[email protected]>
+Reviewed-by: Sinclair Yeh <[email protected]>
+Acked-by: Takashi Iwai <[email protected]>
+
+---
+ drivers/gpu/drm/vmwgfx/vmwgfx_context.c |    8 
+ drivers/gpu/drm/vmwgfx/vmwgfx_drv.c     |  337 
+++++++++++++++++---------------
+ drivers/gpu/drm/vmwgfx/vmwgfx_drv.h     |   19 +
+ drivers/gpu/drm/vmwgfx/vmwgfx_fb.c      |    4 
+ drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c    |   12 -
+ drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c     |    1 
+ drivers/gpu/drm/vmwgfx/vmwgfx_mob.c     |    6 
+ drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c    |    1 
+ drivers/gpu/drm/vmwgfx/vmwgfx_shader.c  |    4 
+ drivers/gpu/drm/vmwgfx/vmwgfx_surface.c |   12 -
+ 10 files changed, 230 insertions(+), 174 deletions(-)
+
+--- a/drivers/gpu/drm/vmwgfx/vmwgfx_context.c
++++ b/drivers/gpu/drm/vmwgfx/vmwgfx_context.c
+@@ -140,7 +140,7 @@ static void vmw_hw_context_destroy(struc
+       cmd->body.cid = cpu_to_le32(res->id);
+ 
+       vmw_fifo_commit(dev_priv, sizeof(*cmd));
+-      vmw_3d_resource_dec(dev_priv, false);
++      vmw_fifo_resource_dec(dev_priv);
+ }
+ 
+ static int vmw_gb_context_init(struct vmw_private *dev_priv,
+@@ -220,7 +220,7 @@ static int vmw_context_init(struct vmw_p
+       cmd->body.cid = cpu_to_le32(res->id);
+ 
+       vmw_fifo_commit(dev_priv, sizeof(*cmd));
+-      (void) vmw_3d_resource_inc(dev_priv, false);
++      vmw_fifo_resource_inc(dev_priv);
+       vmw_resource_activate(res, vmw_hw_context_destroy);
+       return 0;
+ 
+@@ -281,7 +281,7 @@ static int vmw_gb_context_create(struct
+       cmd->header.size = sizeof(cmd->body);
+       cmd->body.cid = res->id;
+       vmw_fifo_commit(dev_priv, sizeof(*cmd));
+-      (void) vmw_3d_resource_inc(dev_priv, false);
++      vmw_fifo_resource_inc(dev_priv);
+ 
+       return 0;
+ 
+@@ -414,7 +414,7 @@ static int vmw_gb_context_destroy(struct
+       if (dev_priv->query_cid == res->id)
+               dev_priv->query_cid_valid = false;
+       vmw_resource_release_id(res);
+-      vmw_3d_resource_dec(dev_priv, false);
++      vmw_fifo_resource_dec(dev_priv);
+ 
+       return 0;
+ }
+--- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
++++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
+@@ -339,24 +339,47 @@ static int vmw_dummy_query_bo_create(str
+       return ret;
+ }
+ 
+-static int vmw_request_device(struct vmw_private *dev_priv)
++/**
++ * vmw_request_device_late - Perform late device setup
++ *
++ * @dev_priv: Pointer to device private.
++ *
++ * This function performs setup of otables and enables large command
++ * buffer submission. These tasks are split out to a separate function
++ * because it reverts vmw_release_device_early and is intended to be used
++ * by an error path in the hibernation code.
++ */
++static int vmw_request_device_late(struct vmw_private *dev_priv)
+ {
+       int ret;
+ 
+-      ret = vmw_fifo_init(dev_priv, &dev_priv->fifo);
+-      if (unlikely(ret != 0)) {
+-              DRM_ERROR("Unable to initialize FIFO.\n");
+-              return ret;
+-      }
+-      vmw_fence_fifo_up(dev_priv->fman);
+       if (dev_priv->has_mob) {
+               ret = vmw_otables_setup(dev_priv);
+               if (unlikely(ret != 0)) {
+                       DRM_ERROR("Unable to initialize "
+                                 "guest Memory OBjects.\n");
+-                      goto out_no_mob;
++                      return ret;
+               }
+       }
++
++      return 0;
++}
++
++static int vmw_request_device(struct vmw_private *dev_priv)
++{
++      int ret;
++
++      ret = vmw_fifo_init(dev_priv, &dev_priv->fifo);
++      if (unlikely(ret != 0)) {
++              DRM_ERROR("Unable to initialize FIFO.\n");
++              return ret;
++      }
++      vmw_fence_fifo_up(dev_priv->fman);
++
++      ret = vmw_request_device_late(dev_priv);
++      if (ret)
++              goto out_no_mob;
++
+       ret = vmw_dummy_query_bo_create(dev_priv);
+       if (unlikely(ret != 0))
+               goto out_no_query_bo;
+@@ -364,15 +387,25 @@ static int vmw_request_device(struct vmw
+       return 0;
+ 
+ out_no_query_bo:
+-      if (dev_priv->has_mob)
++      if (dev_priv->has_mob) {
++              (void) ttm_bo_evict_mm(&dev_priv->bdev, VMW_PL_MOB);
+               vmw_otables_takedown(dev_priv);
++      }
+ out_no_mob:
+       vmw_fence_fifo_down(dev_priv->fman);
+       vmw_fifo_release(dev_priv, &dev_priv->fifo);
+       return ret;
+ }
+ 
+-static void vmw_release_device(struct vmw_private *dev_priv)
++/**
++ * vmw_release_device_early - Early part of fifo takedown.
++ *
++ * @dev_priv: Pointer to device private struct.
++ *
++ * This is the first part of command submission takedown, to be called before
++ * buffer management is taken down.
++ */
++static void vmw_release_device_early(struct vmw_private *dev_priv)
+ {
+       /*
+        * Previous destructions should've released
+@@ -382,64 +415,24 @@ static void vmw_release_device(struct vm
+       BUG_ON(dev_priv->pinned_bo != NULL);
+ 
+       ttm_bo_unref(&dev_priv->dummy_query_bo);
+-      if (dev_priv->has_mob)
++      if (dev_priv->has_mob) {
++              ttm_bo_evict_mm(&dev_priv->bdev, VMW_PL_MOB);
+               vmw_otables_takedown(dev_priv);
+-      vmw_fence_fifo_down(dev_priv->fman);
+-      vmw_fifo_release(dev_priv, &dev_priv->fifo);
+-}
+-
+-
+-/**
+- * Increase the 3d resource refcount.
+- * If the count was prevously zero, initialize the fifo, switching to svga
+- * mode. Note that the master holds a ref as well, and may request an
+- * explicit switch to svga mode if fb is not running, using @unhide_svga.
+- */
+-int vmw_3d_resource_inc(struct vmw_private *dev_priv,
+-                      bool unhide_svga)
+-{
+-      int ret = 0;
+-
+-      mutex_lock(&dev_priv->release_mutex);
+-      if (unlikely(dev_priv->num_3d_resources++ == 0)) {
+-              ret = vmw_request_device(dev_priv);
+-              if (unlikely(ret != 0))
+-                      --dev_priv->num_3d_resources;
+-      } else if (unhide_svga) {
+-              vmw_write(dev_priv, SVGA_REG_ENABLE,
+-                        vmw_read(dev_priv, SVGA_REG_ENABLE) &
+-                        ~SVGA_REG_ENABLE_HIDE);
+       }
+-
+-      mutex_unlock(&dev_priv->release_mutex);
+-      return ret;
+ }
+ 
+ /**
+- * Decrease the 3d resource refcount.
+- * If the count reaches zero, disable the fifo, switching to vga mode.
+- * Note that the master holds a refcount as well, and may request an
+- * explicit switch to vga mode when it releases its refcount to account
+- * for the situation of an X server vt switch to VGA with 3d resources
+- * active.
++ * vmw_release_device_late - Late part of fifo takedown.
++ *
++ * @dev_priv: Pointer to device private struct.
++ *
++ * This is the last part of the command submission takedown, to be called when
++ * command submission is no longer needed. It may wait on pending fences.
+  */
+-void vmw_3d_resource_dec(struct vmw_private *dev_priv,
+-                       bool hide_svga)
++static void vmw_release_device_late(struct vmw_private *dev_priv)
+ {
+-      int32_t n3d;
+-
+-      mutex_lock(&dev_priv->release_mutex);
+-      if (unlikely(--dev_priv->num_3d_resources == 0))
+-              vmw_release_device(dev_priv);
+-      else if (hide_svga)
+-              vmw_write(dev_priv, SVGA_REG_ENABLE,
+-                        vmw_read(dev_priv, SVGA_REG_ENABLE) |
+-                        SVGA_REG_ENABLE_HIDE);
+-
+-      n3d = (int32_t) dev_priv->num_3d_resources;
+-      mutex_unlock(&dev_priv->release_mutex);
+-
+-      BUG_ON(n3d < 0);
++      vmw_fence_fifo_down(dev_priv->fman);
++      vmw_fifo_release(dev_priv, &dev_priv->fifo);
+ }
+ 
+ /**
+@@ -603,6 +596,7 @@ static int vmw_driver_load(struct drm_de
+       spin_lock_init(&dev_priv->hw_lock);
+       spin_lock_init(&dev_priv->waiter_lock);
+       spin_lock_init(&dev_priv->cap_lock);
++      spin_lock_init(&dev_priv->svga_lock);
+ 
+       for (i = vmw_res_context; i < vmw_res_max; ++i) {
+               idr_init(&dev_priv->res_idr[i]);
+@@ -714,17 +708,6 @@ static int vmw_driver_load(struct drm_de
+       dev_priv->active_master = &dev_priv->fbdev_master;
+ 
+ 
+-      ret = ttm_bo_device_init(&dev_priv->bdev,
+-                               dev_priv->bo_global_ref.ref.object,
+-                               &vmw_bo_driver,
+-                               dev->anon_inode->i_mapping,
+-                               VMWGFX_FILE_PAGE_OFFSET,
+-                               false);
+-      if (unlikely(ret != 0)) {
+-              DRM_ERROR("Failed initializing TTM buffer object driver.\n");
+-              goto out_err1;
+-      }
+-
+       dev_priv->mmio_mtrr = arch_phys_wc_add(dev_priv->mmio_start,
+                                              dev_priv->mmio_size);
+ 
+@@ -787,13 +770,28 @@ static int vmw_driver_load(struct drm_de
+               goto out_no_fman;
+       }
+ 
++      ret = ttm_bo_device_init(&dev_priv->bdev,
++                               dev_priv->bo_global_ref.ref.object,
++                               &vmw_bo_driver,
++                               dev->anon_inode->i_mapping,
++                               VMWGFX_FILE_PAGE_OFFSET,
++                               false);
++      if (unlikely(ret != 0)) {
++              DRM_ERROR("Failed initializing TTM buffer object driver.\n");
++              goto out_no_bdev;
++      }
+ 
++      /*
++       * Enable VRAM, but initially don't use it until SVGA is enabled and
++       * unhidden.
++       */
+       ret = ttm_bo_init_mm(&dev_priv->bdev, TTM_PL_VRAM,
+                            (dev_priv->vram_size >> PAGE_SHIFT));
+       if (unlikely(ret != 0)) {
+               DRM_ERROR("Failed initializing memory manager for VRAM.\n");
+               goto out_no_vram;
+       }
++      dev_priv->bdev.man[TTM_PL_VRAM].use_type = false;
+ 
+       dev_priv->has_gmr = true;
+       if (((dev_priv->capabilities & (SVGA_CAP_GMR | SVGA_CAP_GMR2)) == 0) ||
+@@ -814,18 +812,18 @@ static int vmw_driver_load(struct drm_de
+               }
+       }
+ 
+-      vmw_kms_save_vga(dev_priv);
+-
+-      /* Start kms and overlay systems, needs fifo. */
+       ret = vmw_kms_init(dev_priv);
+       if (unlikely(ret != 0))
+               goto out_no_kms;
+       vmw_overlay_init(dev_priv);
+ 
++      ret = vmw_request_device(dev_priv);
++      if (ret)
++              goto out_no_fifo;
++
+       if (dev_priv->enable_fb) {
+-              ret = vmw_3d_resource_inc(dev_priv, true);
+-              if (unlikely(ret != 0))
+-                      goto out_no_fifo;
++              vmw_fifo_resource_inc(dev_priv);
++              vmw_svga_enable(dev_priv);
+               vmw_fb_init(dev_priv);
+       }
+ 
+@@ -838,13 +836,14 @@ out_no_fifo:
+       vmw_overlay_close(dev_priv);
+       vmw_kms_close(dev_priv);
+ out_no_kms:
+-      vmw_kms_restore_vga(dev_priv);
+       if (dev_priv->has_mob)
+               (void) ttm_bo_clean_mm(&dev_priv->bdev, VMW_PL_MOB);
+       if (dev_priv->has_gmr)
+               (void) ttm_bo_clean_mm(&dev_priv->bdev, VMW_PL_GMR);
+       (void)ttm_bo_clean_mm(&dev_priv->bdev, TTM_PL_VRAM);
+ out_no_vram:
++      (void)ttm_bo_device_release(&dev_priv->bdev);
++out_no_bdev:
+       vmw_fence_manager_takedown(dev_priv->fman);
+ out_no_fman:
+       if (dev_priv->capabilities & SVGA_CAP_IRQMASK)
+@@ -860,8 +859,6 @@ out_err4:
+       iounmap(dev_priv->mmio_virt);
+ out_err3:
+       arch_phys_wc_del(dev_priv->mmio_mtrr);
+-      (void)ttm_bo_device_release(&dev_priv->bdev);
+-out_err1:
+       vmw_ttm_global_release(dev_priv);
+ out_err0:
+       for (i = vmw_res_context; i < vmw_res_max; ++i)
+@@ -883,18 +880,22 @@ static int vmw_driver_unload(struct drm_
+       vfree(dev_priv->ctx.cmd_bounce);
+       if (dev_priv->enable_fb) {
+               vmw_fb_close(dev_priv);
+-              vmw_kms_restore_vga(dev_priv);
+-              vmw_3d_resource_dec(dev_priv, false);
++              vmw_fifo_resource_dec(dev_priv);
++              vmw_svga_disable(dev_priv);
+       }
++
+       vmw_kms_close(dev_priv);
+       vmw_overlay_close(dev_priv);
+ 
+-      if (dev_priv->has_mob)
+-              (void) ttm_bo_clean_mm(&dev_priv->bdev, VMW_PL_MOB);
+       if (dev_priv->has_gmr)
+               (void)ttm_bo_clean_mm(&dev_priv->bdev, VMW_PL_GMR);
+       (void)ttm_bo_clean_mm(&dev_priv->bdev, TTM_PL_VRAM);
+ 
++      vmw_release_device_early(dev_priv);
++      if (dev_priv->has_mob)
++              (void) ttm_bo_clean_mm(&dev_priv->bdev, VMW_PL_MOB);
++      (void) ttm_bo_device_release(&dev_priv->bdev);
++      vmw_release_device_late(dev_priv);
+       vmw_fence_manager_takedown(dev_priv->fman);
+       if (dev_priv->capabilities & SVGA_CAP_IRQMASK)
+               drm_irq_uninstall(dev_priv->dev);
+@@ -1148,27 +1149,13 @@ static int vmw_master_set(struct drm_dev
+       struct vmw_master *vmaster = vmw_master(file_priv->master);
+       int ret = 0;
+ 
+-      if (!dev_priv->enable_fb) {
+-              ret = vmw_3d_resource_inc(dev_priv, true);
+-              if (unlikely(ret != 0))
+-                      return ret;
+-              vmw_kms_save_vga(dev_priv);
+-              vmw_write(dev_priv, SVGA_REG_TRACES, 0);
+-      }
+-
+       if (active) {
+               BUG_ON(active != &dev_priv->fbdev_master);
+               ret = ttm_vt_lock(&active->lock, false, vmw_fp->tfile);
+               if (unlikely(ret != 0))
+-                      goto out_no_active_lock;
++                      return ret;
+ 
+               ttm_lock_set_kill(&active->lock, true, SIGTERM);
+-              ret = ttm_bo_evict_mm(&dev_priv->bdev, TTM_PL_VRAM);
+-              if (unlikely(ret != 0)) {
+-                      DRM_ERROR("Unable to clean VRAM on "
+-                                "master drop.\n");
+-              }
+-
+               dev_priv->active_master = NULL;
+       }
+ 
+@@ -1182,14 +1169,6 @@ static int vmw_master_set(struct drm_dev
+       dev_priv->active_master = vmaster;
+ 
+       return 0;
+-
+-out_no_active_lock:
+-      if (!dev_priv->enable_fb) {
+-              vmw_kms_restore_vga(dev_priv);
+-              vmw_3d_resource_dec(dev_priv, true);
+-              vmw_write(dev_priv, SVGA_REG_TRACES, 1);
+-      }
+-      return ret;
+ }
+ 
+ static void vmw_master_drop(struct drm_device *dev,
+@@ -1214,16 +1193,9 @@ static void vmw_master_drop(struct drm_d
+       }
+ 
+       ttm_lock_set_kill(&vmaster->lock, false, SIGTERM);
+-      vmw_execbuf_release_pinned_bo(dev_priv);
+ 
+-      if (!dev_priv->enable_fb) {
+-              ret = ttm_bo_evict_mm(&dev_priv->bdev, TTM_PL_VRAM);
+-              if (unlikely(ret != 0))
+-                      DRM_ERROR("Unable to clean VRAM on master drop.\n");
+-              vmw_kms_restore_vga(dev_priv);
+-              vmw_3d_resource_dec(dev_priv, true);
+-              vmw_write(dev_priv, SVGA_REG_TRACES, 1);
+-      }
++      if (!dev_priv->enable_fb)
++              vmw_svga_disable(dev_priv);
+ 
+       dev_priv->active_master = &dev_priv->fbdev_master;
+       ttm_lock_set_kill(&dev_priv->fbdev_master.lock, false, SIGTERM);
+@@ -1233,6 +1205,74 @@ static void vmw_master_drop(struct drm_d
+               vmw_fb_on(dev_priv);
+ }
+ 
++/**
++ * __vmw_svga_enable - Enable SVGA mode, FIFO and use of VRAM.
++ *
++ * @dev_priv: Pointer to device private struct.
++ * Needs the reservation sem to be held in non-exclusive mode.
++ */
++void __vmw_svga_enable(struct vmw_private *dev_priv)
++{
++      spin_lock(&dev_priv->svga_lock);
++      if (!dev_priv->bdev.man[TTM_PL_VRAM].use_type) {
++              vmw_write(dev_priv, SVGA_REG_ENABLE, SVGA_REG_ENABLE);
++              dev_priv->bdev.man[TTM_PL_VRAM].use_type = true;
++      }
++      spin_unlock(&dev_priv->svga_lock);
++}
++
++/**
++ * vmw_svga_enable - Enable SVGA mode, FIFO and use of VRAM.
++ *
++ * @dev_priv: Pointer to device private struct.
++ */
++void vmw_svga_enable(struct vmw_private *dev_priv)
++{
++      ttm_read_lock(&dev_priv->reservation_sem, false);
++      __vmw_svga_enable(dev_priv);
++      ttm_read_unlock(&dev_priv->reservation_sem);
++}
++
++/**
++ * __vmw_svga_disable - Disable SVGA mode and use of VRAM.
++ *
++ * @dev_priv: Pointer to device private struct.
++ * Needs the reservation sem to be held in exclusive mode.
++ * Will not empty VRAM. VRAM must be emptied by caller.
++ */
++void __vmw_svga_disable(struct vmw_private *dev_priv)
++{
++      spin_lock(&dev_priv->svga_lock);
++      if (dev_priv->bdev.man[TTM_PL_VRAM].use_type) {
++              dev_priv->bdev.man[TTM_PL_VRAM].use_type = false;
++              vmw_write(dev_priv, SVGA_REG_ENABLE,
++                        SVGA_REG_ENABLE_ENABLE_HIDE);
++      }
++      spin_unlock(&dev_priv->svga_lock);
++}
++
++/**
++ * vmw_svga_disable - Disable SVGA_MODE, and use of VRAM. Keep the fifo
++ * running.
++ *
++ * @dev_priv: Pointer to device private struct.
++ * Will empty VRAM.
++ */
++void vmw_svga_disable(struct vmw_private *dev_priv)
++{
++      ttm_write_lock(&dev_priv->reservation_sem, false);
++      spin_lock(&dev_priv->svga_lock);
++      if (dev_priv->bdev.man[TTM_PL_VRAM].use_type) {
++              dev_priv->bdev.man[TTM_PL_VRAM].use_type = false;
++              vmw_write(dev_priv, SVGA_REG_ENABLE,
++                        SVGA_REG_ENABLE_ENABLE_HIDE);
++              spin_unlock(&dev_priv->svga_lock);
++              if (ttm_bo_evict_mm(&dev_priv->bdev, TTM_PL_VRAM))
++                      DRM_ERROR("Failed evicting VRAM buffers.\n");
++      } else
++              spin_unlock(&dev_priv->svga_lock);
++      ttm_write_unlock(&dev_priv->reservation_sem);
++}
+ 
+ static void vmw_remove(struct pci_dev *pdev)
+ {
+@@ -1250,21 +1290,21 @@ static int vmwgfx_pm_notifier(struct not
+ 
+       switch (val) {
+       case PM_HIBERNATION_PREPARE:
+-      case PM_SUSPEND_PREPARE:
+               ttm_suspend_lock(&dev_priv->reservation_sem);
+ 
+-              /**
++              /*
+                * This empties VRAM and unbinds all GMR bindings.
+                * Buffer contents is moved to swappable memory.
+                */
+               vmw_execbuf_release_pinned_bo(dev_priv);
+               vmw_resource_evict_all(dev_priv);
++              vmw_release_device_early(dev_priv);
+               ttm_bo_swapout_all(&dev_priv->bdev);
+-
++              vmw_fence_fifo_down(dev_priv->fman);
+               break;
+       case PM_POST_HIBERNATION:
+-      case PM_POST_SUSPEND:
+       case PM_POST_RESTORE:
++              vmw_fence_fifo_up(dev_priv->fman);
+               ttm_suspend_unlock(&dev_priv->reservation_sem);
+ 
+               break;
+@@ -1276,20 +1316,13 @@ static int vmwgfx_pm_notifier(struct not
+       return 0;
+ }
+ 
+-/**
+- * These might not be needed with the virtual SVGA device.
+- */
+-
+ static int vmw_pci_suspend(struct pci_dev *pdev, pm_message_t state)
+ {
+       struct drm_device *dev = pci_get_drvdata(pdev);
+       struct vmw_private *dev_priv = vmw_priv(dev);
+ 
+-      if (dev_priv->num_3d_resources != 0) {
+-              DRM_INFO("Can't suspend or hibernate "
+-                       "while 3D resources are active.\n");
++      if (dev_priv->refuse_hibernation)
+               return -EBUSY;
+-      }
+ 
+       pci_save_state(pdev);
+       pci_disable_device(pdev);
+@@ -1321,56 +1354,62 @@ static int vmw_pm_resume(struct device *
+       return vmw_pci_resume(pdev);
+ }
+ 
+-static int vmw_pm_prepare(struct device *kdev)
++static int vmw_pm_freeze(struct device *kdev)
+ {
+       struct pci_dev *pdev = to_pci_dev(kdev);
+       struct drm_device *dev = pci_get_drvdata(pdev);
+       struct vmw_private *dev_priv = vmw_priv(dev);
+ 
+-      /**
+-       * Release 3d reference held by fbdev and potentially
+-       * stop fifo.
+-       */
+       dev_priv->suspended = true;
+       if (dev_priv->enable_fb)
+-                      vmw_3d_resource_dec(dev_priv, true);
+-
+-      if (dev_priv->num_3d_resources != 0) {
+-
+-              DRM_INFO("Can't suspend or hibernate "
+-                       "while 3D resources are active.\n");
++              vmw_fifo_resource_dec(dev_priv);
+ 
++      if (atomic_read(&dev_priv->num_fifo_resources) != 0) {
++              DRM_ERROR("Can't hibernate while 3D resources are active.\n");
+               if (dev_priv->enable_fb)
+-                      vmw_3d_resource_inc(dev_priv, true);
++                      vmw_fifo_resource_inc(dev_priv);
++              WARN_ON(vmw_request_device_late(dev_priv));
+               dev_priv->suspended = false;
+               return -EBUSY;
+       }
+ 
++      if (dev_priv->enable_fb)
++              __vmw_svga_disable(dev_priv);
++      
++      vmw_release_device_late(dev_priv);
++
+       return 0;
+ }
+ 
+-static void vmw_pm_complete(struct device *kdev)
++static int vmw_pm_restore(struct device *kdev)
+ {
+       struct pci_dev *pdev = to_pci_dev(kdev);
+       struct drm_device *dev = pci_get_drvdata(pdev);
+       struct vmw_private *dev_priv = vmw_priv(dev);
++      int ret;
+ 
+       vmw_write(dev_priv, SVGA_REG_ID, SVGA_ID_2);
+       (void) vmw_read(dev_priv, SVGA_REG_ID);
+ 
+-      /**
+-       * Reclaim 3d reference held by fbdev and potentially
+-       * start fifo.
+-       */
+       if (dev_priv->enable_fb)
+-                      vmw_3d_resource_inc(dev_priv, false);
++              vmw_fifo_resource_inc(dev_priv);
++
++      ret = vmw_request_device(dev_priv);
++      if (ret)
++              return ret;
++
++      if (dev_priv->enable_fb)
++              __vmw_svga_enable(dev_priv);
+ 
+       dev_priv->suspended = false;
++
++      return 0;
+ }
+ 
+ static const struct dev_pm_ops vmw_pm_ops = {
+-      .prepare = vmw_pm_prepare,
+-      .complete = vmw_pm_complete,
++      .freeze = vmw_pm_freeze,
++      .thaw = vmw_pm_restore,
++      .restore = vmw_pm_restore,
+       .suspend = vmw_pm_suspend,
+       .resume = vmw_pm_resume,
+ };
+--- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
++++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
+@@ -484,6 +484,7 @@ struct vmw_private {
+ 
+       bool stealth;
+       bool enable_fb;
++      spinlock_t svga_lock;
+ 
+       /**
+        * Master management.
+@@ -493,9 +494,10 @@ struct vmw_private {
+       struct vmw_master fbdev_master;
+       struct notifier_block pm_nb;
+       bool suspended;
++      bool refuse_hibernation;
+ 
+       struct mutex release_mutex;
+-      uint32_t num_3d_resources;
++      atomic_t num_fifo_resources;
+ 
+       /*
+        * Replace this with an rwsem as soon as we have down_xx_interruptible()
+@@ -587,8 +589,9 @@ static inline uint32_t vmw_read(struct v
+       return val;
+ }
+ 
+-int vmw_3d_resource_inc(struct vmw_private *dev_priv, bool unhide_svga);
+-void vmw_3d_resource_dec(struct vmw_private *dev_priv, bool hide_svga);
++extern void vmw_svga_enable(struct vmw_private *dev_priv);
++extern void vmw_svga_disable(struct vmw_private *dev_priv);
++
+ 
+ /**
+  * GMR utilities - vmwgfx_gmr.c
+@@ -1116,4 +1119,14 @@ static inline struct ttm_mem_global *vmw
+ {
+       return (struct ttm_mem_global *) dev_priv->mem_global_ref.object;
+ }
++
++static inline void vmw_fifo_resource_inc(struct vmw_private *dev_priv)
++{
++      atomic_inc(&dev_priv->num_fifo_resources);
++}
++
++static inline void vmw_fifo_resource_dec(struct vmw_private *dev_priv)
++{
++      atomic_dec(&dev_priv->num_fifo_resources);
++}
+ #endif
+--- a/drivers/gpu/drm/vmwgfx/vmwgfx_fb.c
++++ b/drivers/gpu/drm/vmwgfx/vmwgfx_fb.c
+@@ -596,7 +596,10 @@ int vmw_fb_off(struct vmw_private *vmw_p
+ 
+       info = vmw_priv->fb_info;
+       par = info->par;
++      if (!par->bo_ptr)
++              return 0;
+ 
++      vmw_kms_save_vga(vmw_priv);
+       spin_lock_irqsave(&par->dirty.lock, flags);
+       par->dirty.active = false;
+       spin_unlock_irqrestore(&par->dirty.lock, flags);
+@@ -648,6 +651,7 @@ int vmw_fb_on(struct vmw_private *vmw_pr
+       spin_lock_irqsave(&par->dirty.lock, flags);
+       par->dirty.active = true;
+       spin_unlock_irqrestore(&par->dirty.lock, flags);
++      vmw_kms_restore_vga(vmw_priv);
+ 
+ err_no_buffer:
+       vmw_fb_set_par(info);
+--- a/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c
++++ b/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c
+@@ -98,7 +98,6 @@ int vmw_fifo_init(struct vmw_private *de
+       __le32 __iomem *fifo_mem = dev_priv->mmio_virt;
+       uint32_t max;
+       uint32_t min;
+-      uint32_t dummy;
+ 
+       fifo->static_buffer_size = VMWGFX_FIFO_STATIC_SIZE;
+       fifo->static_buffer = vmalloc(fifo->static_buffer_size);
+@@ -112,10 +111,6 @@ int vmw_fifo_init(struct vmw_private *de
+       mutex_init(&fifo->fifo_mutex);
+       init_rwsem(&fifo->rwsem);
+ 
+-      /*
+-       * Allow mapping the first page read-only to user-space.
+-       */
+-
+       DRM_INFO("width %d\n", vmw_read(dev_priv, SVGA_REG_WIDTH));
+       DRM_INFO("height %d\n", vmw_read(dev_priv, SVGA_REG_HEIGHT));
+       DRM_INFO("bpp %d\n", vmw_read(dev_priv, SVGA_REG_BITS_PER_PIXEL));
+@@ -123,7 +118,9 @@ int vmw_fifo_init(struct vmw_private *de
+       dev_priv->enable_state = vmw_read(dev_priv, SVGA_REG_ENABLE);
+       dev_priv->config_done_state = vmw_read(dev_priv, SVGA_REG_CONFIG_DONE);
+       dev_priv->traces_state = vmw_read(dev_priv, SVGA_REG_TRACES);
+-      vmw_write(dev_priv, SVGA_REG_ENABLE, 1);
++
++      vmw_write(dev_priv, SVGA_REG_ENABLE, SVGA_REG_ENABLE_ENABLE_HIDE);
++      vmw_write(dev_priv, SVGA_REG_TRACES, 0);
+ 
+       min = 4;
+       if (dev_priv->capabilities & SVGA_CAP_EXTENDED_FIFO)
+@@ -155,7 +152,8 @@ int vmw_fifo_init(struct vmw_private *de
+       atomic_set(&dev_priv->marker_seq, dev_priv->last_read_seqno);
+       iowrite32(dev_priv->last_read_seqno, fifo_mem + SVGA_FIFO_FENCE);
+       vmw_marker_queue_init(&fifo->marker_queue);
+-      return vmw_fifo_send_fence(dev_priv, &dummy);
++
++      return 0;
+ }
+ 
+ void vmw_fifo_ping_host(struct vmw_private *dev_priv, uint32_t reason)
+--- a/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c
++++ b/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c
+@@ -280,6 +280,7 @@ static int vmw_ldu_crtc_set_config(struc
+       }
+ 
+       vmw_fb_off(dev_priv);
++      vmw_svga_enable(dev_priv);
+ 
+       crtc->primary->fb = fb;
+       encoder->crtc = crtc;
+--- a/drivers/gpu/drm/vmwgfx/vmwgfx_mob.c
++++ b/drivers/gpu/drm/vmwgfx/vmwgfx_mob.c
+@@ -574,7 +574,7 @@ void vmw_mob_unbind(struct vmw_private *
+               vmw_fence_single_bo(bo, NULL);
+               ttm_bo_unreserve(bo);
+       }
+-      vmw_3d_resource_dec(dev_priv, false);
++      vmw_fifo_resource_dec(dev_priv);
+ }
+ 
+ /*
+@@ -627,7 +627,7 @@ int vmw_mob_bind(struct vmw_private *dev
+               mob->pt_level += VMW_MOBFMT_PTDEPTH_1 - SVGA3D_MOBFMT_PTDEPTH_1;
+       }
+ 
+-      (void) vmw_3d_resource_inc(dev_priv, false);
++      vmw_fifo_resource_inc(dev_priv);
+ 
+       cmd = vmw_fifo_reserve(dev_priv, sizeof(*cmd));
+       if (unlikely(cmd == NULL)) {
+@@ -648,7 +648,7 @@ int vmw_mob_bind(struct vmw_private *dev
+       return 0;
+ 
+ out_no_cmd_space:
+-      vmw_3d_resource_dec(dev_priv, false);
++      vmw_fifo_resource_dec(dev_priv);
+       if (pt_set_up)
+               ttm_bo_unref(&mob->pt_bo);
+ 
+--- a/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c
++++ b/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c
+@@ -332,6 +332,7 @@ static int vmw_sou_crtc_set_config(struc
+       }
+ 
+       vmw_fb_off(dev_priv);
++      vmw_svga_enable(dev_priv);
+ 
+       if (mode->hdisplay != crtc->mode.hdisplay ||
+           mode->vdisplay != crtc->mode.vdisplay) {
+--- a/drivers/gpu/drm/vmwgfx/vmwgfx_shader.c
++++ b/drivers/gpu/drm/vmwgfx/vmwgfx_shader.c
+@@ -165,7 +165,7 @@ static int vmw_gb_shader_create(struct v
+       cmd->body.type = shader->type;
+       cmd->body.sizeInBytes = shader->size;
+       vmw_fifo_commit(dev_priv, sizeof(*cmd));
+-      (void) vmw_3d_resource_inc(dev_priv, false);
++      vmw_fifo_resource_inc(dev_priv);
+ 
+       return 0;
+ 
+@@ -275,7 +275,7 @@ static int vmw_gb_shader_destroy(struct
+       vmw_fifo_commit(dev_priv, sizeof(*cmd));
+       mutex_unlock(&dev_priv->binding_mutex);
+       vmw_resource_release_id(res);
+-      vmw_3d_resource_dec(dev_priv, false);
++      vmw_fifo_resource_dec(dev_priv);
+ 
+       return 0;
+ }
+--- a/drivers/gpu/drm/vmwgfx/vmwgfx_surface.c
++++ b/drivers/gpu/drm/vmwgfx/vmwgfx_surface.c
+@@ -340,7 +340,7 @@ static void vmw_hw_surface_destroy(struc
+               dev_priv->used_memory_size -= res->backup_size;
+               mutex_unlock(&dev_priv->cmdbuf_mutex);
+       }
+-      vmw_3d_resource_dec(dev_priv, false);
++      vmw_fifo_resource_dec(dev_priv);
+ }
+ 
+ /**
+@@ -576,14 +576,14 @@ static int vmw_surface_init(struct vmw_p
+ 
+       BUG_ON(res_free == NULL);
+       if (!dev_priv->has_mob)
+-              (void) vmw_3d_resource_inc(dev_priv, false);
++              vmw_fifo_resource_inc(dev_priv);
+       ret = vmw_resource_init(dev_priv, res, true, res_free,
+                               (dev_priv->has_mob) ? &vmw_gb_surface_func :
+                               &vmw_legacy_surface_func);
+ 
+       if (unlikely(ret != 0)) {
+               if (!dev_priv->has_mob)
+-                      vmw_3d_resource_dec(dev_priv, false);
++                      vmw_fifo_resource_dec(dev_priv);
+               res_free(res);
+               return ret;
+       }
+@@ -1028,7 +1028,7 @@ static int vmw_gb_surface_create(struct
+       if (likely(res->id != -1))
+               return 0;
+ 
+-      (void) vmw_3d_resource_inc(dev_priv, false);
++      vmw_fifo_resource_inc(dev_priv);
+       ret = vmw_resource_alloc_id(res);
+       if (unlikely(ret != 0)) {
+               DRM_ERROR("Failed to allocate a surface id.\n");
+@@ -1068,7 +1068,7 @@ static int vmw_gb_surface_create(struct
+ out_no_fifo:
+       vmw_resource_release_id(res);
+ out_no_id:
+-      vmw_3d_resource_dec(dev_priv, false);
++      vmw_fifo_resource_dec(dev_priv);
+       return ret;
+ }
+ 
+@@ -1213,7 +1213,7 @@ static int vmw_gb_surface_destroy(struct
+       vmw_fifo_commit(dev_priv, sizeof(*cmd));
+       mutex_unlock(&dev_priv->binding_mutex);
+       vmw_resource_release_id(res);
+-      vmw_3d_resource_dec(dev_priv, false);
++      vmw_fifo_resource_dec(dev_priv);
+ 
+       return 0;
+ }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/patches.drivers/0002-drm-vmwgfx-Allow-dropped-masters-render-node-like-ac.patch
 
new/patches.drivers/0002-drm-vmwgfx-Allow-dropped-masters-render-node-like-ac.patch
--- 
old/patches.drivers/0002-drm-vmwgfx-Allow-dropped-masters-render-node-like-ac.patch
 1970-01-01 01:00:00.000000000 +0100
+++ 
new/patches.drivers/0002-drm-vmwgfx-Allow-dropped-masters-render-node-like-ac.patch
 2015-09-25 10:21:54.000000000 +0200
@@ -0,0 +1,57 @@
+From aa3469ce7afd86a670d22375a64f1b5a06707725 Mon Sep 17 00:00:00 2001
+From: Thomas Hellstrom <[email protected]>
+Date: Thu, 27 Aug 2015 10:06:24 -0700
+Subject: [PATCH] drm/vmwgfx: Allow dropped masters render-node like access on 
legacy nodes v2
+Git-commit: aa3469ce7afd86a670d22375a64f1b5a06707725
+Patch-mainline: v4.3-rc1
+References: boo#934266
+
+Applications like gnome-shell may try to render after dropping master
+privileges. Since the driver should now be safe against this scenario,
+allow those applications to use their legacy node like a render node.
+
+V2: Add missing return statement.
+
+Signed-off-by: Thomas Hellstrom <[email protected]>
+Reviewed-by: Sinclair Yeh <[email protected]>
+Acked-by: Takashi Iwai <[email protected]>
+
+---
+ drivers/gpu/drm/vmwgfx/vmwgfx_drv.c     |    7 ++++++-
+ drivers/gpu/drm/vmwgfx/vmwgfx_surface.c |    6 ++++++
+ 2 files changed, 12 insertions(+), 1 deletion(-)
+
+--- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
++++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
+@@ -993,10 +993,15 @@ static struct vmw_master *vmw_master_che
+       }
+ 
+       /*
+-       * Check if we were previously master, but now dropped.
++       * Check if we were previously master, but now dropped. In that
++       * case, allow at least render node functionality.
+        */
+       if (vmw_fp->locked_master) {
+               mutex_unlock(&dev->master_mutex);
++
++              if (flags & DRM_RENDER_ALLOW)
++                      return NULL;
++
+               DRM_ERROR("Dropped master trying to access ioctl that "
+                         "requires authentication.\n");
+               return ERR_PTR(-EACCES);
+--- a/drivers/gpu/drm/vmwgfx/vmwgfx_surface.c
++++ b/drivers/gpu/drm/vmwgfx/vmwgfx_surface.c
+@@ -906,6 +906,12 @@ vmw_surface_handle_reference(struct vmw_
+                                 "surface reference.\n");
+                       return -EACCES;
+               }
++              if (ACCESS_ONCE(vmw_fpriv(file_priv)->locked_master)) {
++                      DRM_ERROR("Locked master refused legacy "
++                                "surface reference.\n");
++                      return -EACCES;
++              }
++
+               handle = u_handle;
+       }
+ 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/patches.drivers/ALSA-hda-Disable-power_save_node-for-Thinkpads 
new/patches.drivers/ALSA-hda-Disable-power_save_node-for-Thinkpads
--- old/patches.drivers/ALSA-hda-Disable-power_save_node-for-Thinkpads  
1970-01-01 01:00:00.000000000 +0100
+++ new/patches.drivers/ALSA-hda-Disable-power_save_node-for-Thinkpads  
2015-09-25 10:21:54.000000000 +0200
@@ -0,0 +1,82 @@
+From 7f57d803ee03730d570dc59a9e3e4842b58dd5cc Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <[email protected]>
+Date: Thu, 24 Sep 2015 17:36:51 +0200
+Subject: [PATCH] ALSA: hda - Disable power_save_node for Thinkpads
+Git-commit: 7f57d803ee03730d570dc59a9e3e4842b58dd5cc
+Patch-mainline: 4.3-rc3
+References: bsc#943982
+
+Lenovo Thinkpads with recent Realtek codecs seem suffering from click
+noises at power transition since the introduction of widget power
+saving in 4.1 kernel.  Although this might be solved by some delays in
+appropriate points, as a quick workaround, just disable the
+power_save_node feature for now.  The gain it gives is relatively
+small, and this makes the situation back to pre 4.1 time.
+
+This patch ended up with a bit more code changes than usual because
+the existing fixup for Thinkpads is highly chained.  Instead of adding
+yet another chain, combine a few of them into a single fixup entry, as
+a gratis cleanup.
+
+Bugzilla: https://bugzilla.suse.com/show_bug.cgi?id=943982
+Cc: <[email protected]> # v4.1+
+Signed-off-by: Takashi Iwai <[email protected]>
+
+---
+ sound/pci/hda/patch_realtek.c |   31 +++++++++++++++++++------------
+ 1 file changed, 19 insertions(+), 12 deletions(-)
+
+--- a/sound/pci/hda/patch_realtek.c
++++ b/sound/pci/hda/patch_realtek.c
+@@ -4188,6 +4188,24 @@ static void alc_fixup_disable_aamix(stru
+       }
+ }
+ 
++/* fixup for Thinkpad docks: add dock pins, avoid HP parser fixup */
++static void alc_fixup_tpt440_dock(struct hda_codec *codec,
++                                const struct hda_fixup *fix, int action)
++{
++      static const struct hda_pintbl pincfgs[] = {
++              { 0x16, 0x21211010 }, /* dock headphone */
++              { 0x19, 0x21a11010 }, /* dock mic */
++              { }
++      };
++      struct alc_spec *spec = codec->spec;
++
++      if (action == HDA_FIXUP_ACT_PRE_PROBE) {
++              spec->parse_flags = HDA_PINCFG_NO_HP_FIXUP;
++              codec->power_save_node = 0; /* avoid click noises */
++              snd_hda_apply_pincfgs(codec, pincfgs);
++      }
++}
++
+ static void alc_shutup_dell_xps13(struct hda_codec *codec)
+ {
+       struct alc_spec *spec = codec->spec;
+@@ -4562,7 +4580,6 @@ enum {
+       ALC255_FIXUP_HEADSET_MODE_NO_HP_MIC,
+       ALC293_FIXUP_DELL1_MIC_NO_PRESENCE,
+       ALC292_FIXUP_TPT440_DOCK,
+-      ALC292_FIXUP_TPT440_DOCK2,
+       ALC283_FIXUP_BXBT2807_MIC,
+       ALC255_FIXUP_DELL_WMI_MIC_MUTE_LED,
+       ALC282_FIXUP_ASPIRE_V5_PINS,
+@@ -5029,17 +5046,7 @@ static const struct hda_fixup alc269_fix
+       },
+       [ALC292_FIXUP_TPT440_DOCK] = {
+               .type = HDA_FIXUP_FUNC,
+-              .v.func = alc269_fixup_pincfg_no_hp_to_lineout,
+-              .chained = true,
+-              .chain_id = ALC292_FIXUP_TPT440_DOCK2
+-      },
+-      [ALC292_FIXUP_TPT440_DOCK2] = {
+-              .type = HDA_FIXUP_PINS,
+-              .v.pins = (const struct hda_pintbl[]) {
+-                      { 0x16, 0x21211010 }, /* dock headphone */
+-                      { 0x19, 0x21a11010 }, /* dock mic */
+-                      { }
+-              },
++              .v.func = alc_fixup_tpt440_dock,
+               .chained = true,
+               .chain_id = ALC269_FIXUP_LIMIT_INT_MIC_BOOST
+       },
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/patches.drivers/bcache-fix-writeback-thread-incomplete-stripes-starvation.patch
 
new/patches.drivers/bcache-fix-writeback-thread-incomplete-stripes-starvation.patch
--- 
old/patches.drivers/bcache-fix-writeback-thread-incomplete-stripes-starvation.patch
 1970-01-01 01:00:00.000000000 +0100
+++ 
new/patches.drivers/bcache-fix-writeback-thread-incomplete-stripes-starvation.patch
 2015-09-25 10:21:54.000000000 +0200
@@ -0,0 +1,51 @@
+From: Vojtech Pavlik <[email protected]>
+To: Kent Overstreet <[email protected]>
+Cc: [email protected], [email protected], Kent 
Overstreet <[email protected]>, Emmanuel Florac <[email protected]>, Jiri 
Kosina <[email protected]>, Jens Axboe <[email protected]>
+Subject: [PATCH] bcache: Fix writeback_thread never writing back incomplete 
stripes.
+Patch-mainline: not yet, submitted
+
+Fix writeback_thread never finishing writing back all dirty data in bcache when
+partial_stripes_expensive is set, and spinning, consuming 100% of CPU instead.
+
+Signed-off-by: Vojtech Pavlik <[email protected]>
+---
+
+This is a fix for the current upstream bcache, not the devel branch.
+
+If partial_stripes_expensive is set for a cache set, then writeback_thread
+always attempts to write full stripes out back to the backing device first.
+However, since it does that based on a bitmap and not a simple linear
+search, like the rest of the code of refill_dirty(), it changes the
+last_scanned pointer so that never points to 'end'. refill_dirty() then
+never tries to scan from 'start', resulting in the writeback_thread
+looping, consuming 100% of CPU, but never making progress in writing out
+the incomplete dirty stripes in the cache.
+
+Scanning the tree after not finding enough full stripes fixes the issue.
+
+Incomplete dirty stripes are written to the backing device, the device
+eventually reaches a clean state if there is nothing dirtying data and
+writeback_thread sleeps. This also fixes the problem of the cache device
+not being possible to detach in the partial_stripes_expensive scenario.
+
+It may be more efficient to separate the last_scanned field for normal and
+stripe scans instead.
+
+ drivers/md/bcache/writeback.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/drivers/md/bcache/writeback.c b/drivers/md/bcache/writeback.c
+index f1986bc..6f8b81d 100644
+--- a/drivers/md/bcache/writeback.c
++++ b/drivers/md/bcache/writeback.c
+@@ -382,6 +382,7 @@ static bool refill_dirty(struct cached_dev *dc)
+               refill_full_stripes(dc);
+               if (array_freelist_empty(&buf->freelist))
+                       return false;
++              bch_refill_keybuf(dc->disk.c, buf, &end, dirty_pred);
+       }
+ 
+       if (bkey_cmp(&buf->last_scanned, &end) >= 0) {
+-- 
+2.1.4
+

++++++ patches.fixes.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/patches.fixes/0001-NFSv4-When-returning-a-delegation-don-t-reclaim-an-i.patch
 
new/patches.fixes/0001-NFSv4-When-returning-a-delegation-don-t-reclaim-an-i.patch
--- 
old/patches.fixes/0001-NFSv4-When-returning-a-delegation-don-t-reclaim-an-i.patch
   2015-08-28 12:59:34.000000000 +0200
+++ 
new/patches.fixes/0001-NFSv4-When-returning-a-delegation-don-t-reclaim-an-i.patch
   1970-01-01 01:00:00.000000000 +0100
@@ -1,46 +0,0 @@
-From: NeilBrown <[email protected]>
-Date: Wed, 24 Jun 2015 12:56:20 +1000
-Subject: [PATCH] NFSv4: When returning a delegation, don't reclaim an
- incompatible open mode.
-Patch-mainline: not yet
-References: bnc#934202
-
-It is possible to have an active open with one mode, and a delegation
-for the same file with a different mode.
-In particular, a WR_ONLY open and an RD_ONLY delegation.
-
-When returning the delegation, we currently try to claim opens for
-every open type (n_rdwr, n_rdonly, n_wronly).  As there is no harm
-in claiming an open for a mode that we already have, this is often
-simplest.
-
-However if the delegation only provides a subset of the modes that we
-currently have open, this will produce an error from the server. e.g.
-
-NFS: nfs4_handle_delegation_recall_error: unhandled error -13
-
-So when claiming open modes prior to returning a delegation, skip the
-open request if the mode is not covered by the delegation - the open_stateid
-must already cover that mode, so there is nothing to do.
-
-Signed-off-by: NeilBrown <[email protected]>
----
- fs/nfs/nfs4proc.c | 7 +++++++
- 1 file changed, 7 insertions(+)
-
---- a/fs/nfs/nfs4proc.c
-+++ b/fs/nfs/nfs4proc.c
-@@ -1553,6 +1553,13 @@ static int nfs4_open_recover_helper(stru
-       struct nfs4_state *newstate;
-       int ret;
- 
-+      if ((opendata->o_arg.claim == NFS4_OPEN_CLAIM_DELEGATE_CUR ||
-+           opendata->o_arg.claim == NFS4_OPEN_CLAIM_DELEG_CUR_FH) &&
-+          (opendata->o_arg.u.delegation_type & fmode) != fmode)
-+              /* This mode can't have been delegated, so we must have
-+               * a valid open_stateid to cover it - not need to reclaim.
-+               */
-+              return 0;
-       opendata->o_arg.open_flags = 0;
-       opendata->o_arg.fmode = fmode;
-       opendata->o_arg.share_access = nfs4_map_atomic_open_share(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/patches.fixes/0001-NFSv4-do-not-accept-an-incompatible-delegation.patch 
new/patches.fixes/0001-NFSv4-do-not-accept-an-incompatible-delegation.patch
--- old/patches.fixes/0001-NFSv4-do-not-accept-an-incompatible-delegation.patch 
1970-01-01 01:00:00.000000000 +0100
+++ new/patches.fixes/0001-NFSv4-do-not-accept-an-incompatible-delegation.patch 
2015-09-14 17:37:27.000000000 +0200
@@ -0,0 +1,56 @@
+From: Neil Brown <[email protected]>
+Date: Mon, 22 Jun 2015 15:13:21 +1000
+Subject: [PATCH] NFSv4 - do not accept an incompatible delegation.
+References: bsc#934202
+Patch-mainline: not yet
+
+When opening a file, nfs _nfs4_do_open() will return any
+incompatible delegation, meaning if the delegation held for
+that file does not give all the permissions required, it is
+returned.
+This is because various places assume that the current delegation
+provides all necessary access.
+
+However when a delegation is received, it is not validated in the
+same way so it is possible to, for example, hold a read-only
+delegation while the file is open write-only.
+When that delegation is recalled, the NFS client will try to
+reclaim the write-only open, and that will fail.
+
+So when considering a new delegation, reject it if it is incompatible
+with any open.
+
+Signed-off-by: NeilBrown <[email protected]>
+URL: https://bugzilla.suse.com/show_bug.cgi?id=934202
+---
+ fs/nfs/delegation.c | 19 +++++++++++++++++++
+ 1 file changed, 19 insertions(+)
+
+--- a/fs/nfs/delegation.c
++++ b/fs/nfs/delegation.c
+@@ -377,6 +377,25 @@ int nfs_inode_set_delegation(struct inod
+                               old_delegation, clp);
+               if (freeme == NULL)
+                       goto out;
++      } else {
++              /* Don't accept an incompatible delegation */
++              int incompatible = 0;
++              struct nfs_inode *nfsi = NFS_I(inode);
++              struct nfs4_state *state;
++
++              spin_lock(&inode->i_lock);
++              list_for_each_entry(state, &nfsi->open_states, inode_states) {
++                      if ((state->state & delegation->type) != state->state) {
++                              incompatible = 1;
++                              break;
++                      }
++              }
++              spin_unlock(&inode->i_lock);
++              if (incompatible) {
++                      freeme = delegation;
++                      delegation = NULL;
++                      goto out;
++              }
+       }
+       list_add_tail_rcu(&delegation->super_list, &server->delegations);
+       rcu_assign_pointer(nfsi->delegation, delegation);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/patches.fixes/btrfs-fix-stale-dir-entries-after-unlink-inode-eviction-and-fsync
 
new/patches.fixes/btrfs-fix-stale-dir-entries-after-unlink-inode-eviction-and-fsync
--- 
old/patches.fixes/btrfs-fix-stale-dir-entries-after-unlink-inode-eviction-and-fsync
 2015-08-28 12:59:34.000000000 +0200
+++ 
new/patches.fixes/btrfs-fix-stale-dir-entries-after-unlink-inode-eviction-and-fsync
 2015-09-14 17:37:27.000000000 +0200
@@ -104,7 +104,7 @@
   generic/098 4s ... - output mismatch (see 
/home/fdmanana/git/hub/xfstests/results//generic/098.out.bad)
 #    --- tests/generic/098.out 2015-07-23 18:01:12.616175932 +0100
 #    +++ /home/fdmanana/git/hub/xfstests/results//generic/098.out.bad  
2015-07-23 18:04:58.924138308 +0100
-    @@ -1,3 +1,6 @@
+#    @@ -1,3 +1,6 @@
      QA output created by 098
      Entries in testdir:
     +bar
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/patches.fixes/drm-i915-Ensure-cache-flushes-prior-to-doing-CS-flip-take-two.patch
 
new/patches.fixes/drm-i915-Ensure-cache-flushes-prior-to-doing-CS-flip-take-two.patch
--- 
old/patches.fixes/drm-i915-Ensure-cache-flushes-prior-to-doing-CS-flip-take-two.patch
       2015-08-28 12:59:34.000000000 +0200
+++ 
new/patches.fixes/drm-i915-Ensure-cache-flushes-prior-to-doing-CS-flip-take-two.patch
       1970-01-01 01:00:00.000000000 +0100
@@ -1,35 +0,0 @@
-From: Chris Wilson <[email protected]>
-Date: Mon, 27 Apr 2015 13:41:15 +0100
-Subject: drm/i915: Ensure cache flushes prior to doing CS flips -- take two
-Patch-mainline: not yet
-References: bnc#931300
-
-Synchronising to an object active on the same ring is a no-op, for the
-benefit of execbuffer scheduler. However, for CS flips this means that
-we can forgo checking whether the last write request of the object is
-actually queued and more importantly whether the cache flush for the
-write was emitted.
-
-Signed-off-by: Chris Wilson <[email protected]>
-Signed-off-by: Daniel Vetter <[email protected]>
-Signed-off-by: Jiri Slaby <[email protected]>
----
- drivers/gpu/drm/i915/intel_display.c |    7 +++++++
- 1 file changed, 7 insertions(+)
-
---- a/drivers/gpu/drm/i915/intel_display.c
-+++ b/drivers/gpu/drm/i915/intel_display.c
-@@ -10022,6 +10022,13 @@ static int intel_queue_mmio_flip(struct
-                                uint32_t flags)
- {
-       struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
-+      int ret;
-+
-+      if (obj->last_write_req) {
-+              ret = i915_gem_check_olr(obj->last_write_req);
-+              if (ret)
-+                      return ret;
-+      }
- 
-       i915_gem_request_assign(&intel_crtc->mmio_flip.req,
-                               obj->last_write_req);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/patches.fixes/drm-i915-Ensure-cache-flushes-prior-to-doing-CS-flip.patch 
new/patches.fixes/drm-i915-Ensure-cache-flushes-prior-to-doing-CS-flip.patch
--- 
old/patches.fixes/drm-i915-Ensure-cache-flushes-prior-to-doing-CS-flip.patch    
    2015-08-28 12:59:34.000000000 +0200
+++ 
new/patches.fixes/drm-i915-Ensure-cache-flushes-prior-to-doing-CS-flip.patch    
    1970-01-01 01:00:00.000000000 +0100
@@ -1,40 +0,0 @@
-From: Chris Wilson <[email protected]>
-Date: Mon, 27 Apr 2015 13:41:15 +0100
-Subject: drm/i915: Ensure cache flushes prior to doing CS flips
-Patch-mainline: 4.2-rc1
-Git-commit: d94b5030d26b4f45510a092262bc2b542a00bd7c
-References: bnc#931300
-
-Synchronising to an object active on the same ring is a no-op, for the
-benefit of execbuffer scheduler. However, for CS flips this means that
-we can forgo checking whether the last write request of the object is
-actually queued and more importantly whether the cache flush for the
-write was emitted.
-
-Signed-off-by: Chris Wilson <[email protected]>
-Signed-off-by: Daniel Vetter <[email protected]>
-Signed-off-by: Jiri Slaby <[email protected]>
----
- drivers/gpu/drm/i915/intel_display.c | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/drivers/gpu/drm/i915/intel_display.c 
b/drivers/gpu/drm/i915/intel_display.c
-index c890e03939fa..3c8801cecd3f 100644
---- a/drivers/gpu/drm/i915/intel_display.c
-+++ b/drivers/gpu/drm/i915/intel_display.c
-@@ -11040,6 +11040,12 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc,
-               i915_gem_request_assign(&work->flip_queued_req,
-                                       obj->last_write_req);
-       } else {
-+              if (obj->last_write_req) {
-+                      ret = i915_gem_check_olr(obj->last_write_req);
-+                      if (ret)
-+                              goto cleanup_unpin;
-+              }
-+
-               ret = dev_priv->display.queue_flip(dev, crtc, fb, obj, ring,
-                                                  page_flip_flags);
-               if (ret)
--- 
-2.4.3
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/patches.fixes/leds-lp55xx-Correct-Kconfig-dependency-for-f-w-user- 
new/patches.fixes/leds-lp55xx-Correct-Kconfig-dependency-for-f-w-user-
--- old/patches.fixes/leds-lp55xx-Correct-Kconfig-dependency-for-f-w-user-      
1970-01-01 01:00:00.000000000 +0100
+++ new/patches.fixes/leds-lp55xx-Correct-Kconfig-dependency-for-f-w-user-      
2015-09-14 17:37:27.000000000 +0200
@@ -0,0 +1,38 @@
+From: Takashi Iwai <[email protected]>
+Date: Mon, 7 Sep 2015 14:09:22 +0200
+Subject: [PATCH] leds:lp55xx: Correct Kconfig dependency for f/w user helper
+Patch-mainline: Submitted, Mon, 7 Sep 2015, LKML
+Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git
+References: boo#944661
+
+The commit [b67893206fc0: leds:lp55xx: fix firmware loading error]
+tries to address the firmware file handling with user helper, but it
+sets a wrong Kconfig CONFIG_FW_LOADER_USER_HELPER_FALLBACK.  Since the
+wrong option was enabled, the system got a regression -- it suffers
+from the unexpected long delays for non-present firmware files.
+
+This patch corrects the Kconfig dependency to the right one,
+CONFIG_FW_LOADER_USER_HELPER.  This doesn't change the fallback
+behavior but only enables UMH when needed.
+
+Bugzilla: https://bugzilla.opensuse.org/show_bug.cgi?id=944661
+Fixes: b67893206fc0 ('leds:lp55xx: fix firmware loading error')
+Cc: <[email protected]> # v4.2+
+Signed-off-by: Takashi Iwai <[email protected]>
+Acked-by: Takashi Iwai <[email protected]>
+
+---
+ drivers/leds/Kconfig |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/leds/Kconfig
++++ b/drivers/leds/Kconfig
+@@ -229,7 +229,7 @@ config LEDS_LP55XX_COMMON
+       tristate "Common Driver for TI/National LP5521/5523/55231/5562/8501"
+       depends on LEDS_LP5521 || LEDS_LP5523 || LEDS_LP5562 || LEDS_LP8501
+       select FW_LOADER
+-      select FW_LOADER_USER_HELPER_FALLBACK
++      select FW_LOADER_USER_HELPER
+       help
+         This option supports common operations for LP5521/5523/55231/5562/8501
+         devices.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/patches.fixes/mmc-sdhci-fix-dma-memory-leak-in-sdhci_pre_req.patch 
new/patches.fixes/mmc-sdhci-fix-dma-memory-leak-in-sdhci_pre_req.patch
--- old/patches.fixes/mmc-sdhci-fix-dma-memory-leak-in-sdhci_pre_req.patch      
2015-08-28 12:59:34.000000000 +0200
+++ new/patches.fixes/mmc-sdhci-fix-dma-memory-leak-in-sdhci_pre_req.patch      
2015-09-14 17:37:27.000000000 +0200
@@ -1,9 +1,8 @@
 From: Haibo Chen <[email protected]>
 Date: Tue, 25 Aug 2015 10:02:11 +0800
 Subject: mmc: sdhci: fix dma memory leak in sdhci_pre_req()
-Patch-mainline: Queued in subsystem maintainer repository
+Patch-mainline: v4.3-rc1
 Git-commit: d31911b9374a76560d2c8ea4aa6ce5781621e81d
-Git-repo: git://git.linaro.org/people/ulf.hansson/mmc.git#next
 References: bnc#934531
 
 Currently one mrq->data maybe execute dma_map_sg() twice
@@ -19,24 +18,22 @@
 This patch use another method to map the dma memory for the mrq->data
 which can fix this dma memory leak issue.
 
-[js] add sg_count to mmc_data as happenned in 208489032bdd8d (mmc:
-     mediatek: Add Mediatek MMC driver).
-
 Fixes: 348487cb28e6 ("mmc: sdhci: use pipeline mmc requests to improve 
performance")
 Reported-and-tested-by: Jiri Slaby <[email protected]>
 Signed-off-by: Haibo Chen <[email protected]>
 Signed-off-by: Ulf Hansson <[email protected]>
 Signed-off-by: Jiri Slaby <[email protected]>
 ---
- drivers/mmc/host/sdhci.c |   67 
+++++++++++++++++------------------------------
- drivers/mmc/host/sdhci.h |    8 ++---
- include/linux/mmc/core.h |    1 
- 3 files changed, 30 insertions(+), 46 deletions(-)
+ drivers/mmc/host/sdhci.c | 67 ++++++++++++++++++------------------------------
+ drivers/mmc/host/sdhci.h |  8 +++---
+ 2 files changed, 29 insertions(+), 46 deletions(-)
 
+diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
+index 0f1a8876e3b1..31678b55b5ec 100644
 --- a/drivers/mmc/host/sdhci.c
 +++ b/drivers/mmc/host/sdhci.c
-@@ -55,8 +55,7 @@ static int sdhci_execute_tuning(struct m
- static void sdhci_tuning_timer(unsigned long data);
+@@ -54,8 +54,7 @@ static void sdhci_finish_command(struct sdhci_host *);
+ static int sdhci_execute_tuning(struct mmc_host *mmc, u32 opcode);
  static void sdhci_enable_preset_value(struct sdhci_host *host, bool enable);
  static int sdhci_pre_dma_transfer(struct sdhci_host *host,
 -                                      struct mmc_data *data,
@@ -45,7 +42,7 @@
  static int sdhci_do_get_cd(struct sdhci_host *host);
  
  #ifdef CONFIG_PM
-@@ -510,7 +509,7 @@ static int sdhci_adma_table_pre(struct s
+@@ -495,7 +494,7 @@ static int sdhci_adma_table_pre(struct sdhci_host *host,
                goto fail;
        BUG_ON(host->align_addr & host->align_mask);
  
@@ -54,7 +51,7 @@
        if (host->sg_count < 0)
                goto unmap_align;
  
-@@ -649,9 +648,11 @@ static void sdhci_adma_table_post(struct
+@@ -634,9 +633,11 @@ static void sdhci_adma_table_post(struct sdhci_host *host,
                }
        }
  
@@ -67,7 +64,7 @@
  }
  
  static u8 sdhci_calc_timeout(struct sdhci_host *host, struct mmc_command *cmd)
-@@ -847,7 +848,7 @@ static void sdhci_prepare_data(struct sd
+@@ -832,7 +833,7 @@ static void sdhci_prepare_data(struct sdhci_host *host, 
struct mmc_command *cmd)
                } else {
                        int sg_cnt;
  
@@ -76,7 +73,7 @@
                        if (sg_cnt <= 0) {
                                /*
                                 * This only happens when someone fed
-@@ -963,11 +964,13 @@ static void sdhci_finish_data(struct sdh
+@@ -948,11 +949,13 @@ static void sdhci_finish_data(struct sdhci_host *host)
                if (host->flags & SDHCI_USE_ADMA)
                        sdhci_adma_table_post(host, data);
                else {
@@ -91,7 +88,7 @@
                }
        }
  
-@@ -2129,49 +2132,36 @@ static void sdhci_post_req(struct mmc_ho
+@@ -2116,49 +2119,36 @@ static void sdhci_post_req(struct mmc_host *mmc, 
struct mmc_request *mrq,
        struct mmc_data *data = mrq->data;
  
        if (host->flags & SDHCI_REQ_USE_DMA) {
@@ -155,7 +152,7 @@
  
        return sg_count;
  }
-@@ -2181,16 +2171,10 @@ static void sdhci_pre_req(struct mmc_hos
+@@ -2168,16 +2158,10 @@ static void sdhci_pre_req(struct mmc_host *mmc, struct 
mmc_request *mrq,
  {
        struct sdhci_host *host = mmc_priv(mmc);
  
@@ -174,7 +171,7 @@
  }
  
  static void sdhci_card_event(struct mmc_host *mmc)
-@@ -3088,7 +3072,6 @@ int sdhci_add_host(struct sdhci_host *ho
+@@ -3049,7 +3033,6 @@ int sdhci_add_host(struct sdhci_host *host)
                host->max_clk = host->ops->get_max_clock(host);
        }
  
@@ -182,6 +179,8 @@
        /*
         * In case of Host Controller v3.00, find out whether clock
         * multiplier is supported.
+diff --git a/drivers/mmc/host/sdhci.h b/drivers/mmc/host/sdhci.h
+index 67046ca0c1f0..7c02ff46c8ac 100644
 --- a/drivers/mmc/host/sdhci.h
 +++ b/drivers/mmc/host/sdhci.h
 @@ -309,9 +309,10 @@ struct sdhci_adma2_64_desc {
@@ -198,21 +197,14 @@
  };
  
  struct sdhci_host {
-@@ -506,7 +507,6 @@ struct sdhci_host {
+@@ -505,7 +506,6 @@ struct sdhci_host {
+       unsigned int            tuning_mode;    /* Re-tuning mode supported by 
host */
  #define SDHCI_TUNING_MODE_1   0
-       struct timer_list       tuning_timer;   /* Timer for tuning */
  
 -      struct sdhci_host_next  next_data;
        unsigned long private[0] ____cacheline_aligned;
  };
  
---- a/include/linux/mmc/core.h
-+++ b/include/linux/mmc/core.h
-@@ -121,6 +121,7 @@ struct mmc_data {
-       struct mmc_request      *mrq;           /* associated request */
- 
-       unsigned int            sg_len;         /* size of scatter list */
-+      int                     sg_count;       /* mapped sg entries */
-       struct scatterlist      *sg;            /* I/O scatter list */
-       s32                     host_cookie;    /* host private data */
- };
+-- 
+2.5.0
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/patches.fixes/workqueue-Make-flush_workqueue-available-again-to-no.patch 
new/patches.fixes/workqueue-Make-flush_workqueue-available-again-to-no.patch
--- 
old/patches.fixes/workqueue-Make-flush_workqueue-available-again-to-no.patch    
    1970-01-01 01:00:00.000000000 +0100
+++ 
new/patches.fixes/workqueue-Make-flush_workqueue-available-again-to-no.patch    
    2015-09-14 17:37:27.000000000 +0200
@@ -0,0 +1,34 @@
+From: Tim Gardner <[email protected]>
+Date: Tue, 4 Aug 2015 11:26:04 -0600
+Subject: workqueue: Make flush_workqueue() available again to non GPL modules
+Patch-mainline: v4.3-rc1
+Git-commit: 1dadafa86a779884f14a6e7a3ddde1a57b0a0a65
+
+Commit 37b1ef31a568fc02e53587620226e5f3c66454c8 ("workqueue: move
+flush_scheduled_work() to workqueue.h") moved the exported non GPL
+flush_scheduled_work() from a function to an inline wrapper.
+Unfortunately, it directly calls flush_workqueue() which is a GPL function.
+This has the effect of changing the licensing requirement for this function
+and makes it unavailable to non GPL modules.
+
+See commit ad7b1f841f8a54c6d61ff181451f55b68175e15a ("workqueue: Make
+schedule_work() available again to non GPL modules") for precedent.
+
+Signed-off-by: Tim Gardner <[email protected]>
+Signed-off-by: Tejun Heo <[email protected]>
+Signed-off-by: Jiri Slaby <[email protected]>
+---
+ kernel/workqueue.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/kernel/workqueue.c
++++ b/kernel/workqueue.c
+@@ -2614,7 +2614,7 @@ void flush_workqueue(struct workqueue_st
+ out_unlock:
+       mutex_unlock(&wq->mutex);
+ }
+-EXPORT_SYMBOL_GPL(flush_workqueue);
++EXPORT_SYMBOL(flush_workqueue);
+ 
+ /**
+  * drain_workqueue - drain a workqueue

++++++ patches.kernel.org.tar.bz2 ++++++
++++ 33148 lines of diff (skipped)

++++++ patches.suse.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/patches.suse/8250-sysrq-ctrl_o.patch 
new/patches.suse/8250-sysrq-ctrl_o.patch
--- old/patches.suse/8250-sysrq-ctrl_o.patch    2015-08-28 11:17:01.000000000 
+0200
+++ new/patches.suse/8250-sysrq-ctrl_o.patch    2015-09-22 17:17:36.000000000 
+0200
@@ -113,14 +113,14 @@
 --- a/drivers/tty/serial/8250/8250_core.c
 +++ b/drivers/tty/serial/8250/8250_core.c
 @@ -102,6 +102,8 @@ static unsigned int skip_txen_test; /* f
- #define CONFIG_SERIAL_MANY_PORTS 1
- #endif
+ #define BOTH_EMPTY    (UART_LSR_TEMT | UART_LSR_THRE)
+ 
  
 +#define arch_8250_sysrq_via_ctrl_o(a,b) 0
 +
+ #include <asm/serial.h>
  /*
-  * HUB6 is always on.  This will be removed once the header
-  * files have been cleaned.
+  * SERIAL_PORT_DFNS tells us about built-in ports that have no
 @@ -1423,7 +1425,11 @@ receive_chars(struct uart_8250_port *up,
  
        do {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/patches.suse/btrfs-fix-hang-during-inode-eviction-due-to-concurre.patch 
new/patches.suse/btrfs-fix-hang-during-inode-eviction-due-to-concurre.patch
--- old/patches.suse/btrfs-fix-hang-during-inode-eviction-due-to-concurre.patch 
2015-08-28 11:17:01.000000000 +0200
+++ new/patches.suse/btrfs-fix-hang-during-inode-eviction-due-to-concurre.patch 
1970-01-01 01:00:00.000000000 +0100
@@ -1,164 +0,0 @@
-From: Filipe Manana <[email protected]>
-Date: Tue, 26 May 2015 00:55:42 +0100
-Patch-mainline: 4.2-rc1
-Git-commit: 6ca0709756710c47ec604dd08b9fc45929d36390
-References: bnc#937403
-Subject: [PATCH] Btrfs: fix hang during inode eviction due to concurrent
- readahead
-
-Zygo Blaxell and other users have reported occasional hangs while an
-inode is being evicted, leading to traces like the following:
-
-[ 5281.972322] INFO: task rm:20488 blocked for more than 120 seconds.
-[ 5281.973836]       Not tainted 4.0.0-rc5-btrfs-next-9+ #2
-[ 5281.974818] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables 
this message.
-[ 5281.976364] rm              D ffff8800724cfc38     0 20488   7747 0x00000000
-[ 5281.977506]  ffff8800724cfc38 ffff8800724cfc38 ffff880065da5c50 
0000000000000001
-[ 5281.978461]  ffff8800724cffd8 ffff8801540a5f50 0000000000000008 
ffff8801540a5f78
-[ 5281.979541]  ffff8801540a5f50 ffff8800724cfc58 ffffffff8143107e 
0000000000000123
-[ 5281.981396] Call Trace:
-[ 5281.982066]  [<ffffffff8143107e>] schedule+0x74/0x83
-[ 5281.983341]  [<ffffffffa03b33cf>] wait_on_state+0xac/0xcd [btrfs]
-[ 5281.985127]  [<ffffffff81075cd6>] ? signal_pending_state+0x31/0x31
-[ 5281.986715]  [<ffffffffa03b4b71>] wait_extent_bit.constprop.32+0x7c/0xde 
[btrfs]
-[ 5281.988680]  [<ffffffffa03b540b>] lock_extent_bits+0x5d/0x88 [btrfs]
-[ 5281.990200]  [<ffffffffa03a621d>] btrfs_evict_inode+0x24e/0x5be [btrfs]
-[ 5281.991781]  [<ffffffff8116964d>] evict+0xa0/0x148
-[ 5281.992735]  [<ffffffff8116a43d>] iput+0x18f/0x1e5
-[ 5281.993796]  [<ffffffff81160d4a>] do_unlinkat+0x15b/0x1fa
-[ 5281.994806]  [<ffffffff81435b54>] ? ret_from_sys_call+0x1d/0x58
-[ 5281.996120]  [<ffffffff8107d314>] ? trace_hardirqs_on_caller+0x18f/0x1ab
-[ 5281.997562]  [<ffffffff8123960b>] ? trace_hardirqs_on_thunk+0x3a/0x3f
-[ 5281.998815]  [<ffffffff81161a16>] SyS_unlinkat+0x29/0x2b
-[ 5281.999920]  [<ffffffff81435b32>] system_call_fastpath+0x12/0x17
-[ 5282.001299] 1 lock held by rm/20488:
-[ 5282.002066]  #0:  (sb_writers#12){.+.+.+}, at: [<ffffffff8116dd81>] 
mnt_want_write+0x24/0x4b
-
-This happens when we have readahead, which calls readpages(), happening
-right before the inode eviction handler is invoked. So the reason is
-essentially:
-
-1) readpages() is called while a reference on the inode is held, so
-   eviction can not be triggered before readpages() returns. It also
-   locks one or more ranges in the inode's io_tree (which is done at
-   extent_io.c:__do_contiguous_readpages());
-
-2) readpages() submits several read bios, all with an end io callback
-   that runs extent_io.c:end_bio_extent_readpage() and that is executed
-   by other task when a bio finishes, corresponding to a work queue
-   (fs_info->end_io_workers) worker kthread. This callback unlocks
-   the ranges in the inode's io_tree that were previously locked in
-   step 1;
-
-3) readpages() returns, the reference on the inode is dropped;
-
-4) One or more of the read bios previously submitted are still not
-   complete (their end io callback was not yet invoked or has not
-   yet finished execution);
-
-5) Inode eviction is triggered (through an unlink call for example).
-   The inode reference count was not incremented before submitting
-   the read bios, therefore this is possible;
-
-6) The eviction handler starts executing and enters the loop that
-   iterates over all extent states in the inode's io_tree;
-
-7) The loop picks one extent state record and uses its ->start and
-   ->end fields, after releasing the inode's io_tree spinlock, to
-   call lock_extent_bits() and clear_extent_bit(). The call to lock
-   the range [state->start, state->end] blocks because the whole
-   range or a part of it was locked by the previous call to
-   readpages() and the corresponding end io callback, which unlocks
-   the range was not yet executed;
-
-8) The end io callback for the read bio is executed and unlocks the
-   range [state->start, state->end] (or a superset of that range).
-   And at clear_extent_bit() the extent_state record state is used
-   as a second argument to split_state(), which sets state->start to
-   a larger value;
-
-9) The task executing the eviction handler is woken up by the task
-   executing the bio's end io callback (through clear_state_bit) and
-   the eviction handler locks the range
-   [old value for state->start, state->end]. Shortly after, when
-   calling clear_extent_bit(), it unlocks the range
-   [new value for state->start, state->end], so it ends up unlocking
-   only part of the range that it locked, leaving an extent state
-   record in the io_tree that represents the unlocked subrange;
-
-10) The eviction handler loop, in its next iteration, gets the
-    extent_state record for the subrange that it did not unlock in the
-    previous step and then tries to lock it, resulting in an hang.
-
-So fix this by not using the ->start and ->end fields of an existing
-extent_state record. This is a simple solution, and an alternative
-could be to bump the inode's reference count before submitting each
-read bio and having it dropped in the bio's end io callback. But that
-would be a more invasive/complex change and would not protect against
-other possible places that are not holding a reference on the inode
-as well. Something to consider in the future.
-
-Many thanks to Zygo Blaxell for reporting, in the mailing list, the
-issue, a set of scripts to trigger it and testing this fix.
-
-Reported-by: Zygo Blaxell <[email protected]>
-Tested-by: Zygo Blaxell <[email protected]>
-Signed-off-by: Filipe Manana <[email protected]>
-Signed-off-by: Chris Mason <[email protected]>
----
- fs/btrfs/inode.c | 26 +++++++++++++++++++++-----
- 1 file changed, 21 insertions(+), 5 deletions(-)
-
-diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
-index 8bb0136..855935f 100644
---- a/fs/btrfs/inode.c
-+++ b/fs/btrfs/inode.c
-@@ -4986,24 +4986,40 @@ static void evict_inode_truncate_pages(struct inode 
*inode)
-       }
-       write_unlock(&map_tree->lock);
- 
-+      /*
-+       * Keep looping until we have no more ranges in the io tree.
-+       * We can have ongoing bios started by readpages (called from readahead)
-+       * that didn't get their end io callbacks called yet or they are still
-+       * in progress ((extent_io.c:end_bio_extent_readpage()). This means some
-+       * ranges can still be locked and eviction started because before
-+       * submitting those bios, which are executed by a separate task (work
-+       * queue kthread), inode references (inode->i_count) were not taken
-+       * (which would be dropped in the end io callback of each bio).
-+       * Therefore here we effectively end up waiting for those bios and
-+       * anyone else holding locked ranges without having bumped the inode's
-+       * reference count - if we don't do it, when they access the inode's
-+       * io_tree to unlock a range it may be too late, leading to an
-+       * use-after-free issue.
-+       */
-       spin_lock(&io_tree->lock);
-       while (!RB_EMPTY_ROOT(&io_tree->state)) {
-               struct extent_state *state;
-               struct extent_state *cached_state = NULL;
-+              u64 start;
-+              u64 end;
- 
-               node = rb_first(&io_tree->state);
-               state = rb_entry(node, struct extent_state, rb_node);
--              atomic_inc(&state->refs);
-+              start = state->start;
-+              end = state->end;
-               spin_unlock(&io_tree->lock);
- 
--              lock_extent_bits(io_tree, state->start, state->end,
--                               0, &cached_state);
--              clear_extent_bit(io_tree, state->start, state->end,
-+              lock_extent_bits(io_tree, start, end, 0, &cached_state);
-+              clear_extent_bit(io_tree, start, end,
-                                EXTENT_LOCKED | EXTENT_DIRTY |
-                                EXTENT_DELALLOC | EXTENT_DO_ACCOUNTING |
-                                EXTENT_DEFRAG, 1, 1,
-                                &cached_state, GFP_NOFS);
--              free_extent_state(state);
- 
-               cond_resched();
-               spin_lock(&io_tree->lock);
--- 
-1.8.4.5
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/patches.suse/crasher-26.diff 
new/patches.suse/crasher-26.diff
--- old/patches.suse/crasher-26.diff    2015-08-28 11:17:01.000000000 +0200
+++ new/patches.suse/crasher-26.diff    2015-09-22 17:17:36.000000000 +0200
@@ -19,9 +19,9 @@
 +      help
 +        Slab cache memory tester.  Only use this as a module
 +
- config MSM_SMD_PKT
-       bool "Enable device interface for some SMD packet ports"
-       default n
+ config TILE_SROM
+       bool "Character-device access via hypervisor to the Tilera SPI ROM"
+       depends on TILE
 --- a/drivers/char/Makefile
 +++ b/drivers/char/Makefile
 @@ -57,6 +57,7 @@ obj-$(CONFIG_IPMI_HANDLER)   += ipmi/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/patches.suse/scsi-netlink-ml 
new/patches.suse/scsi-netlink-ml
--- old/patches.suse/scsi-netlink-ml    2015-08-28 11:17:01.000000000 +0200
+++ new/patches.suse/scsi-netlink-ml    2015-09-22 17:17:36.000000000 +0200
@@ -18,9 +18,9 @@
 --- a/drivers/scsi/scsi_error.c
 +++ b/drivers/scsi/scsi_error.c
 @@ -25,6 +25,8 @@
+ #include <linux/blkdev.h>
  #include <linux/delay.h>
  #include <linux/jiffies.h>
- #include <asm/unaligned.h>
 +#include <linux/netlink.h>
 +#include <net/netlink.h>
  
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/patches.suse/stack-unwind 
new/patches.suse/stack-unwind
--- old/patches.suse/stack-unwind       2015-08-28 11:17:01.000000000 +0200
+++ new/patches.suse/stack-unwind       2015-09-22 17:17:36.000000000 +0200
@@ -22,10 +22,43 @@
 Update Jun 24 2014 jeffm:
 - VSYSCALL_START / END replaced upstream with
   VSYSCALL_ADDR / VSYSCALL_ADDR + PAGE_SIZE
+Update Sep 22 2015 jslaby:
+- Enablement after manual dwarf annotations are gone from upstream
+
+TODO:
+* annotate arch_unwind_init_running by FRAME_BEGIN/END in both entry_32/64.S.
+  (Only after stacktool is merged.)
+* assembler not unwound properly, as annotations are gone -- frame ptr is used
+  for the rest of the stack instead (as always).
+
+---
+ Makefile                          |    5 
+ arch/x86/Kconfig                  |    2 
+ arch/x86/Makefile                 |   11 
+ arch/x86/entry/calling.h          |   13 
+ arch/x86/entry/entry_32.S         |   33 
+ arch/x86/entry/entry_64.S         |   32 
+ arch/x86/include/asm/stacktrace.h |    4 
+ arch/x86/include/asm/switch_to.h  |   10 
+ arch/x86/include/asm/unwind.h     |  159 +++
+ arch/x86/kernel/dumpstack.c       |   88 ++
+ arch/x86/kernel/dumpstack_32.c    |    4 
+ arch/x86/kernel/dumpstack_64.c    |    7 
+ arch/x86/kernel/vmlinux.lds.S     |    2 
+ arch/x86/tools/relocs.c           |    1 
+ include/asm-generic/vmlinux.lds.h |   22 
+ include/linux/module.h            |    3 
+ include/linux/unwind.h            |  135 +++
+ init/main.c                       |    3 
+ kernel/Makefile                   |    1 
+ kernel/module.c                   |   32 
+ kernel/unwind.c                   | 1652 
++++++++++++++++++++++++++++++++++++++
+ lib/Kconfig.debug                 |   24 
+ 22 files changed, 2237 insertions(+), 6 deletions(-)
 
 --- a/Makefile
 +++ b/Makefile
-@@ -727,6 +727,11 @@ endif
+@@ -729,6 +729,11 @@ endif
  
  KBUILD_CFLAGS   += $(call cc-option, -fno-var-tracking-assignments)
  
@@ -39,7 +72,7 @@
  KBUILD_CFLAGS   += $(call cc-option, -gsplit-dwarf, -g)
 --- a/arch/x86/Kconfig
 +++ b/arch/x86/Kconfig
-@@ -627,7 +627,7 @@ config X86_32_IRIS
+@@ -635,7 +635,7 @@ config X86_32_IRIS
  config SCHED_OMIT_FRAME_POINTER
        def_bool y
        prompt "Single-depth WCHAN output"
@@ -50,7 +83,30 @@
          is disabled then wchan values will recurse back to the
 --- a/arch/x86/Makefile
 +++ b/arch/x86/Makefile
-@@ -163,7 +163,9 @@ KBUILD_CFLAGS += -pipe
+@@ -149,6 +149,11 @@ endif
+ sp-$(CONFIG_X86_32) := esp
+ sp-$(CONFIG_X86_64) := rsp
+ 
++# do binutils support CFI?
++cfi := $(call as-instr,.cfi_startproc\n.cfi_rel_offset 
$(sp-y)$(comma)0\n.cfi_endproc,-DCONFIG_AS_CFI=1)
++# is .cfi_signal_frame supported too?
++cfi-sections := $(call as-instr,.cfi_sections 
.debug_frame,-DCONFIG_AS_CFI_SECTIONS=1)
++
+ # does binutils support specific instructions?
+ asinstr := $(call as-instr,fxsaveq (%rax),-DCONFIG_AS_FXSAVEQ=1)
+ asinstr += $(call as-instr,pshufb %xmm0$(comma)%xmm0,-DCONFIG_AS_SSSE3=1)
+@@ -156,8 +161,8 @@ asinstr += $(call as-instr,crc32l %eax$(
+ avx_instr := $(call as-instr,vxorps 
%ymm0$(comma)%ymm1$(comma)%ymm2,-DCONFIG_AS_AVX=1)
+ avx2_instr :=$(call as-instr,vpbroadcastb 
%xmm0$(comma)%ymm1,-DCONFIG_AS_AVX2=1)
+ 
+-KBUILD_AFLAGS += $(asinstr) $(avx_instr) $(avx2_instr)
+-KBUILD_CFLAGS += $(asinstr) $(avx_instr) $(avx2_instr)
++KBUILD_AFLAGS += $(cfi) $(cfi-sections) $(asinstr) $(avx_instr) $(avx2_instr)
++KBUILD_CFLAGS += $(cfi) $(cfi-sections) $(asinstr) $(avx_instr) $(avx2_instr)
+ 
+ LDFLAGS := -m elf_$(UTS_MACHINE)
+ 
+@@ -166,7 +171,9 @@ KBUILD_CFLAGS += -pipe
  # Workaround for a gcc prelease that unfortunately was shipped in a suse 
release
  KBUILD_CFLAGS += -Wno-sign-compare
  #
@@ -60,27 +116,111 @@
  # prevent gcc from generating any FP code by mistake
  KBUILD_CFLAGS += -mno-sse -mno-mmx -mno-sse2 -mno-3dnow
  KBUILD_CFLAGS += $(call cc-option,-mno-avx,)
---- a/arch/x86/include/asm/dwarf2.h
-+++ b/arch/x86/include/asm/dwarf2.h
-@@ -35,7 +35,8 @@
- #define CFI_SIGNAL_FRAME
- #endif
+--- a/arch/x86/entry/calling.h
++++ b/arch/x86/entry/calling.h
+@@ -46,6 +46,19 @@ For 32-bit we have the following convent
+ 
+ */
  
--#if defined(CONFIG_AS_CFI_SECTIONS) && defined(__ASSEMBLY__)
 +#if !defined(CONFIG_UNWIND_INFO) && defined(CONFIG_AS_CFI_SECTIONS) \
-+    && defined(__ASSEMBLY__)
-       /*
-        * Emit CFI data in .debug_frame sections, not .eh_frame sections.
-        * The latter we currently just discard since we don't do DWARF
-@@ -53,7 +54,7 @@
-  * Due to the structure of pre-exisiting code, don't use assembler line
-  * comment character # to ignore the arguments. Instead, use a dummy macro.
-  */
--.macro cfi_ignore a=0, b=0, c=0, d=0
-+.macro cfi_ignore a=0, b=0, c=0, d=0, e=0, f=0, g=0, h=0
- .endm
++      && defined(__ASSEMBLY__)
++      /*
++       * Emit CFI data in .debug_frame sections, not .eh_frame sections.
++       * The latter we currently just discard since we don't do DWARF
++       * unwinding at runtime.  So only the offline DWARF information is
++       * useful to anyone.  Note we should not use this directive if this
++       * file is used in the vDSO assembly, or if vmlinux.lds.S gets
++       * changed so it doesn't discard .eh_frame.
++       */
++      .cfi_sections .debug_frame
++#endif
++
+ #ifdef CONFIG_X86_64
+ 
+ /*
+--- a/arch/x86/entry/entry_32.S
++++ b/arch/x86/entry/entry_32.S
+@@ -224,6 +224,39 @@ ENTRY(ret_from_fork)
+       jmp     syscall_exit
+ END(ret_from_fork)
+ 
++#ifdef CONFIG_STACK_UNWIND
++ENTRY(arch_unwind_init_running)
++      movl    4(%esp), %edx
++      movl    (%esp), %ecx
++      leal    4(%esp), %eax
++      movl    %ebx, PT_EBX(%edx)
++      xorl    %ebx, %ebx
++      movl    %ebx, PT_ECX(%edx)
++      movl    %ebx, PT_EDX(%edx)
++      movl    %esi, PT_ESI(%edx)
++      movl    %edi, PT_EDI(%edx)
++      movl    %ebp, PT_EBP(%edx)
++      movl    %ebx, PT_EAX(%edx)
++      movl    $__USER_DS, PT_DS(%edx)
++      movl    $__USER_DS, PT_ES(%edx)
++      movl    $__KERNEL_PERCPU, PT_FS(%edx)
++      movl    $__KERNEL_STACK_CANARY, PT_GS(%edx)
++      movl    %eax, PT_OLDESP(%edx)
++      movl    16(%esp), %eax
++      movl    %ebx, PT_ORIG_EAX(%edx)
++      movl    %ecx, PT_EIP(%edx)
++      movl    12(%esp), %ecx
++      movl    $__KERNEL_CS, PT_CS(%edx)
++      movl    %eax, 12(%esp)
++      movl    8(%esp), %eax
++      movl    %ecx, 8(%esp)
++      movl    %ebx, PT_EFLAGS(%edx)
++      movl    PT_EBX(%edx), %ebx
++      movl    $__KERNEL_DS, PT_OLDSS(%edx)
++      jmpl    *%eax
++ENDPROC(arch_unwind_init_running)
++#endif
++
+ ENTRY(ret_from_kernel_thread)
+       pushl   %eax
+       call    schedule_tail
+--- a/arch/x86/entry/entry_64.S
++++ b/arch/x86/entry/entry_64.S
+@@ -973,6 +973,38 @@ ENTRY(do_softirq_own_stack)
+       ret
+ END(do_softirq_own_stack)
+ 
++#ifdef CONFIG_STACK_UNWIND
++ENTRY(arch_unwind_init_running)
++      movq    %r15, R15(%rdi)
++      movq    %r14, R14(%rdi)
++      xchgq   %rsi, %rdx
++      movq    %r13, R13(%rdi)
++      movq    %r12, R12(%rdi)
++      xorl    %eax, %eax
++      movq    %rbp, RBP(%rdi)
++      movq    %rbx, RBX(%rdi)
++      movq    (%rsp), %r9
++      xchgq   %rdx, %rcx
++      movq    %rax, R11(%rdi)
++      movq    %rax, R10(%rdi)
++      movq    %rax, R9(%rdi)
++      movq    %rax, R8(%rdi)
++      movq    %rax, RAX(%rdi)
++      movq    %rax, RCX(%rdi)
++      movq    %rax, RDX(%rdi)
++      movq    %rax, RSI(%rdi)
++      movq    %rax, RDI(%rdi)
++      movq    %rax, ORIG_RAX(%rdi)
++      movq    %r9, RIP(%rdi)
++      leaq    8(%rsp), %r9
++      movq    $__KERNEL_CS, CS(%rdi)
++      movq    %rax, EFLAGS(%rdi)
++      movq    %r9, RSP(%rdi)
++      movq    $__KERNEL_DS, SS(%rdi)
++      jmpq    *%rcx
++END(arch_unwind_init_running)
++#endif
++
+ #ifdef CONFIG_XEN
+ idtentry xen_hypervisor_callback xen_do_hypervisor_callback has_error_code=0
  
- #define CFI_STARTPROC         cfi_ignore
 --- a/arch/x86/include/asm/stacktrace.h
 +++ b/arch/x86/include/asm/stacktrace.h
 @@ -92,6 +92,10 @@ extern void
@@ -96,7 +236,7 @@
  /* The form of the top of the frame on the stack */
 --- a/arch/x86/include/asm/switch_to.h
 +++ b/arch/x86/include/asm/switch_to.h
-@@ -100,6 +100,15 @@ do {                                                      
                \
+@@ -100,12 +100,22 @@ do {                                                     
                \
  #define __switch_canary_iparam
  #endif        /* CC_STACKPROTECTOR */
  
@@ -109,10 +249,9 @@
 +#define THREAD_RETURN_SYM
 +#endif
 +
- /*
-  * There is no need to save or restore flags, because flags are always
-  * clean in kernel mode, with the possible exception of IOPL.  Kernel IOPL
-@@ -110,6 +119,7 @@ do {                                                       
                \
+ /* Save restore flags to clear handle leaking NT */
+ #define switch_to(prev, next, last) \
+       asm volatile(SAVE_CONTEXT                                         \
             "movq %%rsp,%P[threadrsp](%[prev])\n\t" /* save RSP */       \
             "movq %P[threadrsp](%[next]),%%rsp\n\t" /* restore RSP */    \
             "call __switch_to\n\t"                                       \
@@ -120,7 +259,7 @@
             "movq "__percpu_arg([current_task])",%%rsi\n\t"              \
             __switch_canary                                              \
             "movq %P[thread_info](%%rsi),%%r8\n\t"                       \
---- a/dev/null
+--- /dev/null
 +++ b/arch/x86/include/asm/unwind.h
 @@ -0,0 +1,159 @@
 +#ifndef _ASM_X86_UNWIND_H
@@ -374,7 +513,7 @@
  /*
   * x86-64 can have up to three kernel stacks:
   * process stack
-@@ -367,3 +437,21 @@ static int __init code_bytes_setup(char 
+@@ -367,3 +437,21 @@ static int __init code_bytes_setup(char
        return 1;
  }
  __setup("code_bytes=", code_bytes_setup);
@@ -432,93 +571,6 @@
        if (!stack) {
                if (regs)
                        stack = (unsigned long *)regs->sp;
---- a/arch/x86/kernel/entry_32.S
-+++ b/arch/x86/kernel/entry_32.S
-@@ -299,6 +299,41 @@ ENTRY(ret_from_fork)
-       CFI_ENDPROC
- END(ret_from_fork)
- 
-+#ifdef CONFIG_STACK_UNWIND
-+ENTRY(arch_unwind_init_running)
-+      CFI_STARTPROC
-+      movl    4(%esp), %edx
-+      movl    (%esp), %ecx
-+      leal    4(%esp), %eax
-+      movl    %ebx, PT_EBX(%edx)
-+      xorl    %ebx, %ebx
-+      movl    %ebx, PT_ECX(%edx)
-+      movl    %ebx, PT_EDX(%edx)
-+      movl    %esi, PT_ESI(%edx)
-+      movl    %edi, PT_EDI(%edx)
-+      movl    %ebp, PT_EBP(%edx)
-+      movl    %ebx, PT_EAX(%edx)
-+      movl    $__USER_DS, PT_DS(%edx)
-+      movl    $__USER_DS, PT_ES(%edx)
-+      movl    $__KERNEL_PERCPU, PT_FS(%edx)
-+      movl    $__KERNEL_STACK_CANARY, PT_GS(%edx)
-+      movl    %eax, PT_OLDESP(%edx)
-+      movl    16(%esp), %eax
-+      movl    %ebx, PT_ORIG_EAX(%edx)
-+      movl    %ecx, PT_EIP(%edx)
-+      movl    12(%esp), %ecx
-+      movl    $__KERNEL_CS, PT_CS(%edx)
-+      movl    %eax, 12(%esp)
-+      movl    8(%esp), %eax
-+      movl    %ecx, 8(%esp)
-+      movl    %ebx, PT_EFLAGS(%edx)
-+      movl    PT_EBX(%edx), %ebx
-+      movl    $__KERNEL_DS, PT_OLDSS(%edx)
-+      jmpl    *%eax
-+      CFI_ENDPROC
-+ENDPROC(arch_unwind_init_running)
-+#endif
-+
- ENTRY(ret_from_kernel_thread)
-       CFI_STARTPROC
-       pushl_cfi %eax
---- a/arch/x86/kernel/entry_64.S
-+++ b/arch/x86/kernel/entry_64.S
-@@ -1140,6 +1140,40 @@ ENTRY(do_softirq_own_stack)
-       CFI_ENDPROC
- END(do_softirq_own_stack)
- 
-+#ifdef CONFIG_STACK_UNWIND
-+ENTRY(arch_unwind_init_running)
-+      CFI_STARTPROC
-+      movq    %r15, R15(%rdi)
-+      movq    %r14, R14(%rdi)
-+      xchgq   %rsi, %rdx
-+      movq    %r13, R13(%rdi)
-+      movq    %r12, R12(%rdi)
-+      xorl    %eax, %eax
-+      movq    %rbp, RBP(%rdi)
-+      movq    %rbx, RBX(%rdi)
-+      movq    (%rsp), %r9
-+      xchgq   %rdx, %rcx
-+      movq    %rax, R11(%rdi)
-+      movq    %rax, R10(%rdi)
-+      movq    %rax, R9(%rdi)
-+      movq    %rax, R8(%rdi)
-+      movq    %rax, RAX(%rdi)
-+      movq    %rax, RCX(%rdi)
-+      movq    %rax, RDX(%rdi)
-+      movq    %rax, RSI(%rdi)
-+      movq    %rax, RDI(%rdi)
-+      movq    %rax, ORIG_RAX(%rdi)
-+      movq    %r9, RIP(%rdi)
-+      leaq    8(%rsp), %r9
-+      movq    $__KERNEL_CS, CS(%rdi)
-+      movq    %rax, EFLAGS(%rdi)
-+      movq    %r9, RSP(%rdi)
-+      movq    $__KERNEL_DS, SS(%rdi)
-+      jmpq    *%rcx
-+      CFI_ENDPROC
-+END(arch_unwind_init_running)
-+#endif
-+
- #ifdef CONFIG_XEN
- idtentry xen_hypervisor_callback xen_do_hypervisor_callback has_error_code=0
- 
 --- a/arch/x86/kernel/vmlinux.lds.S
 +++ b/arch/x86/kernel/vmlinux.lds.S
 @@ -332,7 +332,9 @@ SECTIONS
@@ -578,7 +630,7 @@
 +#endif
 --- a/include/linux/module.h
 +++ b/include/linux/module.h
-@@ -284,6 +284,9 @@ struct module {
+@@ -398,6 +398,9 @@ struct module {
        /* Size of RO sections of the module (text+rodata) */
        unsigned int init_ro_size, core_ro_size;
  
@@ -588,7 +640,7 @@
        /* Arch-specific module values */
        struct mod_arch_specific arch;
  
---- a/dev/null
+--- /dev/null
 +++ b/include/linux/unwind.h
 @@ -0,0 +1,135 @@
 +#ifndef _LINUX_UNWIND_H
@@ -736,7 +788,7 @@
  #include <linux/buffer_head.h>
  #include <linux/page_ext.h>
  #include <linux/debug_locks.h>
-@@ -498,6 +499,7 @@ asmlinkage __visible void __init start_k
+@@ -503,6 +504,7 @@ asmlinkage __visible void __init start_k
         * Need to run as early as possible, to initialize the
         * lockdep hash:
         */
@@ -744,7 +796,7 @@
        lockdep_init();
        set_task_stack_end_magic(&init_task);
        smp_setup_processor_id();
-@@ -523,6 +525,7 @@ asmlinkage __visible void __init start_k
+@@ -528,6 +530,7 @@ asmlinkage __visible void __init start_k
        setup_arch(&command_line);
        mm_init_cpumask(&init_mm);
        setup_command_line(command_line);
@@ -754,7 +806,7 @@
        smp_prepare_boot_cpu(); /* arch-specific boot-cpu hooks */
 --- a/kernel/Makefile
 +++ b/kernel/Makefile
-@@ -49,6 +49,7 @@ obj-$(CONFIG_SYSTEM_TRUSTED_KEYRING) += 
+@@ -49,6 +49,7 @@ obj-$(CONFIG_SYSTEM_TRUSTED_KEYRING) +=
  obj-$(CONFIG_MODULES) += module.o
  obj-$(CONFIG_MODULE_SIG) += module_signing.o
  obj-$(CONFIG_KALLSYMS) += kallsyms.o
@@ -772,7 +824,7 @@
  #include <linux/rculist.h>
  #include <asm/uaccess.h>
  #include <asm/cacheflush.h>
-@@ -195,7 +196,7 @@ struct load_info {
+@@ -344,7 +345,7 @@ struct load_info {
        unsigned int num_debug;
        bool sig_ok;
        struct {
@@ -781,7 +833,7 @@
        } index;
  };
  
-@@ -607,6 +608,27 @@ bool is_module_percpu_address(unsigned l
+@@ -764,6 +765,27 @@ bool is_module_percpu_address(unsigned l
  
  #endif /* CONFIG_SMP */
  
@@ -809,7 +861,7 @@
  #define MODINFO_ATTR(field)   \
  static void setup_modinfo_##field(struct module *mod, const char *s)  \
  {                                                                     \
-@@ -1919,6 +1941,8 @@ static void free_module(struct module *m
+@@ -2089,6 +2111,8 @@ static void free_module(struct module *m
        /* Remove dynamic debug info */
        ddebug_remove_module(mod->name);
  
@@ -818,7 +870,7 @@
        /* Arch-specific cleanup. */
        module_arch_cleanup(mod);
  
-@@ -2752,6 +2776,8 @@ static struct module *setup_load_info(st
+@@ -2907,6 +2931,8 @@ static struct module *setup_load_info(st
  
        info->index.pcpu = find_pcpusec(info);
  
@@ -827,7 +879,7 @@
        /* Check module struct version now, before we try to use module. */
        if (!check_modstruct_version(info->sechdrs, info->index.vers, mod))
                return ERR_PTR(-ENOEXEC);
-@@ -3194,6 +3220,7 @@ static noinline int do_init_module(struc
+@@ -3349,6 +3375,7 @@ static noinline int do_init_module(struc
        /* Drop initial reference. */
        module_put(mod);
        trim_init_extable(mod);
@@ -835,7 +887,7 @@
  #ifdef CONFIG_KALLSYMS
        mod->num_symtab = mod->core_num_syms;
        mod->symtab = mod->core_symtab;
-@@ -3436,6 +3463,9 @@ static int load_module(struct load_info 
+@@ -3606,6 +3633,9 @@ static int load_module(struct load_info
        if (err < 0)
                goto bug_cleanup;
  
@@ -845,7 +897,7 @@
        /* Get rid of temporary copy. */
        free_copy(info);
  
---- a/dev/null
+--- /dev/null
 +++ b/kernel/unwind.c
 @@ -0,0 +1,1652 @@
 +/*
@@ -2527,7 +2579,7 @@
  config BOOT_PRINTK_DELAY
        bool "Delay each boot printk message by N milliseconds"
        depends on DEBUG_KERNEL && PRINTK && GENERIC_CALIBRATE_DELAY
-@@ -1486,7 +1504,8 @@ config FAULT_INJECTION_STACKTRACE_FILTER
+@@ -1553,7 +1571,8 @@ config FAULT_INJECTION_STACKTRACE_FILTER
        depends on FAULT_INJECTION_DEBUG_FS && STACKTRACE_SUPPORT
        depends on !X86_64
        select STACKTRACE
@@ -2537,7 +2589,7 @@
        help
          Provide stacktrace filter for fault-injection capabilities
  
-@@ -1496,7 +1515,8 @@ config LATENCYTOP
+@@ -1563,7 +1582,8 @@ config LATENCYTOP
        depends on DEBUG_KERNEL
        depends on STACKTRACE_SUPPORT
        depends on PROC_FS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/patches.suse/supported-flag 
new/patches.suse/supported-flag
--- old/patches.suse/supported-flag     2015-08-28 11:17:01.000000000 +0200
+++ new/patches.suse/supported-flag     2015-09-22 17:17:36.000000000 +0200
@@ -30,7 +30,7 @@
 
 --- a/Documentation/kernel-parameters.txt
 +++ b/Documentation/kernel-parameters.txt
-@@ -3654,6 +3654,14 @@ bytes respectively. Such letter suffixes
+@@ -3789,6 +3789,14 @@ bytes respectively. Such letter suffixes
        unknown_nmi_panic
                        [X86] Cause panic on unknown NMI.
  
@@ -47,7 +47,7 @@
                        (default -1 = authorized except for wireless USB,
 --- a/Documentation/sysctl/kernel.txt
 +++ b/Documentation/sysctl/kernel.txt
-@@ -843,6 +843,18 @@ can be ORed together:
+@@ -869,6 +869,18 @@ can be ORed together:
         signature.
  16384 - A soft lockup has previously occurred on the system.
  32768 - The kernel has been live patched.
@@ -68,7 +68,7 @@
  
 --- a/Makefile
 +++ b/Makefile
-@@ -411,6 +411,11 @@ KBUILD_AFLAGS_MODULE  := -DMODULE
+@@ -400,6 +400,11 @@ KBUILD_AFLAGS_MODULE  := -DMODULE
  KBUILD_CFLAGS_MODULE  := -DMODULE
  KBUILD_LDFLAGS_MODULE := -T $(srctree)/scripts/module-common.lds
  
@@ -82,7 +82,7 @@
  KERNELVERSION = $(VERSION)$(if $(PATCHLEVEL),.$(PATCHLEVEL)$(if 
$(SUBLEVEL),.$(SUBLEVEL)))$(EXTRAVERSION)
 --- a/include/linux/kernel.h
 +++ b/include/linux/kernel.h
-@@ -425,6 +425,9 @@ extern int panic_on_oops;
+@@ -438,6 +438,9 @@ extern int panic_on_oops;
  extern int panic_on_unrecovered_nmi;
  extern int panic_on_io_nmi;
  extern int panic_on_warn;
@@ -90,9 +90,9 @@
 +extern int unsupported;
 +#endif
  extern int sysctl_panic_on_stackoverflow;
- /*
-  * Only to be used by arch init code. If the user over-wrote the default
-@@ -472,6 +475,15 @@ extern enum system_states {
+ 
+ extern bool crash_kexec_post_notifiers;
+@@ -489,6 +492,15 @@ extern enum system_states {
  #define TAINT_SOFTLOCKUP              14
  #define TAINT_LIVEPATCH                       15
  
@@ -110,7 +110,7 @@
  #define hex_asc_hi(x) hex_asc[((x) & 0xf0) >> 4]
 --- a/include/linux/module.h
 +++ b/include/linux/module.h
-@@ -381,6 +381,9 @@ struct module *__module_address(unsigned
+@@ -417,6 +417,9 @@ struct module *__module_address(unsigned
  bool is_module_address(unsigned long addr);
  bool is_module_percpu_address(unsigned long addr);
  bool is_module_text_address(unsigned long addr);
@@ -214,7 +214,7 @@
  /*
   * Mutex protects:
   * 1) List of modules (also safely readable with preempt_disable),
-@@ -995,6 +1011,12 @@ static size_t module_flags_taint(struct
+@@ -1157,6 +1173,12 @@ static size_t module_flags_taint(struct
                buf[l++] = 'C';
        if (mod->taints & (1 << TAINT_UNSIGNED_MODULE))
                buf[l++] = 'E';
@@ -227,7 +227,7 @@
        /*
         * TAINT_FORCED_RMMOD: could be added.
         * TAINT_CPU_OUT_OF_SPEC, TAINT_MACHINE_CHECK, TAINT_BAD_PAGE don't
-@@ -1072,6 +1094,33 @@ static ssize_t show_taint(struct module_
+@@ -1234,6 +1256,33 @@ static ssize_t show_taint(struct module_
  static struct module_attribute modinfo_taint =
        __ATTR(taint, 0444, show_taint, NULL);
  
@@ -261,7 +261,7 @@
  static struct module_attribute *modinfo_attrs[] = {
        &module_uevent,
        &modinfo_version,
-@@ -1080,6 +1129,9 @@ static struct module_attribute *modinfo_
+@@ -1242,6 +1291,9 @@ static struct module_attribute *modinfo_
        &modinfo_coresize,
        &modinfo_initsize,
        &modinfo_taint,
@@ -271,7 +271,7 @@
  #ifdef CONFIG_MODULE_UNLOAD
        &modinfo_refcnt,
  #endif
-@@ -1626,9 +1678,37 @@ static int mod_sysfs_setup(struct module
+@@ -1800,9 +1852,37 @@ static int mod_sysfs_setup(struct module
        add_sect_attrs(mod, info);
        add_notes_attrs(mod, info);
  
@@ -309,7 +309,7 @@
  out_unreg_param:
        module_param_sysfs_remove(mod);
  out_unreg_holders:
-@@ -3836,6 +3916,9 @@ void print_modules(void)
+@@ -4068,6 +4148,9 @@ void print_modules(void)
        if (last_unloaded_module[0])
                pr_cont(" [last unloaded: %s]", last_unloaded_module);
        pr_cont("\n");
@@ -321,7 +321,7 @@
  #ifdef CONFIG_MODVERSIONS
 --- a/kernel/panic.c
 +++ b/kernel/panic.c
-@@ -226,6 +226,10 @@ static const struct tnt tnts[] = {
+@@ -228,6 +228,10 @@ static const struct tnt tnts[] = {
        { TAINT_UNSIGNED_MODULE,        'E', ' ' },
        { TAINT_SOFTLOCKUP,             'L', ' ' },
        { TAINT_LIVEPATCH,              'K', ' ' },
@@ -332,7 +332,7 @@
  };
  
  /**
-@@ -246,6 +250,8 @@ static const struct tnt tnts[] = {
+@@ -249,6 +253,8 @@ static const struct tnt tnts[] = {
   *  'E' - Unsigned module has been loaded.
   *  'L' - A soft lockup has previously occurred.
   *  'K' - Kernel has been live patched.
@@ -343,7 +343,7 @@
   */
 --- a/kernel/sysctl.c
 +++ b/kernel/sysctl.c
-@@ -769,6 +769,15 @@ static struct ctl_table kern_table[] = {
+@@ -759,6 +759,15 @@ static struct ctl_table kern_table[] = {
                .extra1         = &pid_max_min,
                .extra2         = &pid_max_max,
        },
@@ -376,7 +376,7 @@
  
 --- a/scripts/mod/modpost.c
 +++ b/scripts/mod/modpost.c
-@@ -1685,6 +1685,50 @@ static char *remove_dot(char *s)
+@@ -1918,6 +1918,50 @@ static char *remove_dot(char *s)
        return s;
  }
  
@@ -427,7 +427,7 @@
  static void read_symbols(char *modname)
  {
        const char *symname;
-@@ -1899,6 +1943,15 @@ static void add_staging_flag(struct buff
+@@ -2132,6 +2176,15 @@ static void add_staging_flag(struct buff
                buf_printf(b, "\nMODULE_INFO(staging, \"Y\");\n");
  }
  
@@ -443,7 +443,7 @@
  /**
   * Record CRCs for unresolved symbols
   **/
-@@ -2040,6 +2093,15 @@ static void write_if_changed(struct buff
+@@ -2273,6 +2326,15 @@ static void write_if_changed(struct buff
        fclose(file);
  }
  
@@ -459,7 +459,7 @@
  /* parse Module.symvers file. line format:
   * 0x12345678<tab>symbol<tab>module[[<tab>export]<tab>something]
   **/
-@@ -2135,12 +2197,15 @@ int main(int argc, char **argv)
+@@ -2368,12 +2430,15 @@ int main(int argc, char **argv)
        struct buffer buf = { };
        char *kernel_read = NULL, *module_read = NULL;
        char *dump_write = NULL, *files_source = NULL;
@@ -476,7 +476,7 @@
                switch (opt) {
                case 'i':
                        kernel_read = optarg;
-@@ -2181,11 +2246,20 @@ int main(int argc, char **argv)
+@@ -2414,11 +2479,20 @@ int main(int argc, char **argv)
                case 'w':
                        warn_unresolved = 1;
                        break;
@@ -497,7 +497,7 @@
        if (kernel_read)
                read_dump(kernel_read, 1);
        if (module_read)
-@@ -2222,6 +2296,9 @@ int main(int argc, char **argv)
+@@ -2455,6 +2529,9 @@ int main(int argc, char **argv)
                add_header(&buf, mod);
                add_intree_flag(&buf, !external_module);
                add_staging_flag(&buf, mod->name);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/patches.suse/suse-hv-storvsc-sg_tablesize.patch 
new/patches.suse/suse-hv-storvsc-sg_tablesize.patch
--- old/patches.suse/suse-hv-storvsc-sg_tablesize.patch 1970-01-01 
01:00:00.000000000 +0100
+++ new/patches.suse/suse-hv-storvsc-sg_tablesize.patch 2015-09-22 
17:17:36.000000000 +0200
@@ -0,0 +1,28 @@
+Subject: hv_storvsc: use small sg_tablesize on x86
+From: <[email protected]>
+Patch-mainline: Never, upstream may provide different fix
+References: bnc#937256
+
+Reducing the sg_tablesize allows booting of SP4 kernels in 32bit VMs, after
+commit be0cf6ca301c61458dc4aa1a37acf4f58d2ed3d6 ("scsi: storvsc: Set the
+tablesize based on the information given by the host")
+
+[    5.567138] hv_storvsc vmbus_1: adjusting sg_tablesize 0x800 -> 0x20
+
+
+diff --git a/drivers/scsi/storvsc_drv.c b/drivers/scsi/storvsc_drv.c
+index 4a65916..e2245c7 100644
+--- a/drivers/scsi/storvsc_drv.c
++++ b/drivers/scsi/storvsc_drv.c
+@@ -1951,6 +1951,11 @@ static int storvsc_probe(struct hv_device *device,
+        * from the host.
+        */
+       host->sg_tablesize = (stor_device->max_transfer_bytes >> PAGE_SHIFT);
++#if defined(CONFIG_X86_32)
++      dev_warn(&device->device, "adjusting sg_tablesize 0x%x -> 0x%x",
++                      host->sg_tablesize, MAX_MULTIPAGE_BUFFER_COUNT);
++      host->sg_tablesize = MAX_MULTIPAGE_BUFFER_COUNT;
++#endif
+ 
+       /* Register the HBA and start the scsi bus scan */
+       ret = scsi_add_host(host, &device->device);

++++++ patches.xen.tar.bz2 ++++++
++++ 30983 lines of diff (skipped)

++++++ series.conf ++++++
--- /var/tmp/diff_new_pack.pwNTkG/_old  2015-10-01 09:28:48.000000000 +0200
+++ /var/tmp/diff_new_pack.pwNTkG/_new  2015-10-01 09:28:48.000000000 +0200
@@ -27,12 +27,7 @@
        # DO NOT MODIFY THEM!
        # Send separate patches upstream if you find a problem...
        ########################################################
-       patches.kernel.org/patch-4.1.1
-       patches.kernel.org/patch-4.1.1-2
-       patches.kernel.org/patch-4.1.2-3
-       patches.kernel.org/patch-4.1.3-4
-       patches.kernel.org/patch-4.1.4-5
-       patches.kernel.org/patch-4.1.5-6
+       patches.kernel.org/patch-4.2.1
 
         ########################################################
         # Build fixes that apply to the vanilla kernel too.
@@ -72,6 +67,7 @@
         ########################################################
         # Simple export additions/removals
         ########################################################
+       patches.fixes/workqueue-Make-flush_workqueue-available-again-to-no.patch
 
        ########################################################
        # Bug workarounds for binutils
@@ -168,16 +164,15 @@
        
patches.arch/arm64-0010-KVM-ARM-Hack-to-enable-VGIC-mapping-on-64k-PAGE_SIZE.patch
 
        # Generic PCIe host bridge, necessary for QEMU and Seattle, upstreaming 
wip
-       
patches.arch/arm64-gpex-0001-device-core-Introduce-per-device-MSI-domain-pointer.patch
-       
patches.arch/arm64-gpex-0002-PCI-MSI-add-hooks-to-populate-the-msi_domain-field.patch
-       
patches.arch/arm64-gpex-0003-PCI-MSI-of-add-support-for-OF-provided-msi_domain.patch
-       
patches.arch/arm64-gpex-0004-PCI-MSI-Let-pci_msi_get_domain-use-struct-device-s-m.patch
-       
patches.arch/arm64-gpex-0005-irqchip-GICv2m-Get-rid-of-struct-msi_controller.patch
-       
patches.arch/arm64-gpex-0006-irqchip-gicv3-its-Get-rid-of-struct-msi_controller.patch
-       
patches.arch/arm64-gpex-0007-PCI-MSI-Drop-domain-field-from-msi_controller.patch
-       
patches.arch/arm64-gpex-0008-PCI-MSI-of-Allow-msi_domain-lookup-using-the-PHB-nod.patch
-       
patches.arch/arm64-gpex-0009-pci-Enable-pci-host-generic-support-for-ARM64.patch
-
++mbrugger      
patches.arch/arm64-gpex-0001-device-core-Introduce-per-device-MSI-domain-pointer.patch
++mbrugger      
patches.arch/arm64-gpex-0002-PCI-MSI-add-hooks-to-populate-the-msi_domain-field.patch
++mbrugger      
patches.arch/arm64-gpex-0003-PCI-MSI-of-add-support-for-OF-provided-msi_domain.patch
++mbrugger      
patches.arch/arm64-gpex-0004-PCI-MSI-Let-pci_msi_get_domain-use-struct-device-s-m.patch
++mbrugger      
patches.arch/arm64-gpex-0005-irqchip-GICv2m-Get-rid-of-struct-msi_controller.patch
++mbrugger      
patches.arch/arm64-gpex-0006-irqchip-gicv3-its-Get-rid-of-struct-msi_controller.patch
++mbrugger      
patches.arch/arm64-gpex-0007-PCI-MSI-Drop-domain-field-from-msi_controller.patch
++mbrugger      
patches.arch/arm64-gpex-0008-PCI-MSI-of-Allow-msi_domain-lookup-using-the-PHB-nod.patch
+               
patches.arch/arm64-gpex-0009-pci-Enable-pci-host-generic-support-for-ARM64.patch
 
        ########################################################
        # S/390
@@ -231,6 +226,7 @@
        # Suse specific stuff
        ########################################################
        patches.suse/suse-hv-guest-os-id.patch
+       patches.suse/suse-hv-storvsc-sg_tablesize.patch
 
         ########################################################
         # Networking, IPv6
@@ -240,8 +236,7 @@
        ########################################################
        # NFS
        ########################################################
-
-       
patches.fixes/0001-NFSv4-When-returning-a-delegation-don-t-reclaim-an-i.patch
+       patches.fixes/0001-NFSv4-do-not-accept-an-incompatible-delegation.patch
 
        ########################################################
        # lockd + statd
@@ -264,7 +259,6 @@
        # btrfs
        ########################################################
        patches.suse/btrfs-use-correct-device-for-maps.patch
-       patches.suse/btrfs-fix-hang-during-inode-eviction-due-to-concurre.patch
        patches.fixes/btrfs-fix-stale-directory-entries-after-fsync-log-replay
        
patches.fixes/btrfs-fix-stale-dir-entries-after-unlink-inode-eviction-and-fsync
 
@@ -347,12 +341,14 @@
        
patches.drivers/0004-bcache-unregister-reboot-notifier-when-bcache-fails-.patch
        patches.drivers/0005-fix-a-leak-in-bch_cached_dev_run.patch
 
+       
patches.drivers/bcache-fix-writeback-thread-incomplete-stripes-starvation.patch
+
        ########################################################
        # DRM/Video
        ########################################################
 +jeffm patches.fixes/nouveau-fix-race-with-fence-signaling
-       patches.fixes/drm-i915-Ensure-cache-flushes-prior-to-doing-CS-flip.patch
-       
patches.fixes/drm-i915-Ensure-cache-flushes-prior-to-doing-CS-flip-take-two.patch
+       patches.drivers/0001-vmwgfx-Rework-device-initialization.patch
+       
patches.drivers/0002-drm-vmwgfx-Allow-dropped-masters-render-node-like-ac.patch
 
        ########################################################
        # video4linux
@@ -389,6 +385,8 @@
        # USB
        ########################################################
 
+       
patches.drivers/0001-qmi_wwan-Add-support-for-Dell-Wireless-5809e-4G-Mode.patch
+
        ########################################################
        # I2C
        ########################################################
@@ -402,6 +400,7 @@
        ##########################################################
        # Sound
        ##########################################################
+       patches.drivers/ALSA-hda-Disable-power_save_node-for-Thinkpads
 
        ########################################################
        # Char / serial
@@ -414,6 +413,7 @@
        # Needs updating WRT d27769ec (block: add GENHD_FL_NO_PART_SCAN)
 +hare  patches.suse/no-partition-scan
        patches.fixes/mmc-sdhci-fix-dma-memory-leak-in-sdhci_pre_req.patch
+       patches.fixes/leds-lp55xx-Correct-Kconfig-dependency-for-f-w-user-
 
        ########################################################
        # Other drivers we have added to the tree
@@ -471,7 +471,7 @@
        patches.suse/crasher-26.diff
        
patches.suse/revert-x86-remove-warning-and-warning_symbol-from-struct-stacktrace_ops
        patches.suse/stack-unwind
-       patches.arch/x86_64-unwind-annotations
++needs_updating        patches.arch/x86_64-unwind-annotations
 
         ########################################################
         # Kdump
@@ -596,6 +596,7 @@
        patches.xen/xen3-patch-3.19
        patches.xen/xen3-patch-4.0
        patches.xen/xen3-patch-4.1
+       patches.xen/xen3-patch-4.2
 
        # ports of other patches
        patches.xen/xen3-stack-unwind

++++++ source-timestamp ++++++
--- /var/tmp/diff_new_pack.pwNTkG/_old  2015-10-01 09:28:48.000000000 +0200
+++ /var/tmp/diff_new_pack.pwNTkG/_new  2015-10-01 09:28:48.000000000 +0200
@@ -1,3 +1,3 @@
-2015-08-28 12:59:34 +0200
-GIT Revision: d867e863d55239553067c5f9ac7ecdd96076bd9f
+2015-09-25 10:21:54 +0200
+GIT Revision: 6996a42b7e04d743c62cbcd0a390cf8f357908f0
 GIT Branch: stable


Reply via email to