diff options
author | sirlucjan | 2016-03-10 17:47:49 +0100 |
---|---|---|
committer | sirlucjan | 2016-03-10 17:47:49 +0100 |
commit | 2772993a71d8decc2530a93a97050b7507e659a9 (patch) | |
tree | c1fcb2edd941985dea21c61df5315d4fe7e785d5 | |
parent | d435f2aa0c95edffe8cd00353c5305b0c273d91f (diff) | |
download | aur-2772993a71d8decc2530a93a97050b7507e659a9.tar.gz |
Bump to 4.4.4-rt11-2: fix
-rw-r--r-- | .SRCINFO | 6 | ||||
-rw-r--r-- | PKGBUILD | 9 | ||||
-rw-r--r-- | fix-race-in-PRT-wait-for-completion-simple-wait-code_Nvidia-RT.patch | 59 |
3 files changed, 3 insertions, 71 deletions
@@ -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 @@ -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) |