Hello community,

here is the log from the commit of package kernel-source for openSUSE:Factory 
checked in at 2017-02-04 15:19:56
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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/dtb-aarch64.changes        
2017-02-03 17:44:45.384784234 +0100
+++ /work/SRC/openSUSE:Factory/.kernel-source.new/dtb-aarch64.changes   
2017-02-04 17:58:42.039695824 +0100
@@ -1,0 +2,56 @@
+Wed Feb  1 09:00:07 CET 2017 - jsl...@suse.cz
+
+- Linux 4.9.7 (bnc#1012628 bnc#1022792 bsc#1018358).
+- Delete
+  patches.drivers/drm-Fix-broken-VT-switch-with-video-1366x768-option.
+- Delete patches.fixes/userns-Make-ucounts-lock-irq-safe.patch.
+- commit 1680560
+
+-------------------------------------------------------------------
+Tue Jan 31 12:23:32 CET 2017 - jsl...@suse.cz
+
+- userns: Make ucounts lock irq-safe (bnc#1022792).
+- commit 4a049e6
+
+-------------------------------------------------------------------
+Tue Jan 31 11:25:11 CET 2017 - jsl...@suse.cz
+
+- Refresh patches.suse/DWARF-EH-frame-based-stack-unwinding.patch.
+  Fix build failures for good.
+- commit b1105aa
+
+-------------------------------------------------------------------
+Tue Jan 31 10:54:22 CET 2017 - jsl...@suse.cz
+
+- Update config files.
+- Refresh patches.suse/DWARF-EH-frame-based-stack-unwinding.patch.
+- Refresh patches.suse/stack-unwind-disable-kasan.patch.
+  Update dwarf unwinder. It fixes a build failure when disabled and
+  moves files around.
+- commit db55b7b
+
+-------------------------------------------------------------------
+Tue Jan 31 09:47:30 CET 2017 - jsl...@suse.cz
+
+- Update config files.
+  Re-disable CONFIG_STACK_UNWIND in syzkaller. It was disabled until
+  4.9-rc1 because the stack unwinder and KASAN do not play well
+  together. In 4.9-rc1 we disabled DWARF stack unwinder completely due
+  to upstream stack unwindining rewrite. I ported the unwinder recently,
+  but forgot to disable it in the syzkaller flavor. Do it now.
+- commit 22e78d3
+
+-------------------------------------------------------------------
+Mon Jan 30 11:42:59 CET 2017 - ti...@suse.de
+
+- PCI/ASPM: Handle PCI-to-PCIe bridges as roots of PCIe
+  hierarchies (bsc#1022181).
+- commit 29fd208
+
+-------------------------------------------------------------------
+Fri Jan 27 22:46:09 CET 2017 - ti...@suse.de
+
+- drm: reference count event->completion (bsc#1013576).
+- commit cf15f28
+
+-------------------------------------------------------------------
dtb-armv6l.changes: same change
dtb-armv7l.changes: same change
kernel-64kb.changes: same change
kernel-debug.changes: same change
kernel-default.changes: same change
kernel-docs.changes: same change
kernel-lpae.changes: same change
kernel-obs-build.changes: same change
kernel-obs-qa.changes: same change
kernel-pae.changes: same change
kernel-source.changes: same change
kernel-syms.changes: same change
kernel-syzkaller.changes: same change
kernel-vanilla.changes: same change

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

Other differences:
------------------
++++++ dtb-aarch64.spec ++++++
--- /var/tmp/diff_new_pack.R95it5/_old  2017-02-04 17:58:45.139252631 +0100
+++ /var/tmp/diff_new_pack.R95it5/_new  2017-02-04 17:58:45.139252631 +0100
@@ -16,14 +16,14 @@
 #
 
 
-%define patchversion 4.9.6
+%define patchversion 4.9.7
 
 %include %_sourcedir/kernel-spec-macros
 
 Name:           dtb-aarch64
-Version:        4.9.6
+Version:        4.9.7
 %if 0%{?is_kotd}
-Release:        <RELEASE>.gd1207ac
+Release:        <RELEASE>.g1680560
 %else
 Release:        0
 %endif

dtb-armv6l.spec: same change
dtb-armv7l.spec: same change
++++++ kernel-64kb.spec ++++++
--- /var/tmp/diff_new_pack.R95it5/_old  2017-02-04 17:58:45.239238335 +0100
+++ /var/tmp/diff_new_pack.R95it5/_new  2017-02-04 17:58:45.243237763 +0100
@@ -18,7 +18,7 @@
 
 
 %define srcversion 4.9
-%define patchversion 4.9.6
+%define patchversion 4.9.7
 %define variant %{nil}
 %define vanilla_only 0
 
@@ -58,9 +58,9 @@
 Summary:        Kernel with 64kb PAGE_SIZE
 License:        GPL-2.0
 Group:          System/Kernel
-Version:        4.9.6
+Version:        4.9.7
 %if 0%{?is_kotd}
-Release:        <RELEASE>.gd1207ac
+Release:        <RELEASE>.g1680560
 %else
 Release:        0
 %endif

kernel-debug.spec: same change
kernel-default.spec: same change
++++++ kernel-docs.spec ++++++
--- /var/tmp/diff_new_pack.R95it5/_old  2017-02-04 17:58:45.331225182 +0100
+++ /var/tmp/diff_new_pack.R95it5/_new  2017-02-04 17:58:45.331225182 +0100
@@ -16,7 +16,7 @@
 #
 
 
-%define patchversion 4.9.6
+%define patchversion 4.9.7
 %define variant %{nil}
 
 %include %_sourcedir/kernel-spec-macros
@@ -33,9 +33,9 @@
 Summary:        Kernel Documentation (man pages)
 License:        GPL-2.0
 Group:          Documentation/Man
-Version:        4.9.6
+Version:        4.9.7
 %if 0%{?is_kotd}
-Release:        <RELEASE>.gd1207ac
+Release:        <RELEASE>.g1680560
 %else
 Release:        0
 %endif

++++++ kernel-lpae.spec ++++++
--- /var/tmp/diff_new_pack.R95it5/_old  2017-02-04 17:58:45.359221179 +0100
+++ /var/tmp/diff_new_pack.R95it5/_new  2017-02-04 17:58:45.363220607 +0100
@@ -18,7 +18,7 @@
 
 
 %define srcversion 4.9
-%define patchversion 4.9.6
+%define patchversion 4.9.7
 %define variant %{nil}
 %define vanilla_only 0
 
@@ -58,9 +58,9 @@
 Summary:        Kernel for LPAE enabled systems
 License:        GPL-2.0
 Group:          System/Kernel
-Version:        4.9.6
+Version:        4.9.7
 %if 0%{?is_kotd}
-Release:        <RELEASE>.gd1207ac
+Release:        <RELEASE>.g1680560
 %else
 Release:        0
 %endif

++++++ kernel-obs-build.spec ++++++
--- /var/tmp/diff_new_pack.R95it5/_old  2017-02-04 17:58:45.391216604 +0100
+++ /var/tmp/diff_new_pack.R95it5/_new  2017-02-04 17:58:45.395216032 +0100
@@ -19,7 +19,7 @@
 
 #!BuildIgnore: post-build-checks
 
-%define patchversion 4.9.6
+%define patchversion 4.9.7
 %define variant %{nil}
 
 %include %_sourcedir/kernel-spec-macros
@@ -51,9 +51,9 @@
 Summary:        package kernel and initrd for OBS VM builds
 License:        GPL-2.0
 Group:          SLES
-Version:        4.9.6
+Version:        4.9.7
 %if 0%{?is_kotd}
-Release:        <RELEASE>.gd1207ac
+Release:        <RELEASE>.g1680560
 %else
 Release:        0
 %endif

++++++ kernel-obs-qa.spec ++++++
--- /var/tmp/diff_new_pack.R95it5/_old  2017-02-04 17:58:45.423212029 +0100
+++ /var/tmp/diff_new_pack.R95it5/_new  2017-02-04 17:58:45.423212029 +0100
@@ -17,7 +17,7 @@
 # needsrootforbuild
 
 
-%define patchversion 4.9.6
+%define patchversion 4.9.7
 %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.9.6
+Version:        4.9.7
 %if 0%{?is_kotd}
-Release:        <RELEASE>.gd1207ac
+Release:        <RELEASE>.g1680560
 %else
 Release:        0
 %endif

++++++ kernel-pae.spec ++++++
--- /var/tmp/diff_new_pack.R95it5/_old  2017-02-04 17:58:45.451208026 +0100
+++ /var/tmp/diff_new_pack.R95it5/_new  2017-02-04 17:58:45.455207454 +0100
@@ -18,7 +18,7 @@
 
 
 %define srcversion 4.9
-%define patchversion 4.9.6
+%define patchversion 4.9.7
 %define variant %{nil}
 %define vanilla_only 0
 
@@ -58,9 +58,9 @@
 Summary:        Kernel with PAE Support
 License:        GPL-2.0
 Group:          System/Kernel
-Version:        4.9.6
+Version:        4.9.7
 %if 0%{?is_kotd}
-Release:        <RELEASE>.gd1207ac
+Release:        <RELEASE>.g1680560
 %else
 Release:        0
 %endif

++++++ kernel-source.spec ++++++
--- /var/tmp/diff_new_pack.R95it5/_old  2017-02-04 17:58:45.479204023 +0100
+++ /var/tmp/diff_new_pack.R95it5/_new  2017-02-04 17:58:45.483203451 +0100
@@ -18,7 +18,7 @@
 
 
 %define srcversion 4.9
-%define patchversion 4.9.6
+%define patchversion 4.9.7
 %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.9.6
+Version:        4.9.7
 %if 0%{?is_kotd}
-Release:        <RELEASE>.gd1207ac
+Release:        <RELEASE>.g1680560
 %else
 Release:        0
 %endif

++++++ kernel-syms.spec ++++++
--- /var/tmp/diff_new_pack.R95it5/_old  2017-02-04 17:58:45.507200020 +0100
+++ /var/tmp/diff_new_pack.R95it5/_new  2017-02-04 17:58:45.511199448 +0100
@@ -24,10 +24,10 @@
 Summary:        Kernel Symbol Versions (modversions)
 License:        GPL-2.0
 Group:          Development/Sources
-Version:        4.9.6
+Version:        4.9.7
 %if %using_buildservice
 %if 0%{?is_kotd}
-Release:        <RELEASE>.gd1207ac
+Release:        <RELEASE>.g1680560
 %else
 Release:        0
 %endif

++++++ kernel-syzkaller.spec ++++++
--- /var/tmp/diff_new_pack.R95it5/_old  2017-02-04 17:58:45.535196017 +0100
+++ /var/tmp/diff_new_pack.R95it5/_new  2017-02-04 17:58:45.535196017 +0100
@@ -18,7 +18,7 @@
 
 
 %define srcversion 4.9
-%define patchversion 4.9.6
+%define patchversion 4.9.7
 %define variant %{nil}
 %define vanilla_only 0
 
@@ -58,9 +58,9 @@
 Summary:        Kernel used for fuzzing by syzkaller
 License:        GPL-2.0
 Group:          System/Kernel
-Version:        4.9.6
+Version:        4.9.7
 %if 0%{?is_kotd}
-Release:        <RELEASE>.gd1207ac
+Release:        <RELEASE>.g1680560
 %else
 Release:        0
 %endif

kernel-vanilla.spec: same change
++++++ config.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/config/arm64/default new/config/arm64/default
--- old/config/arm64/default    2017-01-16 13:47:23.000000000 +0100
+++ new/config/arm64/default    2017-01-31 10:54:22.000000000 +0100
@@ -1,6 +1,6 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/arm64 4.9.4 Kernel Configuration
+# Linux/arm64 4.9.6 Kernel Configuration
 #
 CONFIG_ARM64=y
 CONFIG_64BIT=y
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/config/armv6hl/default new/config/armv6hl/default
--- old/config/armv6hl/default  2017-01-16 13:47:23.000000000 +0100
+++ new/config/armv6hl/default  2017-01-31 10:54:22.000000000 +0100
@@ -1,6 +1,6 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/arm 4.9.4 Kernel Configuration
+# Linux/arm 4.9.6 Kernel Configuration
 #
 CONFIG_ARM=y
 CONFIG_ARM_HAS_SG_CHAIN=y
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/config/armv7hl/default new/config/armv7hl/default
--- old/config/armv7hl/default  2017-01-16 13:47:23.000000000 +0100
+++ new/config/armv7hl/default  2017-01-31 10:54:22.000000000 +0100
@@ -1,6 +1,6 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/arm 4.9.4 Kernel Configuration
+# Linux/arm 4.9.6 Kernel Configuration
 #
 CONFIG_ARM=y
 CONFIG_ARM_HAS_SG_CHAIN=y
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/config/armv7hl/lpae new/config/armv7hl/lpae
--- old/config/armv7hl/lpae     2017-01-16 13:47:23.000000000 +0100
+++ new/config/armv7hl/lpae     2017-01-31 10:54:22.000000000 +0100
@@ -1,6 +1,6 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/arm 4.9.4 Kernel Configuration
+# Linux/arm 4.9.6 Kernel Configuration
 #
 CONFIG_ARM=y
 CONFIG_ARM_HAS_SG_CHAIN=y
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/config/i386/debug new/config/i386/debug
--- old/config/i386/debug       2017-01-16 13:47:23.000000000 +0100
+++ new/config/i386/debug       2017-01-31 10:54:22.000000000 +0100
@@ -1,6 +1,6 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/i386 4.9.4 Kernel Configuration
+# Linux/i386 4.9.6 Kernel Configuration
 #
 # CONFIG_64BIT is not set
 CONFIG_X86_32=y
@@ -7678,7 +7678,7 @@
 CONFIG_PRINTK_TIME=y
 CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
 CONFIG_UNWIND_INFO=y
-CONFIG_STACK_UNWIND=y
+CONFIG_DWARF_UNWIND=y
 # CONFIG_BOOT_PRINTK_DELAY is not set
 CONFIG_DYNAMIC_DEBUG=y
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/config/i386/default new/config/i386/default
--- old/config/i386/default     2017-01-16 13:47:23.000000000 +0100
+++ new/config/i386/default     2017-01-31 10:54:22.000000000 +0100
@@ -1,6 +1,6 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/i386 4.9.4 Kernel Configuration
+# Linux/i386 4.9.6 Kernel Configuration
 #
 # CONFIG_64BIT is not set
 CONFIG_X86_32=y
@@ -7735,7 +7735,7 @@
 CONFIG_PRINTK_TIME=y
 CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
 CONFIG_UNWIND_INFO=y
-CONFIG_STACK_UNWIND=y
+CONFIG_DWARF_UNWIND=y
 # CONFIG_BOOT_PRINTK_DELAY is not set
 CONFIG_DYNAMIC_DEBUG=y
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/config/i386/pae new/config/i386/pae
--- old/config/i386/pae 2017-01-16 13:47:23.000000000 +0100
+++ new/config/i386/pae 2017-01-31 10:54:22.000000000 +0100
@@ -1,6 +1,6 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/i386 4.9.4 Kernel Configuration
+# Linux/i386 4.9.6 Kernel Configuration
 #
 # CONFIG_64BIT is not set
 CONFIG_X86_32=y
@@ -7527,7 +7527,7 @@
 CONFIG_PRINTK_TIME=y
 CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
 CONFIG_UNWIND_INFO=y
-CONFIG_STACK_UNWIND=y
+CONFIG_DWARF_UNWIND=y
 # CONFIG_BOOT_PRINTK_DELAY is not set
 CONFIG_DYNAMIC_DEBUG=y
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/config/ppc64/debug new/config/ppc64/debug
--- old/config/ppc64/debug      2017-01-16 13:47:23.000000000 +0100
+++ new/config/ppc64/debug      2017-01-31 10:54:22.000000000 +0100
@@ -1,6 +1,6 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/powerpc 4.9.4 Kernel Configuration
+# Linux/powerpc 4.9.6 Kernel Configuration
 #
 CONFIG_PPC64=y
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/config/ppc64/default new/config/ppc64/default
--- old/config/ppc64/default    2017-01-16 13:47:23.000000000 +0100
+++ new/config/ppc64/default    2017-01-31 10:54:22.000000000 +0100
@@ -1,6 +1,6 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/powerpc 4.9.4 Kernel Configuration
+# Linux/powerpc 4.9.6 Kernel Configuration
 #
 CONFIG_PPC64=y
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/config/ppc64le/debug new/config/ppc64le/debug
--- old/config/ppc64le/debug    2017-01-16 13:47:23.000000000 +0100
+++ new/config/ppc64le/debug    2017-01-31 10:54:22.000000000 +0100
@@ -1,6 +1,6 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/powerpc 4.9.4 Kernel Configuration
+# Linux/powerpc 4.9.6 Kernel Configuration
 #
 CONFIG_PPC64=y
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/config/ppc64le/default new/config/ppc64le/default
--- old/config/ppc64le/default  2017-01-16 13:47:23.000000000 +0100
+++ new/config/ppc64le/default  2017-01-31 10:54:22.000000000 +0100
@@ -1,6 +1,6 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/powerpc 4.9.4 Kernel Configuration
+# Linux/powerpc 4.9.6 Kernel Configuration
 #
 CONFIG_PPC64=y
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/config/s390x/default new/config/s390x/default
--- old/config/s390x/default    2017-01-16 13:47:23.000000000 +0100
+++ new/config/s390x/default    2017-01-31 10:54:22.000000000 +0100
@@ -1,6 +1,6 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/s390 4.9.4 Kernel Configuration
+# Linux/s390 4.9.6 Kernel Configuration
 #
 CONFIG_MMU=y
 CONFIG_ZONE_DMA=y
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/config/x86_64/debug new/config/x86_64/debug
--- old/config/x86_64/debug     2017-01-16 13:47:23.000000000 +0100
+++ new/config/x86_64/debug     2017-01-31 10:54:22.000000000 +0100
@@ -1,6 +1,6 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/x86_64 4.9.4 Kernel Configuration
+# Linux/x86_64 4.9.6 Kernel Configuration
 #
 CONFIG_64BIT=y
 CONFIG_X86_64=y
@@ -7544,7 +7544,7 @@
 CONFIG_PRINTK_TIME=y
 CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
 CONFIG_UNWIND_INFO=y
-CONFIG_STACK_UNWIND=y
+CONFIG_DWARF_UNWIND=y
 # CONFIG_BOOT_PRINTK_DELAY is not set
 CONFIG_DYNAMIC_DEBUG=y
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/config/x86_64/default new/config/x86_64/default
--- old/config/x86_64/default   2017-01-16 13:47:23.000000000 +0100
+++ new/config/x86_64/default   2017-01-31 10:54:22.000000000 +0100
@@ -1,6 +1,6 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/x86_64 4.9.4 Kernel Configuration
+# Linux/x86_64 4.9.6 Kernel Configuration
 #
 CONFIG_64BIT=y
 CONFIG_X86_64=y
@@ -7531,7 +7531,7 @@
 CONFIG_PRINTK_TIME=y
 CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
 CONFIG_UNWIND_INFO=y
-CONFIG_STACK_UNWIND=y
+CONFIG_DWARF_UNWIND=y
 # CONFIG_BOOT_PRINTK_DELAY is not set
 CONFIG_DYNAMIC_DEBUG=y
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/config/x86_64/syzkaller new/config/x86_64/syzkaller
--- old/config/x86_64/syzkaller 2017-01-16 13:47:23.000000000 +0100
+++ new/config/x86_64/syzkaller 2017-01-31 10:54:22.000000000 +0100
@@ -7,6 +7,7 @@
 CONFIG_DEBUG_LOCK_ALLOC=y
 CONFIG_DEBUG_MUTEXES=y
 CONFIG_DEBUG_SPINLOCK=y
+# CONFIG_DWARF_UNWIND is not set
 CONFIG_GCC_PLUGIN_SANCOV=y
 CONFIG_HAVE_ALIGNED_STRUCT_PAGE=y
 # CONFIG_HAVE_BOOTMEM_INFO_NODE is not set
@@ -21,6 +22,7 @@
 CONFIG_PROVE_LOCKING=y
 CONFIG_PROVE_RCU=y
 # CONFIG_PROVE_RCU_REPEATEDLY is not set
+CONFIG_SCHED_OMIT_FRAME_POINTER=y
 # CONFIG_SLAB is not set
 CONFIG_SLUB=y
 CONFIG_SLUB_CPU_PARTIAL=y

++++++ patches.drivers.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/patches.drivers/drm-Fix-broken-VT-switch-with-video-1366x768-option 
new/patches.drivers/drm-Fix-broken-VT-switch-with-video-1366x768-option
--- old/patches.drivers/drm-Fix-broken-VT-switch-with-video-1366x768-option     
2017-01-25 16:53:18.000000000 +0100
+++ new/patches.drivers/drm-Fix-broken-VT-switch-with-video-1366x768-option     
1970-01-01 01:00:00.000000000 +0100
@@ -1,71 +0,0 @@
-From fdf35a6b22247746a7053fc764d04218a9306f82 Mon Sep 17 00:00:00 2001
-From: Takashi Iwai <ti...@suse.de>
-Date: Mon, 9 Jan 2017 15:56:14 +0100
-Subject: [PATCH] drm: Fix broken VT switch with video=1366x768 option
-Mime-version: 1.0
-Content-type: text/plain; charset=UTF-8
-Content-transfer-encoding: 8bit
-Git-commit: fdf35a6b22247746a7053fc764d04218a9306f82
-References: bsc#1018358
-Git-repo: git://anongit.freedesktop.org/git/drm-misc
-Patch-mainline: Queued in subsystem maintainer repository
-
-I noticed that the VT switch doesn't work any longer with a Dell
-laptop with 1366x768 eDP when the machine is connected with a DP
-monitor.  It behaves as if VT were switched, but the graphics remain
-frozen.  Actually the keyboard works, so I could switch back to VT7
-again.
-
-I tried to track down the problem, and encountered a long story until
-we reach to this error:
-
-- The machine is booted with video=1366x768 option (the distro
-  installer seems to add it as default).
-- Recently, drm_helper_probe_single_connector_modes() deals with
-  cmdline modes, and it tries to create a new mode when no
-  matching mode is found.
-- The drm_mode_create_from_cmdline_mode() creates a mode based on
-  either CVT of GFT according to the given cmdline mode; in our case,
-  it's 1366x768.
-- Since both CVT and GFT can't express the width 1366 due to
-  alignment, the resultant mode becomes 1368x768, slightly larger than
-  the given size.
-- Later on, the atomic commit is performed, and in
-  drm_atomic_check_only(), the size of each plane is checked.
-- The size check of 1366x768 fails due to the above, and eventually
-  the whole VT switch fails.
-
-Back in the history, we've had a manual fix-up of 1368x768 in various
-places via c09dedb7a50e ("drm/edid: Add a workaround for 1366x768 HD
-panel"), but they have been all in drm_edid.c at probing the modes
-from EDID.  For addressing the problem above, we need a similar hack
-to the mode newly created from cmdline, manually adjusting the width
-when the expected size is 1366 while we get 1368 instead.
-
-Fixes: eaf99c749d43 ("drm: Perform cmdline mode parsing during...")
-Cc: <sta...@vger.kernel.org>
-Signed-off-by: Takashi Iwai <ti...@suse.de>
-Link: 
http://patchwork.freedesktop.org/patch/msgid/20170109145614.29454-1-ti...@suse.de
-Reviewed-by: Ville Syrjälä <ville.syrj...@linux.intel.com>
-Signed-off-by: Ville Syrjälä <ville.syrj...@linux.intel.com>
-
----
- drivers/gpu/drm/drm_modes.c |    7 +++++++
- 1 file changed, 7 insertions(+)
-
---- a/drivers/gpu/drm/drm_modes.c
-+++ b/drivers/gpu/drm/drm_modes.c
-@@ -1466,6 +1466,13 @@ drm_mode_create_from_cmdline_mode(struct
-               return NULL;
- 
-       mode->type |= DRM_MODE_TYPE_USERDEF;
-+      /* fix up 1368x768: GFT/CVT can't express 1366 width due to alignment */
-+      if (cmd->xres == 1366 && mode->hdisplay == 1368) {
-+              mode->hdisplay = 1366;
-+              mode->hsync_start--;
-+              mode->hsync_end--;
-+              drm_mode_set_name(mode);
-+      }
-       drm_mode_set_crtcinfo(mode, CRTC_INTERLACE_HALVE_V);
-       return mode;
- }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/patches.drivers/drm-reference-count-event-completion 
new/patches.drivers/drm-reference-count-event-completion
--- old/patches.drivers/drm-reference-count-event-completion    1970-01-01 
01:00:00.000000000 +0100
+++ new/patches.drivers/drm-reference-count-event-completion    2017-02-01 
09:00:07.000000000 +0100
@@ -0,0 +1,99 @@
+From 24835e442f289813aa568d142a755672a740503c Mon Sep 17 00:00:00 2001
+From: Daniel Vetter <daniel.vet...@ffwll.ch>
+Date: Wed, 21 Dec 2016 11:23:30 +0100
+Subject: [PATCH] drm: reference count event->completion
+Git-commit: 24835e442f289813aa568d142a755672a740503c
+References: bsc#1013576
+Git-repo: git://anongit.freedesktop.org/drm-intel
+Patch-mainline: Queued in subsystem maintainer repository
+
+When writing the generic nonblocking commit code I assumed that
+through clever lifetime management I can assure that the completion
+(stored in drm_crtc_commit) only gets freed after it is completed. And
+that worked.
+
+I also wanted to make nonblocking helpers resilient against driver
+bugs, by having timeouts everywhere. And that worked too.
+
+Unfortunately taking boths things together results in oopses :( Well,
+at least sometimes: What seems to happen is that the drm event hangs
+around forever stuck in limbo land. The nonblocking helpers eventually
+time out, move on and release it. Now the bug I tested all this
+against is drivers that just entirely fail to deliver the vblank
+events like they should, and in those cases the event is simply
+leaked. But what seems to happen, at least sometimes, on i915 is that
+the event is set up correctly, but somohow the vblank fails to fire in
+time. Which means the event isn't leaked, it's still there waiting for
+eventually a vblank to fire. That tends to happen when re-enabling the
+pipe, and then the trap springs and the kernel oopses.
+
+The correct fix here is simply to refcount the crtc commit to make
+sure that the event sticks around even for drivers which only
+sometimes fail to deliver vblanks for some arbitrary reasons. Since
+crtc commits are already refcounted that's easy to do.
+
+Reference: https://bugs.freedesktop.org/show_bug.cgi?id=96781
+Cc: Jim Rees <r...@umich.edu>
+Cc: Chris Wilson <ch...@chris-wilson.co.uk>
+Cc: Maarten Lankhorst <maarten.lankho...@linux.intel.com>
+Cc: Jani Nikula <jani.nik...@linux.intel.com>
+Reviewed-by: Maarten Lankhorst <maarten.lankho...@linux.intel.com>
+Signed-off-by: Daniel Vetter <daniel.vet...@intel.com>
+Link: 
http://patchwork.freedesktop.org/patch/msgid/20161221102331.31033-1-daniel.vet...@ffwll.ch
+Acked-by: Takashi Iwai <ti...@suse.de>
+
+---
+ drivers/gpu/drm/drm_atomic_helper.c |   11 +++++++++++
+ drivers/gpu/drm/drm_fops.c          |    2 +-
+ include/drm/drmP.h                  |    1 +
+ 3 files changed, 13 insertions(+), 1 deletion(-)
+
+--- a/drivers/gpu/drm/drm_atomic_helper.c
++++ b/drivers/gpu/drm/drm_atomic_helper.c
+@@ -1382,6 +1382,15 @@ static int stall_checks(struct drm_crtc
+       return ret < 0 ? ret : 0;
+ }
+ 
++void release_crtc_commit(struct completion *completion)
++{
++      struct drm_crtc_commit *commit = container_of(completion,
++                                                    typeof(*commit),
++                                                    flip_done);
++
++      drm_crtc_commit_put(commit);
++}
++
+ /**
+  * drm_atomic_helper_setup_commit - setup possibly nonblocking commit
+  * @state: new modeset state to be committed
+@@ -1474,6 +1483,8 @@ int drm_atomic_helper_setup_commit(struc
+               }
+ 
+               crtc_state->event->base.completion = &commit->flip_done;
++              crtc_state->event->base.completion_release = 
release_crtc_commit;
++              drm_crtc_commit_get(commit);
+       }
+ 
+       return 0;
+--- a/drivers/gpu/drm/drm_fops.c
++++ b/drivers/gpu/drm/drm_fops.c
+@@ -686,8 +686,8 @@ void drm_send_event_locked(struct drm_de
+       assert_spin_locked(&dev->event_lock);
+ 
+       if (e->completion) {
+-              /* ->completion might disappear as soon as it signalled. */
+               complete_all(e->completion);
++              e->completion_release(e->completion);
+               e->completion = NULL;
+       }
+ 
+--- a/include/drm/drmP.h
++++ b/include/drm/drmP.h
+@@ -361,6 +361,7 @@ struct drm_ioctl_desc {
+ /* Event queued up for userspace to read */
+ struct drm_pending_event {
+       struct completion *completion;
++      void (*completion_release)(struct completion *completion);
+       struct drm_event *event;
+       struct fence *fence;
+       struct list_head link;

++++++ patches.fixes.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/patches.fixes/PCI-ASPM-Handle-PCI-to-PCIe-bridges-as-roots-of-PCIe 
new/patches.fixes/PCI-ASPM-Handle-PCI-to-PCIe-bridges-as-roots-of-PCIe
--- old/patches.fixes/PCI-ASPM-Handle-PCI-to-PCIe-bridges-as-roots-of-PCIe      
1970-01-01 01:00:00.000000000 +0100
+++ new/patches.fixes/PCI-ASPM-Handle-PCI-to-PCIe-bridges-as-roots-of-PCIe      
2017-02-01 09:00:07.000000000 +0100
@@ -0,0 +1,76 @@
+From 672980c62c684a625fe3a688ca8c6214062d712b Mon Sep 17 00:00:00 2001
+From: Bjorn Helgaas <bhelg...@google.com>
+Date: Fri, 27 Jan 2017 15:00:45 -0600
+Subject: [PATCH] PCI/ASPM: Handle PCI-to-PCIe bridges as roots of PCIe 
hierarchies
+Git-commit: 672980c62c684a625fe3a688ca8c6214062d712b
+References: bsc#1022181
+Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git
+Patch-mainline: Queued in subsystem maintainer repository
+
+In a struct pcie_link_state, link->root points to the pcie_link_state of
+the root of the PCIe hierarchy.  For the topmost link, this points to
+itself (link->root = link).  For others, we copy the pointer from the
+parent (link->root = link->parent->root).
+
+Previously we recognized that Root Ports originated PCIe hierarchies, but
+we treated PCI/PCI-X to PCIe Bridges as being in the middle of the
+hierarchy, and when we tried to copy the pointer from link->parent->root,
+there was no parent, and we dereferenced a NULL pointer:
+
+  BUG: unable to handle kernel NULL pointer dereference at 0000000000000090
+  IP: [<ffffffff9e424350>] pcie_aspm_init_link_state+0x170/0x820
+
+Recognize that PCI/PCI-X to PCIe Bridges originate PCIe hierarchies just
+like Root Ports do, so link->root for these devices should also point to
+itself.
+
+Fixes: 51ebfc92b72b ("PCI: Enumerate switches below PCI-to-PCIe bridges")
+Link: https://bugzilla.opensuse.org/show_bug.cgi?id=1022181
+Signed-off-by: Bjorn Helgaas <bhelg...@google.com>
+Acked-by: Takashi Iwai <ti...@suse.de>
+
+---
+ drivers/pci/pcie/aspm.c |   19 +++++++++++++------
+ 1 file changed, 13 insertions(+), 6 deletions(-)
+
+--- a/drivers/pci/pcie/aspm.c
++++ b/drivers/pci/pcie/aspm.c
+@@ -518,25 +518,32 @@ static struct pcie_link_state *alloc_pci
+       link = kzalloc(sizeof(*link), GFP_KERNEL);
+       if (!link)
+               return NULL;
++
+       INIT_LIST_HEAD(&link->sibling);
+       INIT_LIST_HEAD(&link->children);
+       INIT_LIST_HEAD(&link->link);
+       link->pdev = pdev;
+-      if (pci_pcie_type(pdev) != PCI_EXP_TYPE_ROOT_PORT) {
++
++      /*
++       * Root Ports and PCI/PCI-X to PCIe Bridges are roots of PCIe
++       * hierarchies.
++       */
++      if (pci_pcie_type(pdev) == PCI_EXP_TYPE_ROOT_PORT ||
++          pci_pcie_type(pdev) == PCI_EXP_TYPE_PCIE_BRIDGE) {
++              link->root = link;
++      } else {
+               struct pcie_link_state *parent;
++
+               parent = pdev->bus->parent->self->link_state;
+               if (!parent) {
+                       kfree(link);
+                       return NULL;
+               }
++
+               link->parent = parent;
++              link->root = link->parent->root;
+               list_add(&link->link, &parent->children);
+       }
+-      /* Setup a pointer to the root port link */
+-      if (!link->parent)
+-              link->root = link;
+-      else
+-              link->root = link->parent->root;
+ 
+       list_add(&link->sibling, &link_list);
+       pdev->link_state = link;

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

++++++ patches.suse.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/patches.suse/DWARF-EH-frame-based-stack-unwinding.patch 
new/patches.suse/DWARF-EH-frame-based-stack-unwinding.patch
--- old/patches.suse/DWARF-EH-frame-based-stack-unwinding.patch 2017-01-16 
13:47:23.000000000 +0100
+++ new/patches.suse/DWARF-EH-frame-based-stack-unwinding.patch 2017-01-31 
11:25:11.000000000 +0100
@@ -36,10 +36,10 @@
   kernel/unwind.c:672: warning: passing argument 2 of ‘probe_kernel_read’ 
makes pointer from integer without a cast
 Update Jan 03 2017 jslaby:
 - port to 4.9 -- the new unwind interface
+Update Jan 31 2017 jslaby:
+- fix build failures when disabled
 
 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).
 
@@ -51,7 +51,6 @@
  arch/x86/entry/calling.h          |   13 
  arch/x86/entry/entry_32.S         |   21 
  arch/x86/entry/entry_64.S         |   18 
- arch/x86/include/asm/stacktrace.h |    3 
  arch/x86/include/asm/unwind.h     |  164 +++
  arch/x86/kernel/Makefile          |    4 
  arch/x86/kernel/dumpstack.c       |   12 
@@ -60,16 +59,16 @@
  arch/x86/tools/relocs.c           |    1 
  include/asm-generic/vmlinux.lds.h |   22 
  include/linux/module.h            |    3 
- include/linux/unwind.h            |   93 ++
+ include/linux/unwind.h            |   75 +
  init/main.c                       |    3 
  kernel/Makefile                   |    1 
+ kernel/dwarf.c                    | 1690 
++++++++++++++++++++++++++++++++++++++
  kernel/module.c                   |   32 
- kernel/unwind.c                   | 1685 
++++++++++++++++++++++++++++++++++++++
  lib/Kconfig.debug                 |   24 
- 21 files changed, 2288 insertions(+), 7 deletions(-)
+ 20 files changed, 2272 insertions(+), 7 deletions(-)
  create mode 100644 arch/x86/kernel/unwind_dwarf.c
  create mode 100644 include/linux/unwind.h
- create mode 100644 kernel/unwind.c
+ create mode 100644 kernel/dwarf.c
 
 --- a/Makefile
 +++ b/Makefile
@@ -92,7 +91,7 @@
        def_bool y
        prompt "Single-depth WCHAN output"
 -      depends on X86
-+      depends on X86 && !STACK_UNWIND
++      depends on X86 && !DWARF_UNWIND
        ---help---
          Calculate simpler /proc/<PID>/wchan values. If this option
          is disabled then wchan values will recurse back to the
@@ -136,8 +135,8 @@
        jmp     2b
  END(ret_from_fork)
  
-+#ifdef CONFIG_STACK_UNWIND
-+ENTRY(arch_unwind_init_running)
++#ifdef CONFIG_DWARF_UNWIND
++ENTRY(arch_dwarf_init_running)
 +      movl    4(%esp), %edx
 +      movl    (%esp), %ecx
 +      movl    %ecx, PT_EIP(%edx)
@@ -154,7 +153,7 @@
 +      movl    $__KERNEL_STACK_CANARY, PT_GS(%edx)
 +      movl    $__KERNEL_DS, PT_OLDSS(%edx)
 +      ret
-+ENDPROC(arch_unwind_init_running)
++ENDPROC(arch_dwarf_init_running)
 +#endif
 +
  /*
@@ -166,8 +165,8 @@
        ret
  END(do_softirq_own_stack)
  
-+#ifdef CONFIG_STACK_UNWIND
-+ENTRY(arch_unwind_init_running)
++#ifdef CONFIG_DWARF_UNWIND
++ENTRY(arch_dwarf_init_running)
 +      movq    %r15, R15(%rdi)
 +      movq    %r14, R14(%rdi)
 +      movq    %r13, R13(%rdi)
@@ -181,24 +180,12 @@
 +      movq    $__KERNEL_CS, CS(%rdi)
 +      movq    $__KERNEL_DS, SS(%rdi)
 +      ret
-+END(arch_unwind_init_running)
++END(arch_dwarf_init_running)
 +#endif
 +
  #ifdef CONFIG_XEN
  idtentry xen_hypervisor_callback xen_do_hypervisor_callback has_error_code=0
  
---- a/arch/x86/include/asm/stacktrace.h
-+++ b/arch/x86/include/asm/stacktrace.h
-@@ -89,6 +89,9 @@ void show_trace_log_lvl(struct task_stru
- void show_stack_log_lvl(struct task_struct *task, struct pt_regs *regs,
-                       unsigned long *sp, char *log_lvl);
- 
-+int try_stack_unwind(struct task_struct *task, struct pt_regs *regs,
-+                   unsigned long **stack, unsigned long *bp);
-+
- extern unsigned int code_bytes;
- 
- /* The form of the top of the frame on the stack */
 --- a/arch/x86/include/asm/unwind.h
 +++ b/arch/x86/include/asm/unwind.h
 @@ -11,7 +11,15 @@ struct unwind_state {
@@ -206,7 +193,7 @@
        struct task_struct *task;
        int graph_idx;
 -#ifdef CONFIG_FRAME_POINTER
-+#ifdef CONFIG_STACK_UNWIND
++#ifdef CONFIG_DWARF_UNWIND
 +      union {
 +              struct pt_regs regs;
 +              char regs_arr[sizeof(struct pt_regs)];
@@ -222,7 +209,7 @@
        __unwind_start(state, task, regs, first_frame);
  }
  
-+#ifdef CONFIG_STACK_UNWIND
++#ifdef CONFIG_DWARF_UNWIND
 +
 +#define UNW_PC(frame)      ((frame)->u.regs.ip)
 +#define UNW_SP(frame)      ((frame)->u.regs.sp)
@@ -276,7 +263,7 @@
 + * The code below is released under version 2 of the GNU GPL.
 + */
 +
-+#ifdef CONFIG_STACK_UNWIND
++#ifdef CONFIG_DWARF_UNWIND
 +
 +#include <linux/uaccess.h>
 +
@@ -326,8 +313,8 @@
 +      ((raItem).where == Memory && \
 +       !((raItem).value * (dataAlign) + sizeof(void *)))
 +
-+static inline void arch_unw_init_frame_info(struct unwind_state *info,
-+                                          struct pt_regs *regs)
++static inline void arch_dwarf_init_frame_info(struct unwind_state *info,
++              struct pt_regs *regs)
 +{
 +#ifdef CONFIG_X86_64
 +      info->u.regs = *regs;
@@ -342,7 +329,7 @@
 +#endif
 +}
 +
-+static inline void arch_unw_init_blocked(struct unwind_state *info)
++static inline void arch_dwarf_init_blocked(struct unwind_state *info)
 +{
 +      struct inactive_task_frame *frame = (void *)info->task->thread.sp;
 +
@@ -357,7 +344,7 @@
 +#endif
 +}
 +
-+static inline int arch_unw_user_mode(struct unwind_state *info)
++static inline int arch_dwarf_user_mode(struct unwind_state *info)
 +{
 +      return user_mode(&info->u.regs)
 +#ifdef CONFIG_X86_64
@@ -377,7 +364,7 @@
 +#define UNW_SP(frame) ((void)(frame), 0UL)
 +#define UNW_FP(frame) ((void)(frame), 0UL)
 +
-+static inline int arch_unw_user_mode(const void *info)
++static inline int arch_dwarf_user_mode(const void *info)
 +{
 +      return 0;
 +}
@@ -391,7 +378,7 @@
  obj-$(CONFIG_PERF_EVENTS)             += perf_regs.o
  obj-$(CONFIG_TRACING)                 += tracepoint.o
  
-+ifdef CONFIG_STACK_UNWIND
++ifdef CONFIG_DWARF_UNWIND
 +obj-y                                 += unwind_dwarf.o
 +else
  ifdef CONFIG_FRAME_POINTER
@@ -437,7 +424,7 @@
 +#include <linux/unwind.h>
 +
 +#if 0
-+#ifdef CONFIG_STACK_UNWIND
++#ifdef CONFIG_DWARF_UNWIND
 +static int call_trace = 1;
 +#else
 +#define call_trace (-1)
@@ -467,14 +454,14 @@
 +      if (unwind_done(state))
 +              return false;
 +
-+      if (arch_unw_user_mode(state))
++      if (arch_dwarf_user_mode(state))
 +              return false;
 +
 +      if ((state->dw_sp & PAGE_MASK) == (UNW_SP(state) & PAGE_MASK) &&
 +                      state->dw_sp > UNW_SP(state))
 +              return false;
 +
-+      if (unwind(state) || !UNW_PC(state))
++      if (dwarf_unwind(state) || !UNW_PC(state))
 +              return false;
 +
 +      state->dw_sp = UNW_SP(state);
@@ -493,10 +480,10 @@
 +      state->task = task;
 +
 +      if (regs) {
-+              arch_unw_init_frame_info(state, regs);
++              arch_dwarf_init_frame_info(state, regs);
 +              type = 'R';
 +      } else if (task == current) {
-+              arch_unwind_init_running(&state->u.regs);
++              arch_dwarf_init_running(&state->u.regs);
 +              type = 'C';
 +#ifdef CONFIG_SMP
 +      } else if (task->on_cpu) {
@@ -504,7 +491,7 @@
 +              return;
 +#endif
 +      } else {
-+              arch_unw_init_blocked(state);
++              arch_dwarf_init_blocked(state);
 +              type = 'B';
 +              do_skipping = false;
 +      }
@@ -518,7 +505,7 @@
 +
 +      state->dw_sp = UNW_SP(state);
 +
-+      if (arch_unw_user_mode(state))
++      if (arch_dwarf_user_mode(state))
 +              return;
 +
 +      while (do_skipping) {
@@ -544,12 +531,12 @@
 +      pr_info("%s: tady rip=%lx rsp=%lx rbp=%lx\n", __func__,
 +                      UNW_PC(state), UNW_SP(state), UNW_FP(state));
 +
-+      if (arch_unw_user_mode(state))
++      if (arch_dwarf_user_mode(state))
 +              return -1;
 +      while (unwind(state) == 0 && UNW_PC(state)) {
 +              pr_info("%s: %pS\n", __func__, (void *)UNW_PC(state));
 +//            ops->address(data, UNW_PC(state), 1);
-+              if (arch_unw_user_mode(state))
++              if (arch_dwarf_user_mode(state))
 +                      break;
 +              if ((sp & PAGE_MASK) == (UNW_SP(state) & PAGE_MASK) &&
 +                              sp > UNW_SP(state))
@@ -562,7 +549,7 @@
 +int try_stack_unwind(struct task_struct *task, struct pt_regs *regs,
 +                   unsigned long **stack, unsigned long *bp)
 +{
-+#ifdef CONFIG_STACK_UNWIND
++#ifdef CONFIG_DWARF_UNWIND
 +      int unw_ret = 0;
 +      struct unwind_state state;
 +
@@ -575,7 +562,7 @@
 +      unw_ret = dump_trace_unwind(&state);
 +
 +      if (unw_ret > 0) {
-+              if (call_trace == 1 && !arch_unw_user_mode(&state)) {
++              if (call_trace == 1 && !arch_dwarf_user_mode(&state)) {
 +//                    ops->warning_symbol(data, "DWARF2 unwinder stuck at 
%s\n",
 +//                                        UNW_PC(&state));
 +                      pr_info("%s: DWARF2 unwinder stuck at %lx %pS\n",
@@ -600,7 +587,7 @@
 +      return 0;
 +}
 +
-+#ifdef CONFIG_STACK_UNWIND
++#ifdef CONFIG_DWARF_UNWIND
 +static int __init call_trace_setup(char *s)
 +{
 +      if (!s)
@@ -657,7 +644,7 @@
        . = ALIGN(stop_align);                                          \
        VMLINUX_SYMBOL(__bss_stop) = .;
 +
-+#ifdef CONFIG_STACK_UNWIND
++#ifdef CONFIG_DWARF_UNWIND
 +#define EH_FRAME                                                      \
 +              /* Unwind data binary search table */                   \
 +              . = ALIGN(8);                                           \
@@ -682,15 +669,15 @@
        struct module_layout core_layout __module_layout_align;
        struct module_layout init_layout;
  
-+      /* The handle returned from unwind_add_table. */
-+      void *unwind_info;
++      /* The handle returned from dwarf_add_table. */
++      void *dwarf_info;
 +
        /* Arch-specific module values */
        struct mod_arch_specific arch;
  
 --- /dev/null
 +++ b/include/linux/unwind.h
-@@ -0,0 +1,93 @@
+@@ -0,0 +1,75 @@
 +#ifndef _LINUX_UNWIND_H
 +#define _LINUX_UNWIND_H
 +
@@ -707,81 +694,63 @@
 +
 +#include <linux/linkage.h>
 +
++#ifdef CONFIG_X86
++#include <asm/unwind.h>
++#endif
++
 +struct module;
-+struct unwind_state;
 +
-+#ifdef CONFIG_STACK_UNWIND
++#ifdef CONFIG_DWARF_UNWIND
 +
-+#include <asm/unwind.h>
 +#include <asm/stacktrace.h>
 +
-+#ifndef ARCH_UNWIND_SECTION_NAME
-+#define ARCH_UNWIND_SECTION_NAME ".eh_frame"
++#ifndef ARCH_DWARF_SECTION_NAME
++#define ARCH_DWARF_SECTION_NAME ".eh_frame"
 +#endif
 +
 +/*
 + * Initialize unwind support.
 + */
-+void unwind_init(void);
-+void unwind_setup(void);
++void dwarf_init(void);
++void dwarf_setup(void);
 +
 +#ifdef CONFIG_MODULES
 +
-+void *unwind_add_table(struct module *mod, const void *table_start,
++void *dwarf_add_table(struct module *mod, const void *table_start,
 +              unsigned long table_size);
 +
-+void unwind_remove_table(void *handle, bool init_only);
++void dwarf_remove_table(void *handle, bool init_only);
 +
 +#endif
 +
-+asmlinkage void arch_unwind_init_running(struct pt_regs *regs);
++asmlinkage void arch_dwarf_init_running(struct pt_regs *regs);
 +
 +/*
 + * Unwind to previous to frame.  Returns 0 if successful, negative
 + * number in case of an error.
 + */
-+int unwind(struct unwind_state *state);
++int dwarf_unwind(struct unwind_state *state);
 +
-+/*
-+ * Unwind until the return pointer is in user-land (or until an error
-+ * occurs).  Returns 0 if successful, negative number in case of
-+ * error.
-+ */
-+int unwind_to_user(struct unwind_state *state);
-+
-+#else /* CONFIG_STACK_UNWIND */
++#else /* CONFIG_DWARF_UNWIND */
 +
-+struct unwind_state {};
-+
-+static inline void unwind_init(void) {}
-+static inline void unwind_setup(void) {}
++static inline void dwarf_init(void) {}
++static inline void dwarf_setup(void) {}
 +
 +#ifdef CONFIG_MODULES
 +
-+static inline void *unwind_add_table(struct module *mod,
-+                                   const void *table_start,
-+                                   unsigned long table_size)
++static inline void *dwarf_add_table(struct module *mod,
++              const void *table_start, unsigned long table_size)
 +{
 +      return NULL;
 +}
 +
-+#endif
-+
-+static inline void unwind_remove_table(void *handle, bool init_only)
-+{
-+}
-+
-+static inline int unwind(struct unwind_state *info)
++static inline void dwarf_remove_table(void *handle, bool init_only)
 +{
-+      return -ENODEV;
 +}
 +
-+static inline int unwind_to_user(struct unwind_state *info)
-+{
-+      return -ENODEV;
-+}
++#endif
 +
-+#endif /* CONFIG_STACK_UNWIND */
++#endif /* CONFIG_DWARF_UNWIND */
 +
 +#endif /* _LINUX_UNWIND_H */
 --- a/init/main.c
@@ -798,7 +767,7 @@
        char *command_line;
        char *after_dashes;
  
-+      unwind_init();
++      dwarf_init();
        set_task_stack_end_magic(&init_task);
        smp_setup_processor_id();
        debug_objects_early_init();
@@ -806,7 +775,7 @@
        setup_arch(&command_line);
        mm_init_cpumask(&init_mm);
        setup_command_line(command_line);
-+      unwind_setup();
++      dwarf_setup();
        setup_nr_cpu_ids();
        setup_per_cpu_areas();
        boot_cpu_state_init();
@@ -816,96 +785,13 @@
  obj-$(CONFIG_MODULES) += module.o
  obj-$(CONFIG_MODULE_SIG) += module_signing.o
  obj-$(CONFIG_KALLSYMS) += kallsyms.o
-+obj-$(CONFIG_STACK_UNWIND) += unwind.o
++obj-$(CONFIG_DWARF_UNWIND) += dwarf.o
  obj-$(CONFIG_BSD_PROCESS_ACCT) += acct.o
  obj-$(CONFIG_KEXEC_CORE) += kexec_core.o
  obj-$(CONFIG_KEXEC) += kexec.o
---- a/kernel/module.c
-+++ b/kernel/module.c
-@@ -45,6 +45,7 @@
- #include <linux/device.h>
- #include <linux/string.h>
- #include <linux/mutex.h>
-+#include <linux/unwind.h>
- #include <linux/rculist.h>
- #include <asm/uaccess.h>
- #include <asm/cacheflush.h>
-@@ -325,7 +326,7 @@ struct load_info {
-       unsigned long mod_kallsyms_init_off;
- #endif
-       struct {
--              unsigned int sym, str, mod, vers, info, pcpu;
-+              unsigned int sym, str, mod, vers, info, pcpu, unwind;
-       } index;
- };
- 
-@@ -745,6 +746,27 @@ bool is_module_percpu_address(unsigned l
- 
- #endif /* CONFIG_SMP */
- 
-+static unsigned int find_unwind(struct load_info *info)
-+{
-+      int section = 0;
-+#ifdef ARCH_UNWIND_SECTION_NAME
-+      section = find_sec(info, ARCH_UNWIND_SECTION_NAME);
-+      if (section)
-+              info->sechdrs[section].sh_flags |= SHF_ALLOC;
-+#endif
-+      return section;
-+}
-+
-+static void add_unwind_table(struct module *mod, struct load_info *info)
-+{
-+      int index = info->index.unwind;
-+
-+      /* Size of section 0 is 0, so this is ok if there is no unwind info. */
-+      mod->unwind_info = unwind_add_table(mod,
-+                                        (void *)info->sechdrs[index].sh_addr,
-+                                        info->sechdrs[index].sh_size);
-+}
-+
- #define MODINFO_ATTR(field)   \
- static void setup_modinfo_##field(struct module *mod, const char *s)  \
- {                                                                     \
-@@ -2181,6 +2203,8 @@ static void free_module(struct module *m
-       /* Remove dynamic debug info */
-       ddebug_remove_module(mod->name);
- 
-+      unwind_remove_table(mod->unwind_info, false);
-+
-       /* Arch-specific cleanup. */
-       module_arch_cleanup(mod);
- 
-@@ -3016,6 +3040,8 @@ static struct module *setup_load_info(st
- 
-       info->index.pcpu = find_pcpusec(info);
- 
-+      info->index.unwind = find_unwind(info);
-+
-       /* 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);
-@@ -3505,6 +3531,7 @@ static noinline int do_init_module(struc
-       /* Drop initial reference. */
-       module_put(mod);
-       trim_init_extable(mod);
-+      unwind_remove_table(mod->unwind_info, true);
- #ifdef CONFIG_KALLSYMS
-       /* Switch to core kallsyms now init is done: kallsyms may be walking! */
-       rcu_assign_pointer(mod->kallsyms, &mod->core_kallsyms);
-@@ -3778,6 +3805,9 @@ static int load_module(struct load_info
-                       goto sysfs_cleanup;
-       }
- 
-+      /* Initialize unwind table */
-+      add_unwind_table(mod, info);
-+
-       /* Get rid of temporary copy. */
-       free_copy(info);
- 
 --- /dev/null
-+++ b/kernel/unwind.c
-@@ -0,0 +1,1685 @@
++++ b/kernel/dwarf.c
+@@ -0,0 +1,1690 @@
 +/*
 + * Copyright (C) 2002-2006 Novell, Inc.
 + *    Jan Beulich <jbeul...@novell.com>
@@ -1149,11 +1035,15 @@
 +      table->size = table_size;
 +      /* See if the linker provided table looks valid. */
 +      if (header_size <= 4 || header_start[0] != 1 ||
++                      /* ptr to eh_frame */
 +                      (void *)read_pointer(&ptr, end, header_start[1], 0) !=
 +                              table_start ||
++                      /* fde count */
 +                      !read_pointer(&ptr, end, header_start[2], 0) ||
++                      /* table[0] -- initial location */
 +                      !read_pointer(&ptr, end, header_start[3],
 +                              (unsigned long)header_start) ||
++                      /* table[0] -- address */
 +                      !read_pointer(&ptr, end, header_start[3],
 +                              (unsigned long)header_start))
 +              header_start = NULL;
@@ -1164,7 +1054,7 @@
 +      table->name = name;
 +}
 +
-+void __init unwind_init(void)
++void __init dwarf_init(void)
 +{
 +      extern const char __start_unwind[], __end_unwind[];
 +      extern const char __start_unwind_hdr[], __end_unwind_hdr[];
@@ -1318,7 +1208,7 @@
 +                      __pa(MAX_DMA_ADDRESS));
 +}
 +
-+void __init unwind_setup(void)
++void __init dwarf_setup(void)
 +{
 +      setup_unwind_table(&root_table, balloc);
 +}
@@ -1328,9 +1218,8 @@
 +static struct unwind_table *last_table;
 +
 +/* Must be called with module_mutex held. */
-+void *unwind_add_table(struct module *module,
-+                     const void *table_start,
-+                     unsigned long table_size)
++void *dwarf_add_table(struct module *module, const void *table_start,
++              unsigned long table_size)
 +{
 +      struct unwind_table *table;
 +#ifdef CONFIG_DEBUG_SET_MODULE_RONX
@@ -1394,7 +1283,7 @@
 +}
 +
 +/* Must be called with module_mutex held. */
-+void unwind_remove_table(void *handle, bool init_only)
++void dwarf_remove_table(void *handle, bool init_only)
 +{
 +      struct unwind_table *table = handle;
 +      struct unlink_table_info info;
@@ -2053,7 +1942,7 @@
 +                      if (val1 < BITS_PER_LONG)
 +                              PUSH((long)val2 >> val1);
 +                      else
-+                              PUSH(val2 < 0 ? -1 : 0);
++                              PUSH((long)val2 < 0 ? -1 : 0);
 +                      break;
 +              case DW_OP_xor:
 +                      val1 = POP();
@@ -2065,7 +1954,7 @@
 +                              ++ptr.ps16;
 +                              break;
 +                      }
-+                      /*nobreak*/
++                      /* fallthrough */
 +              case DW_OP_skip:
 +                      if (ptr.pu8 + 1 < end) {
 +                              ptr.pu8 += *ptr.ps16;
@@ -2142,7 +2031,7 @@
 + * Unwind to previous to frame.  Returns 0 if successful, negative number in
 + * case of an error.
 + */
-+int unwind(struct unwind_state *frame)
++int dwarf_unwind(struct unwind_state *frame)
 +{
 +      const u32 *fde = NULL, *cie = NULL;
 +      const u8 *ptr = NULL, *end = NULL;
@@ -2572,8 +2461,9 @@
 +      return 0;
 +#undef CASES
 +}
-+EXPORT_SYMBOL_GPL(unwind);
++EXPORT_SYMBOL_GPL(dwarf_unwind);
 +
++#if 0
 +/*
 + * Unwind until the return pointer is in user-land (or until an error
 + * occurs).  Returns 0 if successful, negative number in case of
@@ -2591,6 +2481,90 @@
 +      return 0;
 +}
 +EXPORT_SYMBOL_GPL(unwind_to_user);
++#endif
+--- a/kernel/module.c
++++ b/kernel/module.c
+@@ -45,6 +45,7 @@
+ #include <linux/device.h>
+ #include <linux/string.h>
+ #include <linux/mutex.h>
++#include <linux/unwind.h>
+ #include <linux/rculist.h>
+ #include <asm/uaccess.h>
+ #include <asm/cacheflush.h>
+@@ -325,7 +326,7 @@ struct load_info {
+       unsigned long mod_kallsyms_init_off;
+ #endif
+       struct {
+-              unsigned int sym, str, mod, vers, info, pcpu;
++              unsigned int sym, str, mod, vers, info, pcpu, dwarf;
+       } index;
+ };
+ 
+@@ -745,6 +746,27 @@ bool is_module_percpu_address(unsigned l
+ 
+ #endif /* CONFIG_SMP */
+ 
++static unsigned int find_dwarf(struct load_info *info)
++{
++      unsigned int section = 0;
++#ifdef ARCH_DWARF_SECTION_NAME
++      section = find_sec(info, ARCH_DWARF_SECTION_NAME);
++      if (section)
++              info->sechdrs[section].sh_flags |= SHF_ALLOC;
++#endif
++      return section;
++}
++
++static void add_dwarf_table(struct module *mod, struct load_info *info)
++{
++      int index = info->index.dwarf;
++
++      /* Size of section 0 is 0, so this is ok if there is no dwarf info. */
++      mod->dwarf_info = dwarf_add_table(mod,
++                                        (void *)info->sechdrs[index].sh_addr,
++                                        info->sechdrs[index].sh_size);
++}
++
+ #define MODINFO_ATTR(field)   \
+ static void setup_modinfo_##field(struct module *mod, const char *s)  \
+ {                                                                     \
+@@ -2181,6 +2203,8 @@ static void free_module(struct module *m
+       /* Remove dynamic debug info */
+       ddebug_remove_module(mod->name);
+ 
++      dwarf_remove_table(mod->dwarf_info, false);
++
+       /* Arch-specific cleanup. */
+       module_arch_cleanup(mod);
+ 
+@@ -3016,6 +3040,8 @@ static struct module *setup_load_info(st
+ 
+       info->index.pcpu = find_pcpusec(info);
+ 
++      info->index.dwarf = find_dwarf(info);
++
+       /* 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);
+@@ -3505,6 +3531,7 @@ static noinline int do_init_module(struc
+       /* Drop initial reference. */
+       module_put(mod);
+       trim_init_extable(mod);
++      dwarf_remove_table(mod->dwarf_info, true);
+ #ifdef CONFIG_KALLSYMS
+       /* Switch to core kallsyms now init is done: kallsyms may be walking! */
+       rcu_assign_pointer(mod->kallsyms, &mod->core_kallsyms);
+@@ -3778,6 +3805,9 @@ static int load_module(struct load_info
+                       goto sysfs_cleanup;
+       }
+ 
++      /* Initialize dwarf table */
++      add_dwarf_table(mod, info);
++
+       /* Get rid of temporary copy. */
+       free_copy(info);
+ 
 --- a/lib/Kconfig.debug
 +++ b/lib/Kconfig.debug
 @@ -26,6 +26,24 @@ config MESSAGE_LOGLEVEL_DEFAULT
@@ -2607,8 +2581,8 @@
 +        If you don't debug the kernel, you can say N, but we may not be able
 +        to solve problems without frame unwind information or frame pointers.
 +
-+config STACK_UNWIND
-+      bool "Stack unwind support"
++config DWARF_UNWIND
++      bool "DWARF stack unwind support"
 +      depends on UNWIND_INFO
 +      depends on X86
 +      help
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/patches.suse/stack-unwind-disable-kasan.patch 
new/patches.suse/stack-unwind-disable-kasan.patch
--- old/patches.suse/stack-unwind-disable-kasan.patch   2017-01-16 
13:47:23.000000000 +0100
+++ new/patches.suse/stack-unwind-disable-kasan.patch   2017-01-31 
11:25:11.000000000 +0100
@@ -17,9 +17,9 @@
 
 --- a/arch/x86/kernel/Makefile
 +++ b/arch/x86/kernel/Makefile
-@@ -127,11 +127,14 @@ obj-$(CONFIG_SCHED_MC_PRIO)              += itmt.o
+@@ -126,11 +126,14 @@ obj-$(CONFIG_TRACING)                    += tracepoint.o
  
- ifdef CONFIG_STACK_UNWIND
+ ifdef CONFIG_DWARF_UNWIND
  obj-y                                 += unwind_dwarf.o
 +KASAN_SANITIZE_unwind_dwarf.o         := n
  else
@@ -38,12 +38,12 @@
  # and produce insane amounts of uninteresting coverage.
  KCOV_INSTRUMENT_module.o := n
  KCOV_INSTRUMENT_extable.o := n
-+KCOV_INSTRUMENT_unwind.o := n
++KCOV_INSTRUMENT_dwarf.o := n
  # Don't self-instrument.
  KCOV_INSTRUMENT_kcov.o := n
  KASAN_SANITIZE_kcov.o := n
  
-+KASAN_SANITIZE_unwind.o := n
++KASAN_SANITIZE_dwarf.o := n
 +
  # cond_syscall is currently not LTO compatible
  CFLAGS_sys_ni.o = $(DISABLE_LTO)

++++++ series.conf ++++++
--- /var/tmp/diff_new_pack.R95it5/_old  2017-02-04 17:58:47.070976422 +0100
+++ /var/tmp/diff_new_pack.R95it5/_new  2017-02-04 17:58:47.070976422 +0100
@@ -33,6 +33,7 @@
        patches.kernel.org/patch-4.9.3-4
        patches.kernel.org/patch-4.9.4-5
        patches.kernel.org/patch-4.9.5-6
+       patches.kernel.org/patch-4.9.6-7
 
        ########################################################
        # Build fixes that apply to the vanilla kernel too.
@@ -320,8 +321,8 @@
        ########################################################
        patches.fixes/drm-i915-Fix-S4-resume-breakage
        patches.fixes/drm-Use-u64-for-intermediate-dotclock-calculations.patch
-       patches.drivers/drm-Fix-broken-VT-switch-with-video-1366x768-option
        patches.drivers/drm-i915-execlists-Reset-RING-registers-upon-resume
+       patches.drivers/drm-reference-count-event-completion
 
        ########################################################
        # video4linux
@@ -349,6 +350,7 @@
        ########################################################
        # PCI and PCI hotplug
        ########################################################
+       patches.fixes/PCI-ASPM-Handle-PCI-to-PCIe-bridges-as-roots-of-PCIe
 
        ########################################################
        # sysfs / driver core

++++++ source-timestamp ++++++
--- /var/tmp/diff_new_pack.R95it5/_old  2017-02-04 17:58:47.102971847 +0100
+++ /var/tmp/diff_new_pack.R95it5/_new  2017-02-04 17:58:47.102971847 +0100
@@ -1,3 +1,3 @@
-2017-01-26 10:09:16 +0100
-GIT Revision: d1207acd578e29abf2edb35b13faf73558b673dd
+2017-02-01 09:00:07 +0100
+GIT Revision: 1680560ce7a0be7ed87673558a596a7b5bac2a5f
 GIT Branch: stable


Reply via email to