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