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 - jslaby@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 - jslaby@suse.cz
+
+- userns: Make ucounts lock irq-safe (bnc#1022792).
+- commit 4a049e6
+
+-------------------------------------------------------------------
+Tue Jan 31 11:25:11 CET 2017 - jslaby@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 - jslaby@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 - jslaby@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 - tiwai@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 - tiwai@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
-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:
-Signed-off-by: Takashi Iwai
-Link: http://patchwork.freedesktop.org/patch/msgid/20170109145614.29454-1-tiwai@su...
-Reviewed-by: Ville Syrjälä
-Signed-off-by: Ville Syrjälä
-
----
- 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
+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
+Cc: Chris Wilson
+Cc: Maarten Lankhorst
+Cc: Jani Nikula
+Reviewed-by: Maarten Lankhorst
+Signed-off-by: Daniel Vetter
+Link: http://patchwork.freedesktop.org/patch/msgid/20161221102331.31033-1-daniel.v...
+Acked-by: Takashi Iwai
+
+---
+ 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
+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
+Acked-by: Takashi Iwai
+
+---
+ 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
+
@@ -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
+
+#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
+
++#ifdef CONFIG_X86
++#include
++#endif
++
+struct module;
-+struct unwind_state;
+
-+#ifdef CONFIG_STACK_UNWIND
++#ifdef CONFIG_DWARF_UNWIND
+
-+#include
+#include
+
-+#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
- #include
- #include
-+#include
- #include
- #include
- #include
-@@ -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
@@ -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
+ #include
+ #include
++#include
+ #include
+ #include
+ #include
+@@ -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