diff options
-rw-r--r-- | .SRCINFO | 22 | ||||
-rw-r--r-- | PKGBUILD | 18 | ||||
-rw-r--r-- | fix-race-in-PRT-wait-for-completion-simple-wait-code_Nvidia-RT-160319.patch (renamed from fix-race-in-PRT-wait-for-completion-simple-wait-code_Nvidia-RT.patch) | 44 |
3 files changed, 50 insertions, 34 deletions
@@ -1,8 +1,8 @@ # Generated by makepkg 5.0.1 -# Fri Mar 18 11:38:04 UTC 2016 +# Sun Mar 20 14:51:43 UTC 2016 pkgbase = linux-rt - pkgver = 4.4.3_rt9 - pkgrel = 2 + pkgver = 4.4.4_rt11 + pkgrel = 1 url = http://www.kernel.org/ arch = i686 arch = x86_64 @@ -15,16 +15,16 @@ pkgbase = linux-rt options = !strip source = https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.4.tar.xz source = https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.4.tar.sign - source = https://www.kernel.org/pub/linux/kernel/v4.x/patch-4.4.3.xz - source = https://www.kernel.org/pub/linux/kernel/v4.x/patch-4.4.3.sign - source = https://www.kernel.org/pub/linux/kernel/projects/rt/4.4/older/patch-4.4.3-rt9.patch.xz - source = https://www.kernel.org/pub/linux/kernel/projects/rt/4.4/older/patch-4.4.3-rt9.patch.sign + source = https://www.kernel.org/pub/linux/kernel/v4.x/patch-4.4.4.xz + source = https://www.kernel.org/pub/linux/kernel/v4.x/patch-4.4.4.sign + source = https://www.kernel.org/pub/linux/kernel/projects/rt/4.4/older/patch-4.4.4-rt11.patch.xz + source = https://www.kernel.org/pub/linux/kernel/projects/rt/4.4/older/patch-4.4.4-rt11.patch.sign source = config source = config.x86_64 source = linux-rt.preset source = change-default-console-loglevel.patch source = 0001-sdhci-revert.patch - source = fix-race-in-PRT-wait-for-completion-simple-wait-code_Nvidia-RT.patch + source = fix-race-in-PRT-wait-for-completion-simple-wait-code_Nvidia-RT-160319.patch validpgpkeys = ABAF11C65A2970B130ABE3C479BE3E4300411886 validpgpkeys = 647F28654894E3BD457199BE38DBBDC86092693E validpgpkeys = 64254695FFF0AA4466CC19E67B96E8162A8CF5D1 @@ -32,16 +32,16 @@ pkgbase = linux-rt validpgpkeys = E644E2F1D45FA0B2EAA02F33109F098506FF0B14 sha256sums = 401d7c8fef594999a460d10c72c5a94e9c2e1022f16795ec51746b0d165418b2 sha256sums = SKIP - sha256sums = 4a24c79c40b2cb820ce9f22d44f31edcbde5971432753ab0289772946ed05b7b + sha256sums = 9061d8f57cc25d760387c4e6b7d5cceacaa808e8784a3e478012e7c2949853c8 sha256sums = SKIP - sha256sums = 11656950d144149af95bdb4d7d31a9fbdbe514d9634885efc868794f18df6b27 + sha256sums = 819505e059c12bc3c37bb38011fa3c2fa7c554a29bbdd7a02b473a1ec2757c4f sha256sums = SKIP sha256sums = e3129f704cf59f4ba3ad074504b007e47a591b9b2a3b2a2869b7c381ff880afb sha256sums = dd9e0be59672bba6e7a9572f6794139a19bf43d8e64785681a14cb2abea88a67 sha256sums = 2abb6e506e4a687723d6a6dc21703f5d2b42a8956fbc3313e3da2b03c718c80d sha256sums = 1256b241cd477b265a3c2d64bdc19ffe3c9bbcee82ea3994c590c2c76e767d99 sha256sums = 5313df7cb5b4d005422bd4cd0dae956b2dadba8f3db904275aaf99ac53894375 - sha256sums = 7a42d16108eb9a8eacadef3603527fa1beab857cc4db3bd228858488fb1f3fda + sha256sums = 85f7612edfa129210343d6a4fe4ba2a4ac3542d98b7e28c8896738e7e6541c06 pkgname = linux-rt pkgdesc = The Linux-rt kernel and modules @@ -8,10 +8,10 @@ #pkgbase=linux # Build stock -ARCH kernel pkgbase=linux-rt # Build kernel with a different name _srcname=linux-4.4 -_pkgver=4.4.3 -_rtpatchver=rt9 +_pkgver=4.4.4 +_rtpatchver=rt11 pkgver=${_pkgver}_${_rtpatchver} -pkgrel=2 +pkgrel=1 arch=('i686' 'x86_64') url="http://www.kernel.org/" license=('GPL2') @@ -29,21 +29,21 @@ source=("https://www.kernel.org/pub/linux/kernel/v4.x/${_srcname}.tar.xz" "${pkgbase}.preset" 'change-default-console-loglevel.patch' '0001-sdhci-revert.patch' - 'fix-race-in-PRT-wait-for-completion-simple-wait-code_Nvidia-RT.patch') + 'fix-race-in-PRT-wait-for-completion-simple-wait-code_Nvidia-RT-160319.patch') sha256sums=('401d7c8fef594999a460d10c72c5a94e9c2e1022f16795ec51746b0d165418b2' 'SKIP' - '4a24c79c40b2cb820ce9f22d44f31edcbde5971432753ab0289772946ed05b7b' + '9061d8f57cc25d760387c4e6b7d5cceacaa808e8784a3e478012e7c2949853c8' 'SKIP' - '11656950d144149af95bdb4d7d31a9fbdbe514d9634885efc868794f18df6b27' + '819505e059c12bc3c37bb38011fa3c2fa7c554a29bbdd7a02b473a1ec2757c4f' 'SKIP' 'e3129f704cf59f4ba3ad074504b007e47a591b9b2a3b2a2869b7c381ff880afb' 'dd9e0be59672bba6e7a9572f6794139a19bf43d8e64785681a14cb2abea88a67' '2abb6e506e4a687723d6a6dc21703f5d2b42a8956fbc3313e3da2b03c718c80d' '1256b241cd477b265a3c2d64bdc19ffe3c9bbcee82ea3994c590c2c76e767d99' '5313df7cb5b4d005422bd4cd0dae956b2dadba8f3db904275aaf99ac53894375' - '7a42d16108eb9a8eacadef3603527fa1beab857cc4db3bd228858488fb1f3fda') + '85f7612edfa129210343d6a4fe4ba2a4ac3542d98b7e28c8896738e7e6541c06') validpgpkeys=('ABAF11C65A2970B130ABE3C479BE3E4300411886' # Linus Torvalds '647F28654894E3BD457199BE38DBBDC86092693E' # Greg Kroah-Hartman @@ -81,8 +81,8 @@ prepare() { # A patch to fix a problem that ought to be fixed in the NVIDIA source code. # Stops X from hanging on certain NVIDIA cards - msg "fix-race-in-PR-wait-for-completion-simple-wait-code_Nvidia-RT.patch" - patch -p1 -i "${srcdir}/fix-race-in-PRT-wait-for-completion-simple-wait-code_Nvidia-RT.patch" + msg "fix-race-in-PR-wait-for-completion-simple-wait-code_Nvidia-RT-160319.patch" + patch -p1 -i "${srcdir}/fix-race-in-PRT-wait-for-completion-simple-wait-code_Nvidia-RT-160319.patch" msg "All patches have successfully been applied" diff --git a/fix-race-in-PRT-wait-for-completion-simple-wait-code_Nvidia-RT.patch b/fix-race-in-PRT-wait-for-completion-simple-wait-code_Nvidia-RT-160319.patch index 29a172bc739a..7e9e9c825def 100644 --- a/fix-race-in-PRT-wait-for-completion-simple-wait-code_Nvidia-RT.patch +++ b/fix-race-in-PRT-wait-for-completion-simple-wait-code_Nvidia-RT-160319.patch @@ -1,3 +1,10 @@ +From: Joakim Hernberg <jhernberg@alchemy.lu> +Date: Sat, 19 Mar 2016 13:03:55 +0100 +Subject: [PATCH] Fix a race in the PRT wait for completion simple wait code + for NVIDIA on the rt patch + +-Note refactored again 160319. + -NOTE: this patch is a rebase of John Blackwood's patch. On his kernel, he must be using -an older simple wait patch - as his applies to kernel/sched/core.c, while the simple wait -completion code lives in kernel/sched/completion.c ... I have ported this to test with @@ -27,33 +34,42 @@ waiting again in schedule_timeout(). Fix-by: John Blackwood <john.blackwood@ccur.com> ---- linux-3.14/kernel/sched/completion.c 2014-05-22 14:01:03.879734869 -0400 -+++ linux-3.14/kernel/sched/completion.c 2014-05-22 14:13:59.181688658 -0400 -@@ -61,11 +61,19 @@ +--- + kernel/sched/completion.c | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/kernel/sched/completion.c b/kernel/sched/completion.c +index b62cf64..c01bbd8 100644 +--- a/kernel/sched/completion.c ++++ b/kernel/sched/completion.c +@@ -61,11 +61,19 @@ static inline long __sched do_wait_for_common(struct completion *x, long (*action)(long), long timeout, int state) { -+ int again = 0; ++ int again = 0; + if (!x->done) { - DEFINE_SWAITER(wait); + DECLARE_SWAITQUEUE(wait); - swait_prepare_locked(&x->wait, &wait); + __prepare_to_swait(&x->wait, &wait); do { -+ /* Check to see if we lost race for 'done' and are -+ * no longer in the wait list. -+ */ -+ if (unlikely(again) && list_empty(&wait.node)) -+ swait_prepare_locked(&x->wait, &wait); ++ /* Check to see if we lost race for 'done' and are ++ * no longer in the wait list. ++ */ ++ if (unlikely(again) && list_empty(&wait.task_list)) ++ __prepare_to_swait(&x->wait, &wait); + if (signal_pending_state(state, current)) { timeout = -ERESTARTSYS; break; -@@ -74,6 +82,7 @@ +@@ -74,6 +82,7 @@ do_wait_for_common(struct completion *x, raw_spin_unlock_irq(&x->wait.lock); timeout = action(timeout); raw_spin_lock_irq(&x->wait.lock); -+ again = 1; ++ again = 1; } while (!x->done && timeout); - swait_finish_locked(&x->wait, &wait); + __finish_swait(&x->wait, &wait); if (!x->done) +-- +2.7.2 + |