diff options
-rw-r--r-- | cputimer-cure-lock-inversion.patch | 73 | ||||
-rw-r--r-- | kernel.spec | 11 | ||||
-rw-r--r-- | sources | 1 |
3 files changed, 4 insertions, 81 deletions
diff --git a/cputimer-cure-lock-inversion.patch b/cputimer-cure-lock-inversion.patch deleted file mode 100644 index cebb775bf..000000000 --- a/cputimer-cure-lock-inversion.patch +++ /dev/null @@ -1,73 +0,0 @@ -Subject: cputimer: Cure lock inversion -From: Peter Zijlstra <a.p.zijlstra@chello.nl> -Date: Mon Oct 17 11:50:30 CEST 2011 - -There's a lock inversion between the cputimer->lock and rq->lock; notably -the two callchains involved are: - - update_rlimit_cpu() - sighand->siglock - set_process_cpu_timer() - cpu_timer_sample_group() - thread_group_cputimer() - cputimer->lock - thread_group_cputime() - task_sched_runtime() - ->pi_lock - rq->lock - - scheduler_tick() - rq->lock - task_tick_fair() - update_curr() - account_group_exec() - cputimer->lock - -Where the first one is enabling a CLOCK_PROCESS_CPUTIME_ID timer, and -the second one is keeping up-to-date. - -This problem was introduced by e8abccb7193 ("posix-cpu-timers: Cure -SMP accounting oddities"). - -Cure the problem by removing the cputimer->lock and rq->lock nesting, -this leaves concurrent enablers doing duplicate work, but the time -wasted should be on the same order otherwise wasted spinning on the -lock and the greater-than assignment filter should ensure we preserve -monotonicity. - -Reported-by: Dave Jones <davej@redhat.com> -Reported-by: Simon Kirby <sim@hostway.ca> -Cc: stable@kernel.org -Cc: Thomas Gleixner <tglx@linutronix.de> -Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> ---- - kernel/posix-cpu-timers.c | 7 ++++--- - 1 file changed, 4 insertions(+), 3 deletions(-) -Index: linux-2.6/kernel/posix-cpu-timers.c -=================================================================== ---- linux-2.6.orig/kernel/posix-cpu-timers.c -+++ linux-2.6/kernel/posix-cpu-timers.c -@@ -274,9 +274,7 @@ void thread_group_cputimer(struct task_s - struct task_cputime sum; - unsigned long flags; - -- spin_lock_irqsave(&cputimer->lock, flags); - if (!cputimer->running) { -- cputimer->running = 1; - /* - * The POSIX timer interface allows for absolute time expiry - * values through the TIMER_ABSTIME flag, therefore we have -@@ -284,8 +282,11 @@ void thread_group_cputimer(struct task_s - * it. - */ - thread_group_cputime(tsk, &sum); -+ spin_lock_irqsave(&cputimer->lock, flags); -+ cputimer->running = 1; - update_gt_cputime(&cputimer->cputime, &sum); -- } -+ } else -+ spin_lock_irqsave(&cputimer->lock, flags); - *times = cputimer->cputime; - spin_unlock_irqrestore(&cputimer->lock, flags); - } - diff --git a/kernel.spec b/kernel.spec index 44d71c1e0..093f9315a 100644 --- a/kernel.spec +++ b/kernel.spec @@ -84,7 +84,7 @@ Summary: The Linux kernel # The rc snapshot level %define rcrev 10 # The git snapshot level -%define gitrev 0 +%define gitrev 1 # Set rpm version accordingly %define rpmversion 3.%{upstream_sublevel}.0 %endif @@ -749,9 +749,6 @@ Patch21002: mmc-Always-check-for-lower-base-frequency-quirk-for-.patch Patch21020: 0001-mm-vmscan-Limit-direct-reclaim-for-higher-order-allo.patch Patch21021: 0002-mm-Abort-reclaim-compaction-if-compaction-can-procee.patch -# rhbz #746485 -Patch21030: cputimer-cure-lock-inversion.patch - %endif BuildRoot: %{_tmppath}/kernel-%{KVERREL}-root @@ -1379,9 +1376,6 @@ ApplyPatch utrace.patch ApplyPatch 0001-mm-vmscan-Limit-direct-reclaim-for-higher-order-allo.patch ApplyPatch 0002-mm-Abort-reclaim-compaction-if-compaction-can-procee.patch -# rhbz #746485 -ApplyPatch cputimer-cure-lock-inversion.patch - # END OF PATCH APPLICATIONS %endif @@ -2090,8 +2084,9 @@ fi # ||----w | # || || %changelog -* Fri Oct 21 2011 Chuck Ebbert <cebbert@redhat.com> +* Fri Oct 21 2011 Chuck Ebbert <cebbert@redhat.com> 3.1.0-0.rc10.git1.1 - Require grubby >= 8.3-1 like F16 does. +- Update to upstream HEAD (v3.1-rc10-42-g2efd7c0). * Fri Oct 21 2011 Dave Jones <davej@redhat.com> - Lower severity of Radeon lockup messages. @@ -1,2 +1,3 @@ 398e95866794def22b12dfbc15ce89c0 linux-3.0.tar.bz2 6a91efe6505579a181c5f5e1a68f6c3a patch-3.1-rc10.bz2 +aaf9baa66a0fde2b3824ab618ac1be6c patch-3.1-rc10-git1.bz2 |