summarylogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.SRCINFO22
-rw-r--r--PKGBUILD18
-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
diff --git a/.SRCINFO b/.SRCINFO
index 0761dc76825f..aaa6198b217d 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -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
diff --git a/PKGBUILD b/PKGBUILD
index 9e88d15a9174..599abb4af75b 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -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
+