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


Reply via email to