summarylogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.SRCINFO6
-rw-r--r--PKGBUILD9
-rw-r--r--fix-race-in-PRT-wait-for-completion-simple-wait-code_Nvidia-RT.patch59
3 files changed, 3 insertions, 71 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 3041731a909b..5318e17b4cde 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,8 +1,8 @@
# Generated by mksrcinfo v8
-# Wed Mar 9 14:11:30 UTC 2016
+# Thu Mar 10 16:47:10 UTC 2016
pkgbase = linux-rt-bfq
pkgver = 4.4.4_rt11
- pkgrel = 1
+ pkgrel = 2
url = http://algo.ing.unimo.it
arch = i686
arch = x86_64
@@ -25,7 +25,6 @@ pkgbase = linux-rt-bfq
source = change-default-console-loglevel.patch
source = config
source = config.x86_64
- source = fix-race-in-PRT-wait-for-completion-simple-wait-code_Nvidia-RT.patch
source = 0004-sdhci-revert.patch
sha512sums = 13c8459933a8b80608e226a1398e3d1848352ace84bcfb7e6a4a33cb230bbe1ab719d4b58e067283df91ce5311be6d2d595fc8c19e2ae6ecc652499415614b3e
sha512sums = SKIP
@@ -41,7 +40,6 @@ pkgbase = linux-rt-bfq
sha512sums = d9d28e02e964704ea96645a5107f8b65cae5f4fb4f537e224e5e3d087fd296cb770c29ac76e0ce95d173bc420ea87fb8f187d616672a60a0cae618b0ef15b8c8
sha512sums = 756a5c5ec2db9153d0f749c4f358501d78743ab6f7538c7c127aad0a6a0bd21364f15315689f4ccd8c7b559e4cebefdfb8bb55ee90aabe3d0bd5a3d5f00703c7
sha512sums = 56ce250e1b14b03b28dfdf03923ffd173d05edc5fe9dcf5daecd121370e618d62eb8448b930503d69989c9c7ee3e3d8b64768962e78f5a1d08ba1267405192df
- sha512sums = 326dc571c072d4c47381852f16c00c8a7b27d11a5e6ff0f60f5e3a21d4a833c1e467dda1c2a5c04a6611af48bb6ef017f9183ea4ee578aab1a07e91e44d4e528
sha512sums = be80d7ee558595d4b17b07a5a2b729d9a9503c963ec1b19bac6a87601eaefd28075aea7fb6d9c77e2e15e063fc6a8a2e8744bc1efe63e2a58b8c3ede0d89c821
pkgname = linux-rt-bfq
diff --git a/PKGBUILD b/PKGBUILD
index e10d5a918790..eb8f44c71073 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -55,7 +55,7 @@ _srcname=linux-4.4
_pkgver=4.4.4
_rtpatchver=rt11
pkgver=${_pkgver}_${_rtpatchver}
-pkgrel=1
+pkgrel=2
arch=('i686' 'x86_64')
url="http://algo.ing.unimo.it"
license=('GPL2')
@@ -79,7 +79,6 @@ source=("http://www.kernel.org/pub/linux/kernel/v4.x/${_srcname}.tar.xz"
'linux-rt-bfq.preset'
'change-default-console-loglevel.patch'
'config' 'config.x86_64'
- 'fix-race-in-PRT-wait-for-completion-simple-wait-code_Nvidia-RT.patch'
'0004-sdhci-revert.patch')
prepare() {
@@ -92,11 +91,6 @@ prepare() {
### Add rt patch
msg "Add rt patch"
patch -Np1 -i "${srcdir}/patch-${_pkgver}-${_rtpatchver}.patch"
-
- ### 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-PRT-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"
### Revert http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=9faac7b95ea4f9e83b7a914084cc81ef1632fd91
# fixes #47778 sdhci broken on some boards
@@ -470,7 +464,6 @@ sha512sums=('13c8459933a8b80608e226a1398e3d1848352ace84bcfb7e6a4a33cb230bbe1ab71
'd9d28e02e964704ea96645a5107f8b65cae5f4fb4f537e224e5e3d087fd296cb770c29ac76e0ce95d173bc420ea87fb8f187d616672a60a0cae618b0ef15b8c8'
'756a5c5ec2db9153d0f749c4f358501d78743ab6f7538c7c127aad0a6a0bd21364f15315689f4ccd8c7b559e4cebefdfb8bb55ee90aabe3d0bd5a3d5f00703c7'
'56ce250e1b14b03b28dfdf03923ffd173d05edc5fe9dcf5daecd121370e618d62eb8448b930503d69989c9c7ee3e3d8b64768962e78f5a1d08ba1267405192df'
- '326dc571c072d4c47381852f16c00c8a7b27d11a5e6ff0f60f5e3a21d4a833c1e467dda1c2a5c04a6611af48bb6ef017f9183ea4ee578aab1a07e91e44d4e528'
'be80d7ee558595d4b17b07a5a2b729d9a9503c963ec1b19bac6a87601eaefd28075aea7fb6d9c77e2e15e063fc6a8a2e8744bc1efe63e2a58b8c3ede0d89c821')
validpgpkeys=(
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.patch
deleted file mode 100644
index 29a172bc739a..000000000000
--- a/fix-race-in-PRT-wait-for-completion-simple-wait-code_Nvidia-RT.patch
+++ /dev/null
@@ -1,59 +0,0 @@
--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
--nvidia, as i would like to see if it fixes the semaphore issues i have seen.
-
--I've kept the original patch comment in tact;
-
-I'm not 100% sure that the patch below will fix your problem, but we
-saw something that sounds pretty familiar to your issue involving the
-nvidia driver and the preempt-rt patch. The nvidia driver uses the
-completion support to create their own driver's notion of an internally
-used semaphore.
-
-Fix a race in the PRT wait for completion simple wait code.
-
-A wait_for_completion() waiter task can be awoken by a task calling
-complete(), but fail to consume the 'done' completion resource if it
-looses a race with another task calling wait_for_completion() just as
-it is waking up.
-
-In this case, the awoken task will call schedule_timeout() again
-without being in the simple wait queue.
-
-So if the awoken task is unable to claim the 'done' completion resource,
-check to see if it needs to be re-inserted into the wait list before
-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 @@
- do_wait_for_common(struct completion *x,
- long (*action)(long), long timeout, int state)
- {
-+ int again = 0;
-+
- if (!x->done) {
- DEFINE_SWAITER(wait);
-
- swait_prepare_locked(&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);
-+
- if (signal_pending_state(state, current)) {
- timeout = -ERESTARTSYS;
- break;
-@@ -74,6 +82,7 @@
- raw_spin_unlock_irq(&x->wait.lock);
- timeout = action(timeout);
- raw_spin_lock_irq(&x->wait.lock);
-+ again = 1;
- } while (!x->done && timeout);
- swait_finish_locked(&x->wait, &wait);
- if (!x->done)