Hello community, here is the log from the commit of package kernel-source for openSUSE:Factory checked in at 2016-03-08 09:38:36 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kernel-source (Old) and /work/SRC/openSUSE:Factory/.kernel-source.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kernel-source" Changes: -------- --- /work/SRC/openSUSE:Factory/kernel-source/kernel-debug.changes 2016-03-02 14:20:00.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.kernel-source.new/kernel-debug.changes 2016-03-08 09:38:37.000000000 +0100 @@ -1,0 +2,130 @@ +Fri Mar 4 09:13:43 CET 2016 - [email protected] + +- Update config files. (vanillas) +- commit 0c1f87e + +------------------------------------------------------------------- +Fri Mar 4 09:00:07 CET 2016 - [email protected] + +- Linux 4.4.4 (bnc#910440 bnc#968396 bnc#969064 boo#955096 + boo#961263 boo#961887 boo#967938 bsc#962535 bsc#966137). +- Delete + patches.drivers/0001-bcache-Add-a-cond_resched-call-to-gc.patch. +- Delete + patches.drivers/0002-bcache-BUG-clear-BCACHE_DEV_UNLINK_DONE-flag-when-at.patch. +- Delete + patches.drivers/0003-bcache-fix-a-livelock-in-btree-lock.patch. +- Delete + patches.drivers/0004-bcache-unregister-reboot-notifier-when-bcache-fails-.patch. +- Delete + patches.drivers/0005-fix-a-leak-in-bch_cached_dev_run.patch. +- Delete + patches.drivers/ALSA-hda-Apply-clock-gate-workaround-to-Skylake-too. +- Delete + patches.drivers/bcache-fix-writeback-thread-incomplete-stripes-starvation.patch. +- Delete + patches.drivers/drm-i915-shut-up-gen8-SDE-irq-dmesg-noise. +- Delete + patches.drivers/drm-radeon-Add-a-common-function-for-DFS-handling. +- Delete + patches.drivers/drm-radeon-Don-t-hang-in-radeon_flip_work_func-on-di. +- Delete + patches.drivers/drm-radeon-Fix-off-by-one-errors-in-radeon_vm_bo_set. +- Delete + patches.drivers/drm-radeon-Fix-slow-audio-over-DP-on-DCE8. +- Delete patches.drivers/drm-radeon-call-hpd_irq_event-on-resume. +- Delete + patches.drivers/drm-radeon-cleaned-up-VCO-output-settings-for-DP-aud. +- Delete + patches.drivers/drm-radeon-fix-DP-audio-support-for-APU-with-DCE4.1-. +- Delete + patches.drivers/drm-radeon-hold-reference-to-fences-in-radeon_sa_bo_. +- Delete + patches.drivers/drm-radeon-pm-adjust-display-configuration-after-pow. +- Delete + patches.drivers/drm-radeon-properly-byte-swap-vce-firmware-setup. +- Delete + patches.drivers/drm-radeon-use-post-decrement-in-error-handling. +- Delete + patches.fixes/drm-Fix-drm_vblank_pre-post_modeset-regression-from. +- Delete + patches.fixes/drm-Fix-treatment-of-drm_vblank_offdelay-in-drm_vbla. +- Delete + patches.fixes/drm-No-Op-redundant-calls-to-drm_vblank_off-v2. +- Delete + patches.fixes/drm-Prevent-vblank-counter-bumps-1-with-active-vblan. +- Delete + patches.fixes/drm-nouveau-display-Enable-vblank-irqs-after-display. +- Delete + patches.fixes/genirq-Validate-action-before-dereferencing-it-in-ha.patch. +- Delete + patches.fixes/sd-Optimal-I-O-size-is-in-bytes-not-sectors. +- Delete + patches.fixes/tcp-do-not-drop-syn_recv-on-all-icmp-reports.patch. +- Update config files. +- commit b719bbe + +------------------------------------------------------------------- +Fri Mar 4 08:54:21 CET 2016 - [email protected] + +- Refresh + patches.drivers/0001-bcache-Add-a-cond_resched-call-to-gc.patch. +- Refresh + patches.drivers/0002-bcache-BUG-clear-BCACHE_DEV_UNLINK_DONE-flag-when-at.patch. +- Refresh + patches.drivers/0003-bcache-fix-a-livelock-in-btree-lock.patch. +- Refresh + patches.drivers/0004-bcache-unregister-reboot-notifier-when-bcache-fails-.patch. +- Refresh + patches.drivers/0005-fix-a-leak-in-bch_cached_dev_run.patch. + Update upstream status. +- commit 859059c + +------------------------------------------------------------------- +Wed Mar 2 10:18:57 CET 2016 - [email protected] + +- tcp: do not drop syn_recv on all icmp reports (bnc#969064). +- commit 1ed9fdd + +------------------------------------------------------------------- +Wed Mar 2 10:11:15 CET 2016 - [email protected] + +- radeon: r100: Silence 'may be used uninitialized' warnings + (boo#955096,boo#967938). +- drm/radeon/pm: adjust display configuration after powerstate + (boo#955096,boo#967938). +- drm/radeon: Don't hang in radeon_flip_work_func on disabled + crtc. (v2) (boo#955096,boo#967938). +- drm/radeon/pm: Handle failure of drm_vblank_get + (boo#955096,boo#967938). +- drm/radeon: use post-decrement in error handling + (boo#955096,boo#967938). +- drm/radeon: hold reference to fences in radeon_sa_bo_new + (boo#955096,boo#967938). +- drm/radeon: fix DP audio support for APU with DCE4.1 display + engine (boo#955096,boo#967938). +- drm/radeon: Add a common function for DFS handling + (boo#955096,boo#967938). +- drm/radeon: cleaned up VCO output settings for DP audio + (boo#955096,boo#967938). +- drm/radeon: only init fbdev if we have connectors + (boo#955096,boo#967938). +- drm/radeon: Ensure radeon bo is unreserved in + radeon_gem_va_ioctl (boo#955096,boo#967938). +- drm/radeon: properly byte swap vce firmware setup + (boo#955096,boo#967938). +- drm/radeon: Fix off-by-one errors in radeon_vm_bo_set_addr + (boo#955096,boo#967938). +- drm/radeon: fix dp link rate selection (v2) + (boo#955096,boo#967938). +- drm/radeon: only increment sync_seq when a fence is really + emitted (boo#955096,boo#967938). +- drm/radeon: Fix "slow" audio over DP on DCE8+ + (boo#955096,boo#967938). +- drm/radeon: Use unlocked gem unreferencing + (boo#955096,boo#967938). +- drm/radeon: call hpd_irq_event on resume + (boo#955096,boo#967938). +- commit 803bd2e + +------------------------------------------------------------------- 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-vanilla.changes: same change ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kernel-debug.spec ++++++ --- /var/tmp/diff_new_pack.IiMbXl/_old 2016-03-08 09:38:42.000000000 +0100 +++ /var/tmp/diff_new_pack.IiMbXl/_new 2016-03-08 09:38:42.000000000 +0100 @@ -20,7 +20,7 @@ # needssslcertforbuild %define srcversion 4.4 -%define patchversion 4.4.3 +%define patchversion 4.4.4 %define variant %{nil} %define vanilla_only 0 @@ -61,9 +61,9 @@ Summary: A Debug Version of the Kernel License: GPL-2.0 Group: System/Kernel -Version: 4.4.3 +Version: 4.4.4 %if 0%{?is_kotd} -Release: <RELEASE>.g171b8f1 +Release: <RELEASE>.g0c1f87e %else Release: 0 %endif kernel-default.spec: same change ++++++ kernel-docs.spec ++++++ --- /var/tmp/diff_new_pack.IiMbXl/_old 2016-03-08 09:38:42.000000000 +0100 +++ /var/tmp/diff_new_pack.IiMbXl/_new 2016-03-08 09:38:42.000000000 +0100 @@ -16,7 +16,7 @@ # -%define patchversion 4.4.3 +%define patchversion 4.4.4 %define variant %{nil} %include %_sourcedir/kernel-spec-macros @@ -27,9 +27,9 @@ Summary: Kernel Documentation (man pages) License: GPL-2.0 Group: Documentation/Man -Version: 4.4.3 +Version: 4.4.4 %if 0%{?is_kotd} -Release: <RELEASE>.g171b8f1 +Release: <RELEASE>.g0c1f87e %else Release: 0 %endif ++++++ kernel-lpae.spec ++++++ --- /var/tmp/diff_new_pack.IiMbXl/_old 2016-03-08 09:38:42.000000000 +0100 +++ /var/tmp/diff_new_pack.IiMbXl/_new 2016-03-08 09:38:42.000000000 +0100 @@ -20,7 +20,7 @@ # needssslcertforbuild %define srcversion 4.4 -%define patchversion 4.4.3 +%define patchversion 4.4.4 %define variant %{nil} %define vanilla_only 0 @@ -61,9 +61,9 @@ Summary: Kernel for LPAE enabled systems License: GPL-2.0 Group: System/Kernel -Version: 4.4.3 +Version: 4.4.4 %if 0%{?is_kotd} -Release: <RELEASE>.g171b8f1 +Release: <RELEASE>.g0c1f87e %else Release: 0 %endif ++++++ kernel-obs-build.spec ++++++ --- /var/tmp/diff_new_pack.IiMbXl/_old 2016-03-08 09:38:42.000000000 +0100 +++ /var/tmp/diff_new_pack.IiMbXl/_new 2016-03-08 09:38:42.000000000 +0100 @@ -19,7 +19,7 @@ #!BuildIgnore: post-build-checks -%define patchversion 4.4.3 +%define patchversion 4.4.4 %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.4.3 +Version: 4.4.4 %if 0%{?is_kotd} -Release: <RELEASE>.g171b8f1 +Release: <RELEASE>.g0c1f87e %else Release: 0 %endif ++++++ kernel-obs-qa.spec ++++++ --- /var/tmp/diff_new_pack.IiMbXl/_old 2016-03-08 09:38:42.000000000 +0100 +++ /var/tmp/diff_new_pack.IiMbXl/_new 2016-03-08 09:38:42.000000000 +0100 @@ -17,7 +17,7 @@ # needsrootforbuild -%define patchversion 4.4.3 +%define patchversion 4.4.4 %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.4.3 +Version: 4.4.4 %if 0%{?is_kotd} -Release: <RELEASE>.g171b8f1 +Release: <RELEASE>.g0c1f87e %else Release: 0 %endif ++++++ kernel-pae.spec ++++++ --- /var/tmp/diff_new_pack.IiMbXl/_old 2016-03-08 09:38:42.000000000 +0100 +++ /var/tmp/diff_new_pack.IiMbXl/_new 2016-03-08 09:38:42.000000000 +0100 @@ -20,7 +20,7 @@ # needssslcertforbuild %define srcversion 4.4 -%define patchversion 4.4.3 +%define patchversion 4.4.4 %define variant %{nil} %define vanilla_only 0 @@ -61,9 +61,9 @@ Summary: Kernel with PAE Support License: GPL-2.0 Group: System/Kernel -Version: 4.4.3 +Version: 4.4.4 %if 0%{?is_kotd} -Release: <RELEASE>.g171b8f1 +Release: <RELEASE>.g0c1f87e %else Release: 0 %endif ++++++ kernel-source.spec ++++++ --- /var/tmp/diff_new_pack.IiMbXl/_old 2016-03-08 09:38:42.000000000 +0100 +++ /var/tmp/diff_new_pack.IiMbXl/_new 2016-03-08 09:38:42.000000000 +0100 @@ -18,7 +18,7 @@ %define srcversion 4.4 -%define patchversion 4.4.3 +%define patchversion 4.4.4 %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.4.3 +Version: 4.4.4 %if 0%{?is_kotd} -Release: <RELEASE>.g171b8f1 +Release: <RELEASE>.g0c1f87e %else Release: 0 %endif ++++++ kernel-syms.spec ++++++ --- /var/tmp/diff_new_pack.IiMbXl/_old 2016-03-08 09:38:42.000000000 +0100 +++ /var/tmp/diff_new_pack.IiMbXl/_new 2016-03-08 09:38:42.000000000 +0100 @@ -24,10 +24,10 @@ Summary: Kernel Symbol Versions (modversions) License: GPL-2.0 Group: Development/Sources -Version: 4.4.3 +Version: 4.4.4 %if %using_buildservice %if 0%{?is_kotd} -Release: <RELEASE>.g171b8f1 +Release: <RELEASE>.g0c1f87e %else Release: 0 %endif ++++++ kernel-vanilla.spec ++++++ --- /var/tmp/diff_new_pack.IiMbXl/_old 2016-03-08 09:38:42.000000000 +0100 +++ /var/tmp/diff_new_pack.IiMbXl/_new 2016-03-08 09:38:42.000000000 +0100 @@ -20,7 +20,7 @@ # needssslcertforbuild %define srcversion 4.4 -%define patchversion 4.4.3 +%define patchversion 4.4.4 %define variant %{nil} %define vanilla_only 0 @@ -61,9 +61,9 @@ Summary: The Standard Kernel - without any SUSE patches License: GPL-2.0 Group: System/Kernel -Version: 4.4.3 +Version: 4.4.4 %if 0%{?is_kotd} -Release: <RELEASE>.g171b8f1 +Release: <RELEASE>.g0c1f87e %else Release: 0 %endif ++++++ 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 2016-02-04 18:43:46.000000000 +0100 +++ new/config/arm64/default 2016-03-04 09:13:43.000000000 +0100 @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/arm64 4.4.0 Kernel Configuration +# Linux/arm64 4.4.4 Kernel Configuration # CONFIG_ARM64=y CONFIG_64BIT=y diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/arm64/vanilla new/config/arm64/vanilla --- old/config/arm64/vanilla 2016-02-04 18:43:46.000000000 +0100 +++ new/config/arm64/vanilla 2016-03-04 09:13:43.000000000 +0100 @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/arm64 4.4.0 Kernel Configuration +# Linux/arm64 4.4.4 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 2016-02-04 18:43:46.000000000 +0100 +++ new/config/armv6hl/default 2016-03-04 09:13:43.000000000 +0100 @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/arm 4.4.0 Kernel Configuration +# Linux/arm 4.4.4 Kernel Configuration # CONFIG_ARM=y CONFIG_ARM_HAS_SG_CHAIN=y @@ -6058,7 +6058,6 @@ CONFIG_DEBUG_IMX_UART_PORT=1 CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S" # CONFIG_DEBUG_UART_8250 is not set -# CONFIG_DEBUG_UART_BCM63XX is not set CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h" # CONFIG_ARM_KPROBES_TEST is not set # CONFIG_PID_IN_CONTEXTIDR is not set diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/armv6hl/vanilla new/config/armv6hl/vanilla --- old/config/armv6hl/vanilla 2016-02-04 18:43:46.000000000 +0100 +++ new/config/armv6hl/vanilla 2016-03-04 09:13:43.000000000 +0100 @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/arm 4.4.0 Kernel Configuration +# Linux/arm 4.4.4 Kernel Configuration # CONFIG_ARM=y CONFIG_ARM_HAS_SG_CHAIN=y @@ -6052,7 +6052,6 @@ CONFIG_DEBUG_IMX_UART_PORT=1 CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S" # CONFIG_DEBUG_UART_8250 is not set -# CONFIG_DEBUG_UART_BCM63XX is not set CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h" # CONFIG_ARM_KPROBES_TEST is not set # CONFIG_PID_IN_CONTEXTIDR is not set diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/armv7hl/default new/config/armv7hl/default --- old/config/armv7hl/default 2016-02-04 18:43:46.000000000 +0100 +++ new/config/armv7hl/default 2016-03-04 09:13:43.000000000 +0100 @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/arm 4.4.1 Kernel Configuration +# Linux/arm 4.4.4 Kernel Configuration # CONFIG_ARM=y CONFIG_ARM_HAS_SG_CHAIN=y @@ -8121,11 +8121,8 @@ # CONFIG_DEBUG_LL is not set CONFIG_DEBUG_IMX_UART_PORT=1 CONFIG_DEBUG_VF_UART_PORT=1 -CONFIG_DEBUG_LL_INCLUDE="debug/bcm63xx.S" +CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S" # CONFIG_DEBUG_UART_8250 is not set -CONFIG_DEBUG_UART_BCM63XX=y -CONFIG_DEBUG_UART_PHYS=0xe0000000 -CONFIG_DEBUG_UART_VIRT=0xfd000000 CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h" # CONFIG_ARM_KPROBES_TEST is not set # CONFIG_PID_IN_CONTEXTIDR is not set diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/armv7hl/lpae new/config/armv7hl/lpae --- old/config/armv7hl/lpae 2016-02-04 18:43:46.000000000 +0100 +++ new/config/armv7hl/lpae 2016-03-04 09:13:43.000000000 +0100 @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/arm 4.4.1 Kernel Configuration +# Linux/arm 4.4.4 Kernel Configuration # CONFIG_ARM=y CONFIG_ARM_HAS_SG_CHAIN=y @@ -7719,7 +7719,6 @@ CONFIG_DEBUG_IMX_UART_PORT=1 CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S" # CONFIG_DEBUG_UART_8250 is not set -# CONFIG_DEBUG_UART_BCM63XX is not set CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h" # CONFIG_ARM_KPROBES_TEST is not set # CONFIG_PID_IN_CONTEXTIDR is not set diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/armv7hl/vanilla new/config/armv7hl/vanilla --- old/config/armv7hl/vanilla 2016-02-04 18:43:46.000000000 +0100 +++ new/config/armv7hl/vanilla 2016-03-04 09:13:43.000000000 +0100 @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/arm 4.4.0 Kernel Configuration +# Linux/arm 4.4.4 Kernel Configuration # CONFIG_ARM=y CONFIG_ARM_HAS_SG_CHAIN=y @@ -8115,11 +8115,8 @@ # CONFIG_DEBUG_LL is not set CONFIG_DEBUG_IMX_UART_PORT=1 CONFIG_DEBUG_VF_UART_PORT=1 -CONFIG_DEBUG_LL_INCLUDE="debug/bcm63xx.S" +CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S" # CONFIG_DEBUG_UART_8250 is not set -CONFIG_DEBUG_UART_BCM63XX=y -CONFIG_DEBUG_UART_PHYS=0xe0000000 -CONFIG_DEBUG_UART_VIRT=0xfd000000 CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h" # CONFIG_ARM_KPROBES_TEST is not set # CONFIG_PID_IN_CONTEXTIDR is not set diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/i386/debug new/config/i386/debug --- old/config/i386/debug 2016-02-04 18:43:46.000000000 +0100 +++ new/config/i386/debug 2016-03-04 09:13:43.000000000 +0100 @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/i386 4.4.0 Kernel Configuration +# Linux/i386 4.4.4 Kernel Configuration # # CONFIG_64BIT is not set CONFIG_X86_32=y @@ -7549,10 +7549,12 @@ CONFIG_EARLY_PRINTK=y CONFIG_EARLY_PRINTK_DBGP=y CONFIG_EARLY_PRINTK_EFI=y +# CONFIG_X86_PTDUMP_CORE is not set # CONFIG_X86_PTDUMP is not set # CONFIG_EFI_PGT_DUMP is not set CONFIG_DEBUG_RODATA=y CONFIG_DEBUG_RODATA_TEST=y +# CONFIG_DEBUG_WX is not set CONFIG_DEBUG_SET_MODULE_RONX=y # CONFIG_DEBUG_NX_TEST is not set CONFIG_DOUBLEFAULT=y @@ -7911,5 +7913,3 @@ # CONFIG_SG_SPLIT is not set CONFIG_ARCH_HAS_SG_CHAIN=y CONFIG_ARCH_HAS_MMIO_FLUSH=y -# CONFIG_DEBUG_WX is not set -# CONFIG_X86_PTDUMP_CORE is not set diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/i386/default new/config/i386/default --- old/config/i386/default 2016-02-04 18:43:46.000000000 +0100 +++ new/config/i386/default 2016-03-04 09:13:43.000000000 +0100 @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/i386 4.4.0 Kernel Configuration +# Linux/i386 4.4.4 Kernel Configuration # # CONFIG_64BIT is not set CONFIG_X86_32=y @@ -7567,10 +7567,12 @@ CONFIG_EARLY_PRINTK=y CONFIG_EARLY_PRINTK_DBGP=y CONFIG_EARLY_PRINTK_EFI=y +# CONFIG_X86_PTDUMP_CORE is not set # CONFIG_X86_PTDUMP is not set # CONFIG_EFI_PGT_DUMP is not set CONFIG_DEBUG_RODATA=y # CONFIG_DEBUG_RODATA_TEST is not set +# CONFIG_DEBUG_WX is not set CONFIG_DEBUG_SET_MODULE_RONX=y # CONFIG_DEBUG_NX_TEST is not set CONFIG_DOUBLEFAULT=y @@ -7931,5 +7933,3 @@ # CONFIG_SG_SPLIT is not set CONFIG_ARCH_HAS_SG_CHAIN=y CONFIG_ARCH_HAS_MMIO_FLUSH=y -# CONFIG_DEBUG_WX is not set -# CONFIG_X86_PTDUMP_CORE is not set diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/i386/pae new/config/i386/pae --- old/config/i386/pae 2016-02-04 18:43:46.000000000 +0100 +++ new/config/i386/pae 2016-03-04 09:13:43.000000000 +0100 @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/i386 4.4.0 Kernel Configuration +# Linux/i386 4.4.4 Kernel Configuration # # CONFIG_64BIT is not set CONFIG_X86_32=y @@ -7386,10 +7386,12 @@ CONFIG_EARLY_PRINTK=y CONFIG_EARLY_PRINTK_DBGP=y CONFIG_EARLY_PRINTK_EFI=y +# CONFIG_X86_PTDUMP_CORE is not set # CONFIG_X86_PTDUMP is not set # CONFIG_EFI_PGT_DUMP is not set CONFIG_DEBUG_RODATA=y # CONFIG_DEBUG_RODATA_TEST is not set +# CONFIG_DEBUG_WX is not set CONFIG_DEBUG_SET_MODULE_RONX=y # CONFIG_DEBUG_NX_TEST is not set CONFIG_DOUBLEFAULT=y @@ -7748,5 +7750,3 @@ # CONFIG_SG_SPLIT is not set CONFIG_ARCH_HAS_SG_CHAIN=y CONFIG_ARCH_HAS_MMIO_FLUSH=y -# CONFIG_DEBUG_WX is not set -# CONFIG_X86_PTDUMP_CORE is not set diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/i386/vanilla new/config/i386/vanilla --- old/config/i386/vanilla 2016-02-04 18:43:46.000000000 +0100 +++ new/config/i386/vanilla 2016-03-04 09:13:43.000000000 +0100 @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/i386 4.4.0 Kernel Configuration +# Linux/i386 4.4.4 Kernel Configuration # # CONFIG_64BIT is not set CONFIG_X86_32=y @@ -7379,10 +7379,12 @@ CONFIG_EARLY_PRINTK=y CONFIG_EARLY_PRINTK_DBGP=y CONFIG_EARLY_PRINTK_EFI=y +# CONFIG_X86_PTDUMP_CORE is not set # CONFIG_X86_PTDUMP is not set # CONFIG_EFI_PGT_DUMP is not set CONFIG_DEBUG_RODATA=y # CONFIG_DEBUG_RODATA_TEST is not set +# CONFIG_DEBUG_WX is not set CONFIG_DEBUG_SET_MODULE_RONX=y # CONFIG_DEBUG_NX_TEST is not set CONFIG_DOUBLEFAULT=y @@ -7741,5 +7743,3 @@ # CONFIG_SG_SPLIT is not set CONFIG_ARCH_HAS_SG_CHAIN=y CONFIG_ARCH_HAS_MMIO_FLUSH=y -# CONFIG_DEBUG_WX is not set -# CONFIG_X86_PTDUMP_CORE is not set diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/ppc/default new/config/ppc/default --- old/config/ppc/default 2016-02-04 18:43:46.000000000 +0100 +++ new/config/ppc/default 2016-03-04 09:13:43.000000000 +0100 @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/powerpc 4.4.0 Kernel Configuration +# Linux/powerpc 4.4.4 Kernel Configuration # # CONFIG_PPC64 is not set diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/ppc/vanilla new/config/ppc/vanilla --- old/config/ppc/vanilla 2016-02-04 18:43:46.000000000 +0100 +++ new/config/ppc/vanilla 2016-03-04 09:13:43.000000000 +0100 @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/powerpc 4.4.0 Kernel Configuration +# Linux/powerpc 4.4.4 Kernel Configuration # # CONFIG_PPC64 is not set diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/ppc64/debug new/config/ppc64/debug --- old/config/ppc64/debug 2016-02-04 18:43:46.000000000 +0100 +++ new/config/ppc64/debug 2016-03-04 09:13:43.000000000 +0100 @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/powerpc 4.4.0 Kernel Configuration +# Linux/powerpc 4.4.4 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 2016-02-04 18:43:46.000000000 +0100 +++ new/config/ppc64/default 2016-03-04 09:13:43.000000000 +0100 @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/powerpc 4.4.0 Kernel Configuration +# Linux/powerpc 4.4.4 Kernel Configuration # CONFIG_PPC64=y diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/ppc64/vanilla new/config/ppc64/vanilla --- old/config/ppc64/vanilla 2016-02-04 18:43:46.000000000 +0100 +++ new/config/ppc64/vanilla 2016-03-04 09:13:43.000000000 +0100 @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/powerpc 4.4.0 Kernel Configuration +# Linux/powerpc 4.4.4 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 2016-02-04 18:43:46.000000000 +0100 +++ new/config/ppc64le/debug 2016-03-04 09:13:43.000000000 +0100 @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/powerpc 4.4.0 Kernel Configuration +# Linux/powerpc 4.4.4 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 2016-02-04 18:43:46.000000000 +0100 +++ new/config/ppc64le/default 2016-03-04 09:13:43.000000000 +0100 @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/powerpc 4.4.0 Kernel Configuration +# Linux/powerpc 4.4.4 Kernel Configuration # CONFIG_PPC64=y diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/ppc64le/vanilla new/config/ppc64le/vanilla --- old/config/ppc64le/vanilla 2016-02-04 18:43:46.000000000 +0100 +++ new/config/ppc64le/vanilla 2016-03-04 09:13:43.000000000 +0100 @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/powerpc 4.4.0 Kernel Configuration +# Linux/powerpc 4.4.4 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 2016-02-04 18:43:46.000000000 +0100 +++ new/config/s390x/default 2016-03-04 09:13:43.000000000 +0100 @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/s390 4.4.0 Kernel Configuration +# Linux/s390 4.4.4 Kernel Configuration # CONFIG_MMU=y CONFIG_ZONE_DMA=y diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/s390x/vanilla new/config/s390x/vanilla --- old/config/s390x/vanilla 2016-02-04 18:43:46.000000000 +0100 +++ new/config/s390x/vanilla 2016-03-04 09:13:43.000000000 +0100 @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/s390 4.4.0 Kernel Configuration +# Linux/s390 4.4.4 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 2016-02-04 18:43:46.000000000 +0100 +++ new/config/x86_64/debug 2016-03-04 09:13:43.000000000 +0100 @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/x86_64 4.4.0 Kernel Configuration +# Linux/x86_64 4.4.4 Kernel Configuration # CONFIG_64BIT=y CONFIG_X86_64=y @@ -7375,10 +7375,12 @@ CONFIG_EARLY_PRINTK=y CONFIG_EARLY_PRINTK_DBGP=y CONFIG_EARLY_PRINTK_EFI=y +# CONFIG_X86_PTDUMP_CORE is not set # CONFIG_X86_PTDUMP is not set # CONFIG_EFI_PGT_DUMP is not set CONFIG_DEBUG_RODATA=y CONFIG_DEBUG_RODATA_TEST=y +# CONFIG_DEBUG_WX is not set CONFIG_DEBUG_SET_MODULE_RONX=y # CONFIG_DEBUG_NX_TEST is not set CONFIG_DOUBLEFAULT=y @@ -7756,5 +7758,3 @@ CONFIG_ARCH_HAS_SG_CHAIN=y CONFIG_ARCH_HAS_PMEM_API=y CONFIG_ARCH_HAS_MMIO_FLUSH=y -# CONFIG_DEBUG_WX is not set -# CONFIG_X86_PTDUMP_CORE is not set 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 2016-02-04 18:43:46.000000000 +0100 +++ new/config/x86_64/default 2016-03-04 09:13:43.000000000 +0100 @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/x86_64 4.4.0 Kernel Configuration +# Linux/x86_64 4.4.4 Kernel Configuration # CONFIG_64BIT=y CONFIG_X86_64=y @@ -7355,10 +7355,12 @@ CONFIG_EARLY_PRINTK=y CONFIG_EARLY_PRINTK_DBGP=y CONFIG_EARLY_PRINTK_EFI=y +# CONFIG_X86_PTDUMP_CORE is not set # CONFIG_X86_PTDUMP is not set # CONFIG_EFI_PGT_DUMP is not set CONFIG_DEBUG_RODATA=y # CONFIG_DEBUG_RODATA_TEST is not set +# CONFIG_DEBUG_WX is not set CONFIG_DEBUG_SET_MODULE_RONX=y # CONFIG_DEBUG_NX_TEST is not set CONFIG_DOUBLEFAULT=y @@ -7736,5 +7738,3 @@ CONFIG_ARCH_HAS_SG_CHAIN=y CONFIG_ARCH_HAS_PMEM_API=y CONFIG_ARCH_HAS_MMIO_FLUSH=y -# CONFIG_DEBUG_WX is not set -# CONFIG_X86_PTDUMP_CORE is not set diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/x86_64/vanilla new/config/x86_64/vanilla --- old/config/x86_64/vanilla 2016-02-04 18:43:46.000000000 +0100 +++ new/config/x86_64/vanilla 2016-03-04 09:13:43.000000000 +0100 @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/x86_64 4.4.0 Kernel Configuration +# Linux/x86_64 4.4.4 Kernel Configuration # CONFIG_64BIT=y CONFIG_X86_64=y @@ -7348,10 +7348,12 @@ CONFIG_EARLY_PRINTK=y CONFIG_EARLY_PRINTK_DBGP=y CONFIG_EARLY_PRINTK_EFI=y +# CONFIG_X86_PTDUMP_CORE is not set # CONFIG_X86_PTDUMP is not set # CONFIG_EFI_PGT_DUMP is not set CONFIG_DEBUG_RODATA=y # CONFIG_DEBUG_RODATA_TEST is not set +# CONFIG_DEBUG_WX is not set CONFIG_DEBUG_SET_MODULE_RONX=y # CONFIG_DEBUG_NX_TEST is not set CONFIG_DOUBLEFAULT=y @@ -7729,5 +7731,3 @@ CONFIG_ARCH_HAS_SG_CHAIN=y CONFIG_ARCH_HAS_PMEM_API=y CONFIG_ARCH_HAS_MMIO_FLUSH=y -# CONFIG_DEBUG_WX is not set -# CONFIG_X86_PTDUMP_CORE is not set ++++++ patches.drivers.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.drivers/0001-bcache-Add-a-cond_resched-call-to-gc.patch new/patches.drivers/0001-bcache-Add-a-cond_resched-call-to-gc.patch --- old/patches.drivers/0001-bcache-Add-a-cond_resched-call-to-gc.patch 2016-02-23 11:30:49.000000000 +0100 +++ new/patches.drivers/0001-bcache-Add-a-cond_resched-call-to-gc.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,24 +0,0 @@ -From f0e6320a7874af434575f37a11ec6e4992cef790 Mon Sep 17 00:00:00 2001 -From: Kent Overstreet <[email protected]> -Date: Sat, 1 Nov 2014 13:44:47 -0700 -Subject: [PATCH 1/5] bcache: Add a cond_resched() call to gc -Patch-mainline: Submitted -References: bnc#910440 - -Change-id: Id4f18c533b80ddb40df94ed0bb5e2a236a4bc325 -Signed-off-by: Takashi Iwai <[email protected]> - ---- - drivers/md/bcache/btree.c | 1 + - 1 file changed, 1 insertion(+) - ---- a/drivers/md/bcache/btree.c -+++ b/drivers/md/bcache/btree.c -@@ -1741,6 +1741,7 @@ static void bch_btree_gc(struct cache_se - do { - ret = btree_root(gc_root, c, &op, &writes, &stats); - closure_sync(&writes); -+ cond_resched(); - - if (ret && ret != -EAGAIN) - pr_warn("gc failed!"); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.drivers/0002-bcache-BUG-clear-BCACHE_DEV_UNLINK_DONE-flag-when-at.patch new/patches.drivers/0002-bcache-BUG-clear-BCACHE_DEV_UNLINK_DONE-flag-when-at.patch --- old/patches.drivers/0002-bcache-BUG-clear-BCACHE_DEV_UNLINK_DONE-flag-when-at.patch 2016-02-23 11:30:49.000000000 +0100 +++ new/patches.drivers/0002-bcache-BUG-clear-BCACHE_DEV_UNLINK_DONE-flag-when-at.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,96 +0,0 @@ -From add5dd0299da7b1b748d1bd90d7aece23a293e30 Mon Sep 17 00:00:00 2001 -From: Zheng Liu <[email protected]> -Date: Mon, 13 Oct 2014 21:26:41 +0800 -Subject: [PATCH 2/5] bcache: [BUG] clear BCACHE_DEV_UNLINK_DONE flag when attaching a backing device -References: bnc#910440 - -This bug can be reproduced by the following script: - - #!/bin/bash - - bcache_sysfs="/sys/fs/bcache" - - function clear_cache() - { - if [ ! -e $bcache_sysfs ]; then - echo "no bcache sysfs" - exit - fi - - cset_uuid=$(ls -l $bcache_sysfs|head -n 2|tail -n 1|awk '{print $9}') - sudo sh -c "echo $cset_uuid > /sys/block/sdb/sdb1/bcache/detach" - sleep 5 - sudo sh -c "echo $cset_uuid > /sys/block/sdb/sdb1/bcache/attach" - } - - for ((i=0;i<10;i++)); do - clear_cache - done - -The warning messages look like below: -[ 275.948611] ------------[ cut here ]------------ -[ 275.963840] WARNING: at fs/sysfs/dir.c:512 sysfs_add_one+0xb8/0xd0() (Tainted: P W --------------- ) -[ 275.979253] Hardware name: Tecal RH2285 -[ 275.994106] sysfs: cannot create duplicate filename '/devices/pci0000:00/0000:00:09.0/0000:08:00.0/host4/target4:2:1/4:2:1:0/block/sdb/sdb1/bcache/cache' -[ 276.024105] Modules linked in: bcache tcp_diag inet_diag ipmi_devintf ipmi_si ipmi_msghandler bonding 8021q garp stp llc ipv6 ext3 jbd loop sg iomemory_vsl(P) bnx2 microcode serio_raw i2c_i801 i2c_core iTCO_wdt iTCO_vendor_support i7core_edac edac_core shpchp ext4 jbd2 mbcache megaraid_sas pata_acpi ata_generic ata_piix dm_mod [last unloaded: scsi_wait_scan] -[ 276.072643] Pid: 2765, comm: sh Tainted: P W --------------- 2.6.32 #1 -[ 276.089315] Call Trace: -[ 276.105801] [<ffffffff81070fe7>] ? warn_slowpath_common+0x87/0xc0 -[ 276.122650] [<ffffffff810710d6>] ? warn_slowpath_fmt+0x46/0x50 -[ 276.139361] [<ffffffff81205c08>] ? sysfs_add_one+0xb8/0xd0 -[ 276.156012] [<ffffffff8120609b>] ? sysfs_do_create_link+0x12b/0x170 -[ 276.172682] [<ffffffff81206113>] ? sysfs_create_link+0x13/0x20 -[ 276.189282] [<ffffffffa03bda21>] ? bcache_device_link+0xc1/0x110 [bcache] -[ 276.205993] [<ffffffffa03bfa08>] ? bch_cached_dev_attach+0x478/0x4f0 [bcache] -[ 276.222794] [<ffffffffa03c4a17>] ? bch_cached_dev_store+0x627/0x780 [bcache] -[ 276.239680] [<ffffffff8116783a>] ? alloc_pages_current+0xaa/0x110 -[ 276.256594] [<ffffffff81203b15>] ? sysfs_write_file+0xe5/0x170 -[ 276.273364] [<ffffffff811887b8>] ? vfs_write+0xb8/0x1a0 -[ 276.290133] [<ffffffff811890b1>] ? sys_write+0x51/0x90 -[ 276.306368] [<ffffffff8100c072>] ? system_call_fastpath+0x16/0x1b -[ 276.322301] ---[ end trace 9f5d4fcdd0c3edfb ]--- -[ 276.338241] ------------[ cut here ]------------ -[ 276.354109] WARNING: at /home/wenqing.lz/bcache/bcache/super.c:720 bcache_device_link+0xdf/0x110 [bcache]() (Tainted: P W --------------- ) -[ 276.386017] Hardware name: Tecal RH2285 -[ 276.401430] Couldn't create device <-> cache set symlinks -[ 276.401759] Modules linked in: bcache tcp_diag inet_diag ipmi_devintf ipmi_si ipmi_msghandler bonding 8021q garp stp llc ipv6 ext3 jbd loop sg iomemory_vsl(P) bnx2 microcode serio_raw i2c_i801 i2c_core iTCO_wdt iTCO_vendor_support i7core_edac edac_core shpchp ext4 jbd2 mbcache megaraid_sas pata_acpi ata_generic ata_piix dm_mod [last unloaded: scsi_wait_scan] -[ 276.465477] Pid: 2765, comm: sh Tainted: P W --------------- 2.6.32 #1 -[ 276.482169] Call Trace: -[ 276.498610] [<ffffffff81070fe7>] ? warn_slowpath_common+0x87/0xc0 -[ 276.515405] [<ffffffff810710d6>] ? warn_slowpath_fmt+0x46/0x50 -[ 276.532059] [<ffffffffa03bda3f>] ? bcache_device_link+0xdf/0x110 [bcache] -[ 276.548808] [<ffffffffa03bfa08>] ? bch_cached_dev_attach+0x478/0x4f0 [bcache] -[ 276.565569] [<ffffffffa03c4a17>] ? bch_cached_dev_store+0x627/0x780 [bcache] -[ 276.582418] [<ffffffff8116783a>] ? alloc_pages_current+0xaa/0x110 -[ 276.599341] [<ffffffff81203b15>] ? sysfs_write_file+0xe5/0x170 -[ 276.616142] [<ffffffff811887b8>] ? vfs_write+0xb8/0x1a0 -[ 276.632607] [<ffffffff811890b1>] ? sys_write+0x51/0x90 -[ 276.648671] [<ffffffff8100c072>] ? system_call_fastpath+0x16/0x1b -[ 276.664756] ---[ end trace 9f5d4fcdd0c3edfc ]--- - -We forget to clear BCACHE_DEV_UNLINK_DONE flag in bcache_device_attach() -function when we attach a backing device first time. After detaching this -backing device, this flag will be true and sysfs_remove_link() isn't called in -bcache_device_unlink(). Then when we attach this backing device again, -sysfs_create_link() will return EEXIST error in bcache_device_link(). - -So the fix is trival and we clear this flag in bcache_device_link(). - -Signed-off-by: Zheng Liu <[email protected]> -Signed-off-by: Takashi Iwai <[email protected]> - ---- - drivers/md/bcache/super.c | 2 ++ - 1 file changed, 2 insertions(+) - ---- a/drivers/md/bcache/super.c -+++ b/drivers/md/bcache/super.c -@@ -708,6 +708,8 @@ static void bcache_device_link(struct bc - WARN(sysfs_create_link(&d->kobj, &c->kobj, "cache") || - sysfs_create_link(&c->kobj, &d->kobj, d->name), - "Couldn't create device <-> cache set symlinks"); -+ -+ clear_bit(BCACHE_DEV_UNLINK_DONE, &d->flags); - } - - static void bcache_device_detach(struct bcache_device *d) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.drivers/0003-bcache-fix-a-livelock-in-btree-lock.patch new/patches.drivers/0003-bcache-fix-a-livelock-in-btree-lock.patch --- old/patches.drivers/0003-bcache-fix-a-livelock-in-btree-lock.patch 2016-02-23 11:30:49.000000000 +0100 +++ new/patches.drivers/0003-bcache-fix-a-livelock-in-btree-lock.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,58 +0,0 @@ -From f6ecd8d22a23fe0842c21e0daa301fc9f3596e9a Mon Sep 17 00:00:00 2001 -From: Zheng Liu <[email protected]> -Date: Sat, 18 Oct 2014 20:51:44 +0800 -Subject: [PATCH 3/5] bcache: fix a livelock in btree lock -Patch-mainline: Submitted -References: bnc#910440 - -This commit tries to fix a livelock in bcache. This livelock might -happen when we causes a huge number of cache misses simultaneously. - -When we get a cache miss, bcache will execute the following path. - -->cached_dev_make_request() - ->cached_dev_read() - ->cached_lookup() - ->bch->btree_map_keys() - ->btree_root() <------------------------ - ->bch_btree_map_keys_recurse() | - ->cache_lookup_fn() | - ->cached_dev_cache_miss() | - ->bch_btree_insert_check_key() -| - [If btree->seq is not equal to seq + 1, we should return - EINTR and traverse btree again.] - -In bch_btree_insert_check_key() function we first need to check upgrade -flag (op->lock == -1), and when this flag is true we need to release -read btree->lock and try to take write btree->lock. During taking and -releasing this write lock, btree->seq will be monotone increased in -order to prevent other threads modify this in cache miss (see btree.h:74). -But if there are some cache misses caused by some requested, we could -meet a livelock because btree->seq is always changed by others. Thus no -one can make progress. - -This commit will try to take write btree->lock if it encounters a race -when we traverse btree. Although it sacrifice the scalability but we -can ensure that only one can modify the btree. - -Signed-off-by: Zheng Liu <[email protected]> -Signed-off-by: Takashi Iwai <[email protected]> - ---- - drivers/md/bcache/btree.c | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - ---- a/drivers/md/bcache/btree.c -+++ b/drivers/md/bcache/btree.c -@@ -2163,8 +2163,10 @@ int bch_btree_insert_check_key(struct bt - rw_lock(true, b, b->level); - - if (b->key.ptr[0] != btree_ptr || -- b->seq != seq + 1) -+ b->seq != seq + 1) { -+ op->lock = b->c->root->level + 1; - goto out; -+ } - } - - SET_KEY_PTRS(check_key, 1); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.drivers/0004-bcache-unregister-reboot-notifier-when-bcache-fails-.patch new/patches.drivers/0004-bcache-unregister-reboot-notifier-when-bcache-fails-.patch --- old/patches.drivers/0004-bcache-unregister-reboot-notifier-when-bcache-fails-.patch 2016-02-23 11:30:49.000000000 +0100 +++ new/patches.drivers/0004-bcache-unregister-reboot-notifier-when-bcache-fails-.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,31 +0,0 @@ -From fe4430cb3ee51bea7909744780f5d9a43f34a2ba Mon Sep 17 00:00:00 2001 -From: Zheng Liu <[email protected]> -Date: Sat, 18 Oct 2014 21:13:58 +0800 -Subject: [PATCH 4/5] bcache: unregister reboot notifier when bcache fails to register a block device -Patch-mainline: Submitted -References: bnc#910440 - -In bcache_init() function it forgot to unregister reboot notifier if -bcache fails to unregister a block device. This commit fixes this. - -Signed-off-by: Zheng Liu <[email protected]> -Signed-off-by: Takashi Iwai <[email protected]> - ---- - drivers/md/bcache/super.c | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - ---- a/drivers/md/bcache/super.c -+++ b/drivers/md/bcache/super.c -@@ -2102,8 +2102,10 @@ static int __init bcache_init(void) - closure_debug_init(); - - bcache_major = register_blkdev(0, "bcache"); -- if (bcache_major < 0) -+ if (bcache_major < 0) { -+ unregister_reboot_notifier(&reboot); - return bcache_major; -+ } - - if (!(bcache_wq = create_workqueue("bcache")) || - !(bcache_kobj = kobject_create_and_add("bcache", fs_kobj)) || diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.drivers/0005-fix-a-leak-in-bch_cached_dev_run.patch new/patches.drivers/0005-fix-a-leak-in-bch_cached_dev_run.patch --- old/patches.drivers/0005-fix-a-leak-in-bch_cached_dev_run.patch 2016-02-23 11:30:49.000000000 +0100 +++ new/patches.drivers/0005-fix-a-leak-in-bch_cached_dev_run.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,29 +0,0 @@ -From ffe2045114ce7148e0bed9dec77788983329bd09 Mon Sep 17 00:00:00 2001 -From: Al Viro <[email protected]> -Date: Thu, 30 Oct 2014 05:42:09 +0000 -Subject: [PATCH 5/5] fix a leak in bch_cached_dev_run() -Patch-mainline: Submitted -References: bnc#910440 - -Signed-off-by: Al Viro <[email protected]> -Signed-off-by: Takashi Iwai <[email protected]> - ---- - drivers/md/bcache/super.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - ---- a/drivers/md/bcache/super.c -+++ b/drivers/md/bcache/super.c -@@ -880,8 +880,11 @@ void bch_cached_dev_run(struct cached_de - buf[SB_LABEL_SIZE] = '\0'; - env[2] = kasprintf(GFP_KERNEL, "CACHED_LABEL=%s", buf); - -- if (atomic_xchg(&dc->running, 1)) -+ if (atomic_xchg(&dc->running, 1)) { -+ kfree(env[1]); -+ kfree(env[2]); - return; -+ } - - if (!d->c && - BDEV_STATE(&dc->sb) != BDEV_STATE_NONE) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.drivers/ALSA-hda-Apply-clock-gate-workaround-to-Skylake-too new/patches.drivers/ALSA-hda-Apply-clock-gate-workaround-to-Skylake-too --- old/patches.drivers/ALSA-hda-Apply-clock-gate-workaround-to-Skylake-too 2016-02-23 11:30:49.000000000 +0100 +++ new/patches.drivers/ALSA-hda-Apply-clock-gate-workaround-to-Skylake-too 1970-01-01 01:00:00.000000000 +0100 @@ -1,90 +0,0 @@ -From 7e31a0159461818a1bda49662921b98a29c1187b Mon Sep 17 00:00:00 2001 -From: Takashi Iwai <[email protected]> -Date: Mon, 22 Feb 2016 15:18:13 +0100 -Subject: [PATCH] ALSA: hda - Apply clock gate workaround to Skylake, too -Git-commit: 7e31a0159461818a1bda49662921b98a29c1187b -Patch-mainline: 4.5-rc6 -References: bsc#966137 - -Some Skylake machines show the codec probe errors in certain -situations, e.g. HP Z240 desktop fails to probe the onboard Realtek -codec at reloading the snd-hda-intel module like: - snd_hda_intel 0000:00:1f.3: spurious response 0x200:0x2, last cmd=0x000000 - snd_hda_intel 0000:00:1f.3: azx_get_response timeout, switching to polling mode: lastcmd=0x000f0000 - snd_hda_intel 0000:00:1f.3: No response from codec, disabling MSI: last cmd=0x000f0000 - snd_hda_intel 0000:00:1f.3: Codec #0 probe error; disabling it... - hdaudio hdaudioC0D2: no AFG or MFG node found - snd_hda_intel 0000:00:1f.3: no codecs initialized - -Also, HP G470 G3 suffers from the similar problem, as reported in -bugzilla below. On this machine, the codec probe error appears even -at a fresh boot. - -As Libin suggested, the same workaround used for Broxton in the commit -[6639484ddaf6: ALSA: hda - disable dynamic clock gating on Broxton before reset] can be applied for Skylake in order to fix this problem. -The Intel HW team also confirmed that this is needed for SKL. - -This patch makes the workaround applied to both SKL and BXT -platforms. The referred macros are moved and one superfluous macro -(IS_BROXTON()) is another one (IS_BXT()) as well. - -Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=112731 -Suggested-by: Libin Yang <[email protected]> -Cc: <[email protected]> # v4.4+ -Signed-off-by: Takashi Iwai <[email protected]> - ---- - sound/pci/hda/hda_intel.c | 16 +++++++--------- - 1 file changed, 7 insertions(+), 9 deletions(-) - ---- a/sound/pci/hda/hda_intel.c -+++ b/sound/pci/hda/hda_intel.c -@@ -357,7 +357,10 @@ enum { - ((pci)->device == 0x0d0c) || \ - ((pci)->device == 0x160c)) - --#define IS_BROXTON(pci) ((pci)->device == 0x5a98) -+#define IS_SKL(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0xa170) -+#define IS_SKL_LP(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0x9d70) -+#define IS_BXT(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0x5a98) -+#define IS_SKL_PLUS(pci) (IS_SKL(pci) || IS_SKL_LP(pci) || IS_BXT(pci)) - - static char *driver_short_names[] = { - [AZX_DRIVER_ICH] = "HDA Intel", -@@ -534,13 +537,13 @@ static void hda_intel_init_chip(struct a - - if (chip->driver_caps & AZX_DCAPS_I915_POWERWELL) - snd_hdac_set_codec_wakeup(bus, true); -- if (IS_BROXTON(pci)) { -+ if (IS_SKL_PLUS(pci)) { - pci_read_config_dword(pci, INTEL_HDA_CGCTL, &val); - val = val & ~INTEL_HDA_CGCTL_MISCBDCGE; - pci_write_config_dword(pci, INTEL_HDA_CGCTL, val); - } - azx_init_chip(chip, full_reset); -- if (IS_BROXTON(pci)) { -+ if (IS_SKL_PLUS(pci)) { - pci_read_config_dword(pci, INTEL_HDA_CGCTL, &val); - val = val | INTEL_HDA_CGCTL_MISCBDCGE; - pci_write_config_dword(pci, INTEL_HDA_CGCTL, val); -@@ -549,7 +552,7 @@ static void hda_intel_init_chip(struct a - snd_hdac_set_codec_wakeup(bus, false); - - /* reduce dma latency to avoid noise */ -- if (IS_BROXTON(pci)) -+ if (IS_BXT(pci)) - bxt_reduce_dma_latency(chip); - } - -@@ -971,11 +974,6 @@ static int azx_resume(struct device *dev - /* put codec down to D3 at hibernation for Intel SKL+; - * otherwise BIOS may still access the codec and screw up the driver - */ --#define IS_SKL(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0xa170) --#define IS_SKL_LP(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0x9d70) --#define IS_BXT(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0x5a98) --#define IS_SKL_PLUS(pci) (IS_SKL(pci) || IS_SKL_LP(pci) || IS_BXT(pci)) -- - static int azx_freeze_noirq(struct device *dev) - { - struct pci_dev *pci = to_pci_dev(dev); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.drivers/bcache-fix-writeback-thread-incomplete-stripes-starvation.patch new/patches.drivers/bcache-fix-writeback-thread-incomplete-stripes-starvation.patch --- old/patches.drivers/bcache-fix-writeback-thread-incomplete-stripes-starvation.patch 2016-02-23 11:30:49.000000000 +0100 +++ new/patches.drivers/bcache-fix-writeback-thread-incomplete-stripes-starvation.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,51 +0,0 @@ -From: Vojtech Pavlik <[email protected]> -To: Kent Overstreet <[email protected]> -Cc: [email protected], [email protected], Kent Overstreet <[email protected]>, Emmanuel Florac <[email protected]>, Jiri Kosina <[email protected]>, Jens Axboe <[email protected]> -Subject: [PATCH] bcache: Fix writeback_thread never writing back incomplete stripes. -Patch-mainline: not yet, submitted - -Fix writeback_thread never finishing writing back all dirty data in bcache when -partial_stripes_expensive is set, and spinning, consuming 100% of CPU instead. - -Signed-off-by: Vojtech Pavlik <[email protected]> ---- - -This is a fix for the current upstream bcache, not the devel branch. - -If partial_stripes_expensive is set for a cache set, then writeback_thread -always attempts to write full stripes out back to the backing device first. -However, since it does that based on a bitmap and not a simple linear -search, like the rest of the code of refill_dirty(), it changes the -last_scanned pointer so that never points to 'end'. refill_dirty() then -never tries to scan from 'start', resulting in the writeback_thread -looping, consuming 100% of CPU, but never making progress in writing out -the incomplete dirty stripes in the cache. - -Scanning the tree after not finding enough full stripes fixes the issue. - -Incomplete dirty stripes are written to the backing device, the device -eventually reaches a clean state if there is nothing dirtying data and -writeback_thread sleeps. This also fixes the problem of the cache device -not being possible to detach in the partial_stripes_expensive scenario. - -It may be more efficient to separate the last_scanned field for normal and -stripe scans instead. - - drivers/md/bcache/writeback.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/drivers/md/bcache/writeback.c b/drivers/md/bcache/writeback.c -index f1986bc..6f8b81d 100644 ---- a/drivers/md/bcache/writeback.c -+++ b/drivers/md/bcache/writeback.c -@@ -382,6 +382,7 @@ static bool refill_dirty(struct cached_dev *dc) - refill_full_stripes(dc); - if (array_freelist_empty(&buf->freelist)) - return false; -+ bch_refill_keybuf(dc->disk.c, buf, &end, dirty_pred); - } - - if (bkey_cmp(&buf->last_scanned, &end) >= 0) { --- -2.1.4 - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.drivers/drm-i915-shut-up-gen8-SDE-irq-dmesg-noise new/patches.drivers/drm-i915-shut-up-gen8-SDE-irq-dmesg-noise --- old/patches.drivers/drm-i915-shut-up-gen8-SDE-irq-dmesg-noise 2016-02-23 11:30:49.000000000 +0100 +++ new/patches.drivers/drm-i915-shut-up-gen8-SDE-irq-dmesg-noise 1970-01-01 01:00:00.000000000 +0100 @@ -1,72 +0,0 @@ -From 97e5ed1111dcc5300a0f59a55248cd243937a8ab Mon Sep 17 00:00:00 2001 -From: Daniel Vetter <[email protected]> -Date: Fri, 23 Oct 2015 10:56:12 +0200 -Subject: [PATCH] drm/i915: shut up gen8+ SDE irq dmesg noise -Git-commit: 97e5ed1111dcc5300a0f59a55248cd243937a8ab -Git-repo: git://anongit.freedesktop.org/drm-intel -Patch-mainline: Queued in subsystem maintainer repository -References: boo#961887 - -We get tons of cases where the master interrupt handler apparently set -a bit, with the SDEIIR disagreeing. No idea what's going on there, but -it's consistent on gen8+, no one seems to care about it and it's -making CI results flaky. - -Shut it up. - -No idea what's going on here, but we've had fun with PCH interrupts -Before: - -commit 44498aea293b37af1d463acd9658cdce1ecdf427 -Author: Paulo Zanoni <[email protected]> -Date: Fri Feb 22 17:05:28 2013 -0300 - - drm/i915: also disable south interrupts when handling them - -Note that there's a regression report in Bugzilla, and other -regression reports on the mailing lists keep croping up. But no ill -effects have ever been reported. But for paranoia still keep the -message at a debug level as a breadcrumb, just in case. - -This message was introduced in - -commit 38cc46d73ed99dd7002f1406002e52d7975d16cc -Author: Oscar Mateo <[email protected]> -Date: Mon Jun 16 16:10:59 2014 +0100 - - drm/i915/bdw: Ack interrupts before handling them (GEN8) - -V2: Improve commit message a bit. - -Cc: Paulo Zanoni <[email protected]> -Signed-off-by: Daniel Vetter <[email protected]> -Link: http://patchwork.freedesktop.org/patch/msgid/[email protected] -Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=92084 -Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=80896 -Acked-by: Mika Kuoppala <[email protected]> -Signed-off-by: Daniel Vetter <[email protected]> -Acked-by: Takashi Iwai <[email protected]> - ---- - drivers/gpu/drm/i915/i915_irq.c | 10 +++++++--- - 1 file changed, 7 insertions(+), 3 deletions(-) - ---- a/drivers/gpu/drm/i915/i915_irq.c -+++ b/drivers/gpu/drm/i915/i915_irq.c -@@ -2354,9 +2354,13 @@ static irqreturn_t gen8_irq_handler(int - spt_irq_handler(dev, pch_iir); - else - cpt_irq_handler(dev, pch_iir); -- } else -- DRM_ERROR("The master control interrupt lied (SDE)!\n"); -- -+ } else { -+ /* -+ * Like on previous PCH there seems to be something -+ * fishy going on with forwarding PCH interrupts. -+ */ -+ DRM_DEBUG_DRIVER("The master control interrupt lied (SDE)!\n"); -+ } - } - - I915_WRITE_FW(GEN8_MASTER_IRQ, GEN8_MASTER_IRQ_CONTROL); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.drivers/drm-radeon-Ensure-radeon-bo-is-unreserved-in-radeon_ new/patches.drivers/drm-radeon-Ensure-radeon-bo-is-unreserved-in-radeon_ --- old/patches.drivers/drm-radeon-Ensure-radeon-bo-is-unreserved-in-radeon_ 1970-01-01 01:00:00.000000000 +0100 +++ new/patches.drivers/drm-radeon-Ensure-radeon-bo-is-unreserved-in-radeon_ 2016-03-04 09:07:00.000000000 +0100 @@ -0,0 +1,32 @@ +From 186bac815227a4c26a0ad2f18c7450015d93ed0a Mon Sep 17 00:00:00 2001 +From: Matthew Dawson <[email protected]> +Date: Mon, 25 Jan 2016 10:34:12 -0500 +Subject: [PATCH] drm/radeon: Ensure radeon bo is unreserved in radeon_gem_va_ioctl +Mime-version: 1.0 +Content-type: text/plain; charset=UTF-8 +Content-transfer-encoding: 8bit +Git-commit: 186bac815227a4c26a0ad2f18c7450015d93ed0a +Patch-mainline: 4.5-rc2 +References: boo#955096,boo#967938 + +Found with lockdep while testing gpu reset. + +Reviewed-by: Christian König <[email protected]> +Signed-off-by: Matthew Dawson <[email protected]> +Signed-off-by: Alex Deucher <[email protected]> +Acked-by: Takashi Iwai <[email protected]> + +--- + drivers/gpu/drm/radeon/radeon_gem.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/gpu/drm/radeon/radeon_gem.c ++++ b/drivers/gpu/drm/radeon/radeon_gem.c +@@ -663,6 +663,7 @@ int radeon_gem_va_ioctl(struct drm_devic + bo_va = radeon_vm_bo_find(&fpriv->vm, rbo); + if (!bo_va) { + args->operation = RADEON_VA_RESULT_ERROR; ++ radeon_bo_unreserve(rbo); + drm_gem_object_unreference_unlocked(gobj); + return -ENOENT; + } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.drivers/drm-radeon-Use-unlocked-gem-unreferencing new/patches.drivers/drm-radeon-Use-unlocked-gem-unreferencing --- old/patches.drivers/drm-radeon-Use-unlocked-gem-unreferencing 1970-01-01 01:00:00.000000000 +0100 +++ new/patches.drivers/drm-radeon-Use-unlocked-gem-unreferencing 2016-03-04 09:07:00.000000000 +0100 @@ -0,0 +1,42 @@ +From 623fc3b7bdbfd64536576f71f87652385d4d88fc Mon Sep 17 00:00:00 2001 +From: Daniel Vetter <[email protected]> +Date: Mon, 23 Nov 2015 10:32:38 +0100 +Subject: [PATCH] drm/radeon: Use unlocked gem unreferencing +Mime-version: 1.0 +Content-type: text/plain; charset=UTF-8 +Content-transfer-encoding: 8bit +Git-commit: 623fc3b7bdbfd64536576f71f87652385d4d88fc +Patch-mainline: 4.5-rc1 +References: boo#955096,boo#967938 + +For drm_gem_object_unreference callers are required to hold +dev->struct_mutex, which these paths don't. Enforcing this requirement +has become a bit more strict with + +commit ef4c6270bf2867e2f8032e9614d1a8cfc6c71663 +Author: Daniel Vetter <[email protected]> +Date: Thu Oct 15 09:36:25 2015 +0200 + + drm/gem: Check locking in drm_gem_object_unreference + +Cc: Alex Deucher <[email protected]> +Reviewed-by: Christian König <[email protected]> +Signed-off-by: Daniel Vetter <[email protected]> +Signed-off-by: Alex Deucher <[email protected]> +Acked-by: Takashi Iwai <[email protected]> + +--- + drivers/gpu/drm/radeon/radeon_fb.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/gpu/drm/radeon/radeon_fb.c ++++ b/drivers/gpu/drm/radeon/radeon_fb.c +@@ -283,7 +283,7 @@ out_unref: + + } + if (fb && ret) { +- drm_gem_object_unreference(gobj); ++ drm_gem_object_unreference_unlocked(gobj); + drm_framebuffer_unregister_private(fb); + drm_framebuffer_cleanup(fb); + kfree(fb); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.drivers/drm-radeon-fix-dp-link-rate-selection-v2 new/patches.drivers/drm-radeon-fix-dp-link-rate-selection-v2 --- old/patches.drivers/drm-radeon-fix-dp-link-rate-selection-v2 1970-01-01 01:00:00.000000000 +0100 +++ new/patches.drivers/drm-radeon-fix-dp-link-rate-selection-v2 2016-03-04 09:07:00.000000000 +0100 @@ -0,0 +1,213 @@ +From 092c96a8ab9d1bd60ada2ed385cc364ce084180e Mon Sep 17 00:00:00 2001 +From: Alex Deucher <[email protected]> +Date: Thu, 17 Dec 2015 10:23:34 -0500 +Subject: [PATCH] drm/radeon: fix dp link rate selection (v2) +Git-commit: 092c96a8ab9d1bd60ada2ed385cc364ce084180e +Patch-mainline: 4.5-rc1 +References: boo#955096,boo#967938 + +Need to properly handle the max link rate in the dpcd. +This prevents some cases where 5.4 Ghz is selected when +it shouldn't be. + +V2: simplify logic, add array bounds check + +Reviewed-by: Tom St Denis <[email protected]> +Signed-off-by: Alex Deucher <[email protected]> +Acked-by: Takashi Iwai <[email protected]> + +--- + drivers/gpu/drm/radeon/atombios_dp.c | 108 +++++++++++---------------------- + drivers/gpu/drm/radeon/radeon_dp_mst.c | 12 ++- + drivers/gpu/drm/radeon/radeon_mode.h | 6 + + 3 files changed, 49 insertions(+), 77 deletions(-) + +--- a/drivers/gpu/drm/radeon/atombios_dp.c ++++ b/drivers/gpu/drm/radeon/atombios_dp.c +@@ -302,77 +302,31 @@ static int convert_bpc_to_bpp(int bpc) + return bpc * 3; + } + +-/* get the max pix clock supported by the link rate and lane num */ +-static int dp_get_max_dp_pix_clock(int link_rate, +- int lane_num, +- int bpp) +-{ +- return (link_rate * lane_num * 8) / bpp; +-} +- + /***** radeon specific DP functions *****/ + +-int radeon_dp_get_max_link_rate(struct drm_connector *connector, +- const u8 dpcd[DP_DPCD_SIZE]) +-{ +- int max_link_rate; +- +- if (radeon_connector_is_dp12_capable(connector)) +- max_link_rate = min(drm_dp_max_link_rate(dpcd), 540000); +- else +- max_link_rate = min(drm_dp_max_link_rate(dpcd), 270000); +- +- return max_link_rate; +-} +- +-/* First get the min lane# when low rate is used according to pixel clock +- * (prefer low rate), second check max lane# supported by DP panel, +- * if the max lane# < low rate lane# then use max lane# instead. +- */ +-static int radeon_dp_get_dp_lane_number(struct drm_connector *connector, +- const u8 dpcd[DP_DPCD_SIZE], +- int pix_clock) ++int radeon_dp_get_dp_link_config(struct drm_connector *connector, ++ const u8 dpcd[DP_DPCD_SIZE], ++ unsigned pix_clock, ++ unsigned *dp_lanes, unsigned *dp_rate) + { + int bpp = convert_bpc_to_bpp(radeon_get_monitor_bpc(connector)); +- int max_link_rate = radeon_dp_get_max_link_rate(connector, dpcd); +- int max_lane_num = drm_dp_max_lane_count(dpcd); +- int lane_num; +- int max_dp_pix_clock; +- +- for (lane_num = 1; lane_num < max_lane_num; lane_num <<= 1) { +- max_dp_pix_clock = dp_get_max_dp_pix_clock(max_link_rate, lane_num, bpp); +- if (pix_clock <= max_dp_pix_clock) +- break; +- } +- +- return lane_num; +-} +- +-static int radeon_dp_get_dp_link_clock(struct drm_connector *connector, +- const u8 dpcd[DP_DPCD_SIZE], +- int pix_clock) +-{ +- int bpp = convert_bpc_to_bpp(radeon_get_monitor_bpc(connector)); +- int lane_num, max_pix_clock; +- +- if (radeon_connector_encoder_get_dp_bridge_encoder_id(connector) == +- ENCODER_OBJECT_ID_NUTMEG) +- return 270000; +- +- lane_num = radeon_dp_get_dp_lane_number(connector, dpcd, pix_clock); +- max_pix_clock = dp_get_max_dp_pix_clock(162000, lane_num, bpp); +- if (pix_clock <= max_pix_clock) +- return 162000; +- max_pix_clock = dp_get_max_dp_pix_clock(270000, lane_num, bpp); +- if (pix_clock <= max_pix_clock) +- return 270000; +- if (radeon_connector_is_dp12_capable(connector)) { +- max_pix_clock = dp_get_max_dp_pix_clock(540000, lane_num, bpp); +- if (pix_clock <= max_pix_clock) +- return 540000; ++ static const unsigned link_rates[3] = { 162000, 270000, 540000 }; ++ unsigned max_link_rate = drm_dp_max_link_rate(dpcd); ++ unsigned max_lane_num = drm_dp_max_lane_count(dpcd); ++ unsigned lane_num, i, max_pix_clock; ++ ++ for (lane_num = 1; lane_num <= max_lane_num; lane_num <<= 1) { ++ for (i = 0; i < ARRAY_SIZE(link_rates) && link_rates[i] <= max_link_rate; i++) { ++ max_pix_clock = (lane_num * link_rates[i] * 8) / bpp; ++ if (max_pix_clock >= pix_clock) { ++ *dp_lanes = lane_num; ++ *dp_rate = link_rates[i]; ++ return 0; ++ } ++ } + } + +- return radeon_dp_get_max_link_rate(connector, dpcd); ++ return -EINVAL; + } + + static u8 radeon_dp_encoder_service(struct radeon_device *rdev, +@@ -491,6 +445,7 @@ void radeon_dp_set_link_config(struct dr + { + struct radeon_connector *radeon_connector = to_radeon_connector(connector); + struct radeon_connector_atom_dig *dig_connector; ++ int ret; + + if (!radeon_connector->con_priv) + return; +@@ -498,10 +453,14 @@ void radeon_dp_set_link_config(struct dr + + if ((dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT) || + (dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_eDP)) { +- dig_connector->dp_clock = +- radeon_dp_get_dp_link_clock(connector, dig_connector->dpcd, mode->clock); +- dig_connector->dp_lane_count = +- radeon_dp_get_dp_lane_number(connector, dig_connector->dpcd, mode->clock); ++ ret = radeon_dp_get_dp_link_config(connector, dig_connector->dpcd, ++ mode->clock, ++ &dig_connector->dp_lane_count, ++ &dig_connector->dp_clock); ++ if (ret) { ++ dig_connector->dp_clock = 0; ++ dig_connector->dp_lane_count = 0; ++ } + } + } + +@@ -510,7 +469,8 @@ int radeon_dp_mode_valid_helper(struct d + { + struct radeon_connector *radeon_connector = to_radeon_connector(connector); + struct radeon_connector_atom_dig *dig_connector; +- int dp_clock; ++ unsigned dp_clock, dp_lanes; ++ int ret; + + if ((mode->clock > 340000) && + (!radeon_connector_is_dp12_capable(connector))) +@@ -520,8 +480,12 @@ int radeon_dp_mode_valid_helper(struct d + return MODE_CLOCK_HIGH; + dig_connector = radeon_connector->con_priv; + +- dp_clock = +- radeon_dp_get_dp_link_clock(connector, dig_connector->dpcd, mode->clock); ++ ret = radeon_dp_get_dp_link_config(connector, dig_connector->dpcd, ++ mode->clock, ++ &dp_lanes, ++ &dp_clock); ++ if (ret) ++ return MODE_CLOCK_HIGH; + + if ((dp_clock == 540000) && + (!radeon_connector_is_dp12_capable(connector))) +--- a/drivers/gpu/drm/radeon/radeon_dp_mst.c ++++ b/drivers/gpu/drm/radeon/radeon_dp_mst.c +@@ -525,11 +525,17 @@ static bool radeon_mst_mode_fixup(struct + drm_mode_set_crtcinfo(adjusted_mode, 0); + { + struct radeon_connector_atom_dig *dig_connector; ++ int ret; + + dig_connector = mst_enc->connector->con_priv; +- dig_connector->dp_lane_count = drm_dp_max_lane_count(dig_connector->dpcd); +- dig_connector->dp_clock = radeon_dp_get_max_link_rate(&mst_enc->connector->base, +- dig_connector->dpcd); ++ ret = radeon_dp_get_dp_link_config(&mst_enc->connector->base, ++ dig_connector->dpcd, adjusted_mode->clock, ++ &dig_connector->dp_lane_count, ++ &dig_connector->dp_clock); ++ if (ret) { ++ dig_connector->dp_lane_count = 0; ++ dig_connector->dp_clock = 0; ++ } + DRM_DEBUG_KMS("dig clock %p %d %d\n", dig_connector, + dig_connector->dp_lane_count, dig_connector->dp_clock); + } +--- a/drivers/gpu/drm/radeon/radeon_mode.h ++++ b/drivers/gpu/drm/radeon/radeon_mode.h +@@ -757,8 +757,10 @@ extern u8 radeon_dp_getsinktype(struct r + extern bool radeon_dp_getdpcd(struct radeon_connector *radeon_connector); + extern int radeon_dp_get_panel_mode(struct drm_encoder *encoder, + struct drm_connector *connector); +-int radeon_dp_get_max_link_rate(struct drm_connector *connector, +- const u8 *dpcd); ++extern int radeon_dp_get_dp_link_config(struct drm_connector *connector, ++ const u8 *dpcd, ++ unsigned pix_clock, ++ unsigned *dp_lanes, unsigned *dp_rate); + extern void radeon_dp_set_rx_power_state(struct drm_connector *connector, + u8 power_state); + extern void radeon_dp_aux_init(struct radeon_connector *radeon_connector); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.drivers/drm-radeon-only-increment-sync_seq-when-a-fence-is-r new/patches.drivers/drm-radeon-only-increment-sync_seq-when-a-fence-is-r --- old/patches.drivers/drm-radeon-only-increment-sync_seq-when-a-fence-is-r 1970-01-01 01:00:00.000000000 +0100 +++ new/patches.drivers/drm-radeon-only-increment-sync_seq-when-a-fence-is-r 2016-03-04 09:07:00.000000000 +0100 @@ -0,0 +1,43 @@ +From b24c683af14bdc52b81899937ef2e52c15fe4768 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Nicolai=20H=C3=A4hnle?= <[email protected]> +Date: Sat, 12 Dec 2015 11:42:25 -0500 +Subject: [PATCH] drm/radeon: only increment sync_seq when a fence is really emitted +Mime-version: 1.0 +Content-type: text/plain; charset=UTF-8 +Content-transfer-encoding: 8bit +Git-commit: b24c683af14bdc52b81899937ef2e52c15fe4768 +Patch-mainline: 4.5-rc1 +References: boo#955096,boo#967938 + +In the rare situation where the kmalloc fails we're probably screwed anyway, +but let's try to be more robust about it. + +Reviewed-by: Michel Dänzer <[email protected]> +Signed-off-by: Nicolai Hähnle <[email protected]> +Signed-off-by: Alex Deucher <[email protected]> +Acked-by: Takashi Iwai <[email protected]> + +--- + drivers/gpu/drm/radeon/radeon_fence.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/gpu/drm/radeon/radeon_fence.c ++++ b/drivers/gpu/drm/radeon/radeon_fence.c +@@ -130,7 +130,7 @@ int radeon_fence_emit(struct radeon_devi + struct radeon_fence **fence, + int ring) + { +- u64 seq = ++rdev->fence_drv[ring].sync_seq[ring]; ++ u64 seq; + + /* we are protected by the ring emission mutex */ + *fence = kmalloc(sizeof(struct radeon_fence), GFP_KERNEL); +@@ -138,7 +138,7 @@ int radeon_fence_emit(struct radeon_devi + return -ENOMEM; + } + (*fence)->rdev = rdev; +- (*fence)->seq = seq; ++ (*fence)->seq = seq = ++rdev->fence_drv[ring].sync_seq[ring]; + (*fence)->ring = ring; + (*fence)->is_vm_update = false; + fence_init(&(*fence)->base, &radeon_fence_ops, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.drivers/drm-radeon-only-init-fbdev-if-we-have-connectors new/patches.drivers/drm-radeon-only-init-fbdev-if-we-have-connectors --- old/patches.drivers/drm-radeon-only-init-fbdev-if-we-have-connectors 1970-01-01 01:00:00.000000000 +0100 +++ new/patches.drivers/drm-radeon-only-init-fbdev-if-we-have-connectors 2016-03-04 09:07:00.000000000 +0100 @@ -0,0 +1,40 @@ +From f95429eccc570dc45d589c327bfcfddcdc3e8228 Mon Sep 17 00:00:00 2001 +From: Rob Clark <[email protected]> +Date: Mon, 25 Jan 2016 18:06:48 -0500 +Subject: [PATCH] drm/radeon: only init fbdev if we have connectors +Git-commit: f95429eccc570dc45d589c327bfcfddcdc3e8228 +Patch-mainline: 4.5-rc2 +References: boo#955096,boo#967938 + +This fixes an issue that was noticed on an optimus/prime laptop with +a kernel that was old enough to not support the integrated intel gfx +(which was driving all the outputs), but did have support for the +discrete radeon gpu. The end result was not falling back to VESA and +leaving the user with a black screen. + +(Plus it is kind of silly to create an framebuffer device if there +are no outputs hooked up to the gpu.) + +Signed-off-by: Rob Clark <[email protected]> +Signed-off-by: Alex Deucher <[email protected]> +Acked-by: Takashi Iwai <[email protected]> + +--- + drivers/gpu/drm/radeon/radeon_display.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +--- a/drivers/gpu/drm/radeon/radeon_display.c ++++ b/drivers/gpu/drm/radeon/radeon_display.c +@@ -1670,8 +1670,10 @@ int radeon_modeset_init(struct radeon_de + /* setup afmt */ + radeon_afmt_init(rdev); + +- radeon_fbdev_init(rdev); +- drm_kms_helper_poll_init(rdev->ddev); ++ if (!list_empty(&rdev->ddev->mode_config.connector_list)) { ++ radeon_fbdev_init(rdev); ++ drm_kms_helper_poll_init(rdev->ddev); ++ } + + /* do pm late init */ + ret = radeon_pm_late_init(rdev); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.drivers/drm-radeon-pm-Handle-failure-of-drm_vblank_get new/patches.drivers/drm-radeon-pm-Handle-failure-of-drm_vblank_get --- old/patches.drivers/drm-radeon-pm-Handle-failure-of-drm_vblank_get 1970-01-01 01:00:00.000000000 +0100 +++ new/patches.drivers/drm-radeon-pm-Handle-failure-of-drm_vblank_get 2016-03-04 09:07:00.000000000 +0100 @@ -0,0 +1,42 @@ +From e0b34e3857004ac2257458d6354c31349f51e207 Mon Sep 17 00:00:00 2001 +From: Mario Kleiner <[email protected]> +Date: Fri, 12 Feb 2016 20:30:31 +0100 +Subject: [PATCH] drm/radeon/pm: Handle failure of drm_vblank_get. +Git-commit: e0b34e3857004ac2257458d6354c31349f51e207 +Patch-mainline: 4.5-rc5 +References: boo#955096,boo#967938 + +Make sure that drm_vblank_get/put() stay balanced in +case drm_vblank_get fails, by skipping the corresponding +put. + +Signed-off-by: Mario Kleiner <[email protected]> +Reviewed-by: Daniel Vetter <[email protected]> +Cc: [email protected] +Cc: [email protected] +Cc: [email protected] +Cc: [email protected] +Signed-off-by: Dave Airlie <[email protected]> +Acked-by: Takashi Iwai <[email protected]> + +--- + drivers/gpu/drm/radeon/radeon_pm.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +--- a/drivers/gpu/drm/radeon/radeon_pm.c ++++ b/drivers/gpu/drm/radeon/radeon_pm.c +@@ -276,8 +276,12 @@ static void radeon_pm_set_clocks(struct + if (rdev->irq.installed) { + for (i = 0; i < rdev->num_crtc; i++) { + if (rdev->pm.active_crtcs & (1 << i)) { +- rdev->pm.req_vblank |= (1 << i); +- drm_vblank_get(rdev->ddev, i); ++ /* This can fail if a modeset is in progress */ ++ if (drm_vblank_get(rdev->ddev, i) == 0) ++ rdev->pm.req_vblank |= (1 << i); ++ else ++ DRM_DEBUG_DRIVER("crtc %d no vblank, can glitch\n", ++ i); + } + } + } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.drivers/radeon-r100-Silence-may-be-used-uninitialized-warnin new/patches.drivers/radeon-r100-Silence-may-be-used-uninitialized-warnin --- old/patches.drivers/radeon-r100-Silence-may-be-used-uninitialized-warnin 1970-01-01 01:00:00.000000000 +0100 +++ new/patches.drivers/radeon-r100-Silence-may-be-used-uninitialized-warnin 2016-03-04 09:07:00.000000000 +0100 @@ -0,0 +1,64 @@ +From 1ef897e4645392c6c5230f2ae92c6bc658e44345 Mon Sep 17 00:00:00 2001 +From: Tim Gardner <[email protected]> +Date: Thu, 7 Jan 2016 10:31:32 -0700 +Subject: [PATCH] radeon: r100: Silence 'may be used uninitialized' warnings +Mime-version: 1.0 +Content-type: text/plain; charset=UTF-8 +Content-transfer-encoding: 8bit +Git-commit: 1ef897e4645392c6c5230f2ae92c6bc658e44345 +Patch-mainline: 4.5-rc1 +References: boo#955096,boo#967938 + + CC [M] drivers/gpu/drm/radeon/r100.o +In file included from drivers/gpu/drm/radeon/radeon_mode.h:37:0, + from drivers/gpu/drm/radeon/radeon.h:80, + from drivers/gpu/drm/radeon/r100.c:33: +Drivers/gpu/drm/radeon/r100.c: In function 'r100_bandwidth_update': +include/drm/drm_fixed.h:64:13: warning: 'crit_point_ff.full' may be used uninitialized in this function [-Wmaybe-uninitialized] + u64 tmp = ((u64)A.full << 13); + ^ +drivers/gpu/drm/radeon/r100.c:3153:63: note: 'crit_point_ff.full' was declared here + fixed20_12 peak_disp_bw, mem_bw, pix_clk, pix_clk2, temp_ff, crit_point_ff; + ^ +drivers/gpu/drm/radeon/r100.c:3583:42: warning: 'disp_drain_rate.full' may be used uninitialized in this function [-Wmaybe-uninitialized] + temp_ff.full = read_return_rate.full - disp_drain_rate.full; + +gcc version 5.3.1 20151219 (Ubuntu 5.3.1-4ubuntu1) + +Cc: Alex Deucher <[email protected]> +Cc: "Christian König" <[email protected]> +Cc: David Airlie <[email protected]> +Signed-off-by: Tim Gardner <[email protected]> +Signed-off-by: Alex Deucher <[email protected]> +Acked-by: Takashi Iwai <[email protected]> + +--- + drivers/gpu/drm/radeon/r100.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/drivers/gpu/drm/radeon/r100.c b/drivers/gpu/drm/radeon/r100.c +index 9e7e2bf03b81..5eae0a88dd3e 100644 +--- a/drivers/gpu/drm/radeon/r100.c ++++ b/drivers/gpu/drm/radeon/r100.c +@@ -3150,7 +3150,8 @@ void r100_bandwidth_update(struct radeon_device *rdev) + { + fixed20_12 trcd_ff, trp_ff, tras_ff, trbs_ff, tcas_ff; + fixed20_12 sclk_ff, mclk_ff, sclk_eff_ff, sclk_delay_ff; +- fixed20_12 peak_disp_bw, mem_bw, pix_clk, pix_clk2, temp_ff, crit_point_ff; ++ fixed20_12 peak_disp_bw, mem_bw, pix_clk, pix_clk2, temp_ff; ++ fixed20_12 crit_point_ff = {0}; + uint32_t temp, data, mem_trcd, mem_trp, mem_tras; + fixed20_12 memtcas_ff[8] = { + dfixed_init(1), +@@ -3204,7 +3205,7 @@ void r100_bandwidth_update(struct radeon_device *rdev) + fixed20_12 min_mem_eff; + fixed20_12 mc_latency_sclk, mc_latency_mclk, k1; + fixed20_12 cur_latency_mclk, cur_latency_sclk; +- fixed20_12 disp_latency, disp_latency_overhead, disp_drain_rate, ++ fixed20_12 disp_latency, disp_latency_overhead, disp_drain_rate = {0}, + disp_drain_rate2, read_return_rate; + fixed20_12 time_disp1_drop_priority; + int c; +-- +2.7.2 + ++++++ patches.fixes.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/drm-Fix-drm_vblank_pre-post_modeset-regression-from new/patches.fixes/drm-Fix-drm_vblank_pre-post_modeset-regression-from --- old/patches.fixes/drm-Fix-drm_vblank_pre-post_modeset-regression-from 2016-02-26 10:54:10.000000000 +0100 +++ new/patches.fixes/drm-Fix-drm_vblank_pre-post_modeset-regression-from 1970-01-01 01:00:00.000000000 +0100 @@ -1,84 +0,0 @@ -From c61934ed9a0e3911a9935df26858726a7ec35ec0 Mon Sep 17 00:00:00 2001 -From: Mario Kleiner <[email protected]> -Date: Fri, 12 Feb 2016 20:30:29 +0100 -Subject: [PATCH] drm: Fix drm_vblank_pre/post_modeset regression from Linux 4.4 -Git-commit: c61934ed9a0e3911a9935df26858726a7ec35ec0 -Patch-mainline: 4.5-rc5 -References: bsc#962535 - -Changes to drm_update_vblank_count() in Linux 4.4 broke the -behaviour of the pre/post modeset functions as the new update -code doesn't deal with hw vblank counter resets inbetween calls -to drm_vblank_pre_modeset an drm_vblank_post_modeset, as it -should. - -This causes mistreatment of such hw counter resets as counter -wraparound, and thereby large forward jumps of the software -vblank counter which in turn cause vblank event dispatching -and vblank waits to fail/hang --> userspace clients hang. - -This symptom was reported on radeon-kms to cause a infinite -hang of KDE Plasma 5 shell's login procedure, preventing users -from logging in. - -Fix this by detecting when drm_update_vblank_count() is called -inside a pre->post modeset interval. If so, clamp valid vblank -increments to the safe values 0 and 1, pretty much restoring -the update behavior of the old update code of Linux 4.3 and -earlier. Also reset the last recorded hw vblank count at call -to drm_vblank_post_modeset() to be safe against hw that after -modesetting, dpms on etc. only fires its first vblank irq after -drm_vblank_post_modeset() was already called. - -Reported-by: Vlastimil Babka <[email protected]> -Signed-off-by: Mario Kleiner <[email protected]> -Reviewed-by: Daniel Vetter <[email protected]> -Tested-by: Vlastimil Babka <[email protected]> - -Cc: <[email protected]> # 4.4+ -Cc: [email protected] -Cc: [email protected] -Cc: [email protected] -Cc: [email protected] -Cc: [email protected] -Cc: [email protected] -Cc: [email protected] -Signed-off-by: Dave Airlie <[email protected]> -Acked-by: Takashi Iwai <[email protected]> - ---- - drivers/gpu/drm/drm_irq.c | 16 ++++++++++++++++ - 1 file changed, 16 insertions(+) - ---- a/drivers/gpu/drm/drm_irq.c -+++ b/drivers/gpu/drm/drm_irq.c -@@ -222,6 +222,21 @@ static void drm_update_vblank_count(stru - } - - /* -+ * Within a drm_vblank_pre_modeset - drm_vblank_post_modeset -+ * interval? If so then vblank irqs keep running and it will likely -+ * happen that the hardware vblank counter is not trustworthy as it -+ * might reset at some point in that interval and vblank timestamps -+ * are not trustworthy either in that interval. Iow. this can result -+ * in a bogus diff >> 1 which must be avoided as it would cause -+ * random large forward jumps of the software vblank counter. -+ */ -+ if (diff > 1 && (vblank->inmodeset & 0x2)) { -+ DRM_DEBUG_VBL("clamping vblank bump to 1 on crtc %u: diffr=%u" -+ " due to pre-modeset.\n", pipe, diff); -+ diff = 1; -+ } -+ -+ /* - * FIMXE: Need to replace this hack with proper seqlocks. - * - * Restrict the bump of the software vblank counter to a safe maximum -@@ -1575,6 +1590,7 @@ void drm_vblank_post_modeset(struct drm_ - if (vblank->inmodeset) { - spin_lock_irqsave(&dev->vbl_lock, irqflags); - dev->vblank_disable_allowed = true; -+ drm_reset_vblank_timestamp(dev, pipe); - spin_unlock_irqrestore(&dev->vbl_lock, irqflags); - - if (vblank->inmodeset & 0x2) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/drm-Fix-treatment-of-drm_vblank_offdelay-in-drm_vbla new/patches.fixes/drm-Fix-treatment-of-drm_vblank_offdelay-in-drm_vbla --- old/patches.fixes/drm-Fix-treatment-of-drm_vblank_offdelay-in-drm_vbla 2016-02-26 10:54:10.000000000 +0100 +++ new/patches.fixes/drm-Fix-treatment-of-drm_vblank_offdelay-in-drm_vbla 1970-01-01 01:00:00.000000000 +0100 @@ -1,61 +0,0 @@ -From bb74fc1bf3072bd3ab4ed5f43afd287a63baf2d7 Mon Sep 17 00:00:00 2001 -From: Mario Kleiner <[email protected]> -Date: Fri, 12 Feb 2016 20:30:30 +0100 -Subject: [PATCH] drm: Fix treatment of drm_vblank_offdelay in drm_vblank_on() (v2) -Git-commit: bb74fc1bf3072bd3ab4ed5f43afd287a63baf2d7 -Patch-mainline: 4.5-rc5 -References: bsc#962535 - -drm_vblank_offdelay can have three different types of values: - -< 0 is to be always treated the same as dev->vblank_disable_immediate -= 0 is to be treated as "never disable vblanks" -> 0 is to be treated as disable immediate if kms driver wants it - that way via dev->vblank_disable_immediate. Otherwise it is - a disable timeout in msecs. - -This got broken in Linux 3.18+ for the implementation of -drm_vblank_on. If the user specified a value of zero which should -always reenable vblank irqs in this function, a kms driver could -override the users choice by setting vblank_disable_immediate -to true. This patch fixes the regression and keeps the user in -control. - -V2: Only reenable vblank if there are clients left or the user requested to "never disable vblanks" via offdelay 0. Enabling vblanks even in the "delayed disable" case (offdelay > 0) was specifically added by Ville in commit cd19e52aee922 ("drm: Kick start vblank interrupts at drm_vblank_on()"), but after discussion it turns out that this was done by accident. - - Citing Ville: "I think it just ended up as a mess due to changing - some of the semantics of offdelay<0 vs. offdelay==0 vs. - disable_immediate during the review of the series. So yeah, given - how drm_vblank_put() works now, I'd just make this check for - offdelay==0." - -Signed-off-by: Mario Kleiner <[email protected]> -Reviewed-by: Daniel Vetter <[email protected]> - -Cc: <[email protected]> # 3.18+ -Cc: [email protected] -Cc: [email protected] -Cc: [email protected] -Cc: [email protected] -Cc: [email protected] -Cc: [email protected] -Cc: [email protected] -Signed-off-by: Dave Airlie <[email protected]> -Acked-by: Takashi Iwai <[email protected]> - ---- - drivers/gpu/drm/drm_irq.c | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) - ---- a/drivers/gpu/drm/drm_irq.c -+++ b/drivers/gpu/drm/drm_irq.c -@@ -1494,8 +1494,7 @@ void drm_vblank_on(struct drm_device *de - * re-enable interrupts if there are users left, or the - * user wishes vblank interrupts to be enabled all the time. - */ -- if (atomic_read(&vblank->refcount) != 0 || -- (!dev->vblank_disable_immediate && drm_vblank_offdelay == 0)) -+ if (atomic_read(&vblank->refcount) != 0 || drm_vblank_offdelay == 0) - WARN_ON(drm_vblank_enable(dev, pipe)); - spin_unlock_irqrestore(&dev->vbl_lock, irqflags); - } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/drm-No-Op-redundant-calls-to-drm_vblank_off-v2 new/patches.fixes/drm-No-Op-redundant-calls-to-drm_vblank_off-v2 --- old/patches.fixes/drm-No-Op-redundant-calls-to-drm_vblank_off-v2 2016-02-26 10:54:10.000000000 +0100 +++ new/patches.fixes/drm-No-Op-redundant-calls-to-drm_vblank_off-v2 1970-01-01 01:00:00.000000000 +0100 @@ -1,74 +0,0 @@ -From e8235891b33799d597ff4ab5e45afe173a65da30 Mon Sep 17 00:00:00 2001 -From: Mario Kleiner <[email protected]> -Date: Fri, 12 Feb 2016 20:30:27 +0100 -Subject: [PATCH] drm: No-Op redundant calls to drm_vblank_off() (v2) -Git-commit: e8235891b33799d597ff4ab5e45afe173a65da30 -Patch-mainline: 4.5-rc5 -References: bsc#962535 - -Otherwise if a kms driver calls into drm_vblank_off() more than once -before calling drm_vblank_on() again, the redundant calls to -vblank_disable_and_save() will call drm_update_vblank_count() -while hw vblank counters and vblank timestamping are in a undefined -state during modesets, dpms off etc. - -At least with the legacy drm helpers it is not unusual to -get multiple calls to drm_vblank_off and drm_vblank_on, e.g., -half a dozen calls to drm_vblank_off and two calls to drm_vblank_on -were observed on radeon-kms during dpms-off -> dpms-on transition. - -We don't no-op calls from atomic modesetting drivers, as they -should do a proper job of tracking hw state. - -Fixes large jumps of the software maintained vblank counter due to -the hardware vblank counter resetting to zero during dpms off or -modeset, e.g., if radeon-kms is modified to use drm_vblank_off/on -instead of drm_vblank_pre/post_modeset(). - -This fixes a regression caused by the changes made to -drm_update_vblank_count() in Linux 4.4. - -V2: Don't no-op on atomic modesetting drivers, per suggestion of Daniel Vetter. - -Signed-off-by: Mario Kleiner <[email protected]> -Reviewed-by: Daniel Vetter <[email protected]> -Cc: <[email protected]> # 4.4+ -Cc: [email protected] -Cc: [email protected] -Cc: [email protected] -Cc: [email protected] -Cc: [email protected] -Signed-off-by: Dave Airlie <[email protected]> -Acked-by: Takashi Iwai <[email protected]> - ---- - drivers/gpu/drm/drm_irq.c | 11 ++++++++++- - 1 file changed, 10 insertions(+), 1 deletion(-) - ---- a/drivers/gpu/drm/drm_irq.c -+++ b/drivers/gpu/drm/drm_irq.c -@@ -1313,7 +1313,13 @@ void drm_vblank_off(struct drm_device *d - spin_lock_irqsave(&dev->event_lock, irqflags); - - spin_lock(&dev->vbl_lock); -- vblank_disable_and_save(dev, pipe); -+ DRM_DEBUG_VBL("crtc %d, vblank enabled %d, inmodeset %d\n", -+ pipe, vblank->enabled, vblank->inmodeset); -+ -+ /* Avoid redundant vblank disables without previous drm_vblank_on(). */ -+ if (drm_core_check_feature(dev, DRIVER_ATOMIC) || !vblank->inmodeset) -+ vblank_disable_and_save(dev, pipe); -+ - wake_up(&vblank->queue); - - /* -@@ -1415,6 +1421,9 @@ void drm_vblank_on(struct drm_device *de - return; - - spin_lock_irqsave(&dev->vbl_lock, irqflags); -+ DRM_DEBUG_VBL("crtc %d, vblank enabled %d, inmodeset %d\n", -+ pipe, vblank->enabled, vblank->inmodeset); -+ - /* Drop our private "prevent drm_vblank_get" refcount */ - if (vblank->inmodeset) { - atomic_dec(&vblank->refcount); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/drm-Prevent-vblank-counter-bumps-1-with-active-vblan new/patches.fixes/drm-Prevent-vblank-counter-bumps-1-with-active-vblan --- old/patches.fixes/drm-Prevent-vblank-counter-bumps-1-with-active-vblan 2016-02-26 10:54:10.000000000 +0100 +++ new/patches.fixes/drm-Prevent-vblank-counter-bumps-1-with-active-vblan 1970-01-01 01:00:00.000000000 +0100 @@ -1,120 +0,0 @@ -From 99b8e71597fadd6b2ac85e6e10f221f79dd9c1c1 Mon Sep 17 00:00:00 2001 -From: Mario Kleiner <[email protected]> -Date: Fri, 12 Feb 2016 20:30:28 +0100 -Subject: [PATCH] drm: Prevent vblank counter bumps > 1 with active vblank clients. (v2) -Git-commit: 99b8e71597fadd6b2ac85e6e10f221f79dd9c1c1 -Patch-mainline: 4.5-rc5 -References: bsc#962535 - -This fixes a regression introduced by the new drm_update_vblank_count() -implementation in Linux 4.4: - -Restrict the bump of the software vblank counter in drm_update_vblank_count() -to a safe maximum value of +1 whenever there is the possibility that -concurrent readers of vblank timestamps could be active at the moment, -as the current implementation of the timestamp caching and updating is -not safe against concurrent readers for calls to store_vblank() with a -bump of anything but +1. A bump != 1 would very likely return corrupted -timestamps to userspace, because the same slot in the cache could -be concurrently written by store_vblank() and read by one of those -readers in a non-atomic fashion and without the read-retry logic -detecting this collision. - -Concurrent readers can exist while drm_update_vblank_count() is called -from the drm_vblank_off() or drm_vblank_on() functions or other non-vblank- -irq callers. However, all those calls are happening with the vbl_lock -locked thereby preventing a drm_vblank_get(), so the vblank refcount -can't increase while drm_update_vblank_count() is executing. Therefore -a zero vblank refcount during execution of that function signals that -is safe for arbitrary counter bumps if called from outside vblank irq, -whereas a non-zero count is not safe. - -Whenever the function is called from vblank irq, we have to assume concurrent -readers could show up any time during its execution, even if the refcount -is currently zero, as vblank irqs are usually only enabled due to the -presence of readers, and because when it is called from vblank irq it -can't hold the vbl_lock to protect it from sudden bumps in vblank refcount. -Therefore also restrict bumps to +1 when the function is called from vblank -irq. - -Such bumps of more than +1 can happen at other times than reenabling -vblank irqs, e.g., when regular vblank interrupts get delayed by more -than 1 frame due to long held locks, long irq off periods, realtime -preemption on RT kernels, or system management interrupts. - -A better solution would be to rewrite the timestamp caching to use -full seqlocks to allow concurrent writes and reads for arbitrary -vblank counter increments. - -V2: Add code comment that this is essentially a hack and should be replaced by a full seqlock implementation for caching of timestamps. - -Signed-off-by: Mario Kleiner <[email protected]> -Reviewed-by: Daniel Vetter <[email protected]> - -Cc: <[email protected]> # 4.4+ -Cc: [email protected] -Cc: [email protected] -Cc: [email protected] -Cc: [email protected] -Cc: [email protected] -Cc: [email protected] -Cc: [email protected] -Signed-off-by: Dave Airlie <[email protected]> -Acked-by: Takashi Iwai <[email protected]> - ---- - drivers/gpu/drm/drm_irq.c | 43 +++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 43 insertions(+) - ---- a/drivers/gpu/drm/drm_irq.c -+++ b/drivers/gpu/drm/drm_irq.c -@@ -221,6 +221,49 @@ static void drm_update_vblank_count(stru - diff = (flags & DRM_CALLED_FROM_VBLIRQ) != 0; - } - -+ /* -+ * FIMXE: Need to replace this hack with proper seqlocks. -+ * -+ * Restrict the bump of the software vblank counter to a safe maximum -+ * value of +1 whenever there is the possibility that concurrent readers -+ * of vblank timestamps could be active at the moment, as the current -+ * implementation of the timestamp caching and updating is not safe -+ * against concurrent readers for calls to store_vblank() with a bump -+ * of anything but +1. A bump != 1 would very likely return corrupted -+ * timestamps to userspace, because the same slot in the cache could -+ * be concurrently written by store_vblank() and read by one of those -+ * readers without the read-retry logic detecting the collision. -+ * -+ * Concurrent readers can exist when we are called from the -+ * drm_vblank_off() or drm_vblank_on() functions and other non-vblank- -+ * irq callers. However, all those calls to us are happening with the -+ * vbl_lock locked to prevent drm_vblank_get(), so the vblank refcount -+ * can't increase while we are executing. Therefore a zero refcount at -+ * this point is safe for arbitrary counter bumps if we are called -+ * outside vblank irq, a non-zero count is not 100% safe. Unfortunately -+ * we must also accept a refcount of 1, as whenever we are called from -+ * drm_vblank_get() -> drm_vblank_enable() the refcount will be 1 and -+ * we must let that one pass through in order to not lose vblank counts -+ * during vblank irq off - which would completely defeat the whole -+ * point of this routine. -+ * -+ * Whenever we are called from vblank irq, we have to assume concurrent -+ * readers exist or can show up any time during our execution, even if -+ * the refcount is currently zero, as vblank irqs are usually only -+ * enabled due to the presence of readers, and because when we are called -+ * from vblank irq we can't hold the vbl_lock to protect us from sudden -+ * bumps in vblank refcount. Therefore also restrict bumps to +1 when -+ * called from vblank irq. -+ */ -+ if ((diff > 1) && (atomic_read(&vblank->refcount) > 1 || -+ (flags & DRM_CALLED_FROM_VBLIRQ))) { -+ DRM_DEBUG_VBL("clamping vblank bump to 1 on crtc %u: diffr=%u " -+ "refcount %u, vblirq %u\n", pipe, diff, -+ atomic_read(&vblank->refcount), -+ (flags & DRM_CALLED_FROM_VBLIRQ) != 0); -+ diff = 1; -+ } -+ - DRM_DEBUG_VBL("updating vblank count on crtc %u:" - " current=%u, diff=%u, hw=%u hw_last=%u\n", - pipe, vblank->count, diff, cur_vblank, vblank->last); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/drm-nouveau-display-Enable-vblank-irqs-after-display new/patches.fixes/drm-nouveau-display-Enable-vblank-irqs-after-display --- old/patches.fixes/drm-nouveau-display-Enable-vblank-irqs-after-display 2016-02-26 10:54:10.000000000 +0100 +++ new/patches.fixes/drm-nouveau-display-Enable-vblank-irqs-after-display 1970-01-01 01:00:00.000000000 +0100 @@ -1,60 +0,0 @@ -From ff683df7bf34f90766a50c7e7454e219aef2710e Mon Sep 17 00:00:00 2001 -From: Mario Kleiner <[email protected]> -Date: Fri, 12 Feb 2016 20:30:32 +0100 -Subject: [PATCH] drm/nouveau/display: Enable vblank irqs after display engine is on again. -Git-commit: ff683df7bf34f90766a50c7e7454e219aef2710e -Patch-mainline: 4.5-rc5 -References: bsc#962535 - -In the display resume path, move the calls to drm_vblank_on() -after the point when the display engine is running again. - -Since changes were made to drm_update_vblank_count() in Linux 4.4+ -to emulate hw vblank counters via vblank timestamping, the function -drm_vblank_on() now needs working high precision vblank timestamping -and therefore working scanout position queries at time of call. -These don't work before the display engine gets restarted, causing -miscalculation of vblank counter increments and thereby large forward -jumps in vblank count at display resume. These jumps can cause client -hangs on resume, or desktop hangs in the case of composited desktops. - -Fix this Linux 4.4 regression by reordering calls accordingly. - -Signed-off-by: Mario Kleiner <[email protected]> -Cc: <[email protected]> # 4.4+ -Cc: Ben Skeggs <[email protected]> -Cc: [email protected] -Cc: [email protected] -Cc: [email protected] -Reviewed-by: Daniel Vetter <[email protected]> -Signed-off-by: Dave Airlie <[email protected]> -Acked-by: Takashi Iwai <[email protected]> - ---- - drivers/gpu/drm/nouveau/nouveau_display.c | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - ---- a/drivers/gpu/drm/nouveau/nouveau_display.c -+++ b/drivers/gpu/drm/nouveau/nouveau_display.c -@@ -634,10 +634,6 @@ nouveau_display_resume(struct drm_device - nv_crtc->lut.depth = 0; - } - -- /* Make sure that drm and hw vblank irqs get resumed if needed. */ -- for (head = 0; head < dev->mode_config.num_crtc; head++) -- drm_vblank_on(dev, head); -- - /* This should ensure we don't hit a locking problem when someone - * wakes us up via a connector. We should never go into suspend - * while the display is on anyways. -@@ -647,6 +643,10 @@ nouveau_display_resume(struct drm_device - - drm_helper_resume_force_mode(dev); - -+ /* Make sure that drm and hw vblank irqs get resumed if needed. */ -+ for (head = 0; head < dev->mode_config.num_crtc; head++) -+ drm_vblank_on(dev, head); -+ - list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) { - struct nouveau_crtc *nv_crtc = nouveau_crtc(crtc); - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/genirq-Validate-action-before-dereferencing-it-in-ha.patch new/patches.fixes/genirq-Validate-action-before-dereferencing-it-in-ha.patch --- old/patches.fixes/genirq-Validate-action-before-dereferencing-it-in-ha.patch 2016-02-26 10:54:10.000000000 +0100 +++ new/patches.fixes/genirq-Validate-action-before-dereferencing-it-in-ha.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,98 +0,0 @@ -From: Thomas Gleixner <[email protected]> -Date: Wed, 13 Jan 2016 14:07:25 +0100 -Subject: genirq: Validate action before dereferencing it in - handle_irq_event_percpu() -Git-commit: 570540d50710ed192e98e2f7f74578c9486b6b05 -Patch-mainline: v4.5-rc2 -References: bnc#968396 - -commit 71f64340fc0e changed the handling of irq_desc->action from - -CPU 0 CPU 1 -free_irq() lock(desc) - lock(desc) handle_edge_irq() - if (desc->action) { - handle_irq_event() - action = desc->action - unlock(desc) - desc->action = NULL handle_irq_event_percpu(desc, action) - action->xxx -to - -CPU 0 CPU 1 -free_irq() lock(desc) - lock(desc) handle_edge_irq() - if (desc->action) { - handle_irq_event() - unlock(desc) - desc->action = NULL handle_irq_event_percpu(desc, action) - action = desc->action - action->xxx - -So if free_irq manages to set the action to NULL between the unlock and before -the readout, we happily dereference a null pointer. - -We could simply revert 71f64340fc0e, but we want to preserve the better code -generation. A simple solution is to change the action loop from a do {} while -to a while {} loop. - -This is safe because we either see a valid desc->action or NULL. If the action -is about to be removed it is still valid as free_irq() is blocked on -synchronize_irq(). - -CPU 0 CPU 1 -free_irq() lock(desc) - lock(desc) handle_edge_irq() - handle_irq_event(desc) - set(INPROGRESS) - unlock(desc) - handle_irq_event_percpu(desc) - action = desc->action - desc->action = NULL while (action) { - action->xxx - ... - action = action->next; - sychronize_irq() - while(INPROGRESS); lock(desc) - clr(INPROGRESS) -free(action) - -That's basically the same mechanism as we have for shared -interrupts. action->next can become NULL while handle_irq_event_percpu() -runs. Either it sees the action or NULL. It does not matter, because action -itself cannot go away before the interrupt in progress flag has been cleared. - -Fixes: commit 71f64340fc0e "genirq: Remove the second parameter from handle_irq_event_percpu()" -Reported-by: [email protected] -Signed-off-by: Thomas Gleixner <[email protected]> -Cc: Huang Shijie <[email protected]> -Cc: Jiang Liu <[email protected]> -Cc: Peter Zijlstra <[email protected]> -Cc: [email protected] -Link: http://lkml.kernel.org/r/alpine.DEB.2.11.1601131224190.3575@nanos -Signed-off-by: Jiri Slaby <[email protected]> ---- - kernel/irq/handle.c | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - ---- a/kernel/irq/handle.c -+++ b/kernel/irq/handle.c -@@ -138,7 +138,8 @@ irqreturn_t handle_irq_event_percpu(stru - unsigned int flags = 0, irq = desc->irq_data.irq; - struct irqaction *action = desc->action; - -- do { -+ /* action might have become NULL since we dropped the lock */ -+ while (action) { - irqreturn_t res; - - trace_irq_handler_entry(irq, action); -@@ -173,7 +174,7 @@ irqreturn_t handle_irq_event_percpu(stru - - retval |= res; - action = action->next; -- } while (action); -+ } - - add_interrupt_randomness(irq, flags); - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/sd-Optimal-I-O-size-is-in-bytes-not-sectors new/patches.fixes/sd-Optimal-I-O-size-is-in-bytes-not-sectors --- old/patches.fixes/sd-Optimal-I-O-size-is-in-bytes-not-sectors 2016-02-26 10:54:10.000000000 +0100 +++ new/patches.fixes/sd-Optimal-I-O-size-is-in-bytes-not-sectors 1970-01-01 01:00:00.000000000 +0100 @@ -1,37 +0,0 @@ -From d0eb20a863ba7dc1d3f4b841639671f134560be2 Mon Sep 17 00:00:00 2001 -From: "Martin K. Petersen" <[email protected]> -Date: Wed, 20 Jan 2016 11:01:23 -0500 -Subject: [PATCH] sd: Optimal I/O size is in bytes, not sectors -Git-commit: d0eb20a863ba7dc1d3f4b841639671f134560be2 -Patch-mainline: 4.5-rc2 -References: boo#961263 - -Commit ca369d51b3e1 ("block/sd: Fix device-imposed transfer length -limits") accidentally switched optimal I/O size reporting from bytes to -block layer sectors. - -Signed-off-by: Martin K. Petersen <[email protected]> -Reported-by: Christian Borntraeger <[email protected]> -Tested-by: Christian Borntraeger <[email protected]> -Fixes: ca369d51b3e1649be4a72addd6d6a168cfb3f537 -Cc: [email protected] # 4.4+ -Reviewed-by: James E.J. Bottomley <[email protected]> -Reviewed-by: Ewan D. Milne <[email protected]> -Reviewed-by: Matthew R. Ochs <[email protected]> -Acked-by: Takashi Iwai <[email protected]> - ---- - drivers/scsi/sd.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - ---- a/drivers/scsi/sd.c -+++ b/drivers/scsi/sd.c -@@ -2892,7 +2892,7 @@ static int sd_revalidate_disk(struct gen - sdkp->opt_xfer_blocks <= SD_DEF_XFER_BLOCKS && - sdkp->opt_xfer_blocks * sdp->sector_size >= PAGE_CACHE_SIZE) - rw_max = q->limits.io_opt = -- logical_to_sectors(sdp, sdkp->opt_xfer_blocks); -+ sdkp->opt_xfer_blocks * sdp->sector_size; - else - rw_max = BLK_DEF_MAX_SECTORS; - ++++++ patches.kernel.org.tar.bz2 ++++++ ++++ 13688 lines of diff (skipped) ++++++ series.conf ++++++ --- /var/tmp/diff_new_pack.IiMbXl/_old 2016-03-08 09:38:44.000000000 +0100 +++ /var/tmp/diff_new_pack.IiMbXl/_new 2016-03-08 09:38:44.000000000 +0100 @@ -30,6 +30,7 @@ patches.kernel.org/patch-4.4.1 patches.kernel.org/patch-4.4.1-2 patches.kernel.org/patch-4.4.2-3 + patches.kernel.org/patch-4.4.3-4 ######################################################## # Build fixes that apply to the vanilla kernel too. @@ -77,7 +78,6 @@ # Scheduler / Core ######################################################## patches.suse/setuid-dumpable-wrongdir - patches.fixes/genirq-Validate-action-before-dereferencing-it-in-ha.patch ######################################################## # Architecture-specific patches. These used to be all @@ -323,16 +323,8 @@ patches.fixes/scsi-ibmvscsi-module_alias.patch patches.suse/sd_init.mark_majors_busy.patch - # additional bcache fixes (bnc#910440), not upstreamed yet as of 3.19 - patches.drivers/0001-bcache-Add-a-cond_resched-call-to-gc.patch - patches.drivers/0002-bcache-BUG-clear-BCACHE_DEV_UNLINK_DONE-flag-when-at.patch - patches.drivers/0003-bcache-fix-a-livelock-in-btree-lock.patch - patches.drivers/0004-bcache-unregister-reboot-notifier-when-bcache-fails-.patch - patches.drivers/0005-fix-a-leak-in-bch_cached_dev_run.patch - patches.drivers/bcache-fix-writeback-thread-incomplete-stripes-starvation.patch patches.fixes/scsi-ignore-errors-from-scsi_dh_add_device - patches.fixes/sd-Optimal-I-O-size-is-in-bytes-not-sectors patches.fixes/floppy-refactor-open-flags-handling.patch patches.fixes/floppy-fix-lock_fdc-signal-handling.patch @@ -340,17 +332,19 @@ ######################################################## # DRM/Video ######################################################## - patches.drivers/drm-i915-shut-up-gen8-SDE-irq-dmesg-noise patches.fixes/drm-radeon-Update-radeon_get_vblank_counter_kms.patch patches.fixes/0001-drm-i915-Fix-double-unref-in-intelfb_alloc-failure-p.patch patches.fixes/0002-drm-i915-Fix-failure-paths-around-initial-fbdev-allo.patch patches.fixes/0003-drm-i915-Pin-the-ifbdev-for-the-info-system_base-GGT.patch - patches.fixes/drm-No-Op-redundant-calls-to-drm_vblank_off-v2 - patches.fixes/drm-Prevent-vblank-counter-bumps-1-with-active-vblan - patches.fixes/drm-Fix-drm_vblank_pre-post_modeset-regression-from - patches.fixes/drm-Fix-treatment-of-drm_vblank_offdelay-in-drm_vbla - patches.fixes/drm-nouveau-display-Enable-vblank-irqs-after-display + + patches.drivers/drm-radeon-Use-unlocked-gem-unreferencing + patches.drivers/drm-radeon-only-increment-sync_seq-when-a-fence-is-r + patches.drivers/drm-radeon-fix-dp-link-rate-selection-v2 + patches.drivers/drm-radeon-Ensure-radeon-bo-is-unreserved-in-radeon_ + patches.drivers/drm-radeon-only-init-fbdev-if-we-have-connectors + patches.drivers/drm-radeon-pm-Handle-failure-of-drm_vblank_get + patches.drivers/radeon-r100-Silence-may-be-used-uninitialized-warnin ######################################################## # video4linux @@ -400,7 +394,6 @@ ########################################################## # Sound ########################################################## - patches.drivers/ALSA-hda-Apply-clock-gate-workaround-to-Skylake-too ######################################################## # Char / serial ++++++ source-timestamp ++++++ --- /var/tmp/diff_new_pack.IiMbXl/_old 2016-03-08 09:38:44.000000000 +0100 +++ /var/tmp/diff_new_pack.IiMbXl/_new 2016-03-08 09:38:44.000000000 +0100 @@ -1,3 +1,3 @@ -2016-02-26 10:54:10 +0100 -GIT Revision: 171b8f1f4e35fcb98abec31cbf150e361718eac7 +2016-03-04 09:13:43 +0100 +GIT Revision: 0c1f87e1423e61110baf59063fd3db32214c3e91 GIT Branch: stable
