Hello community, here is the log from the commit of package kernel-source for openSUSE:Factory checked in at 2016-11-03 11:14:01 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 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-64kb.changes 2016-10-24 14:43:50.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.kernel-source.new/kernel-64kb.changes 2016-11-03 11:14:03.000000000 +0100 @@ -1,0 +2,48 @@ +Mon Oct 31 13:02:56 CET 2016 - [email protected] + +- x86/smpboot: Init apic mapping before usage (bnc#1006417). +- commit 7d70b08 + +------------------------------------------------------------------- +Mon Oct 31 12:53:57 CET 2016 - [email protected] + +- Linux 4.8.6 (: :). +- commit dbb68be + +------------------------------------------------------------------- +Sat Oct 29 03:16:07 CEST 2016 - [email protected] + +- btrfs: fix races on root_log_ctx lists (bsc#1007653). +- commit 1e904fd + +------------------------------------------------------------------- +Fri Oct 28 10:28:06 CEST 2016 - [email protected] + +- Linux 4.8.5 (: :). +- commit 9148e7c + +------------------------------------------------------------------- +Thu Oct 27 17:32:03 CEST 2016 - [email protected] + +- drm/radeon: Hide the HW cursor while it's out of bounds + (bsc#1000433). +- drm/radeon: Also call cursor_move_locked when the cursor size + changes (bsc#1000433). +- drm/radeon: Always store CRTC relative radeon_crtc->cursor_x/y + values (bsc#1000433). +- commit 30e023d + +------------------------------------------------------------------- +Tue Oct 25 16:31:30 CEST 2016 - [email protected] + +- ALSA: seq: Fix time account regression (boo#1006825). +- commit 9168b92 + +------------------------------------------------------------------- +Tue Oct 25 10:21:05 CEST 2016 - [email protected] + +- drm/fb-helper: Don't call dirty callback for untouched clips + (boo#1003298). +- commit 092ed80 + +------------------------------------------------------------------- kernel-debug.changes: same change kernel-default.changes: same change kernel-docs.changes: same change kernel-lpae.changes: same change kernel-obs-build.changes: same change kernel-obs-qa.changes: same change kernel-pae.changes: same change kernel-source.changes: same change kernel-syms.changes: same change kernel-syzkaller.changes: same change kernel-vanilla.changes: same change ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kernel-64kb.spec ++++++ --- /var/tmp/diff_new_pack.NMBPIq/_old 2016-11-03 11:14:11.000000000 +0100 +++ /var/tmp/diff_new_pack.NMBPIq/_new 2016-11-03 11:14:11.000000000 +0100 @@ -20,7 +20,7 @@ # needssslcertforbuild %define srcversion 4.8 -%define patchversion 4.8.4 +%define patchversion 4.8.6 %define variant %{nil} %define vanilla_only 0 @@ -60,9 +60,9 @@ Summary: Kernel with 64kb PAGE_SIZE License: GPL-2.0 Group: System/Kernel -Version: 4.8.4 +Version: 4.8.6 %if 0%{?is_kotd} -Release: <RELEASE>.g402d8c1 +Release: <RELEASE>.g7d70b08 %else Release: 0 %endif kernel-debug.spec: same change kernel-default.spec: same change ++++++ kernel-docs.spec ++++++ --- /var/tmp/diff_new_pack.NMBPIq/_old 2016-11-03 11:14:11.000000000 +0100 +++ /var/tmp/diff_new_pack.NMBPIq/_new 2016-11-03 11:14:11.000000000 +0100 @@ -16,7 +16,7 @@ # -%define patchversion 4.8.4 +%define patchversion 4.8.6 %define variant %{nil} %include %_sourcedir/kernel-spec-macros @@ -33,9 +33,9 @@ Summary: Kernel Documentation (man pages) License: GPL-2.0 Group: Documentation/Man -Version: 4.8.4 +Version: 4.8.6 %if 0%{?is_kotd} -Release: <RELEASE>.g402d8c1 +Release: <RELEASE>.g7d70b08 %else Release: 0 %endif ++++++ kernel-lpae.spec ++++++ --- /var/tmp/diff_new_pack.NMBPIq/_old 2016-11-03 11:14:11.000000000 +0100 +++ /var/tmp/diff_new_pack.NMBPIq/_new 2016-11-03 11:14:11.000000000 +0100 @@ -20,7 +20,7 @@ # needssslcertforbuild %define srcversion 4.8 -%define patchversion 4.8.4 +%define patchversion 4.8.6 %define variant %{nil} %define vanilla_only 0 @@ -60,9 +60,9 @@ Summary: Kernel for LPAE enabled systems License: GPL-2.0 Group: System/Kernel -Version: 4.8.4 +Version: 4.8.6 %if 0%{?is_kotd} -Release: <RELEASE>.g402d8c1 +Release: <RELEASE>.g7d70b08 %else Release: 0 %endif ++++++ kernel-obs-build.spec ++++++ --- /var/tmp/diff_new_pack.NMBPIq/_old 2016-11-03 11:14:11.000000000 +0100 +++ /var/tmp/diff_new_pack.NMBPIq/_new 2016-11-03 11:14:11.000000000 +0100 @@ -19,7 +19,7 @@ #!BuildIgnore: post-build-checks -%define patchversion 4.8.4 +%define patchversion 4.8.6 %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.8.4 +Version: 4.8.6 %if 0%{?is_kotd} -Release: <RELEASE>.g402d8c1 +Release: <RELEASE>.g7d70b08 %else Release: 0 %endif ++++++ kernel-obs-qa.spec ++++++ --- /var/tmp/diff_new_pack.NMBPIq/_old 2016-11-03 11:14:11.000000000 +0100 +++ /var/tmp/diff_new_pack.NMBPIq/_new 2016-11-03 11:14:11.000000000 +0100 @@ -17,7 +17,7 @@ # needsrootforbuild -%define patchversion 4.8.4 +%define patchversion 4.8.6 %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.8.4 +Version: 4.8.6 %if 0%{?is_kotd} -Release: <RELEASE>.g402d8c1 +Release: <RELEASE>.g7d70b08 %else Release: 0 %endif ++++++ kernel-pae.spec ++++++ --- /var/tmp/diff_new_pack.NMBPIq/_old 2016-11-03 11:14:11.000000000 +0100 +++ /var/tmp/diff_new_pack.NMBPIq/_new 2016-11-03 11:14:11.000000000 +0100 @@ -20,7 +20,7 @@ # needssslcertforbuild %define srcversion 4.8 -%define patchversion 4.8.4 +%define patchversion 4.8.6 %define variant %{nil} %define vanilla_only 0 @@ -60,9 +60,9 @@ Summary: Kernel with PAE Support License: GPL-2.0 Group: System/Kernel -Version: 4.8.4 +Version: 4.8.6 %if 0%{?is_kotd} -Release: <RELEASE>.g402d8c1 +Release: <RELEASE>.g7d70b08 %else Release: 0 %endif ++++++ kernel-source.spec ++++++ --- /var/tmp/diff_new_pack.NMBPIq/_old 2016-11-03 11:14:11.000000000 +0100 +++ /var/tmp/diff_new_pack.NMBPIq/_new 2016-11-03 11:14:11.000000000 +0100 @@ -18,7 +18,7 @@ %define srcversion 4.8 -%define patchversion 4.8.4 +%define patchversion 4.8.6 %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.8.4 +Version: 4.8.6 %if 0%{?is_kotd} -Release: <RELEASE>.g402d8c1 +Release: <RELEASE>.g7d70b08 %else Release: 0 %endif ++++++ kernel-syms.spec ++++++ --- /var/tmp/diff_new_pack.NMBPIq/_old 2016-11-03 11:14:11.000000000 +0100 +++ /var/tmp/diff_new_pack.NMBPIq/_new 2016-11-03 11:14:11.000000000 +0100 @@ -24,10 +24,10 @@ Summary: Kernel Symbol Versions (modversions) License: GPL-2.0 Group: Development/Sources -Version: 4.8.4 +Version: 4.8.6 %if %using_buildservice %if 0%{?is_kotd} -Release: <RELEASE>.g402d8c1 +Release: <RELEASE>.g7d70b08 %else Release: 0 %endif ++++++ kernel-syzkaller.spec ++++++ --- /var/tmp/diff_new_pack.NMBPIq/_old 2016-11-03 11:14:11.000000000 +0100 +++ /var/tmp/diff_new_pack.NMBPIq/_new 2016-11-03 11:14:11.000000000 +0100 @@ -20,7 +20,7 @@ # needssslcertforbuild %define srcversion 4.8 -%define patchversion 4.8.4 +%define patchversion 4.8.6 %define variant %{nil} %define vanilla_only 0 @@ -60,9 +60,9 @@ Summary: Kernel used for fuzzing by syzkaller License: GPL-2.0 Group: System/Kernel -Version: 4.8.4 +Version: 4.8.6 %if 0%{?is_kotd} -Release: <RELEASE>.g402d8c1 +Release: <RELEASE>.g7d70b08 %else Release: 0 %endif kernel-vanilla.spec: same change ++++++ patches.drivers.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.drivers/drm-radeon-Also-call-cursor_move_locked-when-the-cur new/patches.drivers/drm-radeon-Also-call-cursor_move_locked-when-the-cur --- old/patches.drivers/drm-radeon-Also-call-cursor_move_locked-when-the-cur 1970-01-01 01:00:00.000000000 +0100 +++ new/patches.drivers/drm-radeon-Also-call-cursor_move_locked-when-the-cur 2016-10-27 17:33:43.000000000 +0200 @@ -0,0 +1,46 @@ +From: =?UTF-8?q?Michel=20D=C3=A4nzer?= <[email protected]> +Date: Thu, 27 Oct 2016 16:59:42 +0900 +Subject: [PATCH 2/3] drm/radeon: Also call cursor_move_locked when the cursor size changes +Mime-version: 1.0 +Content-type: text/plain; charset=UTF-8 +Content-transfer-encoding: 8bit +References: bsc#1000433 +Patch-mainline: Submitted, amd-gfx ML + +The cursor size also affects the register programming. + +Cc: [email protected] +Signed-off-by: Michel Dänzer <[email protected]> +Signed-off-by: Takashi Iwai <[email protected]> + +--- + drivers/gpu/drm/radeon/radeon_cursor.c | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +--- a/drivers/gpu/drm/radeon/radeon_cursor.c ++++ b/drivers/gpu/drm/radeon/radeon_cursor.c +@@ -297,12 +297,11 @@ int radeon_crtc_cursor_set2(struct drm_c + return ret; + } + +- radeon_crtc->cursor_width = width; +- radeon_crtc->cursor_height = height; +- + radeon_lock_cursor(crtc, true); + +- if (hot_x != radeon_crtc->cursor_hot_x || ++ if (width != radeon_crtc->cursor_width || ++ height != radeon_crtc->cursor_height || ++ hot_x != radeon_crtc->cursor_hot_x || + hot_y != radeon_crtc->cursor_hot_y) { + int x, y; + +@@ -311,6 +310,8 @@ int radeon_crtc_cursor_set2(struct drm_c + + radeon_cursor_move_locked(crtc, x, y); + ++ radeon_crtc->cursor_width = width; ++ radeon_crtc->cursor_height = height; + radeon_crtc->cursor_hot_x = hot_x; + radeon_crtc->cursor_hot_y = hot_y; + } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.drivers/drm-radeon-Always-store-CRTC-relative-radeon_crtc-cu new/patches.drivers/drm-radeon-Always-store-CRTC-relative-radeon_crtc-cu --- old/patches.drivers/drm-radeon-Always-store-CRTC-relative-radeon_crtc-cu 1970-01-01 01:00:00.000000000 +0100 +++ new/patches.drivers/drm-radeon-Always-store-CRTC-relative-radeon_crtc-cu 2016-10-27 17:33:43.000000000 +0200 @@ -0,0 +1,45 @@ +From: =?UTF-8?q?Michel=20D=C3=A4nzer?= <[email protected]> +Date: Thu, 27 Oct 2016 16:59:43 +0900 +Subject: [PATCH 1/3] drm/radeon: Always store CRTC relative radeon_crtc->cursor_x/y values +Mime-version: 1.0 +Content-type: text/plain; charset=UTF-8 +Content-transfer-encoding: 8bit +References: bsc#1000433 +Patch-mainline: Submitted, amd-gfx ML + +We were storing viewport relative coordinates for AVIVO/DCE display +engines. However, radeon_crtc_cursor_set2 and radeon_cursor_reset pass +radeon_crtc->cursor_x/y as the x/y parameters of +radeon_cursor_move_locked, which would break if the CRTC isn't located +at (0, 0). + +Cc: [email protected] +Signed-off-by: Michel Dänzer <[email protected]> +Signed-off-by: Takashi Iwai <[email protected]> + +--- + drivers/gpu/drm/radeon/radeon_cursor.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +--- a/drivers/gpu/drm/radeon/radeon_cursor.c ++++ b/drivers/gpu/drm/radeon/radeon_cursor.c +@@ -143,6 +143,9 @@ static int radeon_cursor_move_locked(str + int xorigin = 0, yorigin = 0; + int w = radeon_crtc->cursor_width; + ++ radeon_crtc->cursor_x = x; ++ radeon_crtc->cursor_y = y; ++ + if (ASIC_IS_AVIVO(rdev)) { + /* avivo cursor are offset into the total surface */ + x += crtc->x; +@@ -229,9 +232,6 @@ static int radeon_cursor_move_locked(str + yorigin * 256); + } + +- radeon_crtc->cursor_x = x; +- radeon_crtc->cursor_y = y; +- + return 0; + } + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.drivers/drm-radeon-Hide-the-HW-cursor-while-it-s-out-of-boun new/patches.drivers/drm-radeon-Hide-the-HW-cursor-while-it-s-out-of-boun --- old/patches.drivers/drm-radeon-Hide-the-HW-cursor-while-it-s-out-of-boun 1970-01-01 01:00:00.000000000 +0100 +++ new/patches.drivers/drm-radeon-Hide-the-HW-cursor-while-it-s-out-of-boun 2016-10-27 17:33:43.000000000 +0200 @@ -0,0 +1,158 @@ +From: =?UTF-8?q?Michel=20D=C3=A4nzer?= <[email protected]> +Date: Thu, 27 Oct 2016 16:59:44 +0900 +Subject: [PATCH 3/3] drm/radeon: Hide the HW cursor while it's out of bounds +Mime-version: 1.0 +Content-type: text/plain; charset=UTF-8 +Content-transfer-encoding: 8bit +References: bsc#1000433 +Patch-mainline: Submitted, amd-gfx ML + +Fixes hangs in that case under some circumstances. + +Bugzilla: https://bugzilla.suse.com/show_bug.cgi?id=1000433 +Cc: [email protected] +Signed-off-by: Michel Dänzer <[email protected]> +Signed-off-by: Takashi Iwai <[email protected]> + +--- + drivers/gpu/drm/radeon/radeon_cursor.c | 66 ++++++++++++++++++++------------- + drivers/gpu/drm/radeon/radeon_mode.h | 1 + 2 files changed, 42 insertions(+), 25 deletions(-) + +--- a/drivers/gpu/drm/radeon/radeon_cursor.c ++++ b/drivers/gpu/drm/radeon/radeon_cursor.c +@@ -90,6 +90,9 @@ static void radeon_show_cursor(struct dr + struct radeon_crtc *radeon_crtc = to_radeon_crtc(crtc); + struct radeon_device *rdev = crtc->dev->dev_private; + ++ if (radeon_crtc->cursor_out_of_bounds) ++ return; ++ + if (ASIC_IS_DCE4(rdev)) { + WREG32(EVERGREEN_CUR_SURFACE_ADDRESS_HIGH + radeon_crtc->crtc_offset, + upper_32_bits(radeon_crtc->cursor_addr)); +@@ -146,21 +149,14 @@ static int radeon_cursor_move_locked(str + radeon_crtc->cursor_x = x; + radeon_crtc->cursor_y = y; + +- if (ASIC_IS_AVIVO(rdev)) { +- /* avivo cursor are offset into the total surface */ +- x += crtc->x; +- y += crtc->y; +- } +- DRM_DEBUG("x %d y %d c->x %d c->y %d\n", x, y, crtc->x, crtc->y); +- +- if (x < 0) { ++ if (x < 0) + xorigin = min(-x, radeon_crtc->max_cursor_width - 1); +- x = 0; +- } +- if (y < 0) { ++ if (y < 0) + yorigin = min(-y, radeon_crtc->max_cursor_height - 1); +- y = 0; +- } ++ ++ x += crtc->x; ++ y += crtc->y; ++ DRM_DEBUG("x %d y %d c->x %d c->y %d\n", x, y, crtc->x, crtc->y); + + /* fixed on DCE6 and newer */ + if (ASIC_IS_AVIVO(rdev) && !ASIC_IS_DCE6(rdev)) { +@@ -183,27 +179,31 @@ static int radeon_cursor_move_locked(str + if (i > 1) { + int cursor_end, frame_end; + +- cursor_end = x - xorigin + w; ++ cursor_end = x + w; + frame_end = crtc->x + crtc->mode.crtc_hdisplay; + if (cursor_end >= frame_end) { + w = w - (cursor_end - frame_end); + if (!(frame_end & 0x7f)) + w--; +- } else { +- if (!(cursor_end & 0x7f)) +- w--; ++ } else if (cursor_end <= 0) { ++ goto out_of_bounds; ++ } else if (!(cursor_end & 0x7f)) { ++ w--; + } + if (w <= 0) { +- w = 1; +- cursor_end = x - xorigin + w; +- if (!(cursor_end & 0x7f)) { +- x--; +- WARN_ON_ONCE(x < 0); +- } ++ goto out_of_bounds; + } + } + } + ++ if (x <= (crtc->x - w) || y <= (crtc->y - radeon_crtc->cursor_height) || ++ x >= (crtc->x + crtc->mode.crtc_hdisplay) || ++ y >= (crtc->y + crtc->mode.crtc_vdisplay)) ++ goto out_of_bounds; ++ ++ x += xorigin; ++ y += yorigin; ++ + if (ASIC_IS_DCE4(rdev)) { + WREG32(EVERGREEN_CUR_POSITION + radeon_crtc->crtc_offset, (x << 16) | y); + WREG32(EVERGREEN_CUR_HOT_SPOT + radeon_crtc->crtc_offset, (xorigin << 16) | yorigin); +@@ -215,6 +215,9 @@ static int radeon_cursor_move_locked(str + WREG32(AVIVO_D1CUR_SIZE + radeon_crtc->crtc_offset, + ((w - 1) << 16) | (radeon_crtc->cursor_height - 1)); + } else { ++ x -= crtc->x; ++ y -= crtc->y; ++ + if (crtc->mode.flags & DRM_MODE_FLAG_DBLSCAN) + y *= 2; + +@@ -232,6 +235,19 @@ static int radeon_cursor_move_locked(str + yorigin * 256); + } + ++ if (radeon_crtc->cursor_out_of_bounds) { ++ radeon_crtc->cursor_out_of_bounds = false; ++ if (radeon_crtc->cursor_bo) ++ radeon_show_cursor(crtc); ++ } ++ ++ return 0; ++ ++ out_of_bounds: ++ if (!radeon_crtc->cursor_out_of_bounds) { ++ radeon_hide_cursor(crtc); ++ radeon_crtc->cursor_out_of_bounds = true; ++ } + return 0; + } + +@@ -308,12 +324,12 @@ int radeon_crtc_cursor_set2(struct drm_c + x = radeon_crtc->cursor_x + radeon_crtc->cursor_hot_x - hot_x; + y = radeon_crtc->cursor_y + radeon_crtc->cursor_hot_y - hot_y; + +- radeon_cursor_move_locked(crtc, x, y); +- + radeon_crtc->cursor_width = width; + radeon_crtc->cursor_height = height; + radeon_crtc->cursor_hot_x = hot_x; + radeon_crtc->cursor_hot_y = hot_y; ++ ++ radeon_cursor_move_locked(crtc, x, y); + } + + radeon_show_cursor(crtc); +--- a/drivers/gpu/drm/radeon/radeon_mode.h ++++ b/drivers/gpu/drm/radeon/radeon_mode.h +@@ -330,6 +330,7 @@ struct radeon_crtc { + u16 lut_r[256], lut_g[256], lut_b[256]; + bool enabled; + bool can_tile; ++ bool cursor_out_of_bounds; + uint32_t crtc_offset; + struct drm_gem_object *cursor_bo; + uint64_t cursor_addr; ++++++ patches.fixes.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/ALSA-seq-Fix-time-account-regression new/patches.fixes/ALSA-seq-Fix-time-account-regression --- old/patches.fixes/ALSA-seq-Fix-time-account-regression 1970-01-01 01:00:00.000000000 +0100 +++ new/patches.fixes/ALSA-seq-Fix-time-account-regression 2016-10-31 13:02:56.000000000 +0100 @@ -0,0 +1,42 @@ +From 9b50898ad96c793a8f7cde9d8f281596d752a7dd Mon Sep 17 00:00:00 2001 +From: Takashi Iwai <[email protected]> +Date: Tue, 25 Oct 2016 15:56:35 +0200 +Subject: [PATCH] ALSA: seq: Fix time account regression +Git-commit: 9b50898ad96c793a8f7cde9d8f281596d752a7dd +Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git +Patch-mainline: Queued in subsystem maintainer repository +References: boo#1006825 + +The recent rewrite of the sequencer time accounting using timespec64 +in the commit [3915bf294652: ALSA: seq_timer: use monotonic times +internally] introduced a bad regression. Namely, the time reported +back doesn't increase but goes back and forth. + +The culprit was obvious: the delta is stored to the result (cur_time = +delta), instead of adding the delta (cur_time += delta)! + +Let's fix it. + +Fixes: 3915bf294652 ('ALSA: seq_timer: use monotonic times internally') +Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=177571 +Reported-by: Yves Guillemot <[email protected]> +Cc: <[email protected]> # v4.8+ +Signed-off-by: Takashi Iwai <[email protected]> + +--- + sound/core/seq/seq_timer.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/sound/core/seq/seq_timer.c ++++ b/sound/core/seq/seq_timer.c +@@ -448,8 +448,8 @@ snd_seq_real_time_t snd_seq_timer_get_cu + + ktime_get_ts64(&tm); + tm = timespec64_sub(tm, tmr->last_update); +- cur_time.tv_nsec = tm.tv_nsec; +- cur_time.tv_sec = tm.tv_sec; ++ cur_time.tv_nsec += tm.tv_nsec; ++ cur_time.tv_sec += tm.tv_sec; + snd_seq_sanity_real_time(&cur_time); + } + spin_unlock_irqrestore(&tmr->lock, flags); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/btrfs-fix-races-on-root_log_ctx-lists.patch new/patches.fixes/btrfs-fix-races-on-root_log_ctx-lists.patch --- old/patches.fixes/btrfs-fix-races-on-root_log_ctx-lists.patch 1970-01-01 01:00:00.000000000 +0100 +++ new/patches.fixes/btrfs-fix-races-on-root_log_ctx-lists.patch 2016-10-31 13:02:56.000000000 +0100 @@ -0,0 +1,91 @@ +From: Chris Mason <[email protected]> +Subject: [PATCH] btrfs: fix races on root_log_ctx lists +Patch-mainline: Submitted, [email protected], 27 Oct 2016 +References: bsc#1007653 + +btrfs_remove_all_log_ctxs takes a shortcut where it avoids walking the +list because it knows all of the waiters are patiently waiting for the +commit to finish. + +But, there's a small race where btrfs_sync_log can remove itself from +the list if it finds a log commit is already done. Also, it uses +list_del_init() to remove itself from the list, but there's no way to +know if btrfs_remove_all_log_ctxs has already run, so we don't know for +sure if it is safe to call list_del_init(). + +This gets rid of all the shortcuts for btrfs_remove_all_log_ctxs(), and +just calls it with the proper locking. + +This is part two of the corruption fixed by cbd60aa7cd1. I should have +done this in the first place, but convinced myself the optimizations were +safe. A 12 hour run of dbench 2048 will eventually trigger a list debug +WARN_ON for the list_del_init() in btrfs_sync_log(). + +Fixes: d1433debe7f4346cf9fc0dafc71c3137d2a97bc4 +Reported-by: Dave Jones <[email protected]> +cc: [email protected] # 3.15+ +Signed-off-by: Chris Mason <[email protected]> +Acked-by: Jeff Mahoney <[email protected]> +--- + fs/btrfs/tree-log.c | 20 ++++++-------------- + 1 file changed, 6 insertions(+), 14 deletions(-) + +diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c +index 688df71..4b1c0a6 100644 +--- a/fs/btrfs/tree-log.c ++++ b/fs/btrfs/tree-log.c +@@ -2713,14 +2713,12 @@ static inline void btrfs_remove_all_log_ctxs(struct btrfs_root *root, + int index, int error) + { + struct btrfs_log_ctx *ctx; ++ struct btrfs_log_ctx *safe; + +- if (!error) { +- INIT_LIST_HEAD(&root->log_ctxs[index]); +- return; +- } +- +- list_for_each_entry(ctx, &root->log_ctxs[index], list) ++ list_for_each_entry_safe(ctx, safe, &root->log_ctxs[index], list) { ++ list_del_init(&ctx->list); + ctx->log_ret = error; ++ } + + INIT_LIST_HEAD(&root->log_ctxs[index]); + } +@@ -2961,13 +2959,9 @@ int btrfs_sync_log(struct btrfs_trans_handle *trans, + mutex_unlock(&root->log_mutex); + + out_wake_log_root: +- /* +- * We needn't get log_mutex here because we are sure all +- * the other tasks are blocked. +- */ ++ mutex_lock(&log_root_tree->log_mutex); + btrfs_remove_all_log_ctxs(log_root_tree, index2, ret); + +- mutex_lock(&log_root_tree->log_mutex); + log_root_tree->log_transid_committed++; + atomic_set(&log_root_tree->log_commit[index2], 0); + mutex_unlock(&log_root_tree->log_mutex); +@@ -2978,10 +2972,8 @@ out_wake_log_root: + if (waitqueue_active(&log_root_tree->log_commit_wait[index2])) + wake_up(&log_root_tree->log_commit_wait[index2]); + out: +- /* See above. */ +- btrfs_remove_all_log_ctxs(root, index1, ret); +- + mutex_lock(&root->log_mutex); ++ btrfs_remove_all_log_ctxs(root, index1, ret); + root->log_transid_committed++; + atomic_set(&root->log_commit[index1], 0); + mutex_unlock(&root->log_mutex); +-- +2.9.3 + +-- +To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in +the body of a message to [email protected] +More majordomo info at http://vger.kernel.org/majordomo-info.html + + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/drm-fb-helper-Dont-call-dirty-callback-for-untouched-clips new/patches.fixes/drm-fb-helper-Dont-call-dirty-callback-for-untouched-clips --- old/patches.fixes/drm-fb-helper-Dont-call-dirty-callback-for-untouched-clips 1970-01-01 01:00:00.000000000 +0100 +++ new/patches.fixes/drm-fb-helper-Dont-call-dirty-callback-for-untouched-clips 2016-10-31 13:02:56.000000000 +0100 @@ -0,0 +1,53 @@ +From: Takashi Iwai <[email protected]> +Subject: [PATCH v2] drm/fb-helper: Don't call dirty callback for untouched clips +Date: Thu, 20 Oct 2016 17:05:30 +0200 +Message-id: <[email protected]> +Patch-mainline: Submitted, dri-devel ML +References: boo#1003298 + +Since 4.7 kernel, we've seen the error messages like + + kernel: [TTM] Buffer eviction failed + kernel: qxl 0000:00:02.0: object_init failed for (4026540032, 0x00000001) + kernel: [drm:qxl_alloc_bo_reserved [qxl]] *ERROR* failed to allocate VRAM BO + +on QXL when switching and accessing on VT. The culprit was the +generic deferred_io code (qxl driver switched to it since 4.7). +There is a race between the dirty clip update and the call of +callback. + +In drm_fb_helper_dirty(), the dirty clip is updated in the spinlock, +while it kicks off the update worker outside the spinlock. Meanwhile +the update worker clears the dirty clip in the spinlock, too. Thus, +when drm_fb_helper_dirty() is called concurrently, schedule_work() is +called after the clip is cleared in the first worker call. + +This patch addresses it by validating the clip before calling the +dirty fb callback. + +Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98322 +Bugzilla: https://bugzilla.suse.com/show_bug.cgi?id=1003298 +Fixes: eaa434defaca ('drm/fb-helper: Add fb_deferred_io support') +Cc: <[email protected]> +Reviewed-by: Ville Syrjälä <[email protected]> +Signed-off-by: Takashi Iwai <[email protected]> + +--- +v1->v2: simplified the code as suggested by Ville + + drivers/gpu/drm/drm_fb_helper.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +--- a/drivers/gpu/drm/drm_fb_helper.c ++++ b/drivers/gpu/drm/drm_fb_helper.c +@@ -644,7 +644,9 @@ static void drm_fb_helper_dirty_work(str + clip->x2 = clip->y2 = 0; + spin_unlock_irqrestore(&helper->dirty_lock, flags); + +- helper->fb->funcs->dirty(helper->fb, NULL, 0, 0, &clip_copy, 1); ++ /* call dirty callback only when it has been really touched */ ++ if (clip_copy.x1 < clip_copy.x2 && clip_copy.y1 < clip_copy.y2) ++ helper->fb->funcs->dirty(helper->fb, NULL, 0, 0, &clip_copy, 1); + } + + /** diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/x86-smpboot-Init-apic-mapping-before-usage.patch new/patches.fixes/x86-smpboot-Init-apic-mapping-before-usage.patch --- old/patches.fixes/x86-smpboot-Init-apic-mapping-before-usage.patch 1970-01-01 01:00:00.000000000 +0100 +++ new/patches.fixes/x86-smpboot-Init-apic-mapping-before-usage.patch 2016-10-31 13:02:56.000000000 +0100 @@ -0,0 +1,62 @@ +From: Thomas Gleixner <[email protected]> +Date: Sat, 29 Oct 2016 13:42:42 +0200 +Subject: x86/smpboot: Init apic mapping before usage +Git-commit: 1e90a13d0c3dc94512af1ccb2b6563e8297838fa +Patch-mainline: v4.9-rc3 +References: bnc#1006417 + +The recent changes, which forced the registration of the boot cpu on UP +systems, which do not have ACPI tables, have been fixed for systems w/o +local APIC, but left a wreckage for systems which have neither ACPI nor +mptables, but the CPU has an APIC, e.g. virtualbox. + +The boot process crashes in prefill_possible_map() as it wants to register +the boot cpu, which needs to access the local apic, but the local APIC is +not yet mapped. + +There is no reason why init_apic_mapping() can't be invoked before +prefill_possible_map(). So instead of playing another silly early mapping +game, as the ACPI/mptables code does, we just move init_apic_mapping() +before the call to prefill_possible_map(). + +In hindsight, I should have noticed that combination earlier. + +Sorry for the churn (also in stable)! + +Fixes: ff8560512b8d ("x86/boot/smp: Don't try to poke disabled/non-existent APIC") +Reported-and-debugged-by: Michal Necasek <[email protected]> +Reported-and-tested-by: Wolfgang Bauer <[email protected]> +Cc: [email protected] +Cc: [email protected] +Cc: [email protected] +Cc: [email protected] +Cc: [email protected] +Cc: Borislav Petkov <[email protected]> +Cc: [email protected] +Link: http://lkml.kernel.org/r/alpine.DEB.2.20.1610282114380.5053@nanos +Signed-off-by: Thomas Gleixner <[email protected]> +Signed-off-by: Jiri Slaby <[email protected]> +--- + arch/x86/kernel/setup.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +--- a/arch/x86/kernel/setup.c ++++ b/arch/x86/kernel/setup.c +@@ -1222,11 +1222,16 @@ void __init setup_arch(char **cmdline_p) + if (smp_found_config) + get_smp_config(); + ++ /* ++ * Systems w/o ACPI and mptables might not have it mapped the local ++ * APIC yet, but prefill_possible_map() might need to access it. ++ */ ++ init_apic_mappings(); ++ + prefill_possible_map(); + + init_cpu_to_node(); + +- init_apic_mappings(); + io_apic_init_mappings(); + + kvm_guest_init(); ++++++ patches.kernel.org.tar.bz2 ++++++ ++++ 10835 lines of diff (skipped) ++++++ series.conf ++++++ --- /var/tmp/diff_new_pack.NMBPIq/_old 2016-11-03 11:14:12.000000000 +0100 +++ /var/tmp/diff_new_pack.NMBPIq/_new 2016-11-03 11:14:12.000000000 +0100 @@ -31,6 +31,8 @@ patches.kernel.org/patch-4.8.1-2 patches.kernel.org/patch-4.8.2-3 patches.kernel.org/patch-4.8.3-4 + patches.kernel.org/patch-4.8.4-5 + patches.kernel.org/patch-4.8.5-6 ######################################################## # Build fixes that apply to the vanilla kernel too. @@ -105,6 +107,7 @@ # Upstream commit c8b5db7de66b75330a96f9f1ad7376b89646c953 # changed this area a lot. +needs_updating patches.arch/x86_64-hpet-64bit-timer.patch + patches.fixes/x86-smpboot-Init-apic-mapping-before-usage.patch ######################################################## # x86 MCE/MCA (Machine Check Error/Architecture) extensions @@ -249,6 +252,7 @@ patches.suse/btrfs-provide-super_operations-get_inode_dev patches.suse/revert-btrfs-fix-lockdep-warning-on-deadlock-against-an-inode-s-log-mutex.patch patches.suse/revert-btrfs-improve-performance-on-fsync-against-new-inode-after-rename-unlink.patch + patches.fixes/btrfs-fix-races-on-root_log_ctx-lists.patch ######################################################## # Reiserfs Patches @@ -318,6 +322,10 @@ # DRM/Video ######################################################## patches.fixes/drm-i915-Fix-S4-resume-breakage + patches.fixes/drm-fb-helper-Dont-call-dirty-callback-for-untouched-clips + patches.drivers/drm-radeon-Always-store-CRTC-relative-radeon_crtc-cu + patches.drivers/drm-radeon-Also-call-cursor_move_locked-when-the-cur + patches.drivers/drm-radeon-Hide-the-HW-cursor-while-it-s-out-of-boun ######################################################## # video4linux @@ -370,6 +378,7 @@ ########################################################## # Sound ########################################################## + patches.fixes/ALSA-seq-Fix-time-account-regression ######################################################## # Char / serial ++++++ source-timestamp ++++++ --- /var/tmp/diff_new_pack.NMBPIq/_old 2016-11-03 11:14:12.000000000 +0100 +++ /var/tmp/diff_new_pack.NMBPIq/_new 2016-11-03 11:14:12.000000000 +0100 @@ -1,3 +1,3 @@ -2016-10-22 13:24:48 +0200 -GIT Revision: 402d8c16f163d4be86517f973e3b943fda27923e +2016-10-31 13:02:56 +0100 +GIT Revision: 7d70b08f854edbb0c97709bf8de6538858d68bcd GIT Branch: stable
