diff --git a/debian/changelog b/debian/changelog index 4d2964b28..63dde9232 100644 --- a/debian/changelog +++ b/debian/changelog @@ -8,6 +8,7 @@ linux (3.4.3-1~experimental.1) UNRELEASED; urgency=low * [ia64] Export to userland (fixes FTBFS) * [x86] Enable BATTERY_SBS as module (Closes: #662902) * team: Enable NET_TEAM_MODE_LOADBALANCE as module + * [rt] Update to 3.4.2-rt10 (no functional change) -- Ben Hutchings Thu, 07 Jun 2012 04:45:03 +0100 diff --git a/debian/patches/features/all/rt/revert-workqueue-skip-nr_running-sanity-check-in-wor.patch b/debian/patches/features/all/rt/0001-Revert-workqueue-skip-nr_running-sanity-check-in-wor.patch similarity index 61% rename from debian/patches/features/all/rt/revert-workqueue-skip-nr_running-sanity-check-in-wor.patch rename to debian/patches/features/all/rt/0001-Revert-workqueue-skip-nr_running-sanity-check-in-wor.patch index 8dec2548c..6a7eed725 100644 --- a/debian/patches/features/all/rt/revert-workqueue-skip-nr_running-sanity-check-in-wor.patch +++ b/debian/patches/features/all/rt/0001-Revert-workqueue-skip-nr_running-sanity-check-in-wor.patch @@ -1,20 +1,23 @@ -From: Ben Hutchings -Date: Thu, 31 May 2012 02:58:44 +0100 -Subject: [PATCH] Revert "workqueue: skip nr_running sanity check in +From 176459e7ddb8f43845817a1c9341cacaeb9cad36 Mon Sep 17 00:00:00 2001 +From: Steven Rostedt +Date: Thu, 7 Jun 2012 09:49:40 -0400 +Subject: [001/254] Revert "workqueue: skip nr_running sanity check in worker_enter_idle() if trustee is active" -This reverts commit 5d79c6f64a904afc92a329f80abe693e3ae105fe. -It conflicts with, and appears to be unnecessary for, the PREEMPT_RT -series. +This reverts commit 24312d34c95702e51240f58c073db30630170fbf. + +Reported-by: Ibrahim Umar + +Signed-off-by: Steven Rostedt --- kernel/workqueue.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/kernel/workqueue.c b/kernel/workqueue.c -index 7947e16..bb425b1 100644 +index 7da267c..5abf42f 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c -@@ -1215,13 +1215,8 @@ static void worker_enter_idle(struct worker *worker) +@@ -1210,13 +1210,8 @@ static void worker_enter_idle(struct worker *worker) } else wake_up_all(&gcwq->trustee_wait); @@ -30,6 +33,3 @@ index 7947e16..bb425b1 100644 atomic_read(get_gcwq_nr_running(gcwq->cpu))); } --- -1.7.10 - diff --git a/debian/patches/features/all/rt/re-possible-slab-deadlock-while-doing-ifenslave-1.patch b/debian/patches/features/all/rt/0002-slab-lockdep-Annotate-all-slab-caches.patch similarity index 85% rename from debian/patches/features/all/rt/re-possible-slab-deadlock-while-doing-ifenslave-1.patch rename to debian/patches/features/all/rt/0002-slab-lockdep-Annotate-all-slab-caches.patch index 26d6e44c9..7c29bbc21 100644 --- a/debian/patches/features/all/rt/re-possible-slab-deadlock-while-doing-ifenslave-1.patch +++ b/debian/patches/features/all/rt/0002-slab-lockdep-Annotate-all-slab-caches.patch @@ -1,6 +1,7 @@ -Subject: slab, lockdep: Annotate all slab caches +From 989ca95e14eeb781f5bb57334ab626cfe13d9ec7 Mon Sep 17 00:00:00 2001 From: Peter Zijlstra -Date: Mon Nov 28 19:51:51 CET 2011 +Date: Mon, 28 Nov 2011 19:51:51 +0100 +Subject: [002/254] slab, lockdep: Annotate all slab caches Currently we only annotate the kmalloc caches, annotate all of them. @@ -17,10 +18,11 @@ Link: http://lkml.kernel.org/n/tip-10bey2cgpcvtbdkgigaoab8w@git.kernel.org --- mm/slab.c | 52 ++++++++++++++++++++++++++++------------------------ 1 file changed, 28 insertions(+), 24 deletions(-) -Index: linux-3.4/mm/slab.c -=================================================================== ---- linux-3.4.orig/mm/slab.c -+++ linux-3.4/mm/slab.c + +diff --git a/mm/slab.c b/mm/slab.c +index e901a36..1fd4b4d 100644 +--- a/mm/slab.c ++++ b/mm/slab.c @@ -611,6 +611,12 @@ int slab_is_available(void) return g_cpucache_up >= EARLY; } @@ -34,7 +36,7 @@ Index: linux-3.4/mm/slab.c #ifdef CONFIG_LOCKDEP /* -@@ -672,38 +678,41 @@ static void slab_set_debugobj_lock_class +@@ -672,38 +678,41 @@ static void slab_set_debugobj_lock_classes(struct kmem_cache *cachep) slab_set_debugobj_lock_classes_node(cachep, node); } @@ -90,7 +92,7 @@ Index: linux-3.4/mm/slab.c { } -@@ -716,12 +725,6 @@ static void slab_set_debugobj_lock_class +@@ -716,12 +725,6 @@ static void slab_set_debugobj_lock_classes(struct kmem_cache *cachep) } #endif @@ -121,7 +123,7 @@ Index: linux-3.4/mm/slab.c mutex_unlock(&cache_chain_mutex); /* Done! */ -@@ -2544,6 +2546,8 @@ kmem_cache_create (const char *name, siz +@@ -2544,6 +2546,8 @@ kmem_cache_create (const char *name, size_t size, size_t align, slab_set_debugobj_lock_classes(cachep); } diff --git a/debian/patches/features/all/rt/x86-kprobes-remove-bogus-preempt-enable.patch b/debian/patches/features/all/rt/0003-x86-kprobes-Remove-remove-bogus-preempt_enable.patch similarity index 59% rename from debian/patches/features/all/rt/x86-kprobes-remove-bogus-preempt-enable.patch rename to debian/patches/features/all/rt/0003-x86-kprobes-Remove-remove-bogus-preempt_enable.patch index bf2a08076..379ccd59d 100644 --- a/debian/patches/features/all/rt/x86-kprobes-remove-bogus-preempt-enable.patch +++ b/debian/patches/features/all/rt/0003-x86-kprobes-Remove-remove-bogus-preempt_enable.patch @@ -1,6 +1,7 @@ -Subject: x86: kprobes: Remove remove bogus preempt_enable +From 225cd7102e5afa8216538cba9362a906d5343c05 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Thu, 17 Mar 2011 11:02:15 +0100 +Subject: [003/254] x86: kprobes: Remove remove bogus preempt_enable The CONFIG_PREEMPT=n section of setup_singlestep() contains: @@ -15,11 +16,11 @@ Signed-off-by: Thomas Gleixner arch/x86/kernel/kprobes.c | 1 - 1 file changed, 1 deletion(-) -Index: linux-3.4/arch/x86/kernel/kprobes.c -=================================================================== ---- linux-3.4.orig/arch/x86/kernel/kprobes.c -+++ linux-3.4/arch/x86/kernel/kprobes.c -@@ -486,7 +486,6 @@ setup_singlestep(struct kprobe *p, struc +diff --git a/arch/x86/kernel/kprobes.c b/arch/x86/kernel/kprobes.c +index e213fc8..b9edf1a 100644 +--- a/arch/x86/kernel/kprobes.c ++++ b/arch/x86/kernel/kprobes.c +@@ -486,7 +486,6 @@ setup_singlestep(struct kprobe *p, struct pt_regs *regs, struct kprobe_ctlblk *k * stepping. */ regs->ip = (unsigned long)p->ainsn.insn; diff --git a/debian/patches/features/all/rt/tick-skew.patch b/debian/patches/features/all/rt/0004-tick-Add-tick-skew-boot-option.patch similarity index 81% rename from debian/patches/features/all/rt/tick-skew.patch rename to debian/patches/features/all/rt/0004-tick-Add-tick-skew-boot-option.patch index 1f47cdbfe..8a04033df 100644 --- a/debian/patches/features/all/rt/tick-skew.patch +++ b/debian/patches/features/all/rt/0004-tick-Add-tick-skew-boot-option.patch @@ -1,34 +1,35 @@ +From 59d39f2e52b8956a0d66e69ccd0aaeb80041c22d Mon Sep 17 00:00:00 2001 From: Mike Galbraith -Date: Tue May 8 12:20:58 2012 +0200 -Subject: tick: Add tick skew boot option - +Date: Tue, 8 May 2012 12:20:58 +0200 +Subject: [004/254] tick: Add tick skew boot option + Let the user decide whether power consumption or jitter is the more important consideration for their machines. Quoting removal commit af5ab277ded04bd9bc6b048c5a2f0e7d70ef0867: - + "Historically, Linux has tried to make the regular timer tick on the various CPUs not happen at the same time, to avoid contention on xtime_lock. - + Nowadays, with the tickless kernel, this contention no longer happens since time keeping and updating are done differently. In addition, this skew is actually hurting power consumption in a measurable way on many-core systems." - + Problems: - + - Contrary to the above, systems do encounter contention on both xtime_lock and RCU structure locks when the tick is synchronized. - + - Moderate sized RT systems suffer intolerable jitter due to the tick being synchronized. - + - SGI reports the same for their large systems. - + - Fully utilized systems reap no power saving benefit from skew removal, but do suffer from resulting induced lock contention. - + - 0209f649 rcu: limit rcu_node leaf-level fanout This patch was born to combat lock contention which testing showed to have been _induced by_ skew removal. Skew the tick, contention @@ -39,17 +40,16 @@ Problems: Signed-off-by: Mike Galbraith Link: http://lkml.kernel.org/r/1336472458.21924.78.camel@marge.simpson.net Signed-off-by: Thomas Gleixner - --- Documentation/kernel-parameters.txt | 9 +++++++++ kernel/time/tick-sched.c | 18 ++++++++++++++++++ 2 files changed, 27 insertions(+) -Index: linux-3.4/Documentation/kernel-parameters.txt -=================================================================== ---- linux-3.4.orig/Documentation/kernel-parameters.txt -+++ linux-3.4/Documentation/kernel-parameters.txt -@@ -2426,6 +2426,15 @@ bytes respectively. Such letter suffixes +diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt +index c1601e5..1e0150e 100644 +--- a/Documentation/kernel-parameters.txt ++++ b/Documentation/kernel-parameters.txt +@@ -2426,6 +2426,15 @@ bytes respectively. Such letter suffixes can also be entirely omitted. sched_debug [KNL] Enables verbose scheduler debug messages. @@ -65,11 +65,11 @@ Index: linux-3.4/Documentation/kernel-parameters.txt security= [SECURITY] Choose a security module to enable at boot. If this boot parameter is not specified, only the first security module asking for security registration will be -Index: linux-3.4/kernel/time/tick-sched.c -=================================================================== ---- linux-3.4.orig/kernel/time/tick-sched.c -+++ linux-3.4/kernel/time/tick-sched.c -@@ -814,6 +814,16 @@ static enum hrtimer_restart tick_sched_t +diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c +index 6a3a5b9..efd3866 100644 +--- a/kernel/time/tick-sched.c ++++ b/kernel/time/tick-sched.c +@@ -814,6 +814,16 @@ static enum hrtimer_restart tick_sched_timer(struct hrtimer *timer) return HRTIMER_RESTART; } diff --git a/debian/patches/features/all/rt/x86-hpet-disable-msi-on-lenovo-w510.patch b/debian/patches/features/all/rt/0005-x86-hpet-Disable-MSI-on-Lenovo-W510.patch similarity index 77% rename from debian/patches/features/all/rt/x86-hpet-disable-msi-on-lenovo-w510.patch rename to debian/patches/features/all/rt/0005-x86-hpet-Disable-MSI-on-Lenovo-W510.patch index 9f5d28ca0..2aceba26b 100644 --- a/debian/patches/features/all/rt/x86-hpet-disable-msi-on-lenovo-w510.patch +++ b/debian/patches/features/all/rt/0005-x86-hpet-Disable-MSI-on-Lenovo-W510.patch @@ -1,6 +1,7 @@ -Subject: x86: hpet: Disable MSI on Lenovo W510 +From 7fcd0c26f510056502801b98c8aac381a5041813 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 30 Sep 2011 20:03:37 +0200 +Subject: [005/254] x86: hpet: Disable MSI on Lenovo W510 MSI based per cpu timers lose interrupts when intel_idle() is enabled - independent of the c-state. With idle=poll the problem cannot be @@ -12,10 +13,10 @@ Signed-off-by: Thomas Gleixner arch/x86/kernel/hpet.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) -Index: linux-3.4/arch/x86/kernel/hpet.c -=================================================================== ---- linux-3.4.orig/arch/x86/kernel/hpet.c -+++ linux-3.4/arch/x86/kernel/hpet.c +diff --git a/arch/x86/kernel/hpet.c b/arch/x86/kernel/hpet.c +index ad0de0c..230a200 100644 +--- a/arch/x86/kernel/hpet.c ++++ b/arch/x86/kernel/hpet.c @@ -8,6 +8,7 @@ #include #include @@ -24,7 +25,7 @@ Index: linux-3.4/arch/x86/kernel/hpet.c #include #include #include -@@ -570,6 +571,30 @@ static void init_one_hpet_msi_clockevent +@@ -570,6 +571,30 @@ static void init_one_hpet_msi_clockevent(struct hpet_dev *hdev, int cpu) #define RESERVE_TIMERS 0 #endif @@ -55,7 +56,7 @@ Index: linux-3.4/arch/x86/kernel/hpet.c static void hpet_msi_capability_lookup(unsigned int start_timer) { unsigned int id; -@@ -577,6 +602,8 @@ static void hpet_msi_capability_lookup(u +@@ -577,6 +602,8 @@ static void hpet_msi_capability_lookup(unsigned int start_timer) unsigned int num_timers_used = 0; int i; diff --git a/debian/patches/features/all/rt/block-shorten-interrupt-disabled-regions.patch b/debian/patches/features/all/rt/0006-block-Shorten-interrupt-disabled-regions.patch similarity index 80% rename from debian/patches/features/all/rt/block-shorten-interrupt-disabled-regions.patch rename to debian/patches/features/all/rt/0006-block-Shorten-interrupt-disabled-regions.patch index 06cc09bc1..444e79735 100644 --- a/debian/patches/features/all/rt/block-shorten-interrupt-disabled-regions.patch +++ b/debian/patches/features/all/rt/0006-block-Shorten-interrupt-disabled-regions.patch @@ -1,6 +1,7 @@ -Subject: block: Shorten interrupt disabled regions +From 4c4eaef1d39d975749f3c7da11aca53749b99052 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 22 Jun 2011 19:47:02 +0200 +Subject: [006/254] block: Shorten interrupt disabled regions Moving the blk_sched_flush_plug() call out of the interrupt/preempt disabled region in the scheduler allows us to replace @@ -46,11 +47,11 @@ Signed-off-by: Thomas Gleixner block/blk-core.c | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) -Index: linux-3.4/block/blk-core.c -=================================================================== ---- linux-3.4.orig/block/blk-core.c -+++ linux-3.4/block/blk-core.c -@@ -302,7 +302,11 @@ void __blk_run_queue(struct request_queu +diff --git a/block/blk-core.c b/block/blk-core.c +index 1f61b74..0d947d0 100644 +--- a/block/blk-core.c ++++ b/block/blk-core.c +@@ -302,7 +302,11 @@ void __blk_run_queue(struct request_queue *q) { if (unlikely(blk_queue_stopped(q))) return; @@ -63,7 +64,7 @@ Index: linux-3.4/block/blk-core.c q->request_fn(q); } EXPORT_SYMBOL(__blk_run_queue); -@@ -2779,11 +2783,11 @@ static void queue_unplugged(struct reque +@@ -2779,11 +2783,11 @@ static void queue_unplugged(struct request_queue *q, unsigned int depth, * this lock). */ if (from_schedule) { @@ -77,7 +78,7 @@ Index: linux-3.4/block/blk-core.c } } -@@ -2809,7 +2813,6 @@ static void flush_plug_callbacks(struct +@@ -2809,7 +2813,6 @@ static void flush_plug_callbacks(struct blk_plug *plug) void blk_flush_plug_list(struct blk_plug *plug, bool from_schedule) { struct request_queue *q; @@ -85,7 +86,7 @@ Index: linux-3.4/block/blk-core.c struct request *rq; LIST_HEAD(list); unsigned int depth; -@@ -2830,11 +2833,6 @@ void blk_flush_plug_list(struct blk_plug +@@ -2830,11 +2833,6 @@ void blk_flush_plug_list(struct blk_plug *plug, bool from_schedule) q = NULL; depth = 0; @@ -97,7 +98,7 @@ Index: linux-3.4/block/blk-core.c while (!list_empty(&list)) { rq = list_entry_rq(list.next); list_del_init(&rq->queuelist); -@@ -2847,7 +2845,7 @@ void blk_flush_plug_list(struct blk_plug +@@ -2847,7 +2845,7 @@ void blk_flush_plug_list(struct blk_plug *plug, bool from_schedule) queue_unplugged(q, depth, from_schedule); q = rq->q; depth = 0; @@ -106,7 +107,7 @@ Index: linux-3.4/block/blk-core.c } /* -@@ -2874,8 +2872,6 @@ void blk_flush_plug_list(struct blk_plug +@@ -2874,8 +2872,6 @@ void blk_flush_plug_list(struct blk_plug *plug, bool from_schedule) */ if (q) queue_unplugged(q, depth, from_schedule); diff --git a/debian/patches/features/all/rt/sched-distangle-worker-accounting-from-rq-3elock.patch b/debian/patches/features/all/rt/0007-sched-Distangle-worker-accounting-from-rq-3Elock.patch similarity index 86% rename from debian/patches/features/all/rt/sched-distangle-worker-accounting-from-rq-3elock.patch rename to debian/patches/features/all/rt/0007-sched-Distangle-worker-accounting-from-rq-3Elock.patch index 86fb595d9..8f55a9a34 100644 --- a/debian/patches/features/all/rt/sched-distangle-worker-accounting-from-rq-3elock.patch +++ b/debian/patches/features/all/rt/0007-sched-Distangle-worker-accounting-from-rq-3Elock.patch @@ -1,6 +1,7 @@ -Subject: sched: Distangle worker accounting from rq-%3Elock +From e4f147b16e6d02bb5b48247893c6df70bf018132 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 22 Jun 2011 19:47:03 +0200 +Subject: [007/254] sched: Distangle worker accounting from rq-%3Elock The worker accounting for cpu bound workers is plugged into the core scheduler code and the wakeup code. This is not a hard requirement and @@ -23,16 +24,16 @@ Cc: Linus Torvalds Link: http://lkml.kernel.org/r/20110622174919.135236139@linutronix.de Signed-off-by: Thomas Gleixner --- - kernel/sched/core.c | 66 ++++++++++---------------------------------- - kernel/workqueue.c | 69 +++++++++++++++++++++-------------------------- - kernel/workqueue_sched.h | 5 +-- - 3 files changed, 48 insertions(+), 92 deletions(-) + kernel/sched/core.c | 66 +++++++++++---------------------------------- + kernel/workqueue.c | 67 +++++++++++++++++++++------------------------- + kernel/workqueue_sched.h | 5 ++-- + 3 files changed, 47 insertions(+), 91 deletions(-) -Index: linux-3.4/kernel/sched/core.c -=================================================================== ---- linux-3.4.orig/kernel/sched/core.c -+++ linux-3.4/kernel/sched/core.c -@@ -1399,10 +1399,6 @@ static void ttwu_activate(struct rq *rq, +diff --git a/kernel/sched/core.c b/kernel/sched/core.c +index e5212ae..f5f9134 100644 +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -1399,10 +1399,6 @@ static void ttwu_activate(struct rq *rq, struct task_struct *p, int en_flags) { activate_task(rq, p, en_flags); p->on_rq = 1; @@ -104,7 +105,7 @@ Index: linux-3.4/kernel/sched/core.c } switch_count = &prev->nvcsw; } -@@ -3255,6 +3204,14 @@ static inline void sched_submit_work(str +@@ -3255,6 +3204,14 @@ static inline void sched_submit_work(struct task_struct *tsk) { if (!tsk->state || tsk_is_pi_blocked(tsk)) return; @@ -119,7 +120,7 @@ Index: linux-3.4/kernel/sched/core.c /* * If we are going to sleep and we have plugged IO queued, * make sure to submit it to avoid deadlocks. -@@ -3263,12 +3220,19 @@ static inline void sched_submit_work(str +@@ -3263,12 +3220,19 @@ static inline void sched_submit_work(struct task_struct *tsk) blk_schedule_flush_plug(tsk); } @@ -139,10 +140,10 @@ Index: linux-3.4/kernel/sched/core.c } EXPORT_SYMBOL(schedule); -Index: linux-3.4/kernel/workqueue.c -=================================================================== ---- linux-3.4.orig/kernel/workqueue.c -+++ linux-3.4/kernel/workqueue.c +diff --git a/kernel/workqueue.c b/kernel/workqueue.c +index 5abf42f..50e0d00 100644 +--- a/kernel/workqueue.c ++++ b/kernel/workqueue.c @@ -137,6 +137,7 @@ struct worker { unsigned int flags; /* X: flags */ int id; /* I: worker id */ @@ -151,7 +152,7 @@ Index: linux-3.4/kernel/workqueue.c }; /* -@@ -655,66 +656,58 @@ static void wake_up_worker(struct global +@@ -655,66 +656,58 @@ static void wake_up_worker(struct global_cwq *gcwq) } /** @@ -212,14 +213,14 @@ Index: linux-3.4/kernel/workqueue.c if (worker->flags & WORKER_NOT_RUNNING) - return NULL; + return; - -- /* this can only happen on the local cpu */ -- BUG_ON(cpu != raw_smp_processor_id()); ++ + if (WARN_ON_ONCE(worker->sleeping)) + return; +- /* this can only happen on the local cpu */ +- BUG_ON(cpu != raw_smp_processor_id()); + worker->sleeping = 1; -+ + + cpu = smp_processor_id(); + gcwq = get_gcwq(cpu); + spin_lock_irq(&gcwq->lock); @@ -233,11 +234,10 @@ Index: linux-3.4/kernel/workqueue.c - * and preemption disabled, which in turn means that none else - * could be manipulating idle_list, so dereferencing idle_list - * without gcwq lock is safe. -- */ + */ - if (atomic_dec_and_test(nr_running) && !list_empty(&gcwq->worklist)) - to_wakeup = first_worker(gcwq); - return to_wakeup ? to_wakeup->task : NULL; -+ */ + if (atomic_dec_and_test(get_gcwq_nr_running(cpu)) && + !list_empty(&gcwq->worklist)) { + worker = first_worker(gcwq); @@ -248,10 +248,10 @@ Index: linux-3.4/kernel/workqueue.c } /** -Index: linux-3.4/kernel/workqueue_sched.h -=================================================================== ---- linux-3.4.orig/kernel/workqueue_sched.h -+++ linux-3.4/kernel/workqueue_sched.h +diff --git a/kernel/workqueue_sched.h b/kernel/workqueue_sched.h +index 2d10fc9..3bf73e2 100644 +--- a/kernel/workqueue_sched.h ++++ b/kernel/workqueue_sched.h @@ -4,6 +4,5 @@ * Scheduler hooks for concurrency managed workqueue. Only to be * included from sched.c and workqueue.c. diff --git a/debian/patches/features/all/rt/mips-enable-interrupts-in-signal.patch b/debian/patches/features/all/rt/0008-mips-enable-interrupts-in-signal.patch.patch similarity index 52% rename from debian/patches/features/all/rt/mips-enable-interrupts-in-signal.patch rename to debian/patches/features/all/rt/0008-mips-enable-interrupts-in-signal.patch.patch index bcb2d4bbc..acad9412e 100644 --- a/debian/patches/features/all/rt/mips-enable-interrupts-in-signal.patch +++ b/debian/patches/features/all/rt/0008-mips-enable-interrupts-in-signal.patch.patch @@ -1,17 +1,18 @@ -Subject: mips-enable-interrupts-in-signal.patch +From 4f192cb00877ecec7541354d32fe2f6fafd72f18 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Mon, 18 Jul 2011 21:32:10 +0200 +Subject: [008/254] mips-enable-interrupts-in-signal.patch Signed-off-by: Thomas Gleixner --- arch/mips/kernel/signal.c | 3 +++ 1 file changed, 3 insertions(+) -Index: linux-3.4/arch/mips/kernel/signal.c -=================================================================== ---- linux-3.4.orig/arch/mips/kernel/signal.c -+++ linux-3.4/arch/mips/kernel/signal.c -@@ -605,6 +605,9 @@ static void do_signal(struct pt_regs *re +diff --git a/arch/mips/kernel/signal.c b/arch/mips/kernel/signal.c +index d5a338a..ab4e20a 100644 +--- a/arch/mips/kernel/signal.c ++++ b/arch/mips/kernel/signal.c +@@ -588,6 +588,9 @@ static void do_signal(struct pt_regs *regs) if (!user_mode(regs)) return; diff --git a/debian/patches/features/all/rt/arm-enable-interrupts-in-signal-code.patch b/debian/patches/features/all/rt/0009-arm-enable-interrupts-in-signal-code.patch.patch similarity index 50% rename from debian/patches/features/all/rt/arm-enable-interrupts-in-signal-code.patch rename to debian/patches/features/all/rt/0009-arm-enable-interrupts-in-signal-code.patch.patch index 11873303f..73863d2f0 100644 --- a/debian/patches/features/all/rt/arm-enable-interrupts-in-signal-code.patch +++ b/debian/patches/features/all/rt/0009-arm-enable-interrupts-in-signal-code.patch.patch @@ -1,17 +1,18 @@ -Subject: arm-enable-interrupts-in-signal-code.patch +From fdd53448185582426cac212539692a8cb631e52a Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sat, 16 Jul 2011 16:27:13 +0200 +Subject: [009/254] arm-enable-interrupts-in-signal-code.patch Signed-off-by: Thomas Gleixner --- arch/arm/kernel/signal.c | 3 +++ 1 file changed, 3 insertions(+) -Index: linux-3.4/arch/arm/kernel/signal.c -=================================================================== ---- linux-3.4.orig/arch/arm/kernel/signal.c -+++ linux-3.4/arch/arm/kernel/signal.c -@@ -664,6 +664,9 @@ static void do_signal(struct pt_regs *re +diff --git a/arch/arm/kernel/signal.c b/arch/arm/kernel/signal.c +index d68d1b6..13db45b 100644 +--- a/arch/arm/kernel/signal.c ++++ b/arch/arm/kernel/signal.c +@@ -617,6 +617,9 @@ static void do_signal(struct pt_regs *regs, int syscall) if (!user_mode(regs)) return; diff --git a/debian/patches/features/all/rt/seqlock-remove-unused-functions.patch b/debian/patches/features/all/rt/0010-seqlock-Remove-unused-functions.patch similarity index 69% rename from debian/patches/features/all/rt/seqlock-remove-unused-functions.patch rename to debian/patches/features/all/rt/0010-seqlock-Remove-unused-functions.patch index 367dfeb18..9942edf83 100644 --- a/debian/patches/features/all/rt/seqlock-remove-unused-functions.patch +++ b/debian/patches/features/all/rt/0010-seqlock-Remove-unused-functions.patch @@ -1,17 +1,18 @@ -Subject: seqlock: Remove unused functions +From 205a191ae6521607bae4e78101d2f4aae0118414 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sat, 16 Jul 2011 18:38:22 +0200 +Subject: [010/254] seqlock: Remove unused functions Signed-off-by: Thomas Gleixner --- include/linux/seqlock.h | 21 --------------------- 1 file changed, 21 deletions(-) -Index: linux-3.4/include/linux/seqlock.h -=================================================================== ---- linux-3.4.orig/include/linux/seqlock.h -+++ linux-3.4/include/linux/seqlock.h -@@ -69,17 +69,6 @@ static inline void write_sequnlock(seqlo +diff --git a/include/linux/seqlock.h b/include/linux/seqlock.h +index 600060e2..cb0599c 100644 +--- a/include/linux/seqlock.h ++++ b/include/linux/seqlock.h +@@ -69,17 +69,6 @@ static inline void write_sequnlock(seqlock_t *sl) spin_unlock(&sl->lock); } @@ -29,7 +30,7 @@ Index: linux-3.4/include/linux/seqlock.h /* Start of read calculation -- fetch last complete writer token */ static __always_inline unsigned read_seqbegin(const seqlock_t *sl) { -@@ -248,14 +237,4 @@ static inline void write_seqcount_barrie +@@ -269,14 +258,4 @@ static inline void write_seqcount_barrier(seqcount_t *s) #define write_sequnlock_bh(lock) \ do { write_sequnlock(lock); local_bh_enable(); } while(0) diff --git a/debian/patches/features/all/rt/seqlock-use-seqcount.patch b/debian/patches/features/all/rt/0011-seqlock-Use-seqcount.patch similarity index 89% rename from debian/patches/features/all/rt/seqlock-use-seqcount.patch rename to debian/patches/features/all/rt/0011-seqlock-Use-seqcount.patch index 3a292534e..cd29000d4 100644 --- a/debian/patches/features/all/rt/seqlock-use-seqcount.patch +++ b/debian/patches/features/all/rt/0011-seqlock-Use-seqcount.patch @@ -1,18 +1,19 @@ -Subject: seqlock: Use seqcount +From 39e342612eb4ced8aa77bacdc270147941a38b36 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sat, 16 Jul 2011 18:40:26 +0200 +Subject: [011/254] seqlock: Use seqcount No point in having different implementations for the same thing. Signed-off-by: Thomas Gleixner --- - include/linux/seqlock.h | 176 +++++++++++++++++++++++++----------------------- - 1 file changed, 93 insertions(+), 83 deletions(-) + include/linux/seqlock.h | 174 +++++++++++++++++++++++++---------------------- + 1 file changed, 92 insertions(+), 82 deletions(-) -Index: linux-3.4/include/linux/seqlock.h -=================================================================== ---- linux-3.4.orig/include/linux/seqlock.h -+++ linux-3.4/include/linux/seqlock.h +diff --git a/include/linux/seqlock.h b/include/linux/seqlock.h +index cb0599c..1829905 100644 +--- a/include/linux/seqlock.h ++++ b/include/linux/seqlock.h @@ -30,81 +30,12 @@ #include #include @@ -95,7 +96,7 @@ Index: linux-3.4/include/linux/seqlock.h typedef struct seqcount { unsigned sequence; } seqcount_t; -@@ -186,7 +117,6 @@ static inline int __read_seqcount_retry( +@@ -207,7 +138,6 @@ static inline int __read_seqcount_retry(const seqcount_t *s, unsigned start) static inline int read_seqcount_retry(const seqcount_t *s, unsigned start) { smp_rmb(); @@ -103,7 +104,7 @@ Index: linux-3.4/include/linux/seqlock.h return __read_seqcount_retry(s, start); } -@@ -220,21 +150,101 @@ static inline void write_seqcount_barrie +@@ -241,21 +171,101 @@ static inline void write_seqcount_barrier(seqcount_t *s) s->sequence+=2; } @@ -112,11 +113,10 @@ Index: linux-3.4/include/linux/seqlock.h + spinlock_t lock; +} seqlock_t; + - /* -- * Possible sw/hw IRQ protected versions of the interfaces. ++/* + * These macros triggered gcc-3.x compile-time problems. We think these are + * OK now. Be cautious. - */ ++ */ +#define __SEQLOCK_UNLOCKED(lockname) \ + { \ + .seqcount = SEQCNT_ZERO, \ @@ -145,11 +145,12 @@ Index: linux-3.4/include/linux/seqlock.h + return read_seqcount_retry(&sl->seqcount, start); +} + -+/* + /* +- * Possible sw/hw IRQ protected versions of the interfaces. + * Lock out other writers and update the count. + * Acts like a normal spin_lock/unlock. + * Don't need preempt_disable() because that is in the spin_lock already. -+ */ + */ +static inline void write_seqlock(seqlock_t *sl) +{ + spin_lock(&sl->lock); @@ -201,15 +202,14 @@ Index: linux-3.4/include/linux/seqlock.h - do { local_irq_disable(); write_seqlock(lock); } while (0) -#define write_seqlock_bh(lock) \ - do { local_bh_disable(); write_seqlock(lock); } while (0) -- ++ do { flags = __write_seqlock_irqsave(lock); } while (0) + -#define write_sequnlock_irqrestore(lock, flags) \ - do { write_sequnlock(lock); local_irq_restore(flags); } while(0) -#define write_sequnlock_irq(lock) \ - do { write_sequnlock(lock); local_irq_enable(); } while(0) -#define write_sequnlock_bh(lock) \ - do { write_sequnlock(lock); local_bh_enable(); } while(0) -+ do { flags = __write_seqlock_irqsave(lock); } while (0) -+ +static inline void +write_sequnlock_irqrestore(seqlock_t *sl, unsigned long flags) +{ diff --git a/debian/patches/features/all/rt/timekeeping-split-xtime-lock.patch b/debian/patches/features/all/rt/0012-timekeeping-Split-xtime_lock.patch similarity index 85% rename from debian/patches/features/all/rt/timekeeping-split-xtime-lock.patch rename to debian/patches/features/all/rt/0012-timekeeping-Split-xtime_lock.patch index d50b8a52a..49c6a5e4c 100644 --- a/debian/patches/features/all/rt/timekeeping-split-xtime-lock.patch +++ b/debian/patches/features/all/rt/0012-timekeeping-Split-xtime_lock.patch @@ -1,6 +1,7 @@ -Subject: timekeeping: Split xtime_lock +From f66aa661bcd8201092bd9e7f9f1c243627b42fe4 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner -Date: Thu, 01 Mar 2012 15:14:06 +0100 +Date: Thu, 1 Mar 2012 15:14:06 +0100 +Subject: [012/254] timekeeping: Split xtime_lock xtime_lock is going to be split apart in mainline, so we can shorten the seqcount protected regions and avoid updating seqcount in some @@ -9,17 +10,17 @@ whole mess with raw seqlocks for RT. Signed-off-by: Thomas Gleixner --- - kernel/time/jiffies.c | 4 - - kernel/time/tick-common.c | 10 ++- - kernel/time/tick-internal.h | 3 - + kernel/time/jiffies.c | 4 +- + kernel/time/tick-common.c | 10 ++-- + kernel/time/tick-internal.h | 3 +- kernel/time/tick-sched.c | 16 +++--- - kernel/time/timekeeping.c | 114 +++++++++++++++++++++++++------------------- + kernel/time/timekeeping.c | 114 +++++++++++++++++++++++++------------------ 5 files changed, 87 insertions(+), 60 deletions(-) -Index: linux-3.4/kernel/time/jiffies.c -=================================================================== ---- linux-3.4.orig/kernel/time/jiffies.c -+++ linux-3.4/kernel/time/jiffies.c +diff --git a/kernel/time/jiffies.c b/kernel/time/jiffies.c +index a470154..21940eb 100644 +--- a/kernel/time/jiffies.c ++++ b/kernel/time/jiffies.c @@ -74,9 +74,9 @@ u64 get_jiffies_64(void) u64 ret; @@ -32,10 +33,10 @@ Index: linux-3.4/kernel/time/jiffies.c return ret; } EXPORT_SYMBOL(get_jiffies_64); -Index: linux-3.4/kernel/time/tick-common.c -=================================================================== ---- linux-3.4.orig/kernel/time/tick-common.c -+++ linux-3.4/kernel/time/tick-common.c +diff --git a/kernel/time/tick-common.c b/kernel/time/tick-common.c +index da6c9ec..39de540 100644 +--- a/kernel/time/tick-common.c ++++ b/kernel/time/tick-common.c @@ -63,13 +63,15 @@ int tick_is_oneshot_available(void) static void tick_periodic(int cpu) { @@ -54,7 +55,7 @@ Index: linux-3.4/kernel/time/tick-common.c } update_process_times(user_mode(get_irq_regs())); -@@ -130,9 +132,9 @@ void tick_setup_periodic(struct clock_ev +@@ -130,9 +132,9 @@ void tick_setup_periodic(struct clock_event_device *dev, int broadcast) ktime_t next; do { @@ -66,22 +67,22 @@ Index: linux-3.4/kernel/time/tick-common.c clockevents_set_mode(dev, CLOCK_EVT_MODE_ONESHOT); -Index: linux-3.4/kernel/time/tick-internal.h -=================================================================== ---- linux-3.4.orig/kernel/time/tick-internal.h -+++ linux-3.4/kernel/time/tick-internal.h -@@ -141,4 +141,5 @@ static inline int tick_device_is_functio +diff --git a/kernel/time/tick-internal.h b/kernel/time/tick-internal.h +index 4e265b9..c91100d 100644 +--- a/kernel/time/tick-internal.h ++++ b/kernel/time/tick-internal.h +@@ -141,4 +141,5 @@ static inline int tick_device_is_functional(struct clock_event_device *dev) #endif extern void do_timer(unsigned long ticks); -extern seqlock_t xtime_lock; +extern raw_spinlock_t xtime_lock; +extern seqcount_t xtime_seq; -Index: linux-3.4/kernel/time/tick-sched.c -=================================================================== ---- linux-3.4.orig/kernel/time/tick-sched.c -+++ linux-3.4/kernel/time/tick-sched.c -@@ -56,7 +56,8 @@ static void tick_do_update_jiffies64(kti +diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c +index efd3866..a607a7c 100644 +--- a/kernel/time/tick-sched.c ++++ b/kernel/time/tick-sched.c +@@ -56,7 +56,8 @@ static void tick_do_update_jiffies64(ktime_t now) return; /* Reevalute with xtime_lock held */ @@ -91,7 +92,7 @@ Index: linux-3.4/kernel/time/tick-sched.c delta = ktime_sub(now, last_jiffies_update); if (delta.tv64 >= tick_period.tv64) { -@@ -79,7 +80,8 @@ static void tick_do_update_jiffies64(kti +@@ -79,7 +80,8 @@ static void tick_do_update_jiffies64(ktime_t now) /* Keep the tick_next_period variable up to date */ tick_next_period = ktime_add(last_jiffies_update, tick_period); } @@ -101,7 +102,7 @@ Index: linux-3.4/kernel/time/tick-sched.c } /* -@@ -89,12 +91,14 @@ static ktime_t tick_init_jiffy_update(vo +@@ -89,12 +91,14 @@ static ktime_t tick_init_jiffy_update(void) { ktime_t period; @@ -118,7 +119,7 @@ Index: linux-3.4/kernel/time/tick-sched.c return period; } -@@ -316,11 +320,11 @@ static void tick_nohz_stop_sched_tick(st +@@ -316,11 +320,11 @@ static void tick_nohz_stop_sched_tick(struct tick_sched *ts) ts->idle_calls++; /* Read jiffies and the time when jiffies were updated last */ do { @@ -132,10 +133,10 @@ Index: linux-3.4/kernel/time/tick-sched.c if (rcu_needs_cpu(cpu) || printk_needs_cpu(cpu) || arch_needs_cpu(cpu)) { -Index: linux-3.4/kernel/time/timekeeping.c -=================================================================== ---- linux-3.4.orig/kernel/time/timekeeping.c -+++ linux-3.4/kernel/time/timekeeping.c +diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c +index d66b213..56e151b 100644 +--- a/kernel/time/timekeeping.c ++++ b/kernel/time/timekeeping.c @@ -70,8 +70,9 @@ struct timekeeper { /* The raw monotonic time for the CLOCK_MONOTONIC_RAW posix clock. */ struct timespec raw_time; @@ -211,7 +212,7 @@ Index: linux-3.4/kernel/time/timekeeping.c set_normalized_timespec(ts, ts->tv_sec + tomono.tv_sec, ts->tv_nsec + tomono.tv_nsec + nsecs); -@@ -321,7 +323,7 @@ void getnstime_raw_and_real(struct times +@@ -321,7 +323,7 @@ void getnstime_raw_and_real(struct timespec *ts_raw, struct timespec *ts_real) do { u32 arch_offset; @@ -220,7 +221,7 @@ Index: linux-3.4/kernel/time/timekeeping.c *ts_raw = timekeeper.raw_time; *ts_real = timekeeper.xtime; -@@ -334,7 +336,7 @@ void getnstime_raw_and_real(struct times +@@ -334,7 +336,7 @@ void getnstime_raw_and_real(struct timespec *ts_raw, struct timespec *ts_real) nsecs_raw += arch_offset; nsecs_real += arch_offset; @@ -229,7 +230,7 @@ Index: linux-3.4/kernel/time/timekeeping.c timespec_add_ns(ts_raw, nsecs_raw); timespec_add_ns(ts_real, nsecs_real); -@@ -373,7 +375,8 @@ int do_settimeofday(const struct timespe +@@ -373,7 +375,8 @@ int do_settimeofday(const struct timespec *tv) if ((unsigned long)tv->tv_nsec >= NSEC_PER_SEC) return -EINVAL; @@ -239,7 +240,7 @@ Index: linux-3.4/kernel/time/timekeeping.c timekeeping_forward_now(); -@@ -385,7 +388,8 @@ int do_settimeofday(const struct timespe +@@ -385,7 +388,8 @@ int do_settimeofday(const struct timespec *tv) timekeeper.xtime = *tv; timekeeping_update(true); @@ -249,7 +250,7 @@ Index: linux-3.4/kernel/time/timekeeping.c /* signal hrtimers about time change */ clock_was_set(); -@@ -409,7 +413,8 @@ int timekeeping_inject_offset(struct tim +@@ -409,7 +413,8 @@ int timekeeping_inject_offset(struct timespec *ts) if ((unsigned long)ts->tv_nsec >= NSEC_PER_SEC) return -EINVAL; @@ -259,7 +260,7 @@ Index: linux-3.4/kernel/time/timekeeping.c timekeeping_forward_now(); -@@ -419,7 +424,8 @@ int timekeeping_inject_offset(struct tim +@@ -419,7 +424,8 @@ int timekeeping_inject_offset(struct timespec *ts) timekeeping_update(true); @@ -269,7 +270,7 @@ Index: linux-3.4/kernel/time/timekeeping.c /* signal hrtimers about time change */ clock_was_set(); -@@ -440,7 +446,8 @@ static int change_clocksource(void *data +@@ -440,7 +446,8 @@ static int change_clocksource(void *data) new = (struct clocksource *) data; @@ -279,7 +280,7 @@ Index: linux-3.4/kernel/time/timekeeping.c timekeeping_forward_now(); if (!new->enable || new->enable(new) == 0) { -@@ -451,7 +458,8 @@ static int change_clocksource(void *data +@@ -451,7 +458,8 @@ static int change_clocksource(void *data) } timekeeping_update(true); @@ -289,7 +290,7 @@ Index: linux-3.4/kernel/time/timekeeping.c return 0; } -@@ -498,11 +506,11 @@ void getrawmonotonic(struct timespec *ts +@@ -498,11 +506,11 @@ void getrawmonotonic(struct timespec *ts) s64 nsecs; do { @@ -357,7 +358,7 @@ Index: linux-3.4/kernel/time/timekeeping.c } /* time in seconds when suspend began */ -@@ -657,7 +668,8 @@ void timekeeping_inject_sleeptime(struct +@@ -657,7 +668,8 @@ void timekeeping_inject_sleeptime(struct timespec *delta) if (!(ts.tv_sec == 0 && ts.tv_nsec == 0)) return; @@ -367,7 +368,7 @@ Index: linux-3.4/kernel/time/timekeeping.c timekeeping_forward_now(); -@@ -665,7 +677,8 @@ void timekeeping_inject_sleeptime(struct +@@ -665,7 +677,8 @@ void timekeeping_inject_sleeptime(struct timespec *delta) timekeeping_update(true); @@ -438,7 +439,7 @@ Index: linux-3.4/kernel/time/timekeeping.c } /** -@@ -1131,13 +1149,13 @@ void get_monotonic_boottime(struct times +@@ -1131,13 +1149,13 @@ void get_monotonic_boottime(struct timespec *ts) WARN_ON(timekeeping_suspended); do { @@ -454,7 +455,7 @@ Index: linux-3.4/kernel/time/timekeeping.c set_normalized_timespec(ts, ts->tv_sec + tomono.tv_sec + sleep.tv_sec, ts->tv_nsec + tomono.tv_nsec + sleep.tv_nsec + nsecs); -@@ -1188,10 +1206,10 @@ struct timespec current_kernel_time(void +@@ -1188,10 +1206,10 @@ struct timespec current_kernel_time(void) unsigned long seq; do { @@ -467,7 +468,7 @@ Index: linux-3.4/kernel/time/timekeeping.c return now; } -@@ -1203,11 +1221,11 @@ struct timespec get_monotonic_coarse(voi +@@ -1203,11 +1221,11 @@ struct timespec get_monotonic_coarse(void) unsigned long seq; do { @@ -481,7 +482,7 @@ Index: linux-3.4/kernel/time/timekeeping.c set_normalized_timespec(&now, now.tv_sec + mono.tv_sec, now.tv_nsec + mono.tv_nsec); -@@ -1239,11 +1257,11 @@ void get_xtime_and_monotonic_and_sleep_o +@@ -1239,11 +1257,11 @@ void get_xtime_and_monotonic_and_sleep_offset(struct timespec *xtim, unsigned long seq; do { @@ -507,7 +508,7 @@ Index: linux-3.4/kernel/time/timekeeping.c return timespec_to_ktime(wtom); } -@@ -1272,7 +1290,9 @@ EXPORT_SYMBOL_GPL(ktime_get_monotonic_of +@@ -1272,7 +1290,9 @@ EXPORT_SYMBOL_GPL(ktime_get_monotonic_offset); */ void xtime_update(unsigned long ticks) { diff --git a/debian/patches/features/all/rt/intel_idle-convert-i7300_idle_lock-to-raw-spinlock.patch b/debian/patches/features/all/rt/0013-intel_idle-Convert-i7300_idle_lock-to-raw-spinlock.patch similarity index 79% rename from debian/patches/features/all/rt/intel_idle-convert-i7300_idle_lock-to-raw-spinlock.patch rename to debian/patches/features/all/rt/0013-intel_idle-Convert-i7300_idle_lock-to-raw-spinlock.patch index 9406b3a7d..6a6a848d6 100644 --- a/debian/patches/features/all/rt/intel_idle-convert-i7300_idle_lock-to-raw-spinlock.patch +++ b/debian/patches/features/all/rt/0013-intel_idle-Convert-i7300_idle_lock-to-raw-spinlock.patch @@ -1,6 +1,7 @@ -Subject: intel_idle: Convert i7300_idle_lock to raw spinlock +From 99fb563d464c8de15fa05e11a22372ca24505eee Mon Sep 17 00:00:00 2001 From: Mike Galbraith -Date: Wed, 07 Dec 2011 12:48:42 +0100 +Date: Wed, 7 Dec 2011 12:48:42 +0100 +Subject: [013/254] intel_idle: Convert i7300_idle_lock to raw spinlock 24 core Intel box's first exposure to 3.0.12-rt30-rc3 didn't go well. @@ -22,15 +23,14 @@ Signed-off-by: Mike Galbraith Cc: Steven Rostedt Link: http://lkml.kernel.org/r/1323258522.5057.73.camel@marge.simson.net Signed-off-by: Thomas Gleixner - --- drivers/idle/i7300_idle.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) -Index: linux-3.4/drivers/idle/i7300_idle.c -=================================================================== ---- linux-3.4.orig/drivers/idle/i7300_idle.c -+++ linux-3.4/drivers/idle/i7300_idle.c +diff --git a/drivers/idle/i7300_idle.c b/drivers/idle/i7300_idle.c +index fa080eb..ffeebc7 100644 +--- a/drivers/idle/i7300_idle.c ++++ b/drivers/idle/i7300_idle.c @@ -75,7 +75,7 @@ static unsigned long past_skip; static struct pci_dev *fbd_dev; @@ -40,7 +40,7 @@ Index: linux-3.4/drivers/idle/i7300_idle.c static int i7300_idle_active; static u8 i7300_idle_thrtctl_saved; -@@ -457,7 +457,7 @@ static int i7300_idle_notifier(struct no +@@ -457,7 +457,7 @@ static int i7300_idle_notifier(struct notifier_block *nb, unsigned long val, idle_begin_time = ktime_get(); } @@ -49,7 +49,7 @@ Index: linux-3.4/drivers/idle/i7300_idle.c if (val == IDLE_START) { cpumask_set_cpu(smp_processor_id(), idle_cpumask); -@@ -506,7 +506,7 @@ static int i7300_idle_notifier(struct no +@@ -506,7 +506,7 @@ static int i7300_idle_notifier(struct notifier_block *nb, unsigned long val, } } end: diff --git a/debian/patches/features/all/rt/tracing-account-for-preempt-off-in-preempt_schedule.patch b/debian/patches/features/all/rt/0014-tracing-Account-for-preempt-off-in-preempt_schedule.patch similarity index 81% rename from debian/patches/features/all/rt/tracing-account-for-preempt-off-in-preempt_schedule.patch rename to debian/patches/features/all/rt/0014-tracing-Account-for-preempt-off-in-preempt_schedule.patch index 64043b6ab..912203457 100644 --- a/debian/patches/features/all/rt/tracing-account-for-preempt-off-in-preempt_schedule.patch +++ b/debian/patches/features/all/rt/0014-tracing-Account-for-preempt-off-in-preempt_schedule.patch @@ -1,6 +1,7 @@ +From 61b1c33b6d12d65542c65955b7d629ebc16e3578 Mon Sep 17 00:00:00 2001 From: Steven Rostedt Date: Thu, 29 Sep 2011 12:24:30 -0500 -Subject: tracing: Account for preempt off in preempt_schedule() +Subject: [014/254] tracing: Account for preempt off in preempt_schedule() The preempt_schedule() uses the preempt_disable_notrace() version because it can cause infinite recursion by the function tracer as @@ -25,11 +26,11 @@ Signed-off-by: Thomas Gleixner kernel/sched/core.c | 9 +++++++++ 1 file changed, 9 insertions(+) -Index: linux-3.4/kernel/sched/core.c -=================================================================== ---- linux-3.4.orig/kernel/sched/core.c -+++ linux-3.4/kernel/sched/core.c -@@ -3312,7 +3312,16 @@ asmlinkage void __sched notrace preempt_ +diff --git a/kernel/sched/core.c b/kernel/sched/core.c +index f5f9134..7274881 100644 +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -3312,7 +3312,16 @@ asmlinkage void __sched notrace preempt_schedule(void) do { add_preempt_count_notrace(PREEMPT_ACTIVE); diff --git a/debian/patches/features/all/rt/signal-revert-ptrace-preempt-magic.patch b/debian/patches/features/all/rt/0015-signal-revert-ptrace-preempt-magic.patch.patch similarity index 62% rename from debian/patches/features/all/rt/signal-revert-ptrace-preempt-magic.patch rename to debian/patches/features/all/rt/0015-signal-revert-ptrace-preempt-magic.patch.patch index 6ac84db56..231060cbd 100644 --- a/debian/patches/features/all/rt/signal-revert-ptrace-preempt-magic.patch +++ b/debian/patches/features/all/rt/0015-signal-revert-ptrace-preempt-magic.patch.patch @@ -1,17 +1,18 @@ -Subject: signal-revert-ptrace-preempt-magic.patch +From ce29223d82ddf224b15b87f2b732285cc8ce546c Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 21 Sep 2011 19:57:12 +0200 +Subject: [015/254] signal-revert-ptrace-preempt-magic.patch Signed-off-by: Thomas Gleixner --- kernel/signal.c | 8 -------- 1 file changed, 8 deletions(-) -Index: linux-3.4/kernel/signal.c -=================================================================== ---- linux-3.4.orig/kernel/signal.c -+++ linux-3.4/kernel/signal.c -@@ -1909,15 +1909,7 @@ static void ptrace_stop(int exit_code, i +diff --git a/kernel/signal.c b/kernel/signal.c +index 17afcaf..6b5071f 100644 +--- a/kernel/signal.c ++++ b/kernel/signal.c +@@ -1909,15 +1909,7 @@ static void ptrace_stop(int exit_code, int why, int clear_code, siginfo_t *info) if (gstop_done && ptrace_reparented(current)) do_notify_parent_cldstop(current, false, why); diff --git a/debian/patches/features/all/rt/arm-mark-pmu-interupt-no-thread.patch b/debian/patches/features/all/rt/0016-arm-Mark-pmu-interupt-IRQF_NO_THREAD.patch similarity index 61% rename from debian/patches/features/all/rt/arm-mark-pmu-interupt-no-thread.patch rename to debian/patches/features/all/rt/0016-arm-Mark-pmu-interupt-IRQF_NO_THREAD.patch index d2076ca32..9ba91aa69 100644 --- a/debian/patches/features/all/rt/arm-mark-pmu-interupt-no-thread.patch +++ b/debian/patches/features/all/rt/0016-arm-Mark-pmu-interupt-IRQF_NO_THREAD.patch @@ -1,6 +1,7 @@ -Subject: arm: Mark pmu interupt IRQF_NO_THREAD +From 494ef822b0148cd2e44c5a99b9c4fb8a939f5e98 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 16 Mar 2011 14:45:31 +0100 +Subject: [016/254] arm: Mark pmu interupt IRQF_NO_THREAD PMU interrupt must not be threaded. Remove IRQF_DISABLED while at it as we run all handlers with interrupts disabled anyway. @@ -10,11 +11,11 @@ Signed-off-by: Thomas Gleixner arch/arm/kernel/perf_event.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-3.4/arch/arm/kernel/perf_event.c -=================================================================== ---- linux-3.4.orig/arch/arm/kernel/perf_event.c -+++ linux-3.4/arch/arm/kernel/perf_event.c -@@ -433,7 +433,7 @@ armpmu_reserve_hardware(struct arm_pmu * +diff --git a/arch/arm/kernel/perf_event.c b/arch/arm/kernel/perf_event.c +index 186c8cb..b2216b7 100644 +--- a/arch/arm/kernel/perf_event.c ++++ b/arch/arm/kernel/perf_event.c +@@ -433,7 +433,7 @@ armpmu_reserve_hardware(struct arm_pmu *armpmu) } err = request_irq(irq, handle_irq, diff --git a/debian/patches/features/all/rt/arm-allow-irq-threading.patch b/debian/patches/features/all/rt/0017-arm-Allow-forced-irq-threading.patch similarity index 69% rename from debian/patches/features/all/rt/arm-allow-irq-threading.patch rename to debian/patches/features/all/rt/0017-arm-Allow-forced-irq-threading.patch index 4b02b19de..8a7e3dbb9 100644 --- a/debian/patches/features/all/rt/arm-allow-irq-threading.patch +++ b/debian/patches/features/all/rt/0017-arm-Allow-forced-irq-threading.patch @@ -1,6 +1,7 @@ -Subject: arm: Allow forced irq threading +From 1db2129a0b2e662a400f1fdda7d4481a8facc8e2 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sat, 16 Jul 2011 13:15:20 +0200 +Subject: [017/254] arm: Allow forced irq threading All timer interrupts and the perf interrupt are marked NO_THREAD, so its safe to allow forced interrupt threading. @@ -10,10 +11,10 @@ Signed-off-by: Thomas Gleixner arch/arm/Kconfig | 1 + 1 file changed, 1 insertion(+) -Index: linux-3.4/arch/arm/Kconfig -=================================================================== ---- linux-3.4.orig/arch/arm/Kconfig -+++ linux-3.4/arch/arm/Kconfig +diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig +index 7a8660a..f6fa4db 100644 +--- a/arch/arm/Kconfig ++++ b/arch/arm/Kconfig @@ -31,6 +31,7 @@ config ARM select HAVE_C_RECORDMCOUNT select HAVE_GENERIC_HARDIRQS diff --git a/debian/patches/features/all/rt/arm-convert-boot-lock-to-raw.patch b/debian/patches/features/all/rt/0018-preempt-rt-Convert-arm-boot_lock-to-raw.patch similarity index 69% rename from debian/patches/features/all/rt/arm-convert-boot-lock-to-raw.patch rename to debian/patches/features/all/rt/0018-preempt-rt-Convert-arm-boot_lock-to-raw.patch index 4a6e44943..4543248e2 100644 --- a/debian/patches/features/all/rt/arm-convert-boot-lock-to-raw.patch +++ b/debian/patches/features/all/rt/0018-preempt-rt-Convert-arm-boot_lock-to-raw.patch @@ -1,7 +1,7 @@ -Subject: preempt-rt: Convert arm boot_lock to raw +From 63fe8261cee647b1edbb92b3c271e1cc6442a0bf Mon Sep 17 00:00:00 2001 From: Frank Rowand Date: Mon, 19 Sep 2011 14:51:14 -0700 - +Subject: [018/254] preempt-rt: Convert arm boot_lock to raw The arm boot_lock is used by the secondary processor startup code. The locking task is the idle thread, which has idle->sched_class == &idle_sched_class. @@ -27,10 +27,10 @@ Signed-off-by: Thomas Gleixner arch/arm/plat-versatile/platsmp.c | 10 +++++----- 5 files changed, 26 insertions(+), 26 deletions(-) -Index: linux-3.4/arch/arm/mach-exynos/platsmp.c -=================================================================== ---- linux-3.4.orig/arch/arm/mach-exynos/platsmp.c -+++ linux-3.4/arch/arm/mach-exynos/platsmp.c +diff --git a/arch/arm/mach-exynos/platsmp.c b/arch/arm/mach-exynos/platsmp.c +index 36c3984..77499ea 100644 +--- a/arch/arm/mach-exynos/platsmp.c ++++ b/arch/arm/mach-exynos/platsmp.c @@ -62,7 +62,7 @@ static void __iomem *scu_base_addr(void) return (void __iomem *)(S5P_VA_SCU); } @@ -40,7 +40,7 @@ Index: linux-3.4/arch/arm/mach-exynos/platsmp.c void __cpuinit platform_secondary_init(unsigned int cpu) { -@@ -82,8 +82,8 @@ void __cpuinit platform_secondary_init(u +@@ -82,8 +82,8 @@ void __cpuinit platform_secondary_init(unsigned int cpu) /* * Synchronise with the boot thread. */ @@ -51,7 +51,7 @@ Index: linux-3.4/arch/arm/mach-exynos/platsmp.c } int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle) -@@ -94,7 +94,7 @@ int __cpuinit boot_secondary(unsigned in +@@ -94,7 +94,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle) * Set synchronisation state between this boot processor * and the secondary one */ @@ -60,7 +60,7 @@ Index: linux-3.4/arch/arm/mach-exynos/platsmp.c /* * The secondary processor is waiting to be released from -@@ -123,7 +123,7 @@ int __cpuinit boot_secondary(unsigned in +@@ -123,7 +123,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle) if (timeout == 0) { printk(KERN_ERR "cpu1 power enable failed"); @@ -69,7 +69,7 @@ Index: linux-3.4/arch/arm/mach-exynos/platsmp.c return -ETIMEDOUT; } } -@@ -151,7 +151,7 @@ int __cpuinit boot_secondary(unsigned in +@@ -151,7 +151,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle) * now the secondary core is starting up let it run its * calibrations, then wait for it to finish */ @@ -78,10 +78,10 @@ Index: linux-3.4/arch/arm/mach-exynos/platsmp.c return pen_release != -1 ? -ENOSYS : 0; } -Index: linux-3.4/arch/arm/mach-msm/platsmp.c -=================================================================== ---- linux-3.4.orig/arch/arm/mach-msm/platsmp.c -+++ linux-3.4/arch/arm/mach-msm/platsmp.c +diff --git a/arch/arm/mach-msm/platsmp.c b/arch/arm/mach-msm/platsmp.c +index db0117e..87daf5f 100644 +--- a/arch/arm/mach-msm/platsmp.c ++++ b/arch/arm/mach-msm/platsmp.c @@ -40,7 +40,7 @@ extern void msm_secondary_startup(void); */ volatile int pen_release = -1; @@ -91,7 +91,7 @@ Index: linux-3.4/arch/arm/mach-msm/platsmp.c static inline int get_core_count(void) { -@@ -70,8 +70,8 @@ void __cpuinit platform_secondary_init(u +@@ -70,8 +70,8 @@ void __cpuinit platform_secondary_init(unsigned int cpu) /* * Synchronise with the boot thread. */ @@ -102,7 +102,7 @@ Index: linux-3.4/arch/arm/mach-msm/platsmp.c } static __cpuinit void prepare_cold_cpu(unsigned int cpu) -@@ -108,7 +108,7 @@ int __cpuinit boot_secondary(unsigned in +@@ -108,7 +108,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle) * set synchronisation state between this boot processor * and the secondary one */ @@ -111,7 +111,7 @@ Index: linux-3.4/arch/arm/mach-msm/platsmp.c /* * The secondary processor is waiting to be released from -@@ -142,7 +142,7 @@ int __cpuinit boot_secondary(unsigned in +@@ -142,7 +142,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle) * now the secondary core is starting up let it run its * calibrations, then wait for it to finish */ @@ -120,10 +120,10 @@ Index: linux-3.4/arch/arm/mach-msm/platsmp.c return pen_release != -1 ? -ENOSYS : 0; } -Index: linux-3.4/arch/arm/mach-omap2/omap-smp.c -=================================================================== ---- linux-3.4.orig/arch/arm/mach-omap2/omap-smp.c -+++ linux-3.4/arch/arm/mach-omap2/omap-smp.c +diff --git a/arch/arm/mach-omap2/omap-smp.c b/arch/arm/mach-omap2/omap-smp.c +index deffbf1..81ca676 100644 +--- a/arch/arm/mach-omap2/omap-smp.c ++++ b/arch/arm/mach-omap2/omap-smp.c @@ -34,7 +34,7 @@ /* SCU base address */ static void __iomem *scu_base; @@ -133,7 +133,7 @@ Index: linux-3.4/arch/arm/mach-omap2/omap-smp.c void __iomem *omap4_get_scu_base(void) { -@@ -65,8 +65,8 @@ void __cpuinit platform_secondary_init(u +@@ -65,8 +65,8 @@ void __cpuinit platform_secondary_init(unsigned int cpu) /* * Synchronise with the boot thread. */ @@ -144,7 +144,7 @@ Index: linux-3.4/arch/arm/mach-omap2/omap-smp.c } int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle) -@@ -77,7 +77,7 @@ int __cpuinit boot_secondary(unsigned in +@@ -77,7 +77,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle) * Set synchronisation state between this boot processor * and the secondary one */ @@ -153,7 +153,7 @@ Index: linux-3.4/arch/arm/mach-omap2/omap-smp.c /* * Update the AuxCoreBoot0 with boot state for secondary core. -@@ -117,7 +117,7 @@ int __cpuinit boot_secondary(unsigned in +@@ -117,7 +117,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle) * Now the secondary core is starting up let it run its * calibrations, then wait for it to finish */ @@ -162,10 +162,10 @@ Index: linux-3.4/arch/arm/mach-omap2/omap-smp.c return 0; } -Index: linux-3.4/arch/arm/mach-ux500/platsmp.c -=================================================================== ---- linux-3.4.orig/arch/arm/mach-ux500/platsmp.c -+++ linux-3.4/arch/arm/mach-ux500/platsmp.c +diff --git a/arch/arm/mach-ux500/platsmp.c b/arch/arm/mach-ux500/platsmp.c +index eff5842..acc9da2 100644 +--- a/arch/arm/mach-ux500/platsmp.c ++++ b/arch/arm/mach-ux500/platsmp.c @@ -58,7 +58,7 @@ static void __iomem *scu_base_addr(void) return NULL; } @@ -175,7 +175,7 @@ Index: linux-3.4/arch/arm/mach-ux500/platsmp.c void __cpuinit platform_secondary_init(unsigned int cpu) { -@@ -78,8 +78,8 @@ void __cpuinit platform_secondary_init(u +@@ -78,8 +78,8 @@ void __cpuinit platform_secondary_init(unsigned int cpu) /* * Synchronise with the boot thread. */ @@ -186,7 +186,7 @@ Index: linux-3.4/arch/arm/mach-ux500/platsmp.c } int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle) -@@ -90,7 +90,7 @@ int __cpuinit boot_secondary(unsigned in +@@ -90,7 +90,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle) * set synchronisation state between this boot processor * and the secondary one */ @@ -195,7 +195,7 @@ Index: linux-3.4/arch/arm/mach-ux500/platsmp.c /* * The secondary processor is waiting to be released from -@@ -111,7 +111,7 @@ int __cpuinit boot_secondary(unsigned in +@@ -111,7 +111,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle) * now the secondary core is starting up let it run its * calibrations, then wait for it to finish */ @@ -204,11 +204,11 @@ Index: linux-3.4/arch/arm/mach-ux500/platsmp.c return pen_release != -1 ? -ENOSYS : 0; } -Index: linux-3.4/arch/arm/plat-versatile/platsmp.c -=================================================================== ---- linux-3.4.orig/arch/arm/plat-versatile/platsmp.c -+++ linux-3.4/arch/arm/plat-versatile/platsmp.c -@@ -38,7 +38,7 @@ static void __cpuinit write_pen_release( +diff --git a/arch/arm/plat-versatile/platsmp.c b/arch/arm/plat-versatile/platsmp.c +index 49c7db4..1f7a3d2 100644 +--- a/arch/arm/plat-versatile/platsmp.c ++++ b/arch/arm/plat-versatile/platsmp.c +@@ -38,7 +38,7 @@ static void __cpuinit write_pen_release(int val) outer_clean_range(__pa(&pen_release), __pa(&pen_release + 1)); } @@ -217,7 +217,7 @@ Index: linux-3.4/arch/arm/plat-versatile/platsmp.c void __cpuinit platform_secondary_init(unsigned int cpu) { -@@ -58,8 +58,8 @@ void __cpuinit platform_secondary_init(u +@@ -58,8 +58,8 @@ void __cpuinit platform_secondary_init(unsigned int cpu) /* * Synchronise with the boot thread. */ @@ -228,7 +228,7 @@ Index: linux-3.4/arch/arm/plat-versatile/platsmp.c } int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle) -@@ -70,7 +70,7 @@ int __cpuinit boot_secondary(unsigned in +@@ -70,7 +70,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle) * Set synchronisation state between this boot processor * and the secondary one */ @@ -237,7 +237,7 @@ Index: linux-3.4/arch/arm/plat-versatile/platsmp.c /* * This is really belt and braces; we hold unintended secondary -@@ -100,7 +100,7 @@ int __cpuinit boot_secondary(unsigned in +@@ -100,7 +100,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle) * now the secondary core is starting up let it run its * calibrations, then wait for it to finish */ diff --git a/debian/patches/features/all/rt/arm-omap-make-wakeupgen_lock-raw.patch b/debian/patches/features/all/rt/0019-arm-omap-make-wakeupgen_lock-raw.patch.patch similarity index 69% rename from debian/patches/features/all/rt/arm-omap-make-wakeupgen_lock-raw.patch rename to debian/patches/features/all/rt/0019-arm-omap-make-wakeupgen_lock-raw.patch.patch index 402197789..5d3ebbf99 100644 --- a/debian/patches/features/all/rt/arm-omap-make-wakeupgen_lock-raw.patch +++ b/debian/patches/features/all/rt/0019-arm-omap-make-wakeupgen_lock-raw.patch.patch @@ -1,16 +1,17 @@ -Subject: arm-omap-make-wakeupgen_lock-raw.patch +From a63eb39f602d7b49f9b42e1eba23f9b87afe6197 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 11 Apr 2012 11:26:38 +0200 +Subject: [019/254] arm-omap-make-wakeupgen_lock-raw.patch Signed-off-by: Thomas Gleixner --- arch/arm/mach-omap2/omap-wakeupgen.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) -Index: linux-3.4/arch/arm/mach-omap2/omap-wakeupgen.c -=================================================================== ---- linux-3.4.orig/arch/arm/mach-omap2/omap-wakeupgen.c -+++ linux-3.4/arch/arm/mach-omap2/omap-wakeupgen.c +diff --git a/arch/arm/mach-omap2/omap-wakeupgen.c b/arch/arm/mach-omap2/omap-wakeupgen.c +index 42cd7fb..dbc2914 100644 +--- a/arch/arm/mach-omap2/omap-wakeupgen.c ++++ b/arch/arm/mach-omap2/omap-wakeupgen.c @@ -43,7 +43,7 @@ static void __iomem *wakeupgen_base; @@ -20,7 +21,7 @@ Index: linux-3.4/arch/arm/mach-omap2/omap-wakeupgen.c static unsigned int irq_target_cpu[NR_IRQS]; /* -@@ -128,9 +128,9 @@ static void wakeupgen_mask(struct irq_da +@@ -128,9 +128,9 @@ static void wakeupgen_mask(struct irq_data *d) { unsigned long flags; @@ -32,7 +33,7 @@ Index: linux-3.4/arch/arm/mach-omap2/omap-wakeupgen.c } /* -@@ -140,9 +140,9 @@ static void wakeupgen_unmask(struct irq_ +@@ -140,9 +140,9 @@ static void wakeupgen_unmask(struct irq_data *d) { unsigned long flags; @@ -44,7 +45,7 @@ Index: linux-3.4/arch/arm/mach-omap2/omap-wakeupgen.c } #ifdef CONFIG_HOTPLUG_CPU -@@ -183,7 +183,7 @@ static void wakeupgen_irqmask_all(unsign +@@ -183,7 +183,7 @@ static void wakeupgen_irqmask_all(unsigned int cpu, unsigned int set) { unsigned long flags; @@ -53,7 +54,7 @@ Index: linux-3.4/arch/arm/mach-omap2/omap-wakeupgen.c if (set) { _wakeupgen_save_masks(cpu); _wakeupgen_set_all(cpu, WKG_MASK_ALL); -@@ -191,7 +191,7 @@ static void wakeupgen_irqmask_all(unsign +@@ -191,7 +191,7 @@ static void wakeupgen_irqmask_all(unsigned int cpu, unsigned int set) _wakeupgen_set_all(cpu, WKG_UNMASK_ALL); _wakeupgen_restore_masks(cpu); } diff --git a/debian/patches/features/all/rt/signals-do-not-wake-self.patch b/debian/patches/features/all/rt/0020-signals-Do-not-wakeup-self.patch similarity index 62% rename from debian/patches/features/all/rt/signals-do-not-wake-self.patch rename to debian/patches/features/all/rt/0020-signals-Do-not-wakeup-self.patch index 59bf36f11..0c63c43dd 100644 --- a/debian/patches/features/all/rt/signals-do-not-wake-self.patch +++ b/debian/patches/features/all/rt/0020-signals-Do-not-wakeup-self.patch @@ -1,21 +1,21 @@ +From 184153eb2296afaa1476309dd606c9ab6bd49a46 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 3 Jul 2009 08:44:44 -0500 -Subject: signals: Do not wakeup self +Subject: [020/254] signals: Do not wakeup self Signals which are delivered by current to current can do without waking up current :) Signed-off-by: Thomas Gleixner - --- kernel/signal.c | 3 +++ 1 file changed, 3 insertions(+) -Index: linux-3.4/kernel/signal.c -=================================================================== ---- linux-3.4.orig/kernel/signal.c -+++ linux-3.4/kernel/signal.c -@@ -683,6 +683,9 @@ void signal_wake_up(struct task_struct * +diff --git a/kernel/signal.c b/kernel/signal.c +index 6b5071f..099746c 100644 +--- a/kernel/signal.c ++++ b/kernel/signal.c +@@ -683,6 +683,9 @@ void signal_wake_up(struct task_struct *t, int resume) set_tsk_thread_flag(t, TIF_SIGPENDING); diff --git a/debian/patches/features/all/rt/posix-timers-no-broadcast.patch b/debian/patches/features/all/rt/0021-posix-timers-Prevent-broadcast-signals.patch similarity index 66% rename from debian/patches/features/all/rt/posix-timers-no-broadcast.patch rename to debian/patches/features/all/rt/0021-posix-timers-Prevent-broadcast-signals.patch index 05286cba0..52b9a725b 100644 --- a/debian/patches/features/all/rt/posix-timers-no-broadcast.patch +++ b/debian/patches/features/all/rt/0021-posix-timers-Prevent-broadcast-signals.patch @@ -1,21 +1,21 @@ +From b8cfcd946b83608a19dfc1ebced4d3b91d5653db Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 3 Jul 2009 08:29:20 -0500 -Subject: posix-timers: Prevent broadcast signals +Subject: [021/254] posix-timers: Prevent broadcast signals Posix timers should not send broadcast signals and kernel only signals. Prevent it. Signed-off-by: Thomas Gleixner - --- kernel/posix-timers.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) -Index: linux-3.4/kernel/posix-timers.c -=================================================================== ---- linux-3.4.orig/kernel/posix-timers.c -+++ linux-3.4/kernel/posix-timers.c -@@ -439,6 +439,7 @@ static enum hrtimer_restart posix_timer_ +diff --git a/kernel/posix-timers.c b/kernel/posix-timers.c +index 69185ae..7b73c34 100644 +--- a/kernel/posix-timers.c ++++ b/kernel/posix-timers.c +@@ -439,6 +439,7 @@ static enum hrtimer_restart posix_timer_fn(struct hrtimer *timer) static struct pid *good_sigevent(sigevent_t * event) { struct task_struct *rtn = current->group_leader; @@ -23,7 +23,7 @@ Index: linux-3.4/kernel/posix-timers.c if ((event->sigev_notify & SIGEV_THREAD_ID ) && (!(rtn = find_task_by_vpid(event->sigev_notify_thread_id)) || -@@ -447,7 +448,8 @@ static struct pid *good_sigevent(sigeven +@@ -447,7 +448,8 @@ static struct pid *good_sigevent(sigevent_t * event) return NULL; if (((event->sigev_notify & ~SIGEV_THREAD_ID) != SIGEV_NONE) && diff --git a/debian/patches/features/all/rt/signals-allow-rt-tasks-to-cache-one-sigqueue-struct.patch b/debian/patches/features/all/rt/0022-signals-Allow-rt-tasks-to-cache-one-sigqueue-struct.patch similarity index 71% rename from debian/patches/features/all/rt/signals-allow-rt-tasks-to-cache-one-sigqueue-struct.patch rename to debian/patches/features/all/rt/0022-signals-Allow-rt-tasks-to-cache-one-sigqueue-struct.patch index 441e1f4c1..74ba597d0 100644 --- a/debian/patches/features/all/rt/signals-allow-rt-tasks-to-cache-one-sigqueue-struct.patch +++ b/debian/patches/features/all/rt/0022-signals-Allow-rt-tasks-to-cache-one-sigqueue-struct.patch @@ -1,24 +1,24 @@ +From e2e370e3538853ac9c8d2e66e072515f059ceb9c Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 3 Jul 2009 08:44:56 -0500 -Subject: signals: Allow rt tasks to cache one sigqueue struct +Subject: [022/254] signals: Allow rt tasks to cache one sigqueue struct To avoid allocation allow rt tasks to cache one sigqueue struct in task struct. Signed-off-by: Thomas Gleixner - --- - include/linux/sched.h | 1 - include/linux/signal.h | 1 - kernel/exit.c | 2 - - kernel/fork.c | 1 - kernel/signal.c | 83 ++++++++++++++++++++++++++++++++++++++++++++++--- + include/linux/sched.h | 1 + + include/linux/signal.h | 1 + + kernel/exit.c | 2 +- + kernel/fork.c | 1 + + kernel/signal.c | 83 +++++++++++++++++++++++++++++++++++++++++++++--- 5 files changed, 83 insertions(+), 5 deletions(-) -Index: linux-3.4/include/linux/sched.h -=================================================================== ---- linux-3.4.orig/include/linux/sched.h -+++ linux-3.4/include/linux/sched.h +diff --git a/include/linux/sched.h b/include/linux/sched.h +index 81a173c..b546194 100644 +--- a/include/linux/sched.h ++++ b/include/linux/sched.h @@ -1435,6 +1435,7 @@ struct task_struct { /* signal handlers */ struct signal_struct *signal; @@ -27,11 +27,11 @@ Index: linux-3.4/include/linux/sched.h sigset_t blocked, real_blocked; sigset_t saved_sigmask; /* restored if set_restore_sigmask() was used */ -Index: linux-3.4/include/linux/signal.h -=================================================================== ---- linux-3.4.orig/include/linux/signal.h -+++ linux-3.4/include/linux/signal.h -@@ -229,6 +229,7 @@ static inline void init_sigpending(struc +diff --git a/include/linux/signal.h b/include/linux/signal.h +index 7987ce74..24cc7a4 100644 +--- a/include/linux/signal.h ++++ b/include/linux/signal.h +@@ -229,6 +229,7 @@ static inline void init_sigpending(struct sigpending *sig) } extern void flush_sigqueue(struct sigpending *queue); @@ -39,11 +39,11 @@ Index: linux-3.4/include/linux/signal.h /* Test if 'sig' is valid signal. Use this instead of testing _NSIG directly */ static inline int valid_signal(unsigned long sig) -Index: linux-3.4/kernel/exit.c -=================================================================== ---- linux-3.4.orig/kernel/exit.c -+++ linux-3.4/kernel/exit.c -@@ -143,7 +143,7 @@ static void __exit_signal(struct task_st +diff --git a/kernel/exit.c b/kernel/exit.c +index d8bd3b42..35ab292 100644 +--- a/kernel/exit.c ++++ b/kernel/exit.c +@@ -143,7 +143,7 @@ static void __exit_signal(struct task_struct *tsk) * Do this under ->siglock, we can race with another thread * doing sigqueue_free() if we have SIGQUEUE_PREALLOC signals. */ @@ -52,11 +52,11 @@ Index: linux-3.4/kernel/exit.c tsk->sighand = NULL; spin_unlock(&sighand->siglock); -Index: linux-3.4/kernel/fork.c -=================================================================== ---- linux-3.4.orig/kernel/fork.c -+++ linux-3.4/kernel/fork.c -@@ -1204,6 +1204,7 @@ static struct task_struct *copy_process( +diff --git a/kernel/fork.c b/kernel/fork.c +index 8163333..b767e68 100644 +--- a/kernel/fork.c ++++ b/kernel/fork.c +@@ -1206,6 +1206,7 @@ static struct task_struct *copy_process(unsigned long clone_flags, spin_lock_init(&p->alloc_lock); init_sigpending(&p->pending); @@ -64,11 +64,11 @@ Index: linux-3.4/kernel/fork.c p->utime = p->stime = p->gtime = 0; p->utimescaled = p->stimescaled = 0; -Index: linux-3.4/kernel/signal.c -=================================================================== ---- linux-3.4.orig/kernel/signal.c -+++ linux-3.4/kernel/signal.c -@@ -345,13 +345,45 @@ static bool task_participate_group_stop( +diff --git a/kernel/signal.c b/kernel/signal.c +index 099746c..a05a4db 100644 +--- a/kernel/signal.c ++++ b/kernel/signal.c +@@ -345,13 +345,45 @@ static bool task_participate_group_stop(struct task_struct *task) return false; } @@ -115,7 +115,7 @@ Index: linux-3.4/kernel/signal.c { struct sigqueue *q = NULL; struct user_struct *user; -@@ -368,7 +400,10 @@ __sigqueue_alloc(int sig, struct task_st +@@ -368,7 +400,10 @@ __sigqueue_alloc(int sig, struct task_struct *t, gfp_t flags, int override_rlimi if (override_rlimit || atomic_read(&user->sigpending) <= task_rlimit(t, RLIMIT_SIGPENDING)) { @@ -127,7 +127,7 @@ Index: linux-3.4/kernel/signal.c } else { print_dropped_signal(sig); } -@@ -385,6 +420,13 @@ __sigqueue_alloc(int sig, struct task_st +@@ -385,6 +420,13 @@ __sigqueue_alloc(int sig, struct task_struct *t, gfp_t flags, int override_rlimi return q; } @@ -141,7 +141,7 @@ Index: linux-3.4/kernel/signal.c static void __sigqueue_free(struct sigqueue *q) { if (q->flags & SIGQUEUE_PREALLOC) -@@ -394,6 +436,21 @@ static void __sigqueue_free(struct sigqu +@@ -394,6 +436,21 @@ static void __sigqueue_free(struct sigqueue *q) kmem_cache_free(sigqueue_cachep, q); } @@ -163,7 +163,7 @@ Index: linux-3.4/kernel/signal.c void flush_sigqueue(struct sigpending *queue) { struct sigqueue *q; -@@ -407,6 +464,21 @@ void flush_sigqueue(struct sigpending *q +@@ -407,6 +464,21 @@ void flush_sigqueue(struct sigpending *queue) } /* @@ -185,7 +185,7 @@ Index: linux-3.4/kernel/signal.c * Flush all pending signals for a task. */ void __flush_signals(struct task_struct *t) -@@ -555,7 +627,7 @@ static void collect_signal(int sig, stru +@@ -555,7 +627,7 @@ static void collect_signal(int sig, struct sigpending *list, siginfo_t *info) still_pending: list_del_init(&first->list); copy_siginfo(info, &first->info); @@ -194,7 +194,7 @@ Index: linux-3.4/kernel/signal.c } else { /* * Ok, it wasn't in the queue. This must be -@@ -601,6 +673,8 @@ int dequeue_signal(struct task_struct *t +@@ -601,6 +673,8 @@ int dequeue_signal(struct task_struct *tsk, sigset_t *mask, siginfo_t *info) { int signr; diff --git a/debian/patches/features/all/rt/oleg-signal-rt-fix.patch b/debian/patches/features/all/rt/0023-signal-x86-Delay-calling-signals-in-atomic.patch similarity index 80% rename from debian/patches/features/all/rt/oleg-signal-rt-fix.patch rename to debian/patches/features/all/rt/0023-signal-x86-Delay-calling-signals-in-atomic.patch index fe8ce82d4..5eab9d3ab 100644 --- a/debian/patches/features/all/rt/oleg-signal-rt-fix.patch +++ b/debian/patches/features/all/rt/0023-signal-x86-Delay-calling-signals-in-atomic.patch @@ -1,5 +1,7 @@ -Subject: signal/x86: Delay calling signals in atomic +From c86d77f9c967e46077b1c33526ea9e781b48a09b Mon Sep 17 00:00:00 2001 From: Oleg Nesterov +Date: Thu, 7 Jun 2012 07:46:44 -0400 +Subject: [023/254] signal/x86: Delay calling signals in atomic On x86_64 we must disable preemption before we enable interrupts for stack faults, int3 and debugging, because the current task is using @@ -28,17 +30,16 @@ Signed-off-by: Oleg Nesterov Signed-off-by: Steven Rostedt Signed-off-by: Thomas Gleixner --- - arch/x86/include/asm/signal.h | 13 +++++++++++++ arch/x86/kernel/signal.c | 9 +++++++++ include/linux/sched.h | 4 ++++ kernel/signal.c | 37 +++++++++++++++++++++++++++++++++++-- 4 files changed, 61 insertions(+), 2 deletions(-) -Index: linux-3.4/arch/x86/include/asm/signal.h -=================================================================== ---- linux-3.4.orig/arch/x86/include/asm/signal.h -+++ linux-3.4/arch/x86/include/asm/signal.h +diff --git a/arch/x86/include/asm/signal.h b/arch/x86/include/asm/signal.h +index 598457c..1213ebd 100644 +--- a/arch/x86/include/asm/signal.h ++++ b/arch/x86/include/asm/signal.h @@ -31,6 +31,19 @@ typedef struct { unsigned long sig[_NSIG_WORDS]; } sigset_t; @@ -59,11 +60,11 @@ Index: linux-3.4/arch/x86/include/asm/signal.h #else /* Here we must cater to libcs that poke about in kernel headers. */ -Index: linux-3.4/arch/x86/kernel/signal.c -=================================================================== ---- linux-3.4.orig/arch/x86/kernel/signal.c -+++ linux-3.4/arch/x86/kernel/signal.c -@@ -824,6 +824,15 @@ do_notify_resume(struct pt_regs *regs, v +diff --git a/arch/x86/kernel/signal.c b/arch/x86/kernel/signal.c +index 115eac4..c67d83f 100644 +--- a/arch/x86/kernel/signal.c ++++ b/arch/x86/kernel/signal.c +@@ -824,6 +824,15 @@ do_notify_resume(struct pt_regs *regs, void *unused, __u32 thread_info_flags) mce_notify_process(); #endif /* CONFIG_X86_64 && CONFIG_X86_MCE */ @@ -79,10 +80,10 @@ Index: linux-3.4/arch/x86/kernel/signal.c /* deal with pending signal delivery */ if (thread_info_flags & _TIF_SIGPENDING) do_signal(regs); -Index: linux-3.4/include/linux/sched.h -=================================================================== ---- linux-3.4.orig/include/linux/sched.h -+++ linux-3.4/include/linux/sched.h +diff --git a/include/linux/sched.h b/include/linux/sched.h +index b546194..bd5caa1 100644 +--- a/include/linux/sched.h ++++ b/include/linux/sched.h @@ -1440,6 +1440,10 @@ struct task_struct { sigset_t blocked, real_blocked; sigset_t saved_sigmask; /* restored if set_restore_sigmask() was used */ @@ -94,11 +95,11 @@ Index: linux-3.4/include/linux/sched.h unsigned long sas_ss_sp; size_t sas_ss_size; -Index: linux-3.4/kernel/signal.c -=================================================================== ---- linux-3.4.orig/kernel/signal.c -+++ linux-3.4/kernel/signal.c -@@ -1312,8 +1312,8 @@ int do_send_sig_info(int sig, struct sig +diff --git a/kernel/signal.c b/kernel/signal.c +index a05a4db..65cb5b4 100644 +--- a/kernel/signal.c ++++ b/kernel/signal.c +@@ -1312,8 +1312,8 @@ int do_send_sig_info(int sig, struct siginfo *info, struct task_struct *p, * We don't want to have recursive SIGSEGV's etc, for example, * that is why we also clear SIGNAL_UNKILLABLE. */ @@ -109,7 +110,7 @@ Index: linux-3.4/kernel/signal.c { unsigned long int flags; int ret, blocked, ignored; -@@ -1338,6 +1338,39 @@ force_sig_info(int sig, struct siginfo * +@@ -1338,6 +1338,39 @@ force_sig_info(int sig, struct siginfo *info, struct task_struct *t) return ret; } diff --git a/debian/patches/features/all/rt/generic-cmpxchg-use-raw-local-irq.patch b/debian/patches/features/all/rt/0024-generic-Use-raw-local-irq-variant-for-generic-cmpxch.patch similarity index 58% rename from debian/patches/features/all/rt/generic-cmpxchg-use-raw-local-irq.patch rename to debian/patches/features/all/rt/0024-generic-Use-raw-local-irq-variant-for-generic-cmpxch.patch index 790548ac0..046dfd692 100644 --- a/debian/patches/features/all/rt/generic-cmpxchg-use-raw-local-irq.patch +++ b/debian/patches/features/all/rt/0024-generic-Use-raw-local-irq-variant-for-generic-cmpxch.patch @@ -1,21 +1,21 @@ +From 22951f58867044b17bbb29de105cbd528e7963e0 Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Fri, 3 Jul 2009 08:29:30 -0500 -Subject: generic: Use raw local irq variant for generic cmpxchg +Subject: [024/254] generic: Use raw local irq variant for generic cmpxchg No point in tracing those. Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner - --- include/asm-generic/cmpxchg-local.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) -Index: linux-3.4/include/asm-generic/cmpxchg-local.h -=================================================================== ---- linux-3.4.orig/include/asm-generic/cmpxchg-local.h -+++ linux-3.4/include/asm-generic/cmpxchg-local.h -@@ -21,7 +21,7 @@ static inline unsigned long __cmpxchg_lo +diff --git a/include/asm-generic/cmpxchg-local.h b/include/asm-generic/cmpxchg-local.h +index 2533fdd..d8d4c89 100644 +--- a/include/asm-generic/cmpxchg-local.h ++++ b/include/asm-generic/cmpxchg-local.h +@@ -21,7 +21,7 @@ static inline unsigned long __cmpxchg_local_generic(volatile void *ptr, if (size == 8 && sizeof(unsigned long) != 8) wrong_size_cmpxchg(ptr); @@ -24,7 +24,7 @@ Index: linux-3.4/include/asm-generic/cmpxchg-local.h switch (size) { case 1: prev = *(u8 *)ptr; if (prev == old) -@@ -42,7 +42,7 @@ static inline unsigned long __cmpxchg_lo +@@ -42,7 +42,7 @@ static inline unsigned long __cmpxchg_local_generic(volatile void *ptr, default: wrong_size_cmpxchg(ptr); } @@ -33,7 +33,7 @@ Index: linux-3.4/include/asm-generic/cmpxchg-local.h return prev; } -@@ -55,11 +55,11 @@ static inline u64 __cmpxchg64_local_gene +@@ -55,11 +55,11 @@ static inline u64 __cmpxchg64_local_generic(volatile void *ptr, u64 prev; unsigned long flags; diff --git a/debian/patches/features/all/rt/drivers-random-reduce-preempt-disabled-region.patch b/debian/patches/features/all/rt/0025-drivers-random-Reduce-preempt-disabled-region.patch similarity index 64% rename from debian/patches/features/all/rt/drivers-random-reduce-preempt-disabled-region.patch rename to debian/patches/features/all/rt/0025-drivers-random-Reduce-preempt-disabled-region.patch index 227617836..5207f85cf 100644 --- a/debian/patches/features/all/rt/drivers-random-reduce-preempt-disabled-region.patch +++ b/debian/patches/features/all/rt/0025-drivers-random-Reduce-preempt-disabled-region.patch @@ -1,21 +1,21 @@ +From 03d583ea3c9f9efc3987f92f3ecbcda37f186c22 Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Fri, 3 Jul 2009 08:29:30 -0500 -Subject: drivers: random: Reduce preempt disabled region +Subject: [025/254] drivers: random: Reduce preempt disabled region No need to keep preemption disabled across the whole function. Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner - --- drivers/char/random.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) -Index: linux-3.4/drivers/char/random.c -=================================================================== ---- linux-3.4.orig/drivers/char/random.c -+++ linux-3.4/drivers/char/random.c -@@ -633,8 +633,11 @@ static void add_timer_randomness(struct +diff --git a/drivers/char/random.c b/drivers/char/random.c +index 4ec04a7..1e37cf4 100644 +--- a/drivers/char/random.c ++++ b/drivers/char/random.c +@@ -633,8 +633,11 @@ static void add_timer_randomness(struct timer_rand_state *state, unsigned num) preempt_disable(); /* if over the trickle threshold, use only 1 in 4096 samples */ if (input_pool.entropy_count > trickle_thresh && @@ -29,7 +29,7 @@ Index: linux-3.4/drivers/char/random.c sample.jiffies = jiffies; -@@ -680,8 +683,6 @@ static void add_timer_randomness(struct +@@ -680,8 +683,6 @@ static void add_timer_randomness(struct timer_rand_state *state, unsigned num) credit_entropy_bits(&input_pool, min_t(int, fls(delta>>1), 11)); } diff --git a/debian/patches/features/all/rt/arm-at91-pit-remove-irq-handler-when-clock-is-unused.patch b/debian/patches/features/all/rt/0026-ARM-AT91-PIT-Remove-irq-handler-when-clock-event-is-.patch similarity index 62% rename from debian/patches/features/all/rt/arm-at91-pit-remove-irq-handler-when-clock-is-unused.patch rename to debian/patches/features/all/rt/0026-ARM-AT91-PIT-Remove-irq-handler-when-clock-event-is-.patch index c6cfd48da..dd37c70f6 100644 --- a/debian/patches/features/all/rt/arm-at91-pit-remove-irq-handler-when-clock-is-unused.patch +++ b/debian/patches/features/all/rt/0026-ARM-AT91-PIT-Remove-irq-handler-when-clock-event-is-.patch @@ -1,6 +1,8 @@ +From 32fd981d72873c06b1295170f212229d6c2f9a8e Mon Sep 17 00:00:00 2001 From: Benedikt Spranger Date: Sat, 6 Mar 2010 17:47:10 +0100 -Subject: ARM: AT91: PIT: Remove irq handler when clock event is unused +Subject: [026/254] ARM: AT91: PIT: Remove irq handler when clock event is + unused Setup and remove the interrupt handler in clock event mode selection. This avoids calling the (shared) interrupt handler when the device is @@ -8,17 +10,16 @@ not used. Signed-off-by: Benedikt Spranger Signed-off-by: Thomas Gleixner - --- arch/arm/mach-at91/at91rm9200_time.c | 1 + arch/arm/mach-at91/at91sam926x_time.c | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) -Index: linux-3.4/arch/arm/mach-at91/at91rm9200_time.c -=================================================================== ---- linux-3.4.orig/arch/arm/mach-at91/at91rm9200_time.c -+++ linux-3.4/arch/arm/mach-at91/at91rm9200_time.c -@@ -130,6 +130,7 @@ clkevt32k_mode(enum clock_event_mode mod +diff --git a/arch/arm/mach-at91/at91rm9200_time.c b/arch/arm/mach-at91/at91rm9200_time.c +index 104ca40..49aea48 100644 +--- a/arch/arm/mach-at91/at91rm9200_time.c ++++ b/arch/arm/mach-at91/at91rm9200_time.c +@@ -130,6 +130,7 @@ clkevt32k_mode(enum clock_event_mode mode, struct clock_event_device *dev) break; case CLOCK_EVT_MODE_SHUTDOWN: case CLOCK_EVT_MODE_UNUSED: @@ -26,10 +27,10 @@ Index: linux-3.4/arch/arm/mach-at91/at91rm9200_time.c case CLOCK_EVT_MODE_RESUME: irqmask = 0; break; -Index: linux-3.4/arch/arm/mach-at91/at91sam926x_time.c -=================================================================== ---- linux-3.4.orig/arch/arm/mach-at91/at91sam926x_time.c -+++ linux-3.4/arch/arm/mach-at91/at91sam926x_time.c +diff --git a/arch/arm/mach-at91/at91sam926x_time.c b/arch/arm/mach-at91/at91sam926x_time.c +index a94758b..dd300f3 100644 +--- a/arch/arm/mach-at91/at91sam926x_time.c ++++ b/arch/arm/mach-at91/at91sam926x_time.c @@ -67,7 +67,7 @@ static struct clocksource pit_clk = { .flags = CLOCK_SOURCE_IS_CONTINUOUS, }; @@ -39,7 +40,7 @@ Index: linux-3.4/arch/arm/mach-at91/at91sam926x_time.c /* * Clockevent device: interrupts every 1/HZ (== pit_cycles * MCK/16) */ -@@ -76,6 +76,8 @@ pit_clkevt_mode(enum clock_event_mode mo +@@ -76,6 +76,8 @@ pit_clkevt_mode(enum clock_event_mode mode, struct clock_event_device *dev) { switch (mode) { case CLOCK_EVT_MODE_PERIODIC: @@ -48,7 +49,7 @@ Index: linux-3.4/arch/arm/mach-at91/at91sam926x_time.c /* update clocksource counter */ pit_cnt += pit_cycle * PIT_PICNT(pit_read(AT91_PIT_PIVR)); pit_write(AT91_PIT_MR, (pit_cycle - 1) | AT91_PIT_PITEN -@@ -88,6 +90,7 @@ pit_clkevt_mode(enum clock_event_mode mo +@@ -88,6 +90,7 @@ pit_clkevt_mode(enum clock_event_mode mode, struct clock_event_device *dev) case CLOCK_EVT_MODE_UNUSED: /* disable irq, leaving the clocksource active */ pit_write(AT91_PIT_MR, (pit_cycle - 1) | AT91_PIT_PITEN); diff --git a/debian/patches/features/all/rt/clocksource-tclib-allow-higher-clockrates.patch b/debian/patches/features/all/rt/0027-clocksource-TCLIB-Allow-higher-clock-rates-for-clock.patch similarity index 82% rename from debian/patches/features/all/rt/clocksource-tclib-allow-higher-clockrates.patch rename to debian/patches/features/all/rt/0027-clocksource-TCLIB-Allow-higher-clock-rates-for-clock.patch index 8beba2f4c..3c29cbba5 100644 --- a/debian/patches/features/all/rt/clocksource-tclib-allow-higher-clockrates.patch +++ b/debian/patches/features/all/rt/0027-clocksource-TCLIB-Allow-higher-clock-rates-for-clock.patch @@ -1,22 +1,23 @@ +From 3d82c18855252176159e8023076f631d83e4a2da Mon Sep 17 00:00:00 2001 From: Benedikt Spranger Date: Mon, 8 Mar 2010 18:57:04 +0100 -Subject: clocksource: TCLIB: Allow higher clock rates for clock events +Subject: [027/254] clocksource: TCLIB: Allow higher clock rates for clock + events As default the TCLIB uses the 32KiHz base clock rate for clock events. Add a compile time selection to allow higher clock resulution. Signed-off-by: Benedikt Spranger Signed-off-by: Thomas Gleixner - --- - drivers/clocksource/tcb_clksrc.c | 44 +++++++++++++++++++++++---------------- - drivers/misc/Kconfig | 11 +++++++-- + drivers/clocksource/tcb_clksrc.c | 44 ++++++++++++++++++++++---------------- + drivers/misc/Kconfig | 11 ++++++++-- 2 files changed, 35 insertions(+), 20 deletions(-) -Index: linux-3.4/drivers/clocksource/tcb_clksrc.c -=================================================================== ---- linux-3.4.orig/drivers/clocksource/tcb_clksrc.c -+++ linux-3.4/drivers/clocksource/tcb_clksrc.c +diff --git a/drivers/clocksource/tcb_clksrc.c b/drivers/clocksource/tcb_clksrc.c +index 32cb929..ac0bb2e 100644 +--- a/drivers/clocksource/tcb_clksrc.c ++++ b/drivers/clocksource/tcb_clksrc.c @@ -23,8 +23,7 @@ * this 32 bit free-running counter. the second channel is not used. * @@ -35,7 +36,7 @@ Index: linux-3.4/drivers/clocksource/tcb_clksrc.c void __iomem *regs; }; -@@ -82,13 +82,6 @@ static struct tc_clkevt_device *to_tc_cl +@@ -82,13 +82,6 @@ static struct tc_clkevt_device *to_tc_clkevt(struct clock_event_device *clkevt) return container_of(clkevt, struct tc_clkevt_device, clkevt); } @@ -49,7 +50,7 @@ Index: linux-3.4/drivers/clocksource/tcb_clksrc.c static u32 timer_clock; static void tc_mode(enum clock_event_mode m, struct clock_event_device *d) -@@ -111,11 +104,12 @@ static void tc_mode(enum clock_event_mod +@@ -111,11 +104,12 @@ static void tc_mode(enum clock_event_mode m, struct clock_event_device *d) case CLOCK_EVT_MODE_PERIODIC: clk_enable(tcd->clk); @@ -64,7 +65,7 @@ Index: linux-3.4/drivers/clocksource/tcb_clksrc.c /* Enable clock and interrupts on RC compare */ __raw_writel(ATMEL_TC_CPCS, regs + ATMEL_TC_REG(2, IER)); -@@ -128,7 +122,7 @@ static void tc_mode(enum clock_event_mod +@@ -128,7 +122,7 @@ static void tc_mode(enum clock_event_mode m, struct clock_event_device *d) case CLOCK_EVT_MODE_ONESHOT: clk_enable(tcd->clk); @@ -73,7 +74,7 @@ Index: linux-3.4/drivers/clocksource/tcb_clksrc.c __raw_writel(timer_clock | ATMEL_TC_CPCSTOP | ATMEL_TC_WAVE | ATMEL_TC_WAVESEL_UP_AUTO, regs + ATMEL_TC_REG(2, CMR)); -@@ -158,8 +152,12 @@ static struct tc_clkevt_device clkevt = +@@ -158,8 +152,12 @@ static struct tc_clkevt_device clkevt = { .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT, .shift = 32, @@ -97,7 +98,7 @@ Index: linux-3.4/drivers/clocksource/tcb_clksrc.c struct clk *t2_clk = tc->clk[2]; int irq = tc->irq[2]; -@@ -194,11 +193,17 @@ static void __init setup_clkevents(struc +@@ -194,11 +193,17 @@ static void __init setup_clkevents(struct atmel_tc *tc, int clk32k_divisor_idx) clkevt.clk = t2_clk; tc_irqaction.dev_id = &clkevt; @@ -132,10 +133,10 @@ Index: linux-3.4/drivers/clocksource/tcb_clksrc.c return 0; } arch_initcall(tcb_clksrc_init); -Index: linux-3.4/drivers/misc/Kconfig -=================================================================== ---- linux-3.4.orig/drivers/misc/Kconfig -+++ linux-3.4/drivers/misc/Kconfig +diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig +index c779509..504daa3 100644 +--- a/drivers/misc/Kconfig ++++ b/drivers/misc/Kconfig @@ -87,8 +87,7 @@ config ATMEL_TCB_CLKSRC are combined to make a single 32-bit timer. diff --git a/debian/patches/features/all/rt/drivers-net-tulip-add-missing-pci-disable.patch b/debian/patches/features/all/rt/0028-drivers-net-tulip_remove_one-needs-to-call-pci_disab.patch similarity index 51% rename from debian/patches/features/all/rt/drivers-net-tulip-add-missing-pci-disable.patch rename to debian/patches/features/all/rt/0028-drivers-net-tulip_remove_one-needs-to-call-pci_disab.patch index 3b993d427..c3087cb98 100644 --- a/debian/patches/features/all/rt/drivers-net-tulip-add-missing-pci-disable.patch +++ b/debian/patches/features/all/rt/0028-drivers-net-tulip_remove_one-needs-to-call-pci_disab.patch @@ -1,21 +1,22 @@ +From b88c1dd98e031a24f3767c6c706a87fc84ec0dda Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Fri, 3 Jul 2009 08:30:18 -0500 -Subject: drivers/net: tulip_remove_one needs to call pci_disable_device() +Subject: [028/254] drivers/net: tulip_remove_one needs to call + pci_disable_device() Otherwise the device is not completely shut down. Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner - --- drivers/net/ethernet/dec/tulip/tulip_core.c | 1 + 1 file changed, 1 insertion(+) -Index: linux-3.4/drivers/net/ethernet/dec/tulip/tulip_core.c -=================================================================== ---- linux-3.4.orig/drivers/net/ethernet/dec/tulip/tulip_core.c -+++ linux-3.4/drivers/net/ethernet/dec/tulip/tulip_core.c -@@ -1946,6 +1946,7 @@ static void __devexit tulip_remove_one ( +diff --git a/drivers/net/ethernet/dec/tulip/tulip_core.c b/drivers/net/ethernet/dec/tulip/tulip_core.c +index fea3641..d9a5fe0 100644 +--- a/drivers/net/ethernet/dec/tulip/tulip_core.c ++++ b/drivers/net/ethernet/dec/tulip/tulip_core.c +@@ -1946,6 +1946,7 @@ static void __devexit tulip_remove_one (struct pci_dev *pdev) pci_iounmap(pdev, tp->base_addr); free_netdev (dev); pci_release_regions (pdev); diff --git a/debian/patches/features/all/rt/drivers-net-8139-disable-irq-nosync.patch b/debian/patches/features/all/rt/0029-drivers-net-Use-disable_irq_nosync-in-8139too.patch similarity index 56% rename from debian/patches/features/all/rt/drivers-net-8139-disable-irq-nosync.patch rename to debian/patches/features/all/rt/0029-drivers-net-Use-disable_irq_nosync-in-8139too.patch index bb21575c5..def1fce45 100644 --- a/debian/patches/features/all/rt/drivers-net-8139-disable-irq-nosync.patch +++ b/debian/patches/features/all/rt/0029-drivers-net-Use-disable_irq_nosync-in-8139too.patch @@ -1,22 +1,22 @@ +From af77a6725797d4be5948ac0272ff74c44ef1acd4 Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Fri, 3 Jul 2009 08:29:24 -0500 -Subject: drivers/net: Use disable_irq_nosync() in 8139too +Subject: [029/254] drivers/net: Use disable_irq_nosync() in 8139too Use disable_irq_nosync() instead of disable_irq() as this might be called in atomic context with netpoll. Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner - --- drivers/net/ethernet/realtek/8139too.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-3.4/drivers/net/ethernet/realtek/8139too.c -=================================================================== ---- linux-3.4.orig/drivers/net/ethernet/realtek/8139too.c -+++ linux-3.4/drivers/net/ethernet/realtek/8139too.c -@@ -2240,7 +2240,7 @@ static irqreturn_t rtl8139_interrupt (in +diff --git a/drivers/net/ethernet/realtek/8139too.c b/drivers/net/ethernet/realtek/8139too.c +index df7fd8d..7ce74f6 100644 +--- a/drivers/net/ethernet/realtek/8139too.c ++++ b/drivers/net/ethernet/realtek/8139too.c +@@ -2240,7 +2240,7 @@ static irqreturn_t rtl8139_interrupt (int irq, void *dev_instance) */ static void rtl8139_poll_controller(struct net_device *dev) { diff --git a/debian/patches/features/all/rt/drivers-net-ehea-mark-rx-irq-no-thread.patch b/debian/patches/features/all/rt/0030-drivers-net-ehea-Make-rx-irq-handler-non-threaded-IR.patch similarity index 81% rename from debian/patches/features/all/rt/drivers-net-ehea-mark-rx-irq-no-thread.patch rename to debian/patches/features/all/rt/0030-drivers-net-ehea-Make-rx-irq-handler-non-threaded-IR.patch index c7ec044a5..83ef95876 100644 --- a/debian/patches/features/all/rt/drivers-net-ehea-mark-rx-irq-no-thread.patch +++ b/debian/patches/features/all/rt/0030-drivers-net-ehea-Make-rx-irq-handler-non-threaded-IR.patch @@ -1,6 +1,8 @@ +From ea097b3400c3e296b0f048156f5fa8f56c9cefe9 Mon Sep 17 00:00:00 2001 From: Darren Hart Date: Tue, 18 May 2010 14:33:07 -0700 -Subject: drivers: net: ehea: Make rx irq handler non-threaded (IRQF_NO_THREAD) +Subject: [030/254] drivers: net: ehea: Make rx irq handler non-threaded + (IRQF_NO_THREAD) The underlying hardware is edge triggered but presented by XICS as level triggered. The edge triggered interrupts are not reissued after masking. This @@ -33,16 +35,15 @@ Cc: Michael Ellerman Cc: Doug Maxey LKML-Reference: <4BF30793.5070300@us.ibm.com> Signed-off-by: Thomas Gleixner - --- drivers/net/ethernet/ibm/ehea/ehea_main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-3.4/drivers/net/ethernet/ibm/ehea/ehea_main.c -=================================================================== ---- linux-3.4.orig/drivers/net/ethernet/ibm/ehea/ehea_main.c -+++ linux-3.4/drivers/net/ethernet/ibm/ehea/ehea_main.c -@@ -1306,7 +1306,7 @@ static int ehea_reg_interrupts(struct ne +diff --git a/drivers/net/ethernet/ibm/ehea/ehea_main.c b/drivers/net/ethernet/ibm/ehea/ehea_main.c +index f4d2da0..a4cb742 100644 +--- a/drivers/net/ethernet/ibm/ehea/ehea_main.c ++++ b/drivers/net/ethernet/ibm/ehea/ehea_main.c +@@ -1308,7 +1308,7 @@ static int ehea_reg_interrupts(struct net_device *dev) "%s-queue%d", dev->name, i); ret = ibmebus_request_irq(pr->eq->attr.ist1, ehea_recv_irq_handler, diff --git a/debian/patches/features/all/rt/drivers-net-at91-make-mdio-protection-rt-safe.patch b/debian/patches/features/all/rt/0031-drivers-net-at91_ether-Make-mdio-protection-rt-safe.patch similarity index 70% rename from debian/patches/features/all/rt/drivers-net-at91-make-mdio-protection-rt-safe.patch rename to debian/patches/features/all/rt/0031-drivers-net-at91_ether-Make-mdio-protection-rt-safe.patch index fe76b65bc..8fea2a260 100644 --- a/debian/patches/features/all/rt/drivers-net-at91-make-mdio-protection-rt-safe.patch +++ b/debian/patches/features/all/rt/0031-drivers-net-at91_ether-Make-mdio-protection-rt-safe.patch @@ -1,6 +1,7 @@ +From 875d4985f695102c4e380e4f697c57c935da2c05 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Tue, 17 Nov 2009 12:02:43 +0100 -Subject: drivers: net: at91_ether: Make mdio protection -rt safe +Subject: [031/254] drivers: net: at91_ether: Make mdio protection -rt safe Neither the phy interrupt nor the timer callback which updates the link status in absense of a phy interrupt are taking lp->lock which @@ -13,16 +14,15 @@ Fix this by adding proper locking to at91ether_phy_interrupt() and at91_check_ether() which serializes the access on -rt. Signed-off-by: Thomas Gleixner - --- drivers/net/ethernet/cadence/at91_ether.c | 5 +++++ 1 file changed, 5 insertions(+) -Index: linux-3.4/drivers/net/ethernet/cadence/at91_ether.c -=================================================================== ---- linux-3.4.orig/drivers/net/ethernet/cadence/at91_ether.c -+++ linux-3.4/drivers/net/ethernet/cadence/at91_ether.c -@@ -201,7 +201,9 @@ static irqreturn_t at91ether_phy_interru +diff --git a/drivers/net/ethernet/cadence/at91_ether.c b/drivers/net/ethernet/cadence/at91_ether.c +index 9061170..6b9e006 100644 +--- a/drivers/net/ethernet/cadence/at91_ether.c ++++ b/drivers/net/ethernet/cadence/at91_ether.c +@@ -201,7 +201,9 @@ static irqreturn_t at91ether_phy_interrupt(int irq, void *dev_id) struct net_device *dev = (struct net_device *) dev_id; struct at91_private *lp = netdev_priv(dev); unsigned int phy; @@ -32,7 +32,7 @@ Index: linux-3.4/drivers/net/ethernet/cadence/at91_ether.c /* * This hander is triggered on both edges, but the PHY chips expect * level-triggering. We therefore have to check if the PHY actually has -@@ -243,6 +245,7 @@ static irqreturn_t at91ether_phy_interru +@@ -243,6 +245,7 @@ static irqreturn_t at91ether_phy_interrupt(int irq, void *dev_id) done: disable_mdi(); @@ -40,7 +40,7 @@ Index: linux-3.4/drivers/net/ethernet/cadence/at91_ether.c return IRQ_HANDLED; } -@@ -399,9 +402,11 @@ static void at91ether_check_link(unsigne +@@ -399,9 +402,11 @@ static void at91ether_check_link(unsigned long dev_id) struct net_device *dev = (struct net_device *) dev_id; struct at91_private *lp = netdev_priv(dev); diff --git a/debian/patches/features/all/rt/mm-prepare-pf-disable-discoupling.patch b/debian/patches/features/all/rt/0032-mm-Prepare-decoupling-the-page-fault-disabling-logic.patch similarity index 76% rename from debian/patches/features/all/rt/mm-prepare-pf-disable-discoupling.patch rename to debian/patches/features/all/rt/0032-mm-Prepare-decoupling-the-page-fault-disabling-logic.patch index 2cc41c8a5..64d166afc 100644 --- a/debian/patches/features/all/rt/mm-prepare-pf-disable-discoupling.patch +++ b/debian/patches/features/all/rt/0032-mm-Prepare-decoupling-the-page-fault-disabling-logic.patch @@ -1,13 +1,13 @@ +From 69181f2ef2ee3ef5f638c925216133e9d47abbfe Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Fri, 3 Jul 2009 08:30:37 -0500 -Subject: mm: Prepare decoupling the page fault disabling logic +Subject: [032/254] mm: Prepare decoupling the page fault disabling logic Add a pagefault_disabled variable to task_struct to allow decoupling the pagefault-disabled logic from the preempt count. Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner - --- include/linux/sched.h | 1 + include/linux/uaccess.h | 33 +++------------------------------ @@ -15,10 +15,10 @@ Signed-off-by: Thomas Gleixner mm/memory.c | 29 +++++++++++++++++++++++++++++ 4 files changed, 34 insertions(+), 30 deletions(-) -Index: linux-3.4/include/linux/sched.h -=================================================================== ---- linux-3.4.orig/include/linux/sched.h -+++ linux-3.4/include/linux/sched.h +diff --git a/include/linux/sched.h b/include/linux/sched.h +index bd5caa1..f0ee37f 100644 +--- a/include/linux/sched.h ++++ b/include/linux/sched.h @@ -1478,6 +1478,7 @@ struct task_struct { /* mutex deadlock detection */ struct mutex_waiter *blocked_on; @@ -27,10 +27,10 @@ Index: linux-3.4/include/linux/sched.h #ifdef CONFIG_TRACE_IRQFLAGS unsigned int irq_events; unsigned long hardirq_enable_ip; -Index: linux-3.4/include/linux/uaccess.h -=================================================================== ---- linux-3.4.orig/include/linux/uaccess.h -+++ linux-3.4/include/linux/uaccess.h +diff --git a/include/linux/uaccess.h b/include/linux/uaccess.h +index 5ca0951..9414a1b 100644 +--- a/include/linux/uaccess.h ++++ b/include/linux/uaccess.h @@ -6,37 +6,10 @@ /* @@ -72,11 +72,11 @@ Index: linux-3.4/include/linux/uaccess.h #ifndef ARCH_HAS_NOCACHE_UACCESS -Index: linux-3.4/kernel/fork.c -=================================================================== ---- linux-3.4.orig/kernel/fork.c -+++ linux-3.4/kernel/fork.c -@@ -1263,6 +1263,7 @@ static struct task_struct *copy_process( +diff --git a/kernel/fork.c b/kernel/fork.c +index b767e68..fdf0795 100644 +--- a/kernel/fork.c ++++ b/kernel/fork.c +@@ -1265,6 +1265,7 @@ static struct task_struct *copy_process(unsigned long clone_flags, p->hardirq_context = 0; p->softirq_context = 0; #endif @@ -84,10 +84,10 @@ Index: linux-3.4/kernel/fork.c #ifdef CONFIG_LOCKDEP p->lockdep_depth = 0; /* no locks held yet */ p->curr_chain_key = 0; -Index: linux-3.4/mm/memory.c -=================================================================== ---- linux-3.4.orig/mm/memory.c -+++ linux-3.4/mm/memory.c +diff --git a/mm/memory.c b/mm/memory.c +index 6105f47..c3b9c80 100644 +--- a/mm/memory.c ++++ b/mm/memory.c @@ -3467,6 +3467,35 @@ unlock: return 0; } diff --git a/debian/patches/features/all/rt/arch-use-pagefault-disabled.patch b/debian/patches/features/all/rt/0033-mm-Fixup-all-fault-handlers-to-check-current-pagefau.patch similarity index 55% rename from debian/patches/features/all/rt/arch-use-pagefault-disabled.patch rename to debian/patches/features/all/rt/0033-mm-Fixup-all-fault-handlers-to-check-current-pagefau.patch index 9916b827d..0ba7c3cc8 100644 --- a/debian/patches/features/all/rt/arch-use-pagefault-disabled.patch +++ b/debian/patches/features/all/rt/0033-mm-Fixup-all-fault-handlers-to-check-current-pagefau.patch @@ -1,6 +1,8 @@ -Subject: mm: Fixup all fault handlers to check current->pagefault_disable +From 5b99982803b4684529e5f5e0340b133ec0fa3a3e Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Thu, 17 Mar 2011 11:32:28 +0100 +Subject: [033/254] mm: Fixup all fault handlers to check + current->pagefault_disable Necessary for decoupling pagefault disable from preempt count. @@ -30,11 +32,11 @@ Signed-off-by: Thomas Gleixner arch/xtensa/mm/fault.c | 2 +- 22 files changed, 27 insertions(+), 24 deletions(-) -Index: linux-3.4/arch/alpha/mm/fault.c -=================================================================== ---- linux-3.4.orig/arch/alpha/mm/fault.c -+++ linux-3.4/arch/alpha/mm/fault.c -@@ -106,7 +106,7 @@ do_page_fault(unsigned long address, uns +diff --git a/arch/alpha/mm/fault.c b/arch/alpha/mm/fault.c +index 5eecab1..0ddf6c0 100644 +--- a/arch/alpha/mm/fault.c ++++ b/arch/alpha/mm/fault.c +@@ -106,7 +106,7 @@ do_page_fault(unsigned long address, unsigned long mmcsr, /* If we're in an interrupt context, or have no user context, we must not take the fault. */ @@ -43,11 +45,11 @@ Index: linux-3.4/arch/alpha/mm/fault.c goto no_context; #ifdef CONFIG_ALPHA_LARGE_VMALLOC -Index: linux-3.4/arch/arm/mm/fault.c -=================================================================== ---- linux-3.4.orig/arch/arm/mm/fault.c -+++ linux-3.4/arch/arm/mm/fault.c -@@ -277,7 +277,7 @@ do_page_fault(unsigned long addr, unsign +diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c +index 5bb4835..40bd40f 100644 +--- a/arch/arm/mm/fault.c ++++ b/arch/arm/mm/fault.c +@@ -279,7 +279,7 @@ do_page_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs) * If we're in an interrupt or have no user * context, we must not take the fault.. */ @@ -56,11 +58,11 @@ Index: linux-3.4/arch/arm/mm/fault.c goto no_context; /* -Index: linux-3.4/arch/avr32/mm/fault.c -=================================================================== ---- linux-3.4.orig/arch/avr32/mm/fault.c -+++ linux-3.4/arch/avr32/mm/fault.c -@@ -81,7 +81,8 @@ asmlinkage void do_page_fault(unsigned l +diff --git a/arch/avr32/mm/fault.c b/arch/avr32/mm/fault.c +index f7040a1..623a027 100644 +--- a/arch/avr32/mm/fault.c ++++ b/arch/avr32/mm/fault.c +@@ -81,7 +81,8 @@ asmlinkage void do_page_fault(unsigned long ecr, struct pt_regs *regs) * If we're in an interrupt or have no user context, we must * not take the fault... */ @@ -70,11 +72,11 @@ Index: linux-3.4/arch/avr32/mm/fault.c goto no_context; local_irq_enable(); -Index: linux-3.4/arch/cris/mm/fault.c -=================================================================== ---- linux-3.4.orig/arch/cris/mm/fault.c -+++ linux-3.4/arch/cris/mm/fault.c -@@ -112,7 +112,7 @@ do_page_fault(unsigned long address, str +diff --git a/arch/cris/mm/fault.c b/arch/cris/mm/fault.c +index b4760d8..1c1630e 100644 +--- a/arch/cris/mm/fault.c ++++ b/arch/cris/mm/fault.c +@@ -112,7 +112,7 @@ do_page_fault(unsigned long address, struct pt_regs *regs, * user context, we must not take the fault. */ @@ -83,11 +85,11 @@ Index: linux-3.4/arch/cris/mm/fault.c goto no_context; down_read(&mm->mmap_sem); -Index: linux-3.4/arch/frv/mm/fault.c -=================================================================== ---- linux-3.4.orig/arch/frv/mm/fault.c -+++ linux-3.4/arch/frv/mm/fault.c -@@ -78,7 +78,7 @@ asmlinkage void do_page_fault(int datamm +diff --git a/arch/frv/mm/fault.c b/arch/frv/mm/fault.c +index 331c1e2..6372088 100644 +--- a/arch/frv/mm/fault.c ++++ b/arch/frv/mm/fault.c +@@ -78,7 +78,7 @@ asmlinkage void do_page_fault(int datammu, unsigned long esr0, unsigned long ear * If we're in an interrupt or have no user * context, we must not take the fault.. */ @@ -96,11 +98,11 @@ Index: linux-3.4/arch/frv/mm/fault.c goto no_context; down_read(&mm->mmap_sem); -Index: linux-3.4/arch/ia64/mm/fault.c -=================================================================== ---- linux-3.4.orig/arch/ia64/mm/fault.c -+++ linux-3.4/arch/ia64/mm/fault.c -@@ -88,7 +88,7 @@ ia64_do_page_fault (unsigned long addres +diff --git a/arch/ia64/mm/fault.c b/arch/ia64/mm/fault.c +index 02d29c2..721dbb9 100644 +--- a/arch/ia64/mm/fault.c ++++ b/arch/ia64/mm/fault.c +@@ -88,7 +88,7 @@ ia64_do_page_fault (unsigned long address, unsigned long isr, struct pt_regs *re /* * If we're in an interrupt or have no user context, we must not take the fault.. */ @@ -109,11 +111,11 @@ Index: linux-3.4/arch/ia64/mm/fault.c goto no_context; #ifdef CONFIG_VIRTUAL_MEM_MAP -Index: linux-3.4/arch/m32r/mm/fault.c -=================================================================== ---- linux-3.4.orig/arch/m32r/mm/fault.c -+++ linux-3.4/arch/m32r/mm/fault.c -@@ -114,7 +114,7 @@ asmlinkage void do_page_fault(struct pt_ +diff --git a/arch/m32r/mm/fault.c b/arch/m32r/mm/fault.c +index 3cdfa9c..1eec8af 100644 +--- a/arch/m32r/mm/fault.c ++++ b/arch/m32r/mm/fault.c +@@ -114,7 +114,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long error_code, * If we're in an interrupt or have no user context or are running in an * atomic region then we must not take the fault.. */ @@ -122,11 +124,11 @@ Index: linux-3.4/arch/m32r/mm/fault.c goto bad_area_nosemaphore; /* When running in the kernel we expect faults to occur only to -Index: linux-3.4/arch/m68k/mm/fault.c -=================================================================== ---- linux-3.4.orig/arch/m68k/mm/fault.c -+++ linux-3.4/arch/m68k/mm/fault.c -@@ -84,7 +84,7 @@ int do_page_fault(struct pt_regs *regs, +diff --git a/arch/m68k/mm/fault.c b/arch/m68k/mm/fault.c +index 6b020a8..7a4cc68 100644 +--- a/arch/m68k/mm/fault.c ++++ b/arch/m68k/mm/fault.c +@@ -84,7 +84,7 @@ int do_page_fault(struct pt_regs *regs, unsigned long address, * If we're in an interrupt or have no user * context, we must not take the fault.. */ @@ -135,11 +137,11 @@ Index: linux-3.4/arch/m68k/mm/fault.c goto no_context; down_read(&mm->mmap_sem); -Index: linux-3.4/arch/microblaze/mm/fault.c -=================================================================== ---- linux-3.4.orig/arch/microblaze/mm/fault.c -+++ linux-3.4/arch/microblaze/mm/fault.c -@@ -106,7 +106,7 @@ void do_page_fault(struct pt_regs *regs, +diff --git a/arch/microblaze/mm/fault.c b/arch/microblaze/mm/fault.c +index c38a265..621ad49 100644 +--- a/arch/microblaze/mm/fault.c ++++ b/arch/microblaze/mm/fault.c +@@ -106,7 +106,7 @@ void do_page_fault(struct pt_regs *regs, unsigned long address, if ((error_code & 0x13) == 0x13 || (error_code & 0x11) == 0x11) is_write = 0; @@ -148,11 +150,11 @@ Index: linux-3.4/arch/microblaze/mm/fault.c if (kernel_mode(regs)) goto bad_area_nosemaphore; -Index: linux-3.4/arch/mips/mm/fault.c -=================================================================== ---- linux-3.4.orig/arch/mips/mm/fault.c -+++ linux-3.4/arch/mips/mm/fault.c -@@ -89,7 +89,7 @@ asmlinkage void __kprobes do_page_fault( +diff --git a/arch/mips/mm/fault.c b/arch/mips/mm/fault.c +index c14f6df..3468e69 100644 +--- a/arch/mips/mm/fault.c ++++ b/arch/mips/mm/fault.c +@@ -89,7 +89,7 @@ asmlinkage void __kprobes do_page_fault(struct pt_regs *regs, unsigned long writ * If we're in an interrupt or have no user * context, we must not take the fault.. */ @@ -161,11 +163,11 @@ Index: linux-3.4/arch/mips/mm/fault.c goto bad_area_nosemaphore; retry: -Index: linux-3.4/arch/mn10300/mm/fault.c -=================================================================== ---- linux-3.4.orig/arch/mn10300/mm/fault.c -+++ linux-3.4/arch/mn10300/mm/fault.c -@@ -167,7 +167,7 @@ asmlinkage void do_page_fault(struct pt_ +diff --git a/arch/mn10300/mm/fault.c b/arch/mn10300/mm/fault.c +index 90f346f..ff5acf5 100644 +--- a/arch/mn10300/mm/fault.c ++++ b/arch/mn10300/mm/fault.c +@@ -167,7 +167,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long fault_code, * If we're in an interrupt or have no user * context, we must not take the fault.. */ @@ -174,11 +176,11 @@ Index: linux-3.4/arch/mn10300/mm/fault.c goto no_context; down_read(&mm->mmap_sem); -Index: linux-3.4/arch/parisc/mm/fault.c -=================================================================== ---- linux-3.4.orig/arch/parisc/mm/fault.c -+++ linux-3.4/arch/parisc/mm/fault.c -@@ -176,7 +176,7 @@ void do_page_fault(struct pt_regs *regs, +diff --git a/arch/parisc/mm/fault.c b/arch/parisc/mm/fault.c +index 18162ce..09ecc8a 100644 +--- a/arch/parisc/mm/fault.c ++++ b/arch/parisc/mm/fault.c +@@ -176,7 +176,7 @@ void do_page_fault(struct pt_regs *regs, unsigned long code, unsigned long acc_type; int fault; @@ -187,11 +189,11 @@ Index: linux-3.4/arch/parisc/mm/fault.c goto no_context; down_read(&mm->mmap_sem); -Index: linux-3.4/arch/powerpc/mm/fault.c -=================================================================== ---- linux-3.4.orig/arch/powerpc/mm/fault.c -+++ linux-3.4/arch/powerpc/mm/fault.c -@@ -261,7 +261,7 @@ int __kprobes do_page_fault(struct pt_re +diff --git a/arch/powerpc/mm/fault.c b/arch/powerpc/mm/fault.c +index 08ffcf5..6642dff 100644 +--- a/arch/powerpc/mm/fault.c ++++ b/arch/powerpc/mm/fault.c +@@ -261,7 +261,7 @@ int __kprobes do_page_fault(struct pt_regs *regs, unsigned long address, if (!arch_irq_disabled_regs(regs)) local_irq_enable(); @@ -200,11 +202,11 @@ Index: linux-3.4/arch/powerpc/mm/fault.c if (!user_mode(regs)) return SIGSEGV; /* in_atomic() in user mode is really bad, -Index: linux-3.4/arch/s390/mm/fault.c -=================================================================== ---- linux-3.4.orig/arch/s390/mm/fault.c -+++ linux-3.4/arch/s390/mm/fault.c -@@ -283,7 +283,8 @@ static inline int do_exception(struct pt +diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c +index 4e66860..f7d796f 100644 +--- a/arch/s390/mm/fault.c ++++ b/arch/s390/mm/fault.c +@@ -283,7 +283,8 @@ static inline int do_exception(struct pt_regs *regs, int access) * user context. */ fault = VM_FAULT_BADCONTEXT; @@ -214,7 +216,7 @@ Index: linux-3.4/arch/s390/mm/fault.c goto out; address = trans_exc_code & __FAIL_ADDR_MASK; -@@ -415,7 +416,8 @@ void __kprobes do_asce_exception(struct +@@ -415,7 +416,8 @@ void __kprobes do_asce_exception(struct pt_regs *regs) unsigned long trans_exc_code; trans_exc_code = regs->int_parm_long; @@ -224,11 +226,11 @@ Index: linux-3.4/arch/s390/mm/fault.c goto no_context; down_read(&mm->mmap_sem); -Index: linux-3.4/arch/score/mm/fault.c -=================================================================== ---- linux-3.4.orig/arch/score/mm/fault.c -+++ linux-3.4/arch/score/mm/fault.c -@@ -72,7 +72,7 @@ asmlinkage void do_page_fault(struct pt_ +diff --git a/arch/score/mm/fault.c b/arch/score/mm/fault.c +index 47b600e..4c12824 100644 +--- a/arch/score/mm/fault.c ++++ b/arch/score/mm/fault.c +@@ -72,7 +72,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long write, * If we're in an interrupt or have no user * context, we must not take the fault.. */ @@ -237,11 +239,11 @@ Index: linux-3.4/arch/score/mm/fault.c goto bad_area_nosemaphore; down_read(&mm->mmap_sem); -Index: linux-3.4/arch/sh/mm/fault_32.c -=================================================================== ---- linux-3.4.orig/arch/sh/mm/fault_32.c -+++ linux-3.4/arch/sh/mm/fault_32.c -@@ -166,7 +166,7 @@ asmlinkage void __kprobes do_page_fault( +diff --git a/arch/sh/mm/fault_32.c b/arch/sh/mm/fault_32.c +index e99b104..8c3ae42 100644 +--- a/arch/sh/mm/fault_32.c ++++ b/arch/sh/mm/fault_32.c +@@ -166,7 +166,7 @@ asmlinkage void __kprobes do_page_fault(struct pt_regs *regs, * If we're in an interrupt, have no user context or are running * in an atomic region then we must not take the fault: */ @@ -250,11 +252,11 @@ Index: linux-3.4/arch/sh/mm/fault_32.c goto no_context; down_read(&mm->mmap_sem); -Index: linux-3.4/arch/sparc/mm/fault_32.c -=================================================================== ---- linux-3.4.orig/arch/sparc/mm/fault_32.c -+++ linux-3.4/arch/sparc/mm/fault_32.c -@@ -248,8 +248,8 @@ asmlinkage void do_sparc_fault(struct pt +diff --git a/arch/sparc/mm/fault_32.c b/arch/sparc/mm/fault_32.c +index df3155a..ffaa99e 100644 +--- a/arch/sparc/mm/fault_32.c ++++ b/arch/sparc/mm/fault_32.c +@@ -248,8 +248,8 @@ asmlinkage void do_sparc_fault(struct pt_regs *regs, int text_fault, int write, * If we're in an interrupt or have no user * context, we must not take the fault.. */ @@ -265,11 +267,11 @@ Index: linux-3.4/arch/sparc/mm/fault_32.c perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address); -Index: linux-3.4/arch/sparc/mm/fault_64.c -=================================================================== ---- linux-3.4.orig/arch/sparc/mm/fault_64.c -+++ linux-3.4/arch/sparc/mm/fault_64.c -@@ -323,7 +323,7 @@ asmlinkage void __kprobes do_sparc64_fau +diff --git a/arch/sparc/mm/fault_64.c b/arch/sparc/mm/fault_64.c +index 1fe0429..fbd5e11 100644 +--- a/arch/sparc/mm/fault_64.c ++++ b/arch/sparc/mm/fault_64.c +@@ -323,7 +323,7 @@ asmlinkage void __kprobes do_sparc64_fault(struct pt_regs *regs) * If we're in an interrupt or have no user * context, we must not take the fault.. */ @@ -278,11 +280,11 @@ Index: linux-3.4/arch/sparc/mm/fault_64.c goto intr_or_no_mm; perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address); -Index: linux-3.4/arch/tile/mm/fault.c -=================================================================== ---- linux-3.4.orig/arch/tile/mm/fault.c -+++ linux-3.4/arch/tile/mm/fault.c -@@ -355,7 +355,7 @@ static int handle_page_fault(struct pt_r +diff --git a/arch/tile/mm/fault.c b/arch/tile/mm/fault.c +index 22e58f5..f683aad 100644 +--- a/arch/tile/mm/fault.c ++++ b/arch/tile/mm/fault.c +@@ -355,7 +355,7 @@ static int handle_page_fault(struct pt_regs *regs, * If we're in an interrupt, have no user context or are running in an * atomic region then we must not take the fault. */ @@ -291,11 +293,11 @@ Index: linux-3.4/arch/tile/mm/fault.c vma = NULL; /* happy compiler */ goto bad_area_nosemaphore; } -Index: linux-3.4/arch/um/kernel/trap.c -=================================================================== ---- linux-3.4.orig/arch/um/kernel/trap.c -+++ linux-3.4/arch/um/kernel/trap.c -@@ -37,7 +37,7 @@ int handle_page_fault(unsigned long addr +diff --git a/arch/um/kernel/trap.c b/arch/um/kernel/trap.c +index dafc947..a283400 100644 +--- a/arch/um/kernel/trap.c ++++ b/arch/um/kernel/trap.c +@@ -37,7 +37,7 @@ int handle_page_fault(unsigned long address, unsigned long ip, * If the fault was during atomic operation, don't take the fault, just * fail. */ @@ -304,11 +306,11 @@ Index: linux-3.4/arch/um/kernel/trap.c goto out_nosemaphore; down_read(&mm->mmap_sem); -Index: linux-3.4/arch/x86/mm/fault.c -=================================================================== ---- linux-3.4.orig/arch/x86/mm/fault.c -+++ linux-3.4/arch/x86/mm/fault.c -@@ -1094,7 +1094,7 @@ do_page_fault(struct pt_regs *regs, unsi +diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c +index 3ecfd1a..bb891f2 100644 +--- a/arch/x86/mm/fault.c ++++ b/arch/x86/mm/fault.c +@@ -1094,7 +1094,7 @@ do_page_fault(struct pt_regs *regs, unsigned long error_code) * If we're in an interrupt, have no user context or are running * in an atomic region then we must not take the fault: */ @@ -317,10 +319,10 @@ Index: linux-3.4/arch/x86/mm/fault.c bad_area_nosemaphore(regs, error_code, address); return; } -Index: linux-3.4/arch/xtensa/mm/fault.c -=================================================================== ---- linux-3.4.orig/arch/xtensa/mm/fault.c -+++ linux-3.4/arch/xtensa/mm/fault.c +diff --git a/arch/xtensa/mm/fault.c b/arch/xtensa/mm/fault.c +index b17885a..cc58b7c 100644 +--- a/arch/xtensa/mm/fault.c ++++ b/arch/xtensa/mm/fault.c @@ -56,7 +56,7 @@ void do_page_fault(struct pt_regs *regs) /* If we're in an interrupt or have no user * context, we must not take the fault.. diff --git a/debian/patches/features/all/rt/peter_zijlstra-frob-pagefault_disable.patch b/debian/patches/features/all/rt/0034-mm-pagefault_disabled.patch similarity index 59% rename from debian/patches/features/all/rt/peter_zijlstra-frob-pagefault_disable.patch rename to debian/patches/features/all/rt/0034-mm-pagefault_disabled.patch index 1f2d738c0..891ac06b4 100644 --- a/debian/patches/features/all/rt/peter_zijlstra-frob-pagefault_disable.patch +++ b/debian/patches/features/all/rt/0034-mm-pagefault_disabled.patch @@ -1,6 +1,7 @@ -Subject: mm: pagefault_disabled() +From 3d3bf4ea98185b3fec5fe75e16e576a957375a80 Mon Sep 17 00:00:00 2001 From: Peter Zijlstra -Date: Thu Aug 11 15:31:31 CEST 2011 +Date: Thu, 11 Aug 2011 15:31:31 +0200 +Subject: [034/254] mm: pagefault_disabled() Wrap the test for pagefault_disabled() into a helper, this allows us to remove the need for current->pagefault_disabled on !-rt kernels. @@ -34,11 +35,11 @@ Link: http://lkml.kernel.org/n/tip-3yy517m8zsi9fpsf14xfaqkw@git.kernel.org kernel/fork.c | 2 ++ 24 files changed, 40 insertions(+), 25 deletions(-) -Index: linux-3.4/arch/alpha/mm/fault.c -=================================================================== ---- linux-3.4.orig/arch/alpha/mm/fault.c -+++ linux-3.4/arch/alpha/mm/fault.c -@@ -106,7 +106,7 @@ do_page_fault(unsigned long address, uns +diff --git a/arch/alpha/mm/fault.c b/arch/alpha/mm/fault.c +index 0ddf6c0..ab6b9d13 100644 +--- a/arch/alpha/mm/fault.c ++++ b/arch/alpha/mm/fault.c +@@ -106,7 +106,7 @@ do_page_fault(unsigned long address, unsigned long mmcsr, /* If we're in an interrupt context, or have no user context, we must not take the fault. */ @@ -47,11 +48,11 @@ Index: linux-3.4/arch/alpha/mm/fault.c goto no_context; #ifdef CONFIG_ALPHA_LARGE_VMALLOC -Index: linux-3.4/arch/arm/mm/fault.c -=================================================================== ---- linux-3.4.orig/arch/arm/mm/fault.c -+++ linux-3.4/arch/arm/mm/fault.c -@@ -277,7 +277,7 @@ do_page_fault(unsigned long addr, unsign +diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c +index 40bd40f..17a9f4a 100644 +--- a/arch/arm/mm/fault.c ++++ b/arch/arm/mm/fault.c +@@ -279,7 +279,7 @@ do_page_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs) * If we're in an interrupt or have no user * context, we must not take the fault.. */ @@ -60,11 +61,11 @@ Index: linux-3.4/arch/arm/mm/fault.c goto no_context; /* -Index: linux-3.4/arch/avr32/mm/fault.c -=================================================================== ---- linux-3.4.orig/arch/avr32/mm/fault.c -+++ linux-3.4/arch/avr32/mm/fault.c -@@ -81,8 +81,7 @@ asmlinkage void do_page_fault(unsigned l +diff --git a/arch/avr32/mm/fault.c b/arch/avr32/mm/fault.c +index 623a027..155ad8d 100644 +--- a/arch/avr32/mm/fault.c ++++ b/arch/avr32/mm/fault.c +@@ -81,8 +81,7 @@ asmlinkage void do_page_fault(unsigned long ecr, struct pt_regs *regs) * If we're in an interrupt or have no user context, we must * not take the fault... */ @@ -74,11 +75,11 @@ Index: linux-3.4/arch/avr32/mm/fault.c goto no_context; local_irq_enable(); -Index: linux-3.4/arch/cris/mm/fault.c -=================================================================== ---- linux-3.4.orig/arch/cris/mm/fault.c -+++ linux-3.4/arch/cris/mm/fault.c -@@ -112,7 +112,7 @@ do_page_fault(unsigned long address, str +diff --git a/arch/cris/mm/fault.c b/arch/cris/mm/fault.c +index 1c1630e..886be8e 100644 +--- a/arch/cris/mm/fault.c ++++ b/arch/cris/mm/fault.c +@@ -112,7 +112,7 @@ do_page_fault(unsigned long address, struct pt_regs *regs, * user context, we must not take the fault. */ @@ -87,11 +88,11 @@ Index: linux-3.4/arch/cris/mm/fault.c goto no_context; down_read(&mm->mmap_sem); -Index: linux-3.4/arch/frv/mm/fault.c -=================================================================== ---- linux-3.4.orig/arch/frv/mm/fault.c -+++ linux-3.4/arch/frv/mm/fault.c -@@ -78,7 +78,7 @@ asmlinkage void do_page_fault(int datamm +diff --git a/arch/frv/mm/fault.c b/arch/frv/mm/fault.c +index 6372088..e87972c 100644 +--- a/arch/frv/mm/fault.c ++++ b/arch/frv/mm/fault.c +@@ -78,7 +78,7 @@ asmlinkage void do_page_fault(int datammu, unsigned long esr0, unsigned long ear * If we're in an interrupt or have no user * context, we must not take the fault.. */ @@ -100,11 +101,11 @@ Index: linux-3.4/arch/frv/mm/fault.c goto no_context; down_read(&mm->mmap_sem); -Index: linux-3.4/arch/ia64/mm/fault.c -=================================================================== ---- linux-3.4.orig/arch/ia64/mm/fault.c -+++ linux-3.4/arch/ia64/mm/fault.c -@@ -88,7 +88,7 @@ ia64_do_page_fault (unsigned long addres +diff --git a/arch/ia64/mm/fault.c b/arch/ia64/mm/fault.c +index 721dbb9..8ca850e 100644 +--- a/arch/ia64/mm/fault.c ++++ b/arch/ia64/mm/fault.c +@@ -88,7 +88,7 @@ ia64_do_page_fault (unsigned long address, unsigned long isr, struct pt_regs *re /* * If we're in an interrupt or have no user context, we must not take the fault.. */ @@ -113,11 +114,11 @@ Index: linux-3.4/arch/ia64/mm/fault.c goto no_context; #ifdef CONFIG_VIRTUAL_MEM_MAP -Index: linux-3.4/arch/m32r/mm/fault.c -=================================================================== ---- linux-3.4.orig/arch/m32r/mm/fault.c -+++ linux-3.4/arch/m32r/mm/fault.c -@@ -114,7 +114,7 @@ asmlinkage void do_page_fault(struct pt_ +diff --git a/arch/m32r/mm/fault.c b/arch/m32r/mm/fault.c +index 1eec8af..6945056 100644 +--- a/arch/m32r/mm/fault.c ++++ b/arch/m32r/mm/fault.c +@@ -114,7 +114,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long error_code, * If we're in an interrupt or have no user context or are running in an * atomic region then we must not take the fault.. */ @@ -126,11 +127,11 @@ Index: linux-3.4/arch/m32r/mm/fault.c goto bad_area_nosemaphore; /* When running in the kernel we expect faults to occur only to -Index: linux-3.4/arch/m68k/mm/fault.c -=================================================================== ---- linux-3.4.orig/arch/m68k/mm/fault.c -+++ linux-3.4/arch/m68k/mm/fault.c -@@ -84,7 +84,7 @@ int do_page_fault(struct pt_regs *regs, +diff --git a/arch/m68k/mm/fault.c b/arch/m68k/mm/fault.c +index 7a4cc68..46b8cce 100644 +--- a/arch/m68k/mm/fault.c ++++ b/arch/m68k/mm/fault.c +@@ -84,7 +84,7 @@ int do_page_fault(struct pt_regs *regs, unsigned long address, * If we're in an interrupt or have no user * context, we must not take the fault.. */ @@ -139,11 +140,11 @@ Index: linux-3.4/arch/m68k/mm/fault.c goto no_context; down_read(&mm->mmap_sem); -Index: linux-3.4/arch/microblaze/mm/fault.c -=================================================================== ---- linux-3.4.orig/arch/microblaze/mm/fault.c -+++ linux-3.4/arch/microblaze/mm/fault.c -@@ -106,7 +106,7 @@ void do_page_fault(struct pt_regs *regs, +diff --git a/arch/microblaze/mm/fault.c b/arch/microblaze/mm/fault.c +index 621ad49..a438434 100644 +--- a/arch/microblaze/mm/fault.c ++++ b/arch/microblaze/mm/fault.c +@@ -106,7 +106,7 @@ void do_page_fault(struct pt_regs *regs, unsigned long address, if ((error_code & 0x13) == 0x13 || (error_code & 0x11) == 0x11) is_write = 0; @@ -152,11 +153,11 @@ Index: linux-3.4/arch/microblaze/mm/fault.c if (kernel_mode(regs)) goto bad_area_nosemaphore; -Index: linux-3.4/arch/mips/mm/fault.c -=================================================================== ---- linux-3.4.orig/arch/mips/mm/fault.c -+++ linux-3.4/arch/mips/mm/fault.c -@@ -89,7 +89,7 @@ asmlinkage void __kprobes do_page_fault( +diff --git a/arch/mips/mm/fault.c b/arch/mips/mm/fault.c +index 3468e69..39a3180 100644 +--- a/arch/mips/mm/fault.c ++++ b/arch/mips/mm/fault.c +@@ -89,7 +89,7 @@ asmlinkage void __kprobes do_page_fault(struct pt_regs *regs, unsigned long writ * If we're in an interrupt or have no user * context, we must not take the fault.. */ @@ -165,11 +166,11 @@ Index: linux-3.4/arch/mips/mm/fault.c goto bad_area_nosemaphore; retry: -Index: linux-3.4/arch/mn10300/mm/fault.c -=================================================================== ---- linux-3.4.orig/arch/mn10300/mm/fault.c -+++ linux-3.4/arch/mn10300/mm/fault.c -@@ -167,7 +167,7 @@ asmlinkage void do_page_fault(struct pt_ +diff --git a/arch/mn10300/mm/fault.c b/arch/mn10300/mm/fault.c +index ff5acf5..5d9e10f 100644 +--- a/arch/mn10300/mm/fault.c ++++ b/arch/mn10300/mm/fault.c +@@ -167,7 +167,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long fault_code, * If we're in an interrupt or have no user * context, we must not take the fault.. */ @@ -178,11 +179,11 @@ Index: linux-3.4/arch/mn10300/mm/fault.c goto no_context; down_read(&mm->mmap_sem); -Index: linux-3.4/arch/parisc/mm/fault.c -=================================================================== ---- linux-3.4.orig/arch/parisc/mm/fault.c -+++ linux-3.4/arch/parisc/mm/fault.c -@@ -176,7 +176,7 @@ void do_page_fault(struct pt_regs *regs, +diff --git a/arch/parisc/mm/fault.c b/arch/parisc/mm/fault.c +index 09ecc8a..df22f39 100644 +--- a/arch/parisc/mm/fault.c ++++ b/arch/parisc/mm/fault.c +@@ -176,7 +176,7 @@ void do_page_fault(struct pt_regs *regs, unsigned long code, unsigned long acc_type; int fault; @@ -191,11 +192,11 @@ Index: linux-3.4/arch/parisc/mm/fault.c goto no_context; down_read(&mm->mmap_sem); -Index: linux-3.4/arch/powerpc/mm/fault.c -=================================================================== ---- linux-3.4.orig/arch/powerpc/mm/fault.c -+++ linux-3.4/arch/powerpc/mm/fault.c -@@ -261,7 +261,7 @@ int __kprobes do_page_fault(struct pt_re +diff --git a/arch/powerpc/mm/fault.c b/arch/powerpc/mm/fault.c +index 6642dff..7bd8f27 100644 +--- a/arch/powerpc/mm/fault.c ++++ b/arch/powerpc/mm/fault.c +@@ -261,7 +261,7 @@ int __kprobes do_page_fault(struct pt_regs *regs, unsigned long address, if (!arch_irq_disabled_regs(regs)) local_irq_enable(); @@ -204,11 +205,11 @@ Index: linux-3.4/arch/powerpc/mm/fault.c if (!user_mode(regs)) return SIGSEGV; /* in_atomic() in user mode is really bad, -Index: linux-3.4/arch/s390/mm/fault.c -=================================================================== ---- linux-3.4.orig/arch/s390/mm/fault.c -+++ linux-3.4/arch/s390/mm/fault.c -@@ -283,8 +283,8 @@ static inline int do_exception(struct pt +diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c +index f7d796f..e2994cb 100644 +--- a/arch/s390/mm/fault.c ++++ b/arch/s390/mm/fault.c +@@ -283,8 +283,8 @@ static inline int do_exception(struct pt_regs *regs, int access) * user context. */ fault = VM_FAULT_BADCONTEXT; @@ -219,7 +220,7 @@ Index: linux-3.4/arch/s390/mm/fault.c goto out; address = trans_exc_code & __FAIL_ADDR_MASK; -@@ -417,7 +417,7 @@ void __kprobes do_asce_exception(struct +@@ -417,7 +417,7 @@ void __kprobes do_asce_exception(struct pt_regs *regs) trans_exc_code = regs->int_parm_long; if (unlikely(!user_space_fault(trans_exc_code) || in_atomic() || !mm || @@ -228,11 +229,11 @@ Index: linux-3.4/arch/s390/mm/fault.c goto no_context; down_read(&mm->mmap_sem); -Index: linux-3.4/arch/score/mm/fault.c -=================================================================== ---- linux-3.4.orig/arch/score/mm/fault.c -+++ linux-3.4/arch/score/mm/fault.c -@@ -72,7 +72,7 @@ asmlinkage void do_page_fault(struct pt_ +diff --git a/arch/score/mm/fault.c b/arch/score/mm/fault.c +index 4c12824..59fccbe 100644 +--- a/arch/score/mm/fault.c ++++ b/arch/score/mm/fault.c +@@ -72,7 +72,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long write, * If we're in an interrupt or have no user * context, we must not take the fault.. */ @@ -241,11 +242,11 @@ Index: linux-3.4/arch/score/mm/fault.c goto bad_area_nosemaphore; down_read(&mm->mmap_sem); -Index: linux-3.4/arch/sh/mm/fault_32.c -=================================================================== ---- linux-3.4.orig/arch/sh/mm/fault_32.c -+++ linux-3.4/arch/sh/mm/fault_32.c -@@ -166,7 +166,7 @@ asmlinkage void __kprobes do_page_fault( +diff --git a/arch/sh/mm/fault_32.c b/arch/sh/mm/fault_32.c +index 8c3ae42..1aca948 100644 +--- a/arch/sh/mm/fault_32.c ++++ b/arch/sh/mm/fault_32.c +@@ -166,7 +166,7 @@ asmlinkage void __kprobes do_page_fault(struct pt_regs *regs, * If we're in an interrupt, have no user context or are running * in an atomic region then we must not take the fault: */ @@ -254,11 +255,11 @@ Index: linux-3.4/arch/sh/mm/fault_32.c goto no_context; down_read(&mm->mmap_sem); -Index: linux-3.4/arch/sparc/mm/fault_32.c -=================================================================== ---- linux-3.4.orig/arch/sparc/mm/fault_32.c -+++ linux-3.4/arch/sparc/mm/fault_32.c -@@ -248,7 +248,7 @@ asmlinkage void do_sparc_fault(struct pt +diff --git a/arch/sparc/mm/fault_32.c b/arch/sparc/mm/fault_32.c +index ffaa99e..77b37e0 100644 +--- a/arch/sparc/mm/fault_32.c ++++ b/arch/sparc/mm/fault_32.c +@@ -248,7 +248,7 @@ asmlinkage void do_sparc_fault(struct pt_regs *regs, int text_fault, int write, * If we're in an interrupt or have no user * context, we must not take the fault.. */ @@ -267,11 +268,11 @@ Index: linux-3.4/arch/sparc/mm/fault_32.c goto no_context; perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address); -Index: linux-3.4/arch/sparc/mm/fault_64.c -=================================================================== ---- linux-3.4.orig/arch/sparc/mm/fault_64.c -+++ linux-3.4/arch/sparc/mm/fault_64.c -@@ -323,7 +323,7 @@ asmlinkage void __kprobes do_sparc64_fau +diff --git a/arch/sparc/mm/fault_64.c b/arch/sparc/mm/fault_64.c +index fbd5e11..ea4e14b 100644 +--- a/arch/sparc/mm/fault_64.c ++++ b/arch/sparc/mm/fault_64.c +@@ -323,7 +323,7 @@ asmlinkage void __kprobes do_sparc64_fault(struct pt_regs *regs) * If we're in an interrupt or have no user * context, we must not take the fault.. */ @@ -280,11 +281,11 @@ Index: linux-3.4/arch/sparc/mm/fault_64.c goto intr_or_no_mm; perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address); -Index: linux-3.4/arch/tile/mm/fault.c -=================================================================== ---- linux-3.4.orig/arch/tile/mm/fault.c -+++ linux-3.4/arch/tile/mm/fault.c -@@ -355,7 +355,7 @@ static int handle_page_fault(struct pt_r +diff --git a/arch/tile/mm/fault.c b/arch/tile/mm/fault.c +index f683aad..3e85178 100644 +--- a/arch/tile/mm/fault.c ++++ b/arch/tile/mm/fault.c +@@ -355,7 +355,7 @@ static int handle_page_fault(struct pt_regs *regs, * If we're in an interrupt, have no user context or are running in an * atomic region then we must not take the fault. */ @@ -293,11 +294,11 @@ Index: linux-3.4/arch/tile/mm/fault.c vma = NULL; /* happy compiler */ goto bad_area_nosemaphore; } -Index: linux-3.4/arch/um/kernel/trap.c -=================================================================== ---- linux-3.4.orig/arch/um/kernel/trap.c -+++ linux-3.4/arch/um/kernel/trap.c -@@ -37,7 +37,7 @@ int handle_page_fault(unsigned long addr +diff --git a/arch/um/kernel/trap.c b/arch/um/kernel/trap.c +index a283400..7878069 100644 +--- a/arch/um/kernel/trap.c ++++ b/arch/um/kernel/trap.c +@@ -37,7 +37,7 @@ int handle_page_fault(unsigned long address, unsigned long ip, * If the fault was during atomic operation, don't take the fault, just * fail. */ @@ -306,11 +307,11 @@ Index: linux-3.4/arch/um/kernel/trap.c goto out_nosemaphore; down_read(&mm->mmap_sem); -Index: linux-3.4/arch/x86/mm/fault.c -=================================================================== ---- linux-3.4.orig/arch/x86/mm/fault.c -+++ linux-3.4/arch/x86/mm/fault.c -@@ -1094,7 +1094,7 @@ do_page_fault(struct pt_regs *regs, unsi +diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c +index bb891f2..9d57357 100644 +--- a/arch/x86/mm/fault.c ++++ b/arch/x86/mm/fault.c +@@ -1094,7 +1094,7 @@ do_page_fault(struct pt_regs *regs, unsigned long error_code) * If we're in an interrupt, have no user context or are running * in an atomic region then we must not take the fault: */ @@ -319,10 +320,10 @@ Index: linux-3.4/arch/x86/mm/fault.c bad_area_nosemaphore(regs, error_code, address); return; } -Index: linux-3.4/arch/xtensa/mm/fault.c -=================================================================== ---- linux-3.4.orig/arch/xtensa/mm/fault.c -+++ linux-3.4/arch/xtensa/mm/fault.c +diff --git a/arch/xtensa/mm/fault.c b/arch/xtensa/mm/fault.c +index cc58b7c..93d33ee 100644 +--- a/arch/xtensa/mm/fault.c ++++ b/arch/xtensa/mm/fault.c @@ -56,7 +56,7 @@ void do_page_fault(struct pt_regs *regs) /* If we're in an interrupt or have no user * context, we must not take the fault.. @@ -332,10 +333,10 @@ Index: linux-3.4/arch/xtensa/mm/fault.c bad_page_fault(regs, address, SIGSEGV); return; } -Index: linux-3.4/include/linux/sched.h -=================================================================== ---- linux-3.4.orig/include/linux/sched.h -+++ linux-3.4/include/linux/sched.h +diff --git a/include/linux/sched.h b/include/linux/sched.h +index f0ee37f..f14b965 100644 +--- a/include/linux/sched.h ++++ b/include/linux/sched.h @@ -90,6 +90,7 @@ struct sched_param { #include #include @@ -372,11 +373,11 @@ Index: linux-3.4/include/linux/sched.h /* * Priority of a process goes from 0..MAX_PRIO-1, valid RT * priority is 0..MAX_RT_PRIO-1, and SCHED_NORMAL/SCHED_BATCH -Index: linux-3.4/kernel/fork.c -=================================================================== ---- linux-3.4.orig/kernel/fork.c -+++ linux-3.4/kernel/fork.c -@@ -1263,7 +1263,9 @@ static struct task_struct *copy_process( +diff --git a/kernel/fork.c b/kernel/fork.c +index fdf0795..4c9def3 100644 +--- a/kernel/fork.c ++++ b/kernel/fork.c +@@ -1265,7 +1265,9 @@ static struct task_struct *copy_process(unsigned long clone_flags, p->hardirq_context = 0; p->softirq_context = 0; #endif diff --git a/debian/patches/features/all/rt/peterz-raw_pagefault_disable.patch b/debian/patches/features/all/rt/0035-mm-raw_pagefault_disable.patch similarity index 91% rename from debian/patches/features/all/rt/peterz-raw_pagefault_disable.patch rename to debian/patches/features/all/rt/0035-mm-raw_pagefault_disable.patch index c86310ff9..5924b2f91 100644 --- a/debian/patches/features/all/rt/peterz-raw_pagefault_disable.patch +++ b/debian/patches/features/all/rt/0035-mm-raw_pagefault_disable.patch @@ -1,6 +1,7 @@ -Subject: mm: raw_pagefault_disable +From 7fe5eed8f44908770c8aa922e1e7aeca4f355f6e Mon Sep 17 00:00:00 2001 From: Peter Zijlstra -Date: Fri Aug 05 17:16:58 CEST 2011 +Date: Fri, 5 Aug 2011 17:16:58 +0200 +Subject: [035/254] mm: raw_pagefault_disable Adding migrate_disable() to pagefault_disable() to preserve the per-cpu thing for kmap_atomic might not have been the best of choices. @@ -70,7 +71,6 @@ that up by adding raw_pagefault_disable(). [] smp_apic_timer_interrupt+0x85/0x98 [] apic_timer_interrupt+0x13/0x20 - Signed-off-by: Peter Zijlstra Link: http://lkml.kernel.org/n/tip-31keae8mkjiv8esq4rl76cib@git.kernel.org --- @@ -78,10 +78,10 @@ Link: http://lkml.kernel.org/n/tip-31keae8mkjiv8esq4rl76cib@git.kernel.org mm/memory.c | 2 ++ 2 files changed, 30 insertions(+), 2 deletions(-) -Index: linux-3.4/include/linux/uaccess.h -=================================================================== ---- linux-3.4.orig/include/linux/uaccess.h -+++ linux-3.4/include/linux/uaccess.h +diff --git a/include/linux/uaccess.h b/include/linux/uaccess.h +index 9414a1b..44b3751 100644 +--- a/include/linux/uaccess.h ++++ b/include/linux/uaccess.h @@ -8,8 +8,34 @@ * These routines enable/disable the pagefault handler in that * it will not take any MM locks and go straight to the fixup table. @@ -117,7 +117,7 @@ Index: linux-3.4/include/linux/uaccess.h #ifndef ARCH_HAS_NOCACHE_UACCESS -@@ -50,9 +76,9 @@ static inline unsigned long __copy_from_ +@@ -50,9 +76,9 @@ static inline unsigned long __copy_from_user_nocache(void *to, mm_segment_t old_fs = get_fs(); \ \ set_fs(KERNEL_DS); \ @@ -129,10 +129,10 @@ Index: linux-3.4/include/linux/uaccess.h set_fs(old_fs); \ ret; \ }) -Index: linux-3.4/mm/memory.c -=================================================================== ---- linux-3.4.orig/mm/memory.c -+++ linux-3.4/mm/memory.c +diff --git a/mm/memory.c b/mm/memory.c +index c3b9c80..e996afe 100644 +--- a/mm/memory.c ++++ b/mm/memory.c @@ -3467,6 +3467,7 @@ unlock: return 0; } diff --git a/debian/patches/features/all/rt/filemap-fix-up.patch b/debian/patches/features/all/rt/0036-filemap-fix-up.patch.patch similarity index 62% rename from debian/patches/features/all/rt/filemap-fix-up.patch rename to debian/patches/features/all/rt/0036-filemap-fix-up.patch.patch index 1c3b7223e..ef7a94196 100644 --- a/debian/patches/features/all/rt/filemap-fix-up.patch +++ b/debian/patches/features/all/rt/0036-filemap-fix-up.patch.patch @@ -1,6 +1,7 @@ -Subject: filemap-fix-up.patch +From bc5dddc79dfd7918fe170111b9f09c92408739c2 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 17 Jun 2011 18:56:24 +0200 +Subject: [036/254] filemap-fix-up.patch Signed-off-by: Thomas Gleixner Wrecked-off-by: Peter Zijlstra @@ -9,11 +10,11 @@ Link: http://lkml.kernel.org/n/tip-m6yuzd6ul717hlnl2gj6p3ou@git.kernel.org mm/filemap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-3.4/mm/filemap.c -=================================================================== ---- linux-3.4.orig/mm/filemap.c -+++ linux-3.4/mm/filemap.c -@@ -2036,7 +2036,7 @@ size_t iov_iter_copy_from_user_atomic(st +diff --git a/mm/filemap.c b/mm/filemap.c +index 79c4b2b..51c34c0 100644 +--- a/mm/filemap.c ++++ b/mm/filemap.c +@@ -2036,7 +2036,7 @@ size_t iov_iter_copy_from_user_atomic(struct page *page, char *kaddr; size_t copied; diff --git a/debian/patches/features/all/rt/mm-remove-preempt-count-from-pf.patch b/debian/patches/features/all/rt/0037-mm-Remove-preempt-count-from-pagefault-disable-enabl.patch similarity index 74% rename from debian/patches/features/all/rt/mm-remove-preempt-count-from-pf.patch rename to debian/patches/features/all/rt/0037-mm-Remove-preempt-count-from-pagefault-disable-enabl.patch index 704087cc7..c3e2f4436 100644 --- a/debian/patches/features/all/rt/mm-remove-preempt-count-from-pf.patch +++ b/debian/patches/features/all/rt/0037-mm-Remove-preempt-count-from-pagefault-disable-enabl.patch @@ -1,6 +1,7 @@ +From 5adbe7138fa5471a76afc78ed6da9a830683e9d6 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sat, 25 Jul 2009 22:06:27 +0200 -Subject: mm: Remove preempt count from pagefault disable/enable +Subject: [037/254] mm: Remove preempt count from pagefault disable/enable Now that all users are cleaned up, we can remove the preemption count. @@ -9,10 +10,10 @@ Signed-off-by: Thomas Gleixner mm/memory.c | 7 ------- 1 file changed, 7 deletions(-) -Index: linux-3.4/mm/memory.c -=================================================================== ---- linux-3.4.orig/mm/memory.c -+++ linux-3.4/mm/memory.c +diff --git a/mm/memory.c b/mm/memory.c +index e996afe..346246c 100644 +--- a/mm/memory.c ++++ b/mm/memory.c @@ -3470,7 +3470,6 @@ unlock: #ifdef CONFIG_PREEMPT_RT_FULL void pagefault_disable(void) diff --git a/debian/patches/features/all/rt/x86-highmem-warn.patch b/debian/patches/features/all/rt/0038-x86-highmem-Replace-BUG_ON-by-WARN_ON.patch similarity index 64% rename from debian/patches/features/all/rt/x86-highmem-warn.patch rename to debian/patches/features/all/rt/0038-x86-highmem-Replace-BUG_ON-by-WARN_ON.patch index b02c61bec..2a75aba63 100644 --- a/debian/patches/features/all/rt/x86-highmem-warn.patch +++ b/debian/patches/features/all/rt/0038-x86-highmem-Replace-BUG_ON-by-WARN_ON.patch @@ -1,22 +1,22 @@ +From 9121461eb6ca676f87a8871ef8b45601953cf8d2 Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Fri, 3 Jul 2009 08:29:25 -0500 -Subject: x86: highmem: Replace BUG_ON by WARN_ON +Subject: [038/254] x86: highmem: Replace BUG_ON by WARN_ON The machine might survive that problem and be at least in a state which allows us to get more information about the problem. Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner - --- arch/x86/mm/highmem_32.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-3.4/arch/x86/mm/highmem_32.c -=================================================================== ---- linux-3.4.orig/arch/x86/mm/highmem_32.c -+++ linux-3.4/arch/x86/mm/highmem_32.c -@@ -43,7 +43,7 @@ void *kmap_atomic_prot(struct page *page +diff --git a/arch/x86/mm/highmem_32.c b/arch/x86/mm/highmem_32.c +index 6f31ee5..ab8683a 100644 +--- a/arch/x86/mm/highmem_32.c ++++ b/arch/x86/mm/highmem_32.c +@@ -43,7 +43,7 @@ void *kmap_atomic_prot(struct page *page, pgprot_t prot) type = kmap_atomic_idx_push(); idx = type + KM_TYPE_NR*smp_processor_id(); vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx); diff --git a/debian/patches/features/all/rt/suspend-prevernt-might-sleep-splats.patch b/debian/patches/features/all/rt/0039-suspend-Prevent-might-sleep-splats.patch similarity index 68% rename from debian/patches/features/all/rt/suspend-prevernt-might-sleep-splats.patch rename to debian/patches/features/all/rt/0039-suspend-Prevent-might-sleep-splats.patch index 69124730e..176ca52ab 100644 --- a/debian/patches/features/all/rt/suspend-prevernt-might-sleep-splats.patch +++ b/debian/patches/features/all/rt/0039-suspend-Prevent-might-sleep-splats.patch @@ -1,6 +1,7 @@ +From 91ecc11b80a93a7363ea04f1ecf3690539f60464 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Thu, 15 Jul 2010 10:29:00 +0200 -Subject: suspend: Prevent might sleep splats +Subject: [039/254] suspend: Prevent might sleep splats timekeeping suspend/resume calls read_persistant_clock() which takes rtc_lock. That results in might sleep warnings because at that point @@ -16,17 +17,16 @@ and restoring it to SYSTEM_RUNNING afer sysdev_resume(). Needs to be revisited. Signed-off-by: Thomas Gleixner - --- include/linux/kernel.h | 2 +- kernel/power/hibernate.c | 7 +++++++ kernel/power/suspend.c | 4 ++++ 3 files changed, 12 insertions(+), 1 deletion(-) -Index: linux-3.4/include/linux/kernel.h -=================================================================== ---- linux-3.4.orig/include/linux/kernel.h -+++ linux-3.4/include/linux/kernel.h +diff --git a/include/linux/kernel.h b/include/linux/kernel.h +index 645231c..e43a4a2 100644 +--- a/include/linux/kernel.h ++++ b/include/linux/kernel.h @@ -374,7 +374,7 @@ extern enum system_states { SYSTEM_HALT, SYSTEM_POWER_OFF, @@ -36,11 +36,11 @@ Index: linux-3.4/include/linux/kernel.h } system_state; #define TAINT_PROPRIETARY_MODULE 0 -Index: linux-3.4/kernel/power/hibernate.c -=================================================================== ---- linux-3.4.orig/kernel/power/hibernate.c -+++ linux-3.4/kernel/power/hibernate.c -@@ -270,6 +270,8 @@ static int create_image(int platform_mod +diff --git a/kernel/power/hibernate.c b/kernel/power/hibernate.c +index e09dfbf..1aa6e1f 100644 +--- a/kernel/power/hibernate.c ++++ b/kernel/power/hibernate.c +@@ -270,6 +270,8 @@ static int create_image(int platform_mode) local_irq_disable(); @@ -49,7 +49,7 @@ Index: linux-3.4/kernel/power/hibernate.c error = syscore_suspend(); if (error) { printk(KERN_ERR "PM: Some system devices failed to power down, " -@@ -297,6 +299,7 @@ static int create_image(int platform_mod +@@ -297,6 +299,7 @@ static int create_image(int platform_mode) syscore_resume(); Enable_irqs: @@ -57,7 +57,7 @@ Index: linux-3.4/kernel/power/hibernate.c local_irq_enable(); Enable_cpus: -@@ -420,6 +423,7 @@ static int resume_target_kernel(bool pla +@@ -420,6 +423,7 @@ static int resume_target_kernel(bool platform_mode) goto Enable_cpus; local_irq_disable(); @@ -65,7 +65,7 @@ Index: linux-3.4/kernel/power/hibernate.c error = syscore_suspend(); if (error) -@@ -453,6 +457,7 @@ static int resume_target_kernel(bool pla +@@ -453,6 +457,7 @@ static int resume_target_kernel(bool platform_mode) syscore_resume(); Enable_irqs: @@ -89,11 +89,11 @@ Index: linux-3.4/kernel/power/hibernate.c local_irq_enable(); enable_nonboot_cpus(); -Index: linux-3.4/kernel/power/suspend.c -=================================================================== ---- linux-3.4.orig/kernel/power/suspend.c -+++ linux-3.4/kernel/power/suspend.c -@@ -164,6 +164,8 @@ static int suspend_enter(suspend_state_t +diff --git a/kernel/power/suspend.c b/kernel/power/suspend.c +index 396d262..d4fb331 100644 +--- a/kernel/power/suspend.c ++++ b/kernel/power/suspend.c +@@ -164,6 +164,8 @@ static int suspend_enter(suspend_state_t state, bool *wakeup) arch_suspend_disable_irqs(); BUG_ON(!irqs_disabled()); @@ -102,7 +102,7 @@ Index: linux-3.4/kernel/power/suspend.c error = syscore_suspend(); if (!error) { *wakeup = pm_wakeup_pending(); -@@ -174,6 +176,8 @@ static int suspend_enter(suspend_state_t +@@ -174,6 +176,8 @@ static int suspend_enter(suspend_state_t state, bool *wakeup) syscore_resume(); } diff --git a/debian/patches/features/all/rt/of-fixup-recursive-locking.patch b/debian/patches/features/all/rt/0040-OF-Fixup-resursive-locking-code-paths.patch similarity index 86% rename from debian/patches/features/all/rt/of-fixup-recursive-locking.patch rename to debian/patches/features/all/rt/0040-OF-Fixup-resursive-locking-code-paths.patch index 58d059e8e..eeb590927 100644 --- a/debian/patches/features/all/rt/of-fixup-recursive-locking.patch +++ b/debian/patches/features/all/rt/0040-OF-Fixup-resursive-locking-code-paths.patch @@ -1,6 +1,7 @@ +From 620d883578127ede97fdf68b5680f97a6e740666 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Thu, 13 Aug 2009 09:04:10 +0200 -Subject: OF: Fixup resursive locking code paths +Subject: [040/254] OF: Fixup resursive locking code paths There is no real reason to use a rwlock for devtree_lock. It even could be a mutex, but unfortunately it's locked from cpu hotplug @@ -12,16 +13,15 @@ recursive locking pathes which allows us to convert devtree_lock to a read_lock. Signed-off-by: Thomas Gleixner - --- - drivers/of/base.c | 93 +++++++++++++++++++++++++++++++++++++++++------------- + drivers/of/base.c | 93 ++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 71 insertions(+), 22 deletions(-) -Index: linux-3.4/drivers/of/base.c -=================================================================== ---- linux-3.4.orig/drivers/of/base.c -+++ linux-3.4/drivers/of/base.c -@@ -163,16 +163,14 @@ void of_node_put(struct device_node *nod +diff --git a/drivers/of/base.c b/drivers/of/base.c +index 5806449..043ab4d 100644 +--- a/drivers/of/base.c ++++ b/drivers/of/base.c +@@ -163,16 +163,14 @@ void of_node_put(struct device_node *node) EXPORT_SYMBOL(of_node_put); #endif /* CONFIG_OF_DYNAMIC */ @@ -40,7 +40,7 @@ Index: linux-3.4/drivers/of/base.c for (pp = np->properties; pp != 0; pp = pp->next) { if (of_prop_cmp(pp->name, name) == 0) { if (lenp != 0) -@@ -180,6 +178,18 @@ struct property *of_find_property(const +@@ -180,6 +178,18 @@ struct property *of_find_property(const struct device_node *np, break; } } @@ -99,7 +99,7 @@ Index: linux-3.4/drivers/of/base.c if (cp == NULL) return 0; while (cplen > 0) { -@@ -244,6 +266,20 @@ int of_device_is_compatible(const struct +@@ -244,6 +266,20 @@ int of_device_is_compatible(const struct device_node *device, return 0; } @@ -120,7 +120,7 @@ Index: linux-3.4/drivers/of/base.c EXPORT_SYMBOL(of_device_is_compatible); /** -@@ -467,7 +503,8 @@ struct device_node *of_find_compatible_n +@@ -467,7 +503,8 @@ struct device_node *of_find_compatible_node(struct device_node *from, if (type && !(np->type && (of_node_cmp(np->type, type) == 0))) continue; @@ -149,7 +149,7 @@ Index: linux-3.4/drivers/of/base.c { if (!matches) return NULL; -@@ -533,14 +564,32 @@ const struct of_device_id *of_match_node +@@ -533,14 +564,32 @@ const struct of_device_id *of_match_node(const struct of_device_id *matches, match &= node->type && !strcmp(matches->type, node->type); if (matches->compatible[0]) @@ -184,7 +184,7 @@ Index: linux-3.4/drivers/of/base.c EXPORT_SYMBOL(of_match_node); /** -@@ -563,7 +612,7 @@ struct device_node *of_find_matching_nod +@@ -563,7 +612,7 @@ struct device_node *of_find_matching_node(struct device_node *from, read_lock(&devtree_lock); np = from ? from->allnext : allnodes; for (; np; np = np->allnext) { diff --git a/debian/patches/features/all/rt/of-convert-devtree-lock.patch b/debian/patches/features/all/rt/0041-of-convert-devtree-lock.patch.patch similarity index 77% rename from debian/patches/features/all/rt/of-convert-devtree-lock.patch rename to debian/patches/features/all/rt/0041-of-convert-devtree-lock.patch.patch index 865a78d7e..1fa2bfd29 100644 --- a/debian/patches/features/all/rt/of-convert-devtree-lock.patch +++ b/debian/patches/features/all/rt/0041-of-convert-devtree-lock.patch.patch @@ -1,19 +1,20 @@ -Subject: of-convert-devtree-lock.patch +From 1f8425bef1116afdae24ef7b51803528f9be8cd5 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Mon, 21 Mar 2011 14:35:34 +0100 +Subject: [041/254] of-convert-devtree-lock.patch Signed-off-by: Thomas Gleixner --- - arch/sparc/kernel/prom_common.c | 4 - - drivers/of/base.c | 92 ++++++++++++++++++++++------------------ - include/linux/of.h | 2 + arch/sparc/kernel/prom_common.c | 4 +- + drivers/of/base.c | 92 ++++++++++++++++++++++----------------- + include/linux/of.h | 2 +- 3 files changed, 55 insertions(+), 43 deletions(-) -Index: linux-3.4/arch/sparc/kernel/prom_common.c -=================================================================== ---- linux-3.4.orig/arch/sparc/kernel/prom_common.c -+++ linux-3.4/arch/sparc/kernel/prom_common.c -@@ -65,7 +65,7 @@ int of_set_property(struct device_node * +diff --git a/arch/sparc/kernel/prom_common.c b/arch/sparc/kernel/prom_common.c +index 741df91..ca73a28 100644 +--- a/arch/sparc/kernel/prom_common.c ++++ b/arch/sparc/kernel/prom_common.c +@@ -65,7 +65,7 @@ int of_set_property(struct device_node *dp, const char *name, void *val, int len err = -ENODEV; mutex_lock(&of_set_property_mutex); @@ -22,7 +23,7 @@ Index: linux-3.4/arch/sparc/kernel/prom_common.c prevp = &dp->properties; while (*prevp) { struct property *prop = *prevp; -@@ -92,7 +92,7 @@ int of_set_property(struct device_node * +@@ -92,7 +92,7 @@ int of_set_property(struct device_node *dp, const char *name, void *val, int len } prevp = &(*prevp)->next; } @@ -31,10 +32,10 @@ Index: linux-3.4/arch/sparc/kernel/prom_common.c mutex_unlock(&of_set_property_mutex); /* XXX Upate procfs if necessary... */ -Index: linux-3.4/drivers/of/base.c -=================================================================== ---- linux-3.4.orig/drivers/of/base.c -+++ linux-3.4/drivers/of/base.c +diff --git a/drivers/of/base.c b/drivers/of/base.c +index 043ab4d..b385c39 100644 +--- a/drivers/of/base.c ++++ b/drivers/of/base.c @@ -54,7 +54,7 @@ static DEFINE_MUTEX(of_aliases_mutex); /* use when traversing tree through the allnext, child, sibling, * or parent members of struct device_node. @@ -44,7 +45,7 @@ Index: linux-3.4/drivers/of/base.c int of_n_addr_cells(struct device_node *np) { -@@ -187,10 +187,11 @@ struct property *of_find_property(const +@@ -187,10 +187,11 @@ struct property *of_find_property(const struct device_node *np, int *lenp) { struct property *pp; @@ -58,7 +59,7 @@ Index: linux-3.4/drivers/of/base.c return pp; } -@@ -208,13 +209,13 @@ struct device_node *of_find_all_nodes(st +@@ -208,13 +209,13 @@ struct device_node *of_find_all_nodes(struct device_node *prev) { struct device_node *np; @@ -74,7 +75,7 @@ Index: linux-3.4/drivers/of/base.c return np; } EXPORT_SYMBOL(of_find_all_nodes); -@@ -273,11 +274,12 @@ static int __of_device_is_compatible(con +@@ -273,11 +274,12 @@ static int __of_device_is_compatible(const struct device_node *device, int of_device_is_compatible(const struct device_node *device, const char *compat) { @@ -124,7 +125,7 @@ Index: linux-3.4/drivers/of/base.c return parent; } -@@ -387,14 +391,15 @@ struct device_node *of_get_next_child(co +@@ -387,14 +391,15 @@ struct device_node *of_get_next_child(const struct device_node *node, struct device_node *prev) { struct device_node *next; @@ -160,7 +161,7 @@ Index: linux-3.4/drivers/of/base.c return np; } EXPORT_SYMBOL(of_find_node_by_path); -@@ -436,15 +442,16 @@ struct device_node *of_find_node_by_name +@@ -436,15 +442,16 @@ struct device_node *of_find_node_by_name(struct device_node *from, const char *name) { struct device_node *np; @@ -179,7 +180,7 @@ Index: linux-3.4/drivers/of/base.c return np; } EXPORT_SYMBOL(of_find_node_by_name); -@@ -465,15 +472,16 @@ struct device_node *of_find_node_by_type +@@ -465,15 +472,16 @@ struct device_node *of_find_node_by_type(struct device_node *from, const char *type) { struct device_node *np; @@ -198,7 +199,7 @@ Index: linux-3.4/drivers/of/base.c return np; } EXPORT_SYMBOL(of_find_node_by_type); -@@ -496,8 +504,9 @@ struct device_node *of_find_compatible_n +@@ -496,8 +504,9 @@ struct device_node *of_find_compatible_node(struct device_node *from, const char *type, const char *compatible) { struct device_node *np; @@ -209,7 +210,7 @@ Index: linux-3.4/drivers/of/base.c np = from ? from->allnext : allnodes; for (; np; np = np->allnext) { if (type -@@ -508,7 +517,7 @@ struct device_node *of_find_compatible_n +@@ -508,7 +517,7 @@ struct device_node *of_find_compatible_node(struct device_node *from, break; } of_node_put(from); @@ -218,7 +219,7 @@ Index: linux-3.4/drivers/of/base.c return np; } EXPORT_SYMBOL(of_find_compatible_node); -@@ -530,8 +539,9 @@ struct device_node *of_find_node_with_pr +@@ -530,8 +539,9 @@ struct device_node *of_find_node_with_property(struct device_node *from, { struct device_node *np; struct property *pp; @@ -229,7 +230,7 @@ Index: linux-3.4/drivers/of/base.c np = from ? from->allnext : allnodes; for (; np; np = np->allnext) { for (pp = np->properties; pp != 0; pp = pp->next) { -@@ -543,7 +553,7 @@ struct device_node *of_find_node_with_pr +@@ -543,7 +553,7 @@ struct device_node *of_find_node_with_property(struct device_node *from, } out: of_node_put(from); @@ -238,7 +239,7 @@ Index: linux-3.4/drivers/of/base.c return np; } EXPORT_SYMBOL(of_find_node_with_property); -@@ -584,10 +594,11 @@ const struct of_device_id *of_match_node +@@ -584,10 +594,11 @@ const struct of_device_id *of_match_node(const struct of_device_id *matches, const struct device_node *node) { const struct of_device_id *match; @@ -252,7 +253,7 @@ Index: linux-3.4/drivers/of/base.c return match; } EXPORT_SYMBOL(of_match_node); -@@ -608,15 +619,16 @@ struct device_node *of_find_matching_nod +@@ -608,15 +619,16 @@ struct device_node *of_find_matching_node(struct device_node *from, const struct of_device_id *matches) { struct device_node *np; @@ -271,7 +272,7 @@ Index: linux-3.4/drivers/of/base.c return np; } EXPORT_SYMBOL(of_find_matching_node); -@@ -659,12 +671,12 @@ struct device_node *of_find_node_by_phan +@@ -659,12 +671,12 @@ struct device_node *of_find_node_by_phandle(phandle handle) { struct device_node *np; @@ -286,7 +287,7 @@ Index: linux-3.4/drivers/of/base.c return np; } EXPORT_SYMBOL(of_find_node_by_phandle); -@@ -1036,18 +1048,18 @@ int prom_add_property(struct device_node +@@ -1036,18 +1048,18 @@ int prom_add_property(struct device_node *np, struct property *prop) unsigned long flags; prop->next = NULL; @@ -308,7 +309,7 @@ Index: linux-3.4/drivers/of/base.c #ifdef CONFIG_PROC_DEVICETREE /* try to add to proc as well if it was initialized */ -@@ -1072,7 +1084,7 @@ int prom_remove_property(struct device_n +@@ -1072,7 +1084,7 @@ int prom_remove_property(struct device_node *np, struct property *prop) unsigned long flags; int found = 0; @@ -317,7 +318,7 @@ Index: linux-3.4/drivers/of/base.c next = &np->properties; while (*next) { if (*next == prop) { -@@ -1085,7 +1097,7 @@ int prom_remove_property(struct device_n +@@ -1085,7 +1097,7 @@ int prom_remove_property(struct device_node *np, struct property *prop) } next = &(*next)->next; } @@ -326,7 +327,7 @@ Index: linux-3.4/drivers/of/base.c if (!found) return -ENODEV; -@@ -1115,7 +1127,7 @@ int prom_update_property(struct device_n +@@ -1115,7 +1127,7 @@ int prom_update_property(struct device_node *np, unsigned long flags; int found = 0; @@ -335,7 +336,7 @@ Index: linux-3.4/drivers/of/base.c next = &np->properties; while (*next) { if (*next == oldprop) { -@@ -1129,7 +1141,7 @@ int prom_update_property(struct device_n +@@ -1129,7 +1141,7 @@ int prom_update_property(struct device_node *np, } next = &(*next)->next; } @@ -344,7 +345,7 @@ Index: linux-3.4/drivers/of/base.c if (!found) return -ENODEV; -@@ -1159,12 +1171,12 @@ void of_attach_node(struct device_node * +@@ -1159,12 +1171,12 @@ void of_attach_node(struct device_node *np) { unsigned long flags; @@ -359,7 +360,7 @@ Index: linux-3.4/drivers/of/base.c } /** -@@ -1178,7 +1190,7 @@ void of_detach_node(struct device_node * +@@ -1178,7 +1190,7 @@ void of_detach_node(struct device_node *np) struct device_node *parent; unsigned long flags; @@ -368,7 +369,7 @@ Index: linux-3.4/drivers/of/base.c parent = np->parent; if (!parent) -@@ -1209,7 +1221,7 @@ void of_detach_node(struct device_node * +@@ -1209,7 +1221,7 @@ void of_detach_node(struct device_node *np) of_node_set_flag(np, OF_DETACHED); out_unlock: @@ -377,11 +378,11 @@ Index: linux-3.4/drivers/of/base.c } #endif /* defined(CONFIG_OF_DYNAMIC) */ -Index: linux-3.4/include/linux/of.h -=================================================================== ---- linux-3.4.orig/include/linux/of.h -+++ linux-3.4/include/linux/of.h -@@ -90,7 +90,7 @@ static inline void of_node_put(struct de +diff --git a/include/linux/of.h b/include/linux/of.h +index fa7fb1d..a7a948f 100644 +--- a/include/linux/of.h ++++ b/include/linux/of.h +@@ -90,7 +90,7 @@ static inline void of_node_put(struct device_node *node) { } extern struct device_node *allnodes; extern struct device_node *of_chosen; extern struct device_node *of_aliases; diff --git a/debian/patches/features/all/rt/list-add-list-last-entry.patch b/debian/patches/features/all/rt/0042-list-add-list-last-entry.patch.patch similarity index 68% rename from debian/patches/features/all/rt/list-add-list-last-entry.patch rename to debian/patches/features/all/rt/0042-list-add-list-last-entry.patch.patch index a1442d864..cabcd5e03 100644 --- a/debian/patches/features/all/rt/list-add-list-last-entry.patch +++ b/debian/patches/features/all/rt/0042-list-add-list-last-entry.patch.patch @@ -1,17 +1,18 @@ -Subject: list-add-list-last-entry.patch +From d012b82915f534d4aa97b52f55df9720324d3558 Mon Sep 17 00:00:00 2001 From: Peter Zijlstra Date: Tue, 21 Jun 2011 11:22:36 +0200 +Subject: [042/254] list-add-list-last-entry.patch Signed-off-by: Thomas Gleixner --- include/linux/list.h | 11 +++++++++++ 1 file changed, 11 insertions(+) -Index: linux-3.4/include/linux/list.h -=================================================================== ---- linux-3.4.orig/include/linux/list.h -+++ linux-3.4/include/linux/list.h -@@ -362,6 +362,17 @@ static inline void list_splice_tail_init +diff --git a/include/linux/list.h b/include/linux/list.h +index cc6d2aa..7a9851b 100644 +--- a/include/linux/list.h ++++ b/include/linux/list.h +@@ -362,6 +362,17 @@ static inline void list_splice_tail_init(struct list_head *list, list_entry((ptr)->next, type, member) /** diff --git a/debian/patches/features/all/rt/mm-page-alloc-use-list-last-entry.patch b/debian/patches/features/all/rt/0043-mm-page-alloc-use-list-last-entry.patch.patch similarity index 60% rename from debian/patches/features/all/rt/mm-page-alloc-use-list-last-entry.patch rename to debian/patches/features/all/rt/0043-mm-page-alloc-use-list-last-entry.patch.patch index 99caee233..30fa8689c 100644 --- a/debian/patches/features/all/rt/mm-page-alloc-use-list-last-entry.patch +++ b/debian/patches/features/all/rt/0043-mm-page-alloc-use-list-last-entry.patch.patch @@ -1,17 +1,18 @@ -Subject: mm-page-alloc-use-list-last-entry.patch +From da3cc497e78fb4f0b58d8d4282b66f5fc95091cc Mon Sep 17 00:00:00 2001 From: Peter Zijlstra Date: Tue, 21 Jun 2011 11:24:35 +0200 +Subject: [043/254] mm-page-alloc-use-list-last-entry.patch Signed-off-by: Thomas Gleixner --- mm/page_alloc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-3.4/mm/page_alloc.c -=================================================================== ---- linux-3.4.orig/mm/page_alloc.c -+++ linux-3.4/mm/page_alloc.c -@@ -663,7 +663,7 @@ static void free_pcppages_bulk(struct zo +diff --git a/mm/page_alloc.c b/mm/page_alloc.c +index 918330f..b27e8cb 100644 +--- a/mm/page_alloc.c ++++ b/mm/page_alloc.c +@@ -663,7 +663,7 @@ static void free_pcppages_bulk(struct zone *zone, int count, batch_free = to_free; do { diff --git a/debian/patches/features/all/rt/mm-slab-move-debug-out.patch b/debian/patches/features/all/rt/0044-mm-slab-move-debug-out.patch.patch similarity index 80% rename from debian/patches/features/all/rt/mm-slab-move-debug-out.patch rename to debian/patches/features/all/rt/0044-mm-slab-move-debug-out.patch.patch index 6071f1ed6..c67866d53 100644 --- a/debian/patches/features/all/rt/mm-slab-move-debug-out.patch +++ b/debian/patches/features/all/rt/0044-mm-slab-move-debug-out.patch.patch @@ -1,17 +1,18 @@ -Subject: mm-slab-move-debug-out.patch +From 6628ee8ecd1c2c1b2b8b78106f01092f2dfea815 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Mon, 20 Jun 2011 10:42:04 +0200 +Subject: [044/254] mm-slab-move-debug-out.patch Signed-off-by: Thomas Gleixner --- mm/slab.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -Index: linux-3.4/mm/slab.c -=================================================================== ---- linux-3.4.orig/mm/slab.c -+++ linux-3.4/mm/slab.c -@@ -3919,10 +3919,10 @@ void kmem_cache_free(struct kmem_cache * +diff --git a/mm/slab.c b/mm/slab.c +index 1fd4b4d..80c57f9 100644 +--- a/mm/slab.c ++++ b/mm/slab.c +@@ -3919,10 +3919,10 @@ void kmem_cache_free(struct kmem_cache *cachep, void *objp) { unsigned long flags; diff --git a/debian/patches/features/all/rt/pid-h-include-atomic-h.patch b/debian/patches/features/all/rt/0045-rwsem-inlcude-fix.patch.patch similarity index 55% rename from debian/patches/features/all/rt/pid-h-include-atomic-h.patch rename to debian/patches/features/all/rt/0045-rwsem-inlcude-fix.patch.patch index 324444eaf..c75e09c30 100644 --- a/debian/patches/features/all/rt/pid-h-include-atomic-h.patch +++ b/debian/patches/features/all/rt/0045-rwsem-inlcude-fix.patch.patch @@ -1,16 +1,17 @@ -Subject: rwsem-inlcude-fix.patch +From cfe78ee4abb2da46d27408196293ff563c1c5070 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 15 Jul 2011 21:24:27 +0200 +Subject: [045/254] rwsem-inlcude-fix.patch Signed-off-by: Thomas Gleixner --- include/linux/pid.h | 1 + 1 file changed, 1 insertion(+) -Index: linux-3.4/include/linux/pid.h -=================================================================== ---- linux-3.4.orig/include/linux/pid.h -+++ linux-3.4/include/linux/pid.h +diff --git a/include/linux/pid.h b/include/linux/pid.h +index b152d44..7f33683 100644 +--- a/include/linux/pid.h ++++ b/include/linux/pid.h @@ -2,6 +2,7 @@ #define _LINUX_PID_H diff --git a/debian/patches/features/all/rt/sysctl-include-atomic-h.patch b/debian/patches/features/all/rt/0046-sysctl-include-fix.patch.patch similarity index 59% rename from debian/patches/features/all/rt/sysctl-include-atomic-h.patch rename to debian/patches/features/all/rt/0046-sysctl-include-fix.patch.patch index 6987ea72a..26bff203b 100644 --- a/debian/patches/features/all/rt/sysctl-include-atomic-h.patch +++ b/debian/patches/features/all/rt/0046-sysctl-include-fix.patch.patch @@ -1,16 +1,17 @@ -Subject: sysctl-include-fix.patch +From cccc6e1c179f2f86eb875b6b6b25bb1dc5dc5cd6 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Mon, 14 Nov 2011 10:52:34 +0100 +Subject: [046/254] sysctl-include-fix.patch Signed-off-by: Thomas Gleixner --- include/linux/sysctl.h | 1 + 1 file changed, 1 insertion(+) -Index: linux-3.4/include/linux/sysctl.h -=================================================================== ---- linux-3.4.orig/include/linux/sysctl.h -+++ linux-3.4/include/linux/sysctl.h +diff --git a/include/linux/sysctl.h b/include/linux/sysctl.h +index c34b4c8..4fbc9f7 100644 +--- a/include/linux/sysctl.h ++++ b/include/linux/sysctl.h @@ -933,6 +933,7 @@ enum #include #include diff --git a/debian/patches/features/all/rt/net-flip-lock-dep-thingy.patch b/debian/patches/features/all/rt/0047-net-flip-lock-dep-thingy.patch.patch similarity index 93% rename from debian/patches/features/all/rt/net-flip-lock-dep-thingy.patch rename to debian/patches/features/all/rt/0047-net-flip-lock-dep-thingy.patch.patch index 68d5ab63e..8fcfe3616 100644 --- a/debian/patches/features/all/rt/net-flip-lock-dep-thingy.patch +++ b/debian/patches/features/all/rt/0047-net-flip-lock-dep-thingy.patch.patch @@ -1,6 +1,7 @@ -Subject: net-flip-lock-dep-thingy.patch +From 151adf90bc18c13330021feb5951652b30d0fd14 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Tue, 28 Jun 2011 10:59:58 +0200 +Subject: [047/254] net-flip-lock-dep-thingy.patch ======================================================= [ INFO: possible circular locking dependency detected ] @@ -14,7 +15,6 @@ but task is already holding lock: which lock already depends on the new lock. - the existing dependency chain (in reverse order) is: -> #1 (sk_lock-AF_INET){+.+...}: @@ -87,17 +87,16 @@ Call Trace: [] sys_close+0xf8/0x13d [] system_call_fastpath+0x16/0x1b - Signed-off-by: Thomas Gleixner --- net/core/sock.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) -Index: linux-3.4/net/core/sock.c -=================================================================== ---- linux-3.4.orig/net/core/sock.c -+++ linux-3.4/net/core/sock.c -@@ -2139,12 +2139,11 @@ void lock_sock_nested(struct sock *sk, i +diff --git a/net/core/sock.c b/net/core/sock.c +index b2e14c0..5cd7df1 100644 +--- a/net/core/sock.c ++++ b/net/core/sock.c +@@ -2139,12 +2139,11 @@ void lock_sock_nested(struct sock *sk, int subclass) if (sk->sk_lock.owned) __lock_sock(sk); sk->sk_lock.owned = 1; diff --git a/debian/patches/features/all/rt/softirq-thread-do-softirq.patch b/debian/patches/features/all/rt/0048-softirq-thread-do-softirq.patch.patch similarity index 62% rename from debian/patches/features/all/rt/softirq-thread-do-softirq.patch rename to debian/patches/features/all/rt/0048-softirq-thread-do-softirq.patch.patch index 418233dc7..414d707af 100644 --- a/debian/patches/features/all/rt/softirq-thread-do-softirq.patch +++ b/debian/patches/features/all/rt/0048-softirq-thread-do-softirq.patch.patch @@ -1,6 +1,7 @@ -Subject: softirq-thread-do-softirq.patch +From 55dfa7c3b0b2cd69dafe6a09c927770eb8456d97 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Tue, 28 Jun 2011 15:44:15 +0200 +Subject: [048/254] softirq-thread-do-softirq.patch Signed-off-by: Thomas Gleixner --- @@ -8,10 +9,10 @@ Signed-off-by: Thomas Gleixner net/core/dev.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) -Index: linux-3.4/include/linux/interrupt.h -=================================================================== ---- linux-3.4.orig/include/linux/interrupt.h -+++ linux-3.4/include/linux/interrupt.h +diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h +index 2aea5d2..02c3c4f 100644 +--- a/include/linux/interrupt.h ++++ b/include/linux/interrupt.h @@ -452,6 +452,7 @@ struct softirq_action asmlinkage void do_softirq(void); @@ -20,11 +21,11 @@ Index: linux-3.4/include/linux/interrupt.h extern void open_softirq(int nr, void (*action)(struct softirq_action *)); extern void softirq_init(void); extern void __raise_softirq_irqoff(unsigned int nr); -Index: linux-3.4/net/core/dev.c -=================================================================== ---- linux-3.4.orig/net/core/dev.c -+++ linux-3.4/net/core/dev.c -@@ -2989,7 +2989,7 @@ int netif_rx_ni(struct sk_buff *skb) +diff --git a/net/core/dev.c b/net/core/dev.c +index 99e1d75..ca7a845 100644 +--- a/net/core/dev.c ++++ b/net/core/dev.c +@@ -2963,7 +2963,7 @@ int netif_rx_ni(struct sk_buff *skb) preempt_disable(); err = netif_rx(skb); if (local_softirq_pending()) diff --git a/debian/patches/features/all/rt/softirq-split-out-code.patch b/debian/patches/features/all/rt/0049-softirq-split-out-code.patch.patch similarity index 92% rename from debian/patches/features/all/rt/softirq-split-out-code.patch rename to debian/patches/features/all/rt/0049-softirq-split-out-code.patch.patch index 5f8477a14..4afd7d9ea 100644 --- a/debian/patches/features/all/rt/softirq-split-out-code.patch +++ b/debian/patches/features/all/rt/0049-softirq-split-out-code.patch.patch @@ -1,16 +1,17 @@ -Subject: softirq-split-out-code.patch +From 8435c5d5b1f70508029be351eb107c441ef8ae42 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Tue, 28 Jun 2011 15:46:49 +0200 +Subject: [049/254] softirq-split-out-code.patch Signed-off-by: Thomas Gleixner --- - kernel/softirq.c | 94 ++++++++++++++++++++++++++++++------------------------- + kernel/softirq.c | 94 ++++++++++++++++++++++++++++++------------------------ 1 file changed, 52 insertions(+), 42 deletions(-) -Index: linux-3.4/kernel/softirq.c -=================================================================== ---- linux-3.4.orig/kernel/softirq.c -+++ linux-3.4/kernel/softirq.c +diff --git a/kernel/softirq.c b/kernel/softirq.c +index 671f959..6ec3a78 100644 +--- a/kernel/softirq.c ++++ b/kernel/softirq.c @@ -76,6 +76,34 @@ static void wakeup_softirqd(void) wake_up_process(tsk); } @@ -128,7 +129,7 @@ Index: linux-3.4/kernel/softirq.c #ifndef __ARCH_HAS_DO_SOFTIRQ asmlinkage void do_softirq(void) -@@ -739,22 +757,14 @@ static int run_ksoftirqd(void * __bind_c +@@ -739,22 +757,14 @@ static int run_ksoftirqd(void * __bind_cpu) while (!kthread_should_stop()) { preempt_disable(); diff --git a/debian/patches/features/all/rt/x86-io-apic-migra-no-unmask.patch b/debian/patches/features/all/rt/0050-x86-Do-not-unmask-io_apic-when-interrupt-is-in-progr.patch similarity index 69% rename from debian/patches/features/all/rt/x86-io-apic-migra-no-unmask.patch rename to debian/patches/features/all/rt/0050-x86-Do-not-unmask-io_apic-when-interrupt-is-in-progr.patch index 81be43ac0..6057a96fd 100644 --- a/debian/patches/features/all/rt/x86-io-apic-migra-no-unmask.patch +++ b/debian/patches/features/all/rt/0050-x86-Do-not-unmask-io_apic-when-interrupt-is-in-progr.patch @@ -1,21 +1,21 @@ +From dc583a9caa9fe448090c43e8676771f7e40c6b26 Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Fri, 3 Jul 2009 08:29:27 -0500 -Subject: x86: Do not unmask io_apic when interrupt is in progress +Subject: [050/254] x86: Do not unmask io_apic when interrupt is in progress With threaded interrupts we might see an interrupt in progress on migration. Do not unmask it when this is the case. Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner - --- arch/x86/kernel/apic/io_apic.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) -Index: linux-3.4/arch/x86/kernel/apic/io_apic.c -=================================================================== ---- linux-3.4.orig/arch/x86/kernel/apic/io_apic.c -+++ linux-3.4/arch/x86/kernel/apic/io_apic.c +diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c +index e88300d..01c76a0 100644 +--- a/arch/x86/kernel/apic/io_apic.c ++++ b/arch/x86/kernel/apic/io_apic.c @@ -2555,7 +2555,8 @@ atomic_t irq_mis_count; static inline bool ioapic_irqd_mask(struct irq_data *data, struct irq_cfg *cfg) { diff --git a/debian/patches/features/all/rt/fix-rt-int3-x86_32-3.2-rt.patch b/debian/patches/features/all/rt/0051-x86-Do-not-disable-preemption-in-int3-on-32bit.patch similarity index 78% rename from debian/patches/features/all/rt/fix-rt-int3-x86_32-3.2-rt.patch rename to debian/patches/features/all/rt/0051-x86-Do-not-disable-preemption-in-int3-on-32bit.patch index 3aa29129f..0258c6cfd 100644 --- a/debian/patches/features/all/rt/fix-rt-int3-x86_32-3.2-rt.patch +++ b/debian/patches/features/all/rt/0051-x86-Do-not-disable-preemption-in-int3-on-32bit.patch @@ -1,5 +1,7 @@ -Subject: x86: Do not disable preemption in int3 on 32bit +From b4e3989d81377888d751bed2c4b0c3b7c614b6ec Mon Sep 17 00:00:00 2001 From: Steven Rostedt +Date: Thu, 7 Jun 2012 07:46:49 -0400 +Subject: [051/254] x86: Do not disable preemption in int3 on 32bit Preemption must be disabled before enabling interrupts in do_trap on x86_64 because the stack in use for int3 and debug is a per CPU @@ -17,16 +19,15 @@ when the stack is on the IST. Cc: stable-rt@vger.kernel.org Signed-off-by: Steven Rostedt Signed-off-by: Thomas Gleixner - --- arch/x86/kernel/traps.c | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) -Index: linux-3.4/arch/x86/kernel/traps.c -=================================================================== ---- linux-3.4.orig/arch/x86/kernel/traps.c -+++ linux-3.4/arch/x86/kernel/traps.c -@@ -87,9 +87,21 @@ static inline void conditional_sti(struc +diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c +index ff9281f1..0b01977 100644 +--- a/arch/x86/kernel/traps.c ++++ b/arch/x86/kernel/traps.c +@@ -87,9 +87,21 @@ static inline void conditional_sti(struct pt_regs *regs) local_irq_enable(); } @@ -49,7 +50,7 @@ Index: linux-3.4/arch/x86/kernel/traps.c if (regs->flags & X86_EFLAGS_IF) local_irq_enable(); } -@@ -100,11 +112,13 @@ static inline void conditional_cli(struc +@@ -100,11 +112,13 @@ static inline void conditional_cli(struct pt_regs *regs) local_irq_disable(); } @@ -64,7 +65,7 @@ Index: linux-3.4/arch/x86/kernel/traps.c } static void __kprobes -@@ -226,9 +240,9 @@ dotraplinkage void do_stack_segment(stru +@@ -226,9 +240,9 @@ dotraplinkage void do_stack_segment(struct pt_regs *regs, long error_code) if (notify_die(DIE_TRAP, "stack segment", regs, error_code, X86_TRAP_SS, SIGBUS) == NOTIFY_STOP) return; @@ -76,7 +77,7 @@ Index: linux-3.4/arch/x86/kernel/traps.c } dotraplinkage void do_double_fault(struct pt_regs *regs, long error_code) -@@ -320,9 +334,9 @@ dotraplinkage void __kprobes do_int3(str +@@ -320,9 +334,9 @@ dotraplinkage void __kprobes do_int3(struct pt_regs *regs, long error_code) * as we may switch to the interrupt stack. */ debug_stack_usage_inc(); @@ -88,7 +89,7 @@ Index: linux-3.4/arch/x86/kernel/traps.c debug_stack_usage_dec(); } -@@ -423,12 +437,12 @@ dotraplinkage void __kprobes do_debug(st +@@ -423,12 +437,12 @@ dotraplinkage void __kprobes do_debug(struct pt_regs *regs, long error_code) debug_stack_usage_inc(); /* It's safe to allow irq's after DR6 has been saved */ @@ -103,7 +104,7 @@ Index: linux-3.4/arch/x86/kernel/traps.c debug_stack_usage_dec(); return; } -@@ -448,7 +462,7 @@ dotraplinkage void __kprobes do_debug(st +@@ -448,7 +462,7 @@ dotraplinkage void __kprobes do_debug(struct pt_regs *regs, long error_code) si_code = get_si_code(tsk->thread.debugreg6); if (tsk->thread.debugreg6 & (DR_STEP | DR_TRAP_BITS) || user_icebp) send_sigtrap(tsk, regs, error_code, si_code); diff --git a/debian/patches/features/all/rt/locking-various-init-fixes.patch b/debian/patches/features/all/rt/0052-locking-various-init-fixes.patch.patch similarity index 65% rename from debian/patches/features/all/rt/locking-various-init-fixes.patch rename to debian/patches/features/all/rt/0052-locking-various-init-fixes.patch.patch index 358eec475..900955172 100644 --- a/debian/patches/features/all/rt/locking-various-init-fixes.patch +++ b/debian/patches/features/all/rt/0052-locking-various-init-fixes.patch.patch @@ -1,6 +1,7 @@ -Subject: locking-various-init-fixes.patch +From 87ae23ee1db2fb22ffc9b5cac614fa709e867953 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sun, 17 Jul 2011 21:25:03 +0200 +Subject: [052/254] locking-various-init-fixes.patch Signed-off-by: Thomas Gleixner --- @@ -11,11 +12,11 @@ Signed-off-by: Thomas Gleixner kernel/cred.c | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) -Index: linux-3.4/drivers/char/random.c -=================================================================== ---- linux-3.4.orig/drivers/char/random.c -+++ linux-3.4/drivers/char/random.c -@@ -433,7 +433,7 @@ static struct entropy_store input_pool = +diff --git a/drivers/char/random.c b/drivers/char/random.c +index 1e37cf4..85b9419b1 100644 +--- a/drivers/char/random.c ++++ b/drivers/char/random.c +@@ -433,7 +433,7 @@ static struct entropy_store input_pool = { .poolinfo = &poolinfo_table[0], .name = "input", .limit = 1, @@ -24,7 +25,7 @@ Index: linux-3.4/drivers/char/random.c .pool = input_pool_data }; -@@ -442,7 +442,7 @@ static struct entropy_store blocking_poo +@@ -442,7 +442,7 @@ static struct entropy_store blocking_pool = { .name = "blocking", .limit = 1, .pull = &input_pool, @@ -33,7 +34,7 @@ Index: linux-3.4/drivers/char/random.c .pool = blocking_pool_data }; -@@ -450,7 +450,7 @@ static struct entropy_store nonblocking_ +@@ -450,7 +450,7 @@ static struct entropy_store nonblocking_pool = { .poolinfo = &poolinfo_table[1], .name = "nonblocking", .pull = &input_pool, @@ -42,10 +43,10 @@ Index: linux-3.4/drivers/char/random.c .pool = nonblocking_pool_data }; -Index: linux-3.4/drivers/usb/gadget/ci13xxx_udc.c -=================================================================== ---- linux-3.4.orig/drivers/usb/gadget/ci13xxx_udc.c -+++ linux-3.4/drivers/usb/gadget/ci13xxx_udc.c +diff --git a/drivers/usb/gadget/ci13xxx_udc.c b/drivers/usb/gadget/ci13xxx_udc.c +index 243ef1a..238372e 100644 +--- a/drivers/usb/gadget/ci13xxx_udc.c ++++ b/drivers/usb/gadget/ci13xxx_udc.c @@ -834,7 +834,7 @@ static struct { } dbg_data = { .idx = 0, @@ -55,10 +56,10 @@ Index: linux-3.4/drivers/usb/gadget/ci13xxx_udc.c }; /** -Index: linux-3.4/fs/file.c -=================================================================== ---- linux-3.4.orig/fs/file.c -+++ linux-3.4/fs/file.c +diff --git a/fs/file.c b/fs/file.c +index ba3f605..6f176f5 100644 +--- a/fs/file.c ++++ b/fs/file.c @@ -421,7 +421,7 @@ struct files_struct init_files = { .close_on_exec = init_files.close_on_exec_init, .open_fds = init_files.open_fds_init, @@ -68,10 +69,10 @@ Index: linux-3.4/fs/file.c }; /* -Index: linux-3.4/include/linux/idr.h -=================================================================== ---- linux-3.4.orig/include/linux/idr.h -+++ linux-3.4/include/linux/idr.h +diff --git a/include/linux/idr.h b/include/linux/idr.h +index 255491c..4eaacf0 100644 +--- a/include/linux/idr.h ++++ b/include/linux/idr.h @@ -136,7 +136,7 @@ struct ida { struct ida_bitmap *free_bitmap; }; @@ -81,10 +82,10 @@ Index: linux-3.4/include/linux/idr.h #define DEFINE_IDA(name) struct ida name = IDA_INIT(name) int ida_pre_get(struct ida *ida, gfp_t gfp_mask); -Index: linux-3.4/kernel/cred.c -=================================================================== ---- linux-3.4.orig/kernel/cred.c -+++ linux-3.4/kernel/cred.c +diff --git a/kernel/cred.c b/kernel/cred.c +index e70683d..fed7c3f 100644 +--- a/kernel/cred.c ++++ b/kernel/cred.c @@ -36,7 +36,7 @@ static struct kmem_cache *cred_jar; static struct thread_group_cred init_tgcred = { .usage = ATOMIC_INIT(2), diff --git a/debian/patches/features/all/rt/pci-access-use-__wake_up_all_locked.patch b/debian/patches/features/all/rt/0053-pci-Use-__wake_up_all_locked-pci_unblock_user_cfg_ac.patch similarity index 60% rename from debian/patches/features/all/rt/pci-access-use-__wake_up_all_locked.patch rename to debian/patches/features/all/rt/0053-pci-Use-__wake_up_all_locked-pci_unblock_user_cfg_ac.patch index 1e54a8be1..f32269b01 100644 --- a/debian/patches/features/all/rt/pci-access-use-__wake_up_all_locked.patch +++ b/debian/patches/features/all/rt/0053-pci-Use-__wake_up_all_locked-pci_unblock_user_cfg_ac.patch @@ -1,6 +1,8 @@ -Subject: pci: Use __wake_up_all_locked pci_unblock_user_cfg_access() +From 63059f9fc3b7240151842f77dd0548af76dc6c36 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner -Date: Thu, 01 Dec 2011 00:07:16 +0100 +Date: Thu, 1 Dec 2011 00:07:16 +0100 +Subject: [053/254] pci: Use __wake_up_all_locked + pci_unblock_user_cfg_access() The waitqueue is protected by the pci_lock, so we can just avoid to lock the waitqueue lock itself. That prevents the @@ -12,11 +14,11 @@ Cc: stable-rt@vger.kernel.org drivers/pci/access.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-3.4/drivers/pci/access.c -=================================================================== ---- linux-3.4.orig/drivers/pci/access.c -+++ linux-3.4/drivers/pci/access.c -@@ -463,7 +463,7 @@ void pci_cfg_access_unlock(struct pci_de +diff --git a/drivers/pci/access.c b/drivers/pci/access.c +index 2a58164..8e6a88e 100644 +--- a/drivers/pci/access.c ++++ b/drivers/pci/access.c +@@ -463,7 +463,7 @@ void pci_cfg_access_unlock(struct pci_dev *dev) WARN_ON(!dev->block_cfg_access); dev->block_cfg_access = 0; diff --git a/debian/patches/features/all/rt/latency-hist.patch b/debian/patches/features/all/rt/0054-latency-hist.patch.patch similarity index 95% rename from debian/patches/features/all/rt/latency-hist.patch rename to debian/patches/features/all/rt/0054-latency-hist.patch.patch index 61f2b9074..02fe3dc16 100644 --- a/debian/patches/features/all/rt/latency-hist.patch +++ b/debian/patches/features/all/rt/0054-latency-hist.patch.patch @@ -1,6 +1,7 @@ -Subject: latency-hist.patch +From e3fd437ecf6d57e10bdf35c2101c176a7273c202 Mon Sep 17 00:00:00 2001 From: Carsten Emde Date: Tue, 19 Jul 2011 14:03:41 +0100 +Subject: [054/254] latency-hist.patch This patch provides a recording mechanism to store data of potential sources of system latencies. The recordings separately determine the @@ -11,23 +12,27 @@ filesystem. For details please consult Documentation/trace/histograms.txt. Signed-off-by: Carsten Emde Signed-off-by: Thomas Gleixner - --- - Documentation/trace/histograms.txt | 186 +++++ - include/linux/sched.h | 6 - include/trace/events/hist.h | 69 ++ - include/trace/events/latency_hist.h | 30 - kernel/hrtimer.c | 11 - kernel/trace/Kconfig | 104 +++ - kernel/trace/Makefile | 4 - kernel/trace/latency_hist.c | 1170 ++++++++++++++++++++++++++++++++++++ - kernel/trace/trace_irqsoff.c | 11 + Documentation/trace/histograms.txt | 186 ++++++ + include/linux/sched.h | 6 + + include/trace/events/hist.h | 69 +++ + include/trace/events/latency_hist.h | 30 + + kernel/hrtimer.c | 11 + + kernel/trace/Kconfig | 104 ++++ + kernel/trace/Makefile | 4 + + kernel/trace/latency_hist.c | 1170 +++++++++++++++++++++++++++++++++++ + kernel/trace/trace_irqsoff.c | 11 + 9 files changed, 1591 insertions(+) + create mode 100644 Documentation/trace/histograms.txt + create mode 100644 include/trace/events/hist.h + create mode 100644 include/trace/events/latency_hist.h + create mode 100644 kernel/trace/latency_hist.c -Index: linux-3.4/Documentation/trace/histograms.txt -=================================================================== +diff --git a/Documentation/trace/histograms.txt b/Documentation/trace/histograms.txt +new file mode 100644 +index 0000000..6f2aeab --- /dev/null -+++ linux-3.4/Documentation/trace/histograms.txt ++++ b/Documentation/trace/histograms.txt @@ -0,0 +1,186 @@ + Using the Linux Kernel Latency Histograms + @@ -215,10 +220,10 @@ Index: linux-3.4/Documentation/trace/histograms.txt +is provided. + +These data are also reset when the wakeup histogram is reset. -Index: linux-3.4/include/linux/sched.h -=================================================================== ---- linux-3.4.orig/include/linux/sched.h -+++ linux-3.4/include/linux/sched.h +diff --git a/include/linux/sched.h b/include/linux/sched.h +index f14b965..5b63855 100644 +--- a/include/linux/sched.h ++++ b/include/linux/sched.h @@ -1614,6 +1614,12 @@ struct task_struct { unsigned long trace; /* bitmask and counter of trace recursion */ @@ -232,10 +237,11 @@ Index: linux-3.4/include/linux/sched.h #endif /* CONFIG_TRACING */ #ifdef CONFIG_CGROUP_MEM_RES_CTLR /* memcg uses this to do batch job */ struct memcg_batch_info { -Index: linux-3.4/include/trace/events/hist.h -=================================================================== +diff --git a/include/trace/events/hist.h b/include/trace/events/hist.h +new file mode 100644 +index 0000000..28646db --- /dev/null -+++ linux-3.4/include/trace/events/hist.h ++++ b/include/trace/events/hist.h @@ -0,0 +1,69 @@ +#undef TRACE_SYSTEM +#define TRACE_SYSTEM hist @@ -306,10 +312,11 @@ Index: linux-3.4/include/trace/events/hist.h + +/* This part must be outside protection */ +#include -Index: linux-3.4/include/trace/events/latency_hist.h -=================================================================== +diff --git a/include/trace/events/latency_hist.h b/include/trace/events/latency_hist.h +new file mode 100644 +index 0000000..d6b5d77 --- /dev/null -+++ linux-3.4/include/trace/events/latency_hist.h ++++ b/include/trace/events/latency_hist.h @@ -0,0 +1,30 @@ +#ifndef _LATENCY_HIST_H +#define _LATENCY_HIST_H @@ -341,10 +348,10 @@ Index: linux-3.4/include/trace/events/latency_hist.h + +#endif /* _LATENCY_HIST_H */ + -Index: linux-3.4/kernel/hrtimer.c -=================================================================== ---- linux-3.4.orig/kernel/hrtimer.c -+++ linux-3.4/kernel/hrtimer.c +diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c +index ae34bf5..1a3695e 100644 +--- a/kernel/hrtimer.c ++++ b/kernel/hrtimer.c @@ -49,6 +49,7 @@ #include @@ -353,7 +360,7 @@ Index: linux-3.4/kernel/hrtimer.c /* * The timer bases: -@@ -1236,6 +1237,8 @@ static void __run_hrtimer(struct hrtimer +@@ -1236,6 +1237,8 @@ static void __run_hrtimer(struct hrtimer *timer, ktime_t *now) #ifdef CONFIG_HIGH_RES_TIMERS @@ -377,10 +384,10 @@ Index: linux-3.4/kernel/hrtimer.c /* * The immediate goal for using the softexpires is * minimizing wakeups, not running timers at the -Index: linux-3.4/kernel/trace/Kconfig -=================================================================== ---- linux-3.4.orig/kernel/trace/Kconfig -+++ linux-3.4/kernel/trace/Kconfig +diff --git a/kernel/trace/Kconfig b/kernel/trace/Kconfig +index a1d2849..23c737e 100644 +--- a/kernel/trace/Kconfig ++++ b/kernel/trace/Kconfig @@ -192,6 +192,24 @@ config IRQSOFF_TRACER enabled. This option and the preempt-off timing option can be used together or separately.) @@ -506,11 +513,11 @@ Index: linux-3.4/kernel/trace/Kconfig config ENABLE_DEFAULT_TRACERS bool "Trace process context switches and events" depends on !GENERIC_TRACER -Index: linux-3.4/kernel/trace/Makefile -=================================================================== ---- linux-3.4.orig/kernel/trace/Makefile -+++ linux-3.4/kernel/trace/Makefile -@@ -36,6 +36,10 @@ obj-$(CONFIG_FUNCTION_TRACER) += trace_f +diff --git a/kernel/trace/Makefile b/kernel/trace/Makefile +index 5f39a07..108a387 100644 +--- a/kernel/trace/Makefile ++++ b/kernel/trace/Makefile +@@ -36,6 +36,10 @@ obj-$(CONFIG_FUNCTION_TRACER) += trace_functions.o obj-$(CONFIG_IRQSOFF_TRACER) += trace_irqsoff.o obj-$(CONFIG_PREEMPT_TRACER) += trace_irqsoff.o obj-$(CONFIG_SCHED_TRACER) += trace_sched_wakeup.o @@ -521,10 +528,11 @@ Index: linux-3.4/kernel/trace/Makefile obj-$(CONFIG_NOP_TRACER) += trace_nop.o obj-$(CONFIG_STACK_TRACER) += trace_stack.o obj-$(CONFIG_MMIOTRACE) += trace_mmiotrace.o -Index: linux-3.4/kernel/trace/latency_hist.c -=================================================================== +diff --git a/kernel/trace/latency_hist.c b/kernel/trace/latency_hist.c +new file mode 100644 +index 0000000..9d49fcb --- /dev/null -+++ linux-3.4/kernel/trace/latency_hist.c ++++ b/kernel/trace/latency_hist.c @@ -0,0 +1,1170 @@ +/* + * kernel/trace/latency_hist.c @@ -1696,10 +1704,10 @@ Index: linux-3.4/kernel/trace/latency_hist.c +} + +__initcall(latency_hist_init); -Index: linux-3.4/kernel/trace/trace_irqsoff.c -=================================================================== ---- linux-3.4.orig/kernel/trace/trace_irqsoff.c -+++ linux-3.4/kernel/trace/trace_irqsoff.c +diff --git a/kernel/trace/trace_irqsoff.c b/kernel/trace/trace_irqsoff.c +index 99d20e9..384f603 100644 +--- a/kernel/trace/trace_irqsoff.c ++++ b/kernel/trace/trace_irqsoff.c @@ -17,6 +17,7 @@ #include @@ -1722,7 +1730,7 @@ Index: linux-3.4/kernel/trace/trace_irqsoff.c if (preempt_trace() || irq_trace()) stop_critical_timing(CALLER_ADDR0, CALLER_ADDR1); } -@@ -451,6 +454,7 @@ EXPORT_SYMBOL_GPL(stop_critical_timings) +@@ -451,6 +454,7 @@ EXPORT_SYMBOL_GPL(stop_critical_timings); #ifdef CONFIG_PROVE_LOCKING void time_hardirqs_on(unsigned long a0, unsigned long a1) { @@ -1730,7 +1738,7 @@ Index: linux-3.4/kernel/trace/trace_irqsoff.c if (!preempt_trace() && irq_trace()) stop_critical_timing(a0, a1); } -@@ -459,6 +463,7 @@ void time_hardirqs_off(unsigned long a0, +@@ -459,6 +463,7 @@ void time_hardirqs_off(unsigned long a0, unsigned long a1) { if (!preempt_trace() && irq_trace()) start_critical_timing(a0, a1); @@ -1738,7 +1746,7 @@ Index: linux-3.4/kernel/trace/trace_irqsoff.c } #else /* !CONFIG_PROVE_LOCKING */ -@@ -484,6 +489,7 @@ inline void print_irqtrace_events(struct +@@ -484,6 +489,7 @@ inline void print_irqtrace_events(struct task_struct *curr) */ void trace_hardirqs_on(void) { @@ -1760,7 +1768,7 @@ Index: linux-3.4/kernel/trace/trace_irqsoff.c if (!preempt_trace() && irq_trace()) stop_critical_timing(CALLER_ADDR0, caller_addr); } -@@ -507,6 +515,7 @@ void trace_hardirqs_off_caller(unsigned +@@ -507,6 +515,7 @@ void trace_hardirqs_off_caller(unsigned long caller_addr) { if (!preempt_trace() && irq_trace()) start_critical_timing(CALLER_ADDR0, caller_addr); @@ -1768,7 +1776,7 @@ Index: linux-3.4/kernel/trace/trace_irqsoff.c } EXPORT_SYMBOL(trace_hardirqs_off_caller); -@@ -516,12 +525,14 @@ EXPORT_SYMBOL(trace_hardirqs_off_caller) +@@ -516,12 +525,14 @@ EXPORT_SYMBOL(trace_hardirqs_off_caller); #ifdef CONFIG_PREEMPT_TRACER void trace_preempt_on(unsigned long a0, unsigned long a1) { diff --git a/debian/patches/features/all/rt/hwlatdetect.patch b/debian/patches/features/all/rt/0055-hwlatdetect.patch.patch similarity index 97% rename from debian/patches/features/all/rt/hwlatdetect.patch rename to debian/patches/features/all/rt/0055-hwlatdetect.patch.patch index e2e371aca..199048bae 100644 --- a/debian/patches/features/all/rt/hwlatdetect.patch +++ b/debian/patches/features/all/rt/0055-hwlatdetect.patch.patch @@ -1,25 +1,28 @@ -Subject: hwlatdetect.patch +From b7665cf31898b8e7248ba5cde80699bbb6df91c2 Mon Sep 17 00:00:00 2001 From: Carsten Emde Date: Tue, 19 Jul 2011 13:53:12 +0100 +Subject: [055/254] hwlatdetect.patch Jon Masters developed this wonderful SMI detector. For details please consult Documentation/hwlat_detector.txt. It could be ported to Linux 3.0 RT without any major change. Signed-off-by: Carsten Emde - --- Documentation/hwlat_detector.txt | 64 ++ - MAINTAINERS | 9 - drivers/misc/Kconfig | 29 - drivers/misc/Makefile | 1 - drivers/misc/hwlat_detector.c | 1212 +++++++++++++++++++++++++++++++++++++++ + MAINTAINERS | 9 + + drivers/misc/Kconfig | 29 + + drivers/misc/Makefile | 1 + + drivers/misc/hwlat_detector.c | 1212 ++++++++++++++++++++++++++++++++++++++ 5 files changed, 1315 insertions(+) + create mode 100644 Documentation/hwlat_detector.txt + create mode 100644 drivers/misc/hwlat_detector.c -Index: linux-3.4/Documentation/hwlat_detector.txt -=================================================================== +diff --git a/Documentation/hwlat_detector.txt b/Documentation/hwlat_detector.txt +new file mode 100644 +index 0000000..cb61516 --- /dev/null -+++ linux-3.4/Documentation/hwlat_detector.txt ++++ b/Documentation/hwlat_detector.txt @@ -0,0 +1,64 @@ +Introduction: +------------- @@ -85,11 +88,11 @@ Index: linux-3.4/Documentation/hwlat_detector.txt +observe any latencies that exceed the threshold (initially 100 usecs), +then we write to a global sample ring buffer of 8K samples, which is +consumed by reading from the "sample" (pipe) debugfs file interface. -Index: linux-3.4/MAINTAINERS -=================================================================== ---- linux-3.4.orig/MAINTAINERS -+++ linux-3.4/MAINTAINERS -@@ -3082,6 +3082,15 @@ L: linuxppc-dev@lists.ozlabs.org +diff --git a/MAINTAINERS b/MAINTAINERS +index b362709..249426c 100644 +--- a/MAINTAINERS ++++ b/MAINTAINERS +@@ -3081,6 +3081,15 @@ L: linuxppc-dev@lists.ozlabs.org S: Odd Fixes F: drivers/tty/hvc/ @@ -105,10 +108,10 @@ Index: linux-3.4/MAINTAINERS HARDWARE MONITORING M: Jean Delvare M: Guenter Roeck -Index: linux-3.4/drivers/misc/Kconfig -=================================================================== ---- linux-3.4.orig/drivers/misc/Kconfig -+++ linux-3.4/drivers/misc/Kconfig +diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig +index 504daa3..eead6ce 100644 +--- a/drivers/misc/Kconfig ++++ b/drivers/misc/Kconfig @@ -130,6 +130,35 @@ config IBM_ASM for information on the specific driver level and support statement for your IBM server. @@ -145,19 +148,20 @@ Index: linux-3.4/drivers/misc/Kconfig config PHANTOM tristate "Sensable PHANToM (PCI)" depends on PCI -Index: linux-3.4/drivers/misc/Makefile -=================================================================== ---- linux-3.4.orig/drivers/misc/Makefile -+++ linux-3.4/drivers/misc/Makefile +diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile +index 3e1d8010..c7c058a 100644 +--- a/drivers/misc/Makefile ++++ b/drivers/misc/Makefile @@ -49,3 +49,4 @@ obj-y += carma/ obj-$(CONFIG_USB_SWITCH_FSA9480) += fsa9480.o obj-$(CONFIG_ALTERA_STAPL) +=altera-stapl/ obj-$(CONFIG_MAX8997_MUIC) += max8997-muic.o +obj-$(CONFIG_HWLAT_DETECTOR) += hwlat_detector.o -Index: linux-3.4/drivers/misc/hwlat_detector.c -=================================================================== +diff --git a/drivers/misc/hwlat_detector.c b/drivers/misc/hwlat_detector.c +new file mode 100644 +index 0000000..b7b7c90 --- /dev/null -+++ linux-3.4/drivers/misc/hwlat_detector.c ++++ b/drivers/misc/hwlat_detector.c @@ -0,0 +1,1212 @@ +/* + * hwlat_detector.c - A simple Hardware Latency detector. diff --git a/debian/patches/features/all/rt/localversion.patch b/debian/patches/features/all/rt/0056-localversion.patch.patch similarity index 52% rename from debian/patches/features/all/rt/localversion.patch rename to debian/patches/features/all/rt/0056-localversion.patch.patch index c708adacf..757110a46 100644 --- a/debian/patches/features/all/rt/localversion.patch +++ b/debian/patches/features/all/rt/0056-localversion.patch.patch @@ -1,6 +1,7 @@ -Subject: localversion.patch +From 525e198706ffa7dffa7f7b9641ede85810c565a4 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner -Date: Fri, 08 Jul 2011 20:25:16 +0200 +Date: Fri, 8 Jul 2011 20:25:16 +0200 +Subject: [056/254] localversion.patch Signed-off-by: Thomas Gleixner Signed-off-by: Peter Zijlstra @@ -8,10 +9,12 @@ Link: http://lkml.kernel.org/n/tip-8vdw4bfcsds27cvox6rpb334@git.kernel.org --- localversion-rt | 1 + 1 file changed, 1 insertion(+) + create mode 100644 localversion-rt -Index: linux-3.4/localversion-rt -=================================================================== +diff --git a/localversion-rt b/localversion-rt +new file mode 100644 +index 0000000..700c857 --- /dev/null -+++ linux-3.4/localversion-rt ++++ b/localversion-rt @@ -0,0 +1 @@ +-rt8 diff --git a/debian/patches/features/all/rt/early-printk-consolidate.patch b/debian/patches/features/all/rt/0057-early-printk-consolidate.patch.patch similarity index 72% rename from debian/patches/features/all/rt/early-printk-consolidate.patch rename to debian/patches/features/all/rt/0057-early-printk-consolidate.patch.patch index 47b9cd1ce..a0d7714d1 100644 --- a/debian/patches/features/all/rt/early-printk-consolidate.patch +++ b/debian/patches/features/all/rt/0057-early-printk-consolidate.patch.patch @@ -1,6 +1,7 @@ -Subject: early-printk-consolidate.patch +From 638032b662f993d0b9b8ca265ead706c11425ed4 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sat, 23 Jul 2011 11:04:08 +0200 +Subject: [057/254] early-printk-consolidate.patch Signed-off-by: Thomas Gleixner --- @@ -21,11 +22,11 @@ Signed-off-by: Thomas Gleixner kernel/printk.c | 30 +++++++++++++++++++++++------- 15 files changed, 65 insertions(+), 110 deletions(-) -Index: linux-3.4/arch/arm/kernel/early_printk.c -=================================================================== ---- linux-3.4.orig/arch/arm/kernel/early_printk.c -+++ linux-3.4/arch/arm/kernel/early_printk.c -@@ -29,28 +29,17 @@ static void early_console_write(struct c +diff --git a/arch/arm/kernel/early_printk.c b/arch/arm/kernel/early_printk.c +index 85aa2b2..4307653 100644 +--- a/arch/arm/kernel/early_printk.c ++++ b/arch/arm/kernel/early_printk.c +@@ -29,28 +29,17 @@ static void early_console_write(struct console *con, const char *s, unsigned n) early_write(s, n); } @@ -57,11 +58,11 @@ Index: linux-3.4/arch/arm/kernel/early_printk.c return 0; } -Index: linux-3.4/arch/blackfin/kernel/early_printk.c -=================================================================== ---- linux-3.4.orig/arch/blackfin/kernel/early_printk.c -+++ linux-3.4/arch/blackfin/kernel/early_printk.c -@@ -25,8 +25,6 @@ extern struct console *bfin_earlyserial_ +diff --git a/arch/blackfin/kernel/early_printk.c b/arch/blackfin/kernel/early_printk.c +index 84ed837..61fbd2d 100644 +--- a/arch/blackfin/kernel/early_printk.c ++++ b/arch/blackfin/kernel/early_printk.c +@@ -25,8 +25,6 @@ extern struct console *bfin_earlyserial_init(unsigned int port, extern struct console *bfin_jc_early_init(void); #endif @@ -70,10 +71,10 @@ Index: linux-3.4/arch/blackfin/kernel/early_printk.c /* Default console */ #define DEFAULT_PORT 0 #define DEFAULT_CFLAG CS8|B57600 -Index: linux-3.4/arch/microblaze/kernel/early_printk.c -=================================================================== ---- linux-3.4.orig/arch/microblaze/kernel/early_printk.c -+++ linux-3.4/arch/microblaze/kernel/early_printk.c +diff --git a/arch/microblaze/kernel/early_printk.c b/arch/microblaze/kernel/early_printk.c +index aba1f9a..b099a86 100644 +--- a/arch/microblaze/kernel/early_printk.c ++++ b/arch/microblaze/kernel/early_printk.c @@ -21,7 +21,6 @@ #include #include @@ -82,7 +83,7 @@ Index: linux-3.4/arch/microblaze/kernel/early_printk.c static u32 base_addr; #ifdef CONFIG_SERIAL_UARTLITE_CONSOLE -@@ -109,27 +108,11 @@ static struct console early_serial_uart1 +@@ -109,27 +108,11 @@ static struct console early_serial_uart16550_console = { }; #endif /* CONFIG_SERIAL_8250_CONSOLE */ @@ -140,11 +141,11 @@ Index: linux-3.4/arch/microblaze/kernel/early_printk.c - early_console_initialized = 0; + early_console = NULL; } -Index: linux-3.4/arch/mips/kernel/early_printk.c -=================================================================== ---- linux-3.4.orig/arch/mips/kernel/early_printk.c -+++ linux-3.4/arch/mips/kernel/early_printk.c -@@ -25,20 +25,18 @@ early_console_write(struct console *con, +diff --git a/arch/mips/kernel/early_printk.c b/arch/mips/kernel/early_printk.c +index 9ae813e..973c995 100644 +--- a/arch/mips/kernel/early_printk.c ++++ b/arch/mips/kernel/early_printk.c +@@ -25,20 +25,18 @@ early_console_write(struct console *con, const char *s, unsigned n) } } @@ -169,10 +170,10 @@ Index: linux-3.4/arch/mips/kernel/early_printk.c - register_console(&early_console); + register_console(&early_console_prom); } -Index: linux-3.4/arch/powerpc/kernel/udbg.c -=================================================================== ---- linux-3.4.orig/arch/powerpc/kernel/udbg.c -+++ linux-3.4/arch/powerpc/kernel/udbg.c +diff --git a/arch/powerpc/kernel/udbg.c b/arch/powerpc/kernel/udbg.c +index c39c1ca..8b00aab 100644 +--- a/arch/powerpc/kernel/udbg.c ++++ b/arch/powerpc/kernel/udbg.c @@ -179,15 +179,13 @@ static struct console udbg_console = { .index = 0, }; @@ -190,7 +191,7 @@ Index: linux-3.4/arch/powerpc/kernel/udbg.c return; if (!udbg_putc) -@@ -197,7 +195,7 @@ void __init register_early_udbg_console( +@@ -197,7 +195,7 @@ void __init register_early_udbg_console(void) printk(KERN_INFO "early console immortal !\n"); udbg_console.flags &= ~CON_BOOT; } @@ -199,10 +200,10 @@ Index: linux-3.4/arch/powerpc/kernel/udbg.c register_console(&udbg_console); } -Index: linux-3.4/arch/sh/kernel/sh_bios.c -=================================================================== ---- linux-3.4.orig/arch/sh/kernel/sh_bios.c -+++ linux-3.4/arch/sh/kernel/sh_bios.c +diff --git a/arch/sh/kernel/sh_bios.c b/arch/sh/kernel/sh_bios.c +index 47475cc..a5b51b9 100644 +--- a/arch/sh/kernel/sh_bios.c ++++ b/arch/sh/kernel/sh_bios.c @@ -144,8 +144,6 @@ static struct console bios_console = { .index = -1, }; @@ -212,10 +213,10 @@ Index: linux-3.4/arch/sh/kernel/sh_bios.c static int __init setup_early_printk(char *buf) { int keep_early = 0; -Index: linux-3.4/arch/sparc/kernel/setup_32.c -=================================================================== ---- linux-3.4.orig/arch/sparc/kernel/setup_32.c -+++ linux-3.4/arch/sparc/kernel/setup_32.c +diff --git a/arch/sparc/kernel/setup_32.c b/arch/sparc/kernel/setup_32.c +index d444468..a000aa5 100644 +--- a/arch/sparc/kernel/setup_32.c ++++ b/arch/sparc/kernel/setup_32.c @@ -221,6 +221,7 @@ void __init setup_arch(char **cmdline_p) boot_flags_init(*cmdline_p); @@ -224,11 +225,11 @@ Index: linux-3.4/arch/sparc/kernel/setup_32.c register_console(&prom_early_console); /* Set sparc_cpu_model */ -Index: linux-3.4/arch/sparc/kernel/setup_64.c -=================================================================== ---- linux-3.4.orig/arch/sparc/kernel/setup_64.c -+++ linux-3.4/arch/sparc/kernel/setup_64.c -@@ -487,6 +487,12 @@ static void __init init_sparc64_elf_hwca +diff --git a/arch/sparc/kernel/setup_64.c b/arch/sparc/kernel/setup_64.c +index 1414d16..8b37e5a 100644 +--- a/arch/sparc/kernel/setup_64.c ++++ b/arch/sparc/kernel/setup_64.c +@@ -487,6 +487,12 @@ static void __init init_sparc64_elf_hwcap(void) popc_patch(); } @@ -250,11 +251,11 @@ Index: linux-3.4/arch/sparc/kernel/setup_64.c if (tlb_type == hypervisor) printk("ARCH: SUN4V\n"); -Index: linux-3.4/arch/tile/kernel/early_printk.c -=================================================================== ---- linux-3.4.orig/arch/tile/kernel/early_printk.c -+++ linux-3.4/arch/tile/kernel/early_printk.c -@@ -33,25 +33,8 @@ static struct console early_hv_console = +diff --git a/arch/tile/kernel/early_printk.c b/arch/tile/kernel/early_printk.c +index afb9c9a..ff25220 100644 +--- a/arch/tile/kernel/early_printk.c ++++ b/arch/tile/kernel/early_printk.c +@@ -33,25 +33,8 @@ static struct console early_hv_console = { }; /* Direct interface for emergencies */ @@ -296,7 +297,7 @@ Index: linux-3.4/arch/tile/kernel/early_printk.c register_console(early_console); return 0; -@@ -85,12 +67,12 @@ static int __init setup_early_printk(cha +@@ -85,12 +67,12 @@ static int __init setup_early_printk(char *str) void __init disable_early_printk(void) { early_console_complete = 1; @@ -320,11 +321,11 @@ Index: linux-3.4/arch/tile/kernel/early_printk.c return; early_printk("\ Machine shutting down before console output is fully initialized.\n\ -Index: linux-3.4/arch/um/kernel/early_printk.c -=================================================================== ---- linux-3.4.orig/arch/um/kernel/early_printk.c -+++ linux-3.4/arch/um/kernel/early_printk.c -@@ -16,7 +16,7 @@ static void early_console_write(struct c +diff --git a/arch/um/kernel/early_printk.c b/arch/um/kernel/early_printk.c +index ec649bf..183060f 100644 +--- a/arch/um/kernel/early_printk.c ++++ b/arch/um/kernel/early_printk.c +@@ -16,7 +16,7 @@ static void early_console_write(struct console *con, const char *s, unsigned int um_early_printk(s, n); } @@ -346,11 +347,11 @@ Index: linux-3.4/arch/um/kernel/early_printk.c return 0; } -Index: linux-3.4/arch/unicore32/kernel/early_printk.c -=================================================================== ---- linux-3.4.orig/arch/unicore32/kernel/early_printk.c -+++ linux-3.4/arch/unicore32/kernel/early_printk.c -@@ -33,21 +33,17 @@ static struct console early_ocd_console +diff --git a/arch/unicore32/kernel/early_printk.c b/arch/unicore32/kernel/early_printk.c +index 3922255..9be0d5d 100644 +--- a/arch/unicore32/kernel/early_printk.c ++++ b/arch/unicore32/kernel/early_printk.c +@@ -33,21 +33,17 @@ static struct console early_ocd_console = { .index = -1, }; @@ -376,11 +377,11 @@ Index: linux-3.4/arch/unicore32/kernel/early_printk.c if (keep_early) early_console->flags &= ~CON_BOOT; -Index: linux-3.4/arch/x86/kernel/early_printk.c -=================================================================== ---- linux-3.4.orig/arch/x86/kernel/early_printk.c -+++ linux-3.4/arch/x86/kernel/early_printk.c -@@ -169,25 +169,9 @@ static struct console early_serial_conso +diff --git a/arch/x86/kernel/early_printk.c b/arch/x86/kernel/early_printk.c +index 9b9f18b..d15f575 100644 +--- a/arch/x86/kernel/early_printk.c ++++ b/arch/x86/kernel/early_printk.c +@@ -169,25 +169,9 @@ static struct console early_serial_console = { .index = -1, }; @@ -407,7 +408,7 @@ Index: linux-3.4/arch/x86/kernel/early_printk.c printk(KERN_CRIT "ERROR: earlyprintk= %s already used\n", con->name); return; -@@ -207,9 +191,8 @@ static int __init setup_early_printk(cha +@@ -207,9 +191,8 @@ static int __init setup_early_printk(char *buf) if (!buf) return 0; @@ -418,10 +419,10 @@ Index: linux-3.4/arch/x86/kernel/early_printk.c keep = (strstr(buf, "keep") != NULL); -Index: linux-3.4/include/linux/console.h -=================================================================== ---- linux-3.4.orig/include/linux/console.h -+++ linux-3.4/include/linux/console.h +diff --git a/include/linux/console.h b/include/linux/console.h +index 7201ce4..dec7f97 100644 +--- a/include/linux/console.h ++++ b/include/linux/console.h @@ -133,6 +133,7 @@ struct console { for (con = console_drivers; con != NULL; con = con->next) @@ -430,10 +431,10 @@ Index: linux-3.4/include/linux/console.h extern int add_preferred_console(char *name, int idx, char *options); extern int update_console_cmdline(char *name, int idx, char *name_new, int idx_new, char *options); -Index: linux-3.4/include/linux/printk.h -=================================================================== ---- linux-3.4.orig/include/linux/printk.h -+++ linux-3.4/include/linux/printk.h +diff --git a/include/linux/printk.h b/include/linux/printk.h +index 0525927..c8d7f7b 100644 +--- a/include/linux/printk.h ++++ b/include/linux/printk.h @@ -88,8 +88,13 @@ int no_printk(const char *fmt, ...) return 0; } @@ -448,10 +449,10 @@ Index: linux-3.4/include/linux/printk.h extern int printk_needs_cpu(int cpu); extern void printk_tick(void); -Index: linux-3.4/kernel/printk.c -=================================================================== ---- linux-3.4.orig/kernel/printk.c -+++ linux-3.4/kernel/printk.c +diff --git a/kernel/printk.c b/kernel/printk.c +index b663c2c..c442606 100644 +--- a/kernel/printk.c ++++ b/kernel/printk.c @@ -47,13 +47,6 @@ #define CREATE_TRACE_POINTS #include @@ -466,7 +467,7 @@ Index: linux-3.4/kernel/printk.c #define __LOG_BUF_LEN (1 << CONFIG_LOG_BUF_SHIFT) /* printk's without a loglevel use this.. */ -@@ -524,6 +517,29 @@ static void __call_console_drivers(unsig +@@ -524,6 +517,29 @@ static void __call_console_drivers(unsigned start, unsigned end) } } diff --git a/debian/patches/features/all/rt/printk-kill.patch b/debian/patches/features/all/rt/0058-printk-kill.patch.patch similarity index 74% rename from debian/patches/features/all/rt/printk-kill.patch rename to debian/patches/features/all/rt/0058-printk-kill.patch.patch index f3b37da55..2753f7faf 100644 --- a/debian/patches/features/all/rt/printk-kill.patch +++ b/debian/patches/features/all/rt/0058-printk-kill.patch.patch @@ -1,6 +1,7 @@ -Subject: printk-kill.patch +From 4d85db5392fdb03f98b4ea105da773401c990850 Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Fri, 22 Jul 2011 17:58:40 +0200 +Subject: [058/254] printk-kill.patch Signed-off-by: Thomas Gleixner --- @@ -9,10 +10,10 @@ Signed-off-by: Thomas Gleixner kernel/watchdog.c | 15 +++++++++++++-- 3 files changed, 48 insertions(+), 3 deletions(-) -Index: linux-3.4/include/linux/printk.h -=================================================================== ---- linux-3.4.orig/include/linux/printk.h -+++ linux-3.4/include/linux/printk.h +diff --git a/include/linux/printk.h b/include/linux/printk.h +index c8d7f7b..d5e6eed 100644 +--- a/include/linux/printk.h ++++ b/include/linux/printk.h @@ -91,9 +91,11 @@ int no_printk(const char *fmt, ...) #ifdef CONFIG_EARLY_PRINTK extern asmlinkage __printf(1, 2) @@ -25,7 +26,7 @@ Index: linux-3.4/include/linux/printk.h #endif extern int printk_needs_cpu(int cpu); -@@ -119,7 +121,6 @@ extern int __printk_ratelimit(const char +@@ -119,7 +121,6 @@ extern int __printk_ratelimit(const char *func); #define printk_ratelimit() __printk_ratelimit(__func__) extern bool printk_timed_ratelimit(unsigned long *caller_jiffies, unsigned int interval_msec); @@ -33,11 +34,11 @@ Index: linux-3.4/include/linux/printk.h extern int printk_delay_msec; extern int dmesg_restrict; extern int kptr_restrict; -Index: linux-3.4/kernel/printk.c -=================================================================== ---- linux-3.4.orig/kernel/printk.c -+++ linux-3.4/kernel/printk.c -@@ -538,6 +538,32 @@ asmlinkage void early_printk(const char +diff --git a/kernel/printk.c b/kernel/printk.c +index c442606..5a172f9 100644 +--- a/kernel/printk.c ++++ b/kernel/printk.c +@@ -538,6 +538,32 @@ asmlinkage void early_printk(const char *fmt, ...) early_vprintk(fmt, ap); va_end(ap); } @@ -70,7 +71,7 @@ Index: linux-3.4/kernel/printk.c #endif static bool __read_mostly ignore_loglevel; -@@ -862,6 +888,13 @@ asmlinkage int vprintk(const char *fmt, +@@ -862,6 +888,13 @@ asmlinkage int vprintk(const char *fmt, va_list args) size_t plen; char special; @@ -84,11 +85,11 @@ Index: linux-3.4/kernel/printk.c boot_delay_msec(); printk_delay(); -Index: linux-3.4/kernel/watchdog.c -=================================================================== ---- linux-3.4.orig/kernel/watchdog.c -+++ linux-3.4/kernel/watchdog.c -@@ -201,6 +201,8 @@ static int is_softlockup(unsigned long t +diff --git a/kernel/watchdog.c b/kernel/watchdog.c +index df30ee0..de08263 100644 +--- a/kernel/watchdog.c ++++ b/kernel/watchdog.c +@@ -201,6 +201,8 @@ static int is_softlockup(unsigned long touch_ts) #ifdef CONFIG_HARDLOCKUP_DETECTOR @@ -97,7 +98,7 @@ Index: linux-3.4/kernel/watchdog.c static struct perf_event_attr wd_hw_attr = { .type = PERF_TYPE_HARDWARE, .config = PERF_COUNT_HW_CPU_CYCLES, -@@ -235,10 +237,19 @@ static void watchdog_overflow_callback(s +@@ -235,10 +237,19 @@ static void watchdog_overflow_callback(struct perf_event *event, if (__this_cpu_read(hard_watchdog_warn) == true) return; diff --git a/debian/patches/features/all/rt/printk-27force_early_printk-27-boot-param-to-help-with-debugging.patch b/debian/patches/features/all/rt/0059-printk-force_early_printk-boot-param-to-help-with-de.patch similarity index 58% rename from debian/patches/features/all/rt/printk-27force_early_printk-27-boot-param-to-help-with-debugging.patch rename to debian/patches/features/all/rt/0059-printk-force_early_printk-boot-param-to-help-with-de.patch index 12f8259d2..7c2b1e5aa 100644 --- a/debian/patches/features/all/rt/printk-27force_early_printk-27-boot-param-to-help-with-debugging.patch +++ b/debian/patches/features/all/rt/0059-printk-force_early_printk-boot-param-to-help-with-de.patch @@ -1,10 +1,8 @@ -Subject: printk: %27force_early_printk%27 boot param to help with debugging -From: Peter Zijlstra -Date: Fri, 02 Sep 2011 14:41:29 +0200 - -Subject: printk: 'force_early_printk' boot param to help with debugging +From 3332b30fd47e43bb91d5f56426f0ce3456bf8093 Mon Sep 17 00:00:00 2001 From: Peter Zijlstra -Date: Fri Sep 02 14:29:33 CEST 2011 +Date: Fri, 2 Sep 2011 14:29:33 +0200 +Subject: [059/254] printk: 'force_early_printk' boot param to help with + debugging Gives me an option to screw printk and actually see what the machine says. @@ -17,11 +15,11 @@ Link: http://lkml.kernel.org/n/tip-ykb97nsfmobq44xketrxs977@git.kernel.org kernel/printk.c | 7 +++++++ 1 file changed, 7 insertions(+) -Index: linux-3.4/kernel/printk.c -=================================================================== ---- linux-3.4.orig/kernel/printk.c -+++ linux-3.4/kernel/printk.c -@@ -547,6 +547,13 @@ asmlinkage void early_printk(const char +diff --git a/kernel/printk.c b/kernel/printk.c +index 5a172f9..300952e 100644 +--- a/kernel/printk.c ++++ b/kernel/printk.c +@@ -547,6 +547,13 @@ asmlinkage void early_printk(const char *fmt, ...) */ static bool __read_mostly printk_killswitch; diff --git a/debian/patches/features/all/rt/rt-preempt-base-config.patch b/debian/patches/features/all/rt/0060-rt-preempt-base-config.patch.patch similarity index 81% rename from debian/patches/features/all/rt/rt-preempt-base-config.patch rename to debian/patches/features/all/rt/0060-rt-preempt-base-config.patch.patch index d773dce63..6eff166fa 100644 --- a/debian/patches/features/all/rt/rt-preempt-base-config.patch +++ b/debian/patches/features/all/rt/0060-rt-preempt-base-config.patch.patch @@ -1,16 +1,17 @@ -Subject: rt-preempt-base-config.patch +From febbcf6b7485f3ec4fc8f8b5c3ba26dbeccf833e Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 17 Jun 2011 12:39:57 +0200 +Subject: [060/254] rt-preempt-base-config.patch Signed-off-by: Thomas Gleixner --- kernel/Kconfig.preempt | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) -Index: linux-3.4/kernel/Kconfig.preempt -=================================================================== ---- linux-3.4.orig/kernel/Kconfig.preempt -+++ linux-3.4/kernel/Kconfig.preempt +diff --git a/kernel/Kconfig.preempt b/kernel/Kconfig.preempt +index 3f9c974..885efbd 100644 +--- a/kernel/Kconfig.preempt ++++ b/kernel/Kconfig.preempt @@ -1,3 +1,10 @@ +config PREEMPT + bool diff --git a/debian/patches/features/all/rt/bug-rt-dependend-variants.patch b/debian/patches/features/all/rt/0061-bug-BUG_ON-WARN_ON-variants-dependend-on-RT-RT.patch similarity index 73% rename from debian/patches/features/all/rt/bug-rt-dependend-variants.patch rename to debian/patches/features/all/rt/0061-bug-BUG_ON-WARN_ON-variants-dependend-on-RT-RT.patch index 99607594e..a7e856421 100644 --- a/debian/patches/features/all/rt/bug-rt-dependend-variants.patch +++ b/debian/patches/features/all/rt/0061-bug-BUG_ON-WARN_ON-variants-dependend-on-RT-RT.patch @@ -1,18 +1,18 @@ +From 3cab92a5d7bac5b62aeeae7ddeae5528573e579a Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Fri, 3 Jul 2009 08:29:58 -0500 -Subject: bug: BUG_ON/WARN_ON variants dependend on RT/!RT +Subject: [061/254] bug: BUG_ON/WARN_ON variants dependend on RT/!RT Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner - --- include/asm-generic/bug.h | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) -Index: linux-3.4/include/asm-generic/bug.h -=================================================================== ---- linux-3.4.orig/include/asm-generic/bug.h -+++ linux-3.4/include/asm-generic/bug.h +diff --git a/include/asm-generic/bug.h b/include/asm-generic/bug.h +index 2520a6e..0e41ade 100644 +--- a/include/asm-generic/bug.h ++++ b/include/asm-generic/bug.h @@ -3,6 +3,10 @@ #include @@ -24,7 +24,7 @@ Index: linux-3.4/include/asm-generic/bug.h #ifdef CONFIG_BUG #ifdef CONFIG_GENERIC_BUG -@@ -202,4 +206,18 @@ extern void warn_slowpath_null(const cha +@@ -202,4 +206,18 @@ extern void warn_slowpath_null(const char *file, const int line); # define WARN_ON_SMP(x) ({0;}) #endif diff --git a/debian/patches/features/all/rt/local-irq-rt-depending-variants.patch b/debian/patches/features/all/rt/0062-rt-local_irq_-variants-depending-on-RT-RT.patch similarity index 74% rename from debian/patches/features/all/rt/local-irq-rt-depending-variants.patch rename to debian/patches/features/all/rt/0062-rt-local_irq_-variants-depending-on-RT-RT.patch index 96c8fb7c5..89b777330 100644 --- a/debian/patches/features/all/rt/local-irq-rt-depending-variants.patch +++ b/debian/patches/features/all/rt/0062-rt-local_irq_-variants-depending-on-RT-RT.patch @@ -1,23 +1,23 @@ +From c50790660d75ebc664d0cf5c548d544aa4e035ff Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Tue, 21 Jul 2009 22:34:14 +0200 -Subject: rt: local_irq_* variants depending on RT/!RT +Subject: [062/254] rt: local_irq_* variants depending on RT/!RT Add local_irq_*_(no)rt variant which are mainly used to break interrupt disabled sections on PREEMPT_RT or to explicitely disable interrupts on PREEMPT_RT. Signed-off-by: Thomas Gleixner - --- include/linux/interrupt.h | 2 +- include/linux/irqflags.h | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) -Index: linux-3.4/include/linux/interrupt.h -=================================================================== ---- linux-3.4.orig/include/linux/interrupt.h -+++ linux-3.4/include/linux/interrupt.h -@@ -217,7 +217,7 @@ extern void devm_free_irq(struct device +diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h +index 02c3c4f..d2cc272 100644 +--- a/include/linux/interrupt.h ++++ b/include/linux/interrupt.h +@@ -217,7 +217,7 @@ extern void devm_free_irq(struct device *dev, unsigned int irq, void *dev_id); #ifdef CONFIG_LOCKDEP # define local_irq_enable_in_hardirq() do { } while (0) #else @@ -26,10 +26,10 @@ Index: linux-3.4/include/linux/interrupt.h #endif extern void disable_irq_nosync(unsigned int irq); -Index: linux-3.4/include/linux/irqflags.h -=================================================================== ---- linux-3.4.orig/include/linux/irqflags.h -+++ linux-3.4/include/linux/irqflags.h +diff --git a/include/linux/irqflags.h b/include/linux/irqflags.h +index d176d65..37b13c4 100644 +--- a/include/linux/irqflags.h ++++ b/include/linux/irqflags.h @@ -147,4 +147,23 @@ #endif /* CONFIG_TRACE_IRQFLAGS_SUPPORT */ diff --git a/debian/patches/features/all/rt/preempt-nort-rt-variants.patch b/debian/patches/features/all/rt/0063-preempt-Provide-preempt_-_-no-rt-variants.patch similarity index 83% rename from debian/patches/features/all/rt/preempt-nort-rt-variants.patch rename to debian/patches/features/all/rt/0063-preempt-Provide-preempt_-_-no-rt-variants.patch index fab467d12..0a0f681dc 100644 --- a/debian/patches/features/all/rt/preempt-nort-rt-variants.patch +++ b/debian/patches/features/all/rt/0063-preempt-Provide-preempt_-_-no-rt-variants.patch @@ -1,20 +1,20 @@ +From 469cd4cac2c70b07e6908b390fd627963e1d0872 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 24 Jul 2009 12:38:56 +0200 -Subject: preempt: Provide preempt_*_(no)rt variants +Subject: [063/254] preempt: Provide preempt_*_(no)rt variants RT needs a few preempt_disable/enable points which are not necessary otherwise. Implement variants to avoid #ifdeffery. Signed-off-by: Thomas Gleixner - --- include/linux/preempt.h | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) -Index: linux-3.4/include/linux/preempt.h -=================================================================== ---- linux-3.4.orig/include/linux/preempt.h -+++ linux-3.4/include/linux/preempt.h +diff --git a/include/linux/preempt.h b/include/linux/preempt.h +index 5a710b9..5b46536 100644 +--- a/include/linux/preempt.h ++++ b/include/linux/preempt.h @@ -54,11 +54,15 @@ do { \ dec_preempt_count(); \ } while (0) diff --git a/debian/patches/features/all/rt/ata-disable-interrupts-if-non-rt.patch b/debian/patches/features/all/rt/0064-ata-Do-not-disable-interrupts-in-ide-code-for-preemp.patch similarity index 72% rename from debian/patches/features/all/rt/ata-disable-interrupts-if-non-rt.patch rename to debian/patches/features/all/rt/0064-ata-Do-not-disable-interrupts-in-ide-code-for-preemp.patch index 6d1446e46..af5e769ab 100644 --- a/debian/patches/features/all/rt/ata-disable-interrupts-if-non-rt.patch +++ b/debian/patches/features/all/rt/0064-ata-Do-not-disable-interrupts-in-ide-code-for-preemp.patch @@ -1,22 +1,22 @@ +From 2008073430aa1ff3b26a3d3f0d562c4322fb0bed Mon Sep 17 00:00:00 2001 From: Steven Rostedt Date: Fri, 3 Jul 2009 08:44:29 -0500 -Subject: ata: Do not disable interrupts in ide code for preempt-rt +Subject: [064/254] ata: Do not disable interrupts in ide code for preempt-rt Use the local_irq_*_nort variants. Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner - --- drivers/ata/libata-sff.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) -Index: linux-3.4/drivers/ata/libata-sff.c -=================================================================== ---- linux-3.4.orig/drivers/ata/libata-sff.c -+++ linux-3.4/drivers/ata/libata-sff.c -@@ -678,9 +678,9 @@ unsigned int ata_sff_data_xfer_noirq(str +diff --git a/drivers/ata/libata-sff.c b/drivers/ata/libata-sff.c +index d8af325..ad3130d 100644 +--- a/drivers/ata/libata-sff.c ++++ b/drivers/ata/libata-sff.c +@@ -678,9 +678,9 @@ unsigned int ata_sff_data_xfer_noirq(struct ata_device *dev, unsigned char *buf, unsigned long flags; unsigned int consumed; @@ -28,7 +28,7 @@ Index: linux-3.4/drivers/ata/libata-sff.c return consumed; } -@@ -719,7 +719,7 @@ static void ata_pio_sector(struct ata_qu +@@ -719,7 +719,7 @@ static void ata_pio_sector(struct ata_queued_cmd *qc) unsigned long flags; /* FIXME: use a bounce buffer */ @@ -37,7 +37,7 @@ Index: linux-3.4/drivers/ata/libata-sff.c buf = kmap_atomic(page); /* do the actual data transfer */ -@@ -727,7 +727,7 @@ static void ata_pio_sector(struct ata_qu +@@ -727,7 +727,7 @@ static void ata_pio_sector(struct ata_queued_cmd *qc) do_write); kunmap_atomic(buf); diff --git a/debian/patches/features/all/rt/ide-use-nort-local-irq-variants.patch b/debian/patches/features/all/rt/0065-ide-Do-not-disable-interrupts-for-PREEMPT-RT.patch similarity index 59% rename from debian/patches/features/all/rt/ide-use-nort-local-irq-variants.patch rename to debian/patches/features/all/rt/0065-ide-Do-not-disable-interrupts-for-PREEMPT-RT.patch index 59fa7f6e7..80baaf5e4 100644 --- a/debian/patches/features/all/rt/ide-use-nort-local-irq-variants.patch +++ b/debian/patches/features/all/rt/0065-ide-Do-not-disable-interrupts-for-PREEMPT-RT.patch @@ -1,12 +1,12 @@ +From 008c54a0d9bbaead3dd95c175ed0505985ed27d2 Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Fri, 3 Jul 2009 08:30:16 -0500 -Subject: ide: Do not disable interrupts for PREEMPT-RT +Subject: [065/254] ide: Do not disable interrupts for PREEMPT-RT Use the local_irq_*_nort variants. Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner - --- drivers/ide/alim15x3.c | 4 ++-- drivers/ide/hpt366.c | 4 ++-- @@ -17,11 +17,11 @@ Signed-off-by: Thomas Gleixner drivers/ide/ide-taskfile.c | 6 +++--- 7 files changed, 16 insertions(+), 16 deletions(-) -Index: linux-3.4/drivers/ide/alim15x3.c -=================================================================== ---- linux-3.4.orig/drivers/ide/alim15x3.c -+++ linux-3.4/drivers/ide/alim15x3.c -@@ -234,7 +234,7 @@ static int init_chipset_ali15x3(struct p +diff --git a/drivers/ide/alim15x3.c b/drivers/ide/alim15x3.c +index 2c8016a..6fd6037 100644 +--- a/drivers/ide/alim15x3.c ++++ b/drivers/ide/alim15x3.c +@@ -234,7 +234,7 @@ static int init_chipset_ali15x3(struct pci_dev *dev) isa_dev = pci_get_device(PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M1533, NULL); @@ -39,11 +39,11 @@ Index: linux-3.4/drivers/ide/alim15x3.c return 0; } -Index: linux-3.4/drivers/ide/hpt366.c -=================================================================== ---- linux-3.4.orig/drivers/ide/hpt366.c -+++ linux-3.4/drivers/ide/hpt366.c -@@ -1241,7 +1241,7 @@ static int __devinit init_dma_hpt366(ide +diff --git a/drivers/ide/hpt366.c b/drivers/ide/hpt366.c +index 58c51cd..d2a4059 100644 +--- a/drivers/ide/hpt366.c ++++ b/drivers/ide/hpt366.c +@@ -1241,7 +1241,7 @@ static int __devinit init_dma_hpt366(ide_hwif_t *hwif, dma_old = inb(base + 2); @@ -52,7 +52,7 @@ Index: linux-3.4/drivers/ide/hpt366.c dma_new = dma_old; pci_read_config_byte(dev, hwif->channel ? 0x4b : 0x43, &masterdma); -@@ -1252,7 +1252,7 @@ static int __devinit init_dma_hpt366(ide +@@ -1252,7 +1252,7 @@ static int __devinit init_dma_hpt366(ide_hwif_t *hwif, if (dma_new != dma_old) outb(dma_new, base + 2); @@ -61,11 +61,11 @@ Index: linux-3.4/drivers/ide/hpt366.c printk(KERN_INFO " %s: BM-DMA at 0x%04lx-0x%04lx\n", hwif->name, base, base + 7); -Index: linux-3.4/drivers/ide/ide-io-std.c -=================================================================== ---- linux-3.4.orig/drivers/ide/ide-io-std.c -+++ linux-3.4/drivers/ide/ide-io-std.c -@@ -175,7 +175,7 @@ void ide_input_data(ide_drive_t *drive, +diff --git a/drivers/ide/ide-io-std.c b/drivers/ide/ide-io-std.c +index 1976397..4169433 100644 +--- a/drivers/ide/ide-io-std.c ++++ b/drivers/ide/ide-io-std.c +@@ -175,7 +175,7 @@ void ide_input_data(ide_drive_t *drive, struct ide_cmd *cmd, void *buf, unsigned long uninitialized_var(flags); if ((io_32bit & 2) && !mmio) { @@ -74,7 +74,7 @@ Index: linux-3.4/drivers/ide/ide-io-std.c ata_vlb_sync(io_ports->nsect_addr); } -@@ -186,7 +186,7 @@ void ide_input_data(ide_drive_t *drive, +@@ -186,7 +186,7 @@ void ide_input_data(ide_drive_t *drive, struct ide_cmd *cmd, void *buf, insl(data_addr, buf, words); if ((io_32bit & 2) && !mmio) @@ -83,7 +83,7 @@ Index: linux-3.4/drivers/ide/ide-io-std.c if (((len + 1) & 3) < 2) return; -@@ -219,7 +219,7 @@ void ide_output_data(ide_drive_t *drive, +@@ -219,7 +219,7 @@ void ide_output_data(ide_drive_t *drive, struct ide_cmd *cmd, void *buf, unsigned long uninitialized_var(flags); if ((io_32bit & 2) && !mmio) { @@ -92,7 +92,7 @@ Index: linux-3.4/drivers/ide/ide-io-std.c ata_vlb_sync(io_ports->nsect_addr); } -@@ -230,7 +230,7 @@ void ide_output_data(ide_drive_t *drive, +@@ -230,7 +230,7 @@ void ide_output_data(ide_drive_t *drive, struct ide_cmd *cmd, void *buf, outsl(data_addr, buf, words); if ((io_32bit & 2) && !mmio) @@ -101,11 +101,11 @@ Index: linux-3.4/drivers/ide/ide-io-std.c if (((len + 1) & 3) < 2) return; -Index: linux-3.4/drivers/ide/ide-io.c -=================================================================== ---- linux-3.4.orig/drivers/ide/ide-io.c -+++ linux-3.4/drivers/ide/ide-io.c -@@ -659,7 +659,7 @@ void ide_timer_expiry (unsigned long dat +diff --git a/drivers/ide/ide-io.c b/drivers/ide/ide-io.c +index 177db6d..079ae6b 100644 +--- a/drivers/ide/ide-io.c ++++ b/drivers/ide/ide-io.c +@@ -659,7 +659,7 @@ void ide_timer_expiry (unsigned long data) /* disable_irq_nosync ?? */ disable_irq(hwif->irq); /* local CPU only, as if we were handling an interrupt */ @@ -114,11 +114,11 @@ Index: linux-3.4/drivers/ide/ide-io.c if (hwif->polling) { startstop = handler(drive); } else if (drive_is_ready(drive)) { -Index: linux-3.4/drivers/ide/ide-iops.c -=================================================================== ---- linux-3.4.orig/drivers/ide/ide-iops.c -+++ linux-3.4/drivers/ide/ide-iops.c -@@ -129,12 +129,12 @@ int __ide_wait_stat(ide_drive_t *drive, +diff --git a/drivers/ide/ide-iops.c b/drivers/ide/ide-iops.c +index 376f2dc..f014dd1 100644 +--- a/drivers/ide/ide-iops.c ++++ b/drivers/ide/ide-iops.c +@@ -129,12 +129,12 @@ int __ide_wait_stat(ide_drive_t *drive, u8 good, u8 bad, if ((stat & ATA_BUSY) == 0) break; @@ -133,11 +133,11 @@ Index: linux-3.4/drivers/ide/ide-iops.c } /* * Allow status to settle, then read it again. -Index: linux-3.4/drivers/ide/ide-probe.c -=================================================================== ---- linux-3.4.orig/drivers/ide/ide-probe.c -+++ linux-3.4/drivers/ide/ide-probe.c -@@ -196,10 +196,10 @@ static void do_identify(ide_drive_t *dri +diff --git a/drivers/ide/ide-probe.c b/drivers/ide/ide-probe.c +index 068cef0..38e69e1 100644 +--- a/drivers/ide/ide-probe.c ++++ b/drivers/ide/ide-probe.c +@@ -196,10 +196,10 @@ static void do_identify(ide_drive_t *drive, u8 cmd, u16 *id) int bswap = 1; /* local CPU only; some systems need this */ @@ -150,11 +150,11 @@ Index: linux-3.4/drivers/ide/ide-probe.c drive->dev_flags |= IDE_DFLAG_ID_READ; #ifdef DEBUG -Index: linux-3.4/drivers/ide/ide-taskfile.c -=================================================================== ---- linux-3.4.orig/drivers/ide/ide-taskfile.c -+++ linux-3.4/drivers/ide/ide-taskfile.c -@@ -251,7 +251,7 @@ void ide_pio_bytes(ide_drive_t *drive, s +diff --git a/drivers/ide/ide-taskfile.c b/drivers/ide/ide-taskfile.c +index 729428e..3a9a1fc 100644 +--- a/drivers/ide/ide-taskfile.c ++++ b/drivers/ide/ide-taskfile.c +@@ -251,7 +251,7 @@ void ide_pio_bytes(ide_drive_t *drive, struct ide_cmd *cmd, page_is_high = PageHighMem(page); if (page_is_high) @@ -163,7 +163,7 @@ Index: linux-3.4/drivers/ide/ide-taskfile.c buf = kmap_atomic(page) + offset; -@@ -272,7 +272,7 @@ void ide_pio_bytes(ide_drive_t *drive, s +@@ -272,7 +272,7 @@ void ide_pio_bytes(ide_drive_t *drive, struct ide_cmd *cmd, kunmap_atomic(buf); if (page_is_high) @@ -172,7 +172,7 @@ Index: linux-3.4/drivers/ide/ide-taskfile.c len -= nr_bytes; } -@@ -415,7 +415,7 @@ static ide_startstop_t pre_task_out_intr +@@ -415,7 +415,7 @@ static ide_startstop_t pre_task_out_intr(ide_drive_t *drive, } if ((drive->dev_flags & IDE_DFLAG_UNMASK) == 0) diff --git a/debian/patches/features/all/rt/infiniband-mellanox-ib-use-nort-irq.patch b/debian/patches/features/all/rt/0066-infiniband-Mellanox-IB-driver-patch-use-_nort-primit.patch similarity index 65% rename from debian/patches/features/all/rt/infiniband-mellanox-ib-use-nort-irq.patch rename to debian/patches/features/all/rt/0066-infiniband-Mellanox-IB-driver-patch-use-_nort-primit.patch index 7be626676..e18c1d50d 100644 --- a/debian/patches/features/all/rt/infiniband-mellanox-ib-use-nort-irq.patch +++ b/debian/patches/features/all/rt/0066-infiniband-Mellanox-IB-driver-patch-use-_nort-primit.patch @@ -1,6 +1,8 @@ +From d6666e22ca1c95f8bd3ae7b88239bdf96ce7d059 Mon Sep 17 00:00:00 2001 From: Sven-Thorsten Dietrich Date: Fri, 3 Jul 2009 08:30:35 -0500 -Subject: infiniband: Mellanox IB driver patch use _nort() primitives +Subject: [066/254] infiniband: Mellanox IB driver patch use _nort() + primitives Fixes in_atomic stack-dump, when Mellanox module is loaded into the RT Kernel. @@ -13,16 +15,15 @@ changes." Signed-off-by: Sven-Thorsten Dietrich Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner - --- drivers/infiniband/ulp/ipoib/ipoib_multicast.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -Index: linux-3.4/drivers/infiniband/ulp/ipoib/ipoib_multicast.c -=================================================================== ---- linux-3.4.orig/drivers/infiniband/ulp/ipoib/ipoib_multicast.c -+++ linux-3.4/drivers/infiniband/ulp/ipoib/ipoib_multicast.c -@@ -798,7 +798,7 @@ void ipoib_mcast_restart_task(struct wor +diff --git a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c +index 20ebc6f..525fca6 100644 +--- a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c ++++ b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c +@@ -798,7 +798,7 @@ void ipoib_mcast_restart_task(struct work_struct *work) ipoib_mcast_stop_thread(dev, 0); @@ -31,7 +32,7 @@ Index: linux-3.4/drivers/infiniband/ulp/ipoib/ipoib_multicast.c netif_addr_lock(dev); spin_lock(&priv->lock); -@@ -880,7 +880,7 @@ void ipoib_mcast_restart_task(struct wor +@@ -880,7 +880,7 @@ void ipoib_mcast_restart_task(struct work_struct *work) spin_unlock(&priv->lock); netif_addr_unlock(dev); diff --git a/debian/patches/features/all/rt/inpt-gameport-use-local-irq-nort.patch b/debian/patches/features/all/rt/0067-input-gameport-Do-not-disable-interrupts-on-PREEMPT_.patch similarity index 65% rename from debian/patches/features/all/rt/inpt-gameport-use-local-irq-nort.patch rename to debian/patches/features/all/rt/0067-input-gameport-Do-not-disable-interrupts-on-PREEMPT_.patch index b1b6784f9..0eeae03da 100644 --- a/debian/patches/features/all/rt/inpt-gameport-use-local-irq-nort.patch +++ b/debian/patches/features/all/rt/0067-input-gameport-Do-not-disable-interrupts-on-PREEMPT_.patch @@ -1,21 +1,21 @@ +From 02630a5153eac2178374d4886c7c16e1ff0ae381 Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Fri, 3 Jul 2009 08:30:16 -0500 -Subject: input: gameport: Do not disable interrupts on PREEMPT_RT +Subject: [067/254] input: gameport: Do not disable interrupts on PREEMPT_RT Use the _nort() primitives. Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner - --- drivers/input/gameport/gameport.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) -Index: linux-3.4/drivers/input/gameport/gameport.c -=================================================================== ---- linux-3.4.orig/drivers/input/gameport/gameport.c -+++ linux-3.4/drivers/input/gameport/gameport.c -@@ -87,12 +87,12 @@ static int gameport_measure_speed(struct +diff --git a/drivers/input/gameport/gameport.c b/drivers/input/gameport/gameport.c +index da739d9..18fdafe 100644 +--- a/drivers/input/gameport/gameport.c ++++ b/drivers/input/gameport/gameport.c +@@ -87,12 +87,12 @@ static int gameport_measure_speed(struct gameport *gameport) tx = 1 << 30; for(i = 0; i < 50; i++) { @@ -30,7 +30,7 @@ Index: linux-3.4/drivers/input/gameport/gameport.c udelay(i * 10); if ((t = DELTA(t2,t1) - DELTA(t3,t2)) < tx) tx = t; } -@@ -111,11 +111,11 @@ static int gameport_measure_speed(struct +@@ -111,11 +111,11 @@ static int gameport_measure_speed(struct gameport *gameport) tx = 1 << 30; for(i = 0; i < 50; i++) { diff --git a/debian/patches/features/all/rt/acpi-use-local-irq-nort.patch b/debian/patches/features/all/rt/0068-acpi-Do-not-disable-interrupts-on-PREEMPT_RT.patch similarity index 67% rename from debian/patches/features/all/rt/acpi-use-local-irq-nort.patch rename to debian/patches/features/all/rt/0068-acpi-Do-not-disable-interrupts-on-PREEMPT_RT.patch index afa44ee5d..b55113b91 100644 --- a/debian/patches/features/all/rt/acpi-use-local-irq-nort.patch +++ b/debian/patches/features/all/rt/0068-acpi-Do-not-disable-interrupts-on-PREEMPT_RT.patch @@ -1,19 +1,19 @@ +From 44913098876e86912b081f20488dd31efa2cb281 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Tue, 21 Jul 2009 22:54:51 +0200 -Subject: acpi: Do not disable interrupts on PREEMPT_RT +Subject: [068/254] acpi: Do not disable interrupts on PREEMPT_RT Use the local_irq_*_nort() variants. Signed-off-by: Thomas Gleixner - --- arch/x86/include/asm/acpi.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -Index: linux-3.4/arch/x86/include/asm/acpi.h -=================================================================== ---- linux-3.4.orig/arch/x86/include/asm/acpi.h -+++ linux-3.4/arch/x86/include/asm/acpi.h +diff --git a/arch/x86/include/asm/acpi.h b/arch/x86/include/asm/acpi.h +index 610001d..c1c23d2 100644 +--- a/arch/x86/include/asm/acpi.h ++++ b/arch/x86/include/asm/acpi.h @@ -51,8 +51,8 @@ #define ACPI_ASM_MACROS diff --git a/debian/patches/features/all/rt/user-use-local-irq-nort.patch b/debian/patches/features/all/rt/0069-core-Do-not-disable-interrupts-on-RT-in-kernel-users.patch similarity index 73% rename from debian/patches/features/all/rt/user-use-local-irq-nort.patch rename to debian/patches/features/all/rt/0069-core-Do-not-disable-interrupts-on-RT-in-kernel-users.patch index eb2ab4db2..c7f804519 100644 --- a/debian/patches/features/all/rt/user-use-local-irq-nort.patch +++ b/debian/patches/features/all/rt/0069-core-Do-not-disable-interrupts-on-RT-in-kernel-users.patch @@ -1,20 +1,20 @@ +From 313a25fcfaaeb370d448fa8df2b42e5a5b2dc9f1 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Tue, 21 Jul 2009 23:06:05 +0200 -Subject: core: Do not disable interrupts on RT in kernel/users.c +Subject: [069/254] core: Do not disable interrupts on RT in kernel/users.c Use the local_irq_*_nort variants to reduce latencies in RT. The code is serialized by the locks. No need to disable interrupts. Signed-off-by: Thomas Gleixner - --- kernel/user.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -Index: linux-3.4/kernel/user.c -=================================================================== ---- linux-3.4.orig/kernel/user.c -+++ linux-3.4/kernel/user.c +diff --git a/kernel/user.c b/kernel/user.c +index 71dd236..b831e51 100644 +--- a/kernel/user.c ++++ b/kernel/user.c @@ -129,11 +129,11 @@ void free_uid(struct user_struct *up) if (!up) return; diff --git a/debian/patches/features/all/rt/resource-counters-use-localirq-nort.patch b/debian/patches/features/all/rt/0070-core-Do-not-disable-interrupts-on-RT-in-res_counter..patch similarity index 86% rename from debian/patches/features/all/rt/resource-counters-use-localirq-nort.patch rename to debian/patches/features/all/rt/0070-core-Do-not-disable-interrupts-on-RT-in-res_counter..patch index f2a249d27..dd128b0d9 100644 --- a/debian/patches/features/all/rt/resource-counters-use-localirq-nort.patch +++ b/debian/patches/features/all/rt/0070-core-Do-not-disable-interrupts-on-RT-in-res_counter..patch @@ -1,6 +1,7 @@ +From b61dbda982a0cdaf4153e1366de5ed5def03f216 Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Fri, 3 Jul 2009 08:44:33 -0500 -Subject: core: Do not disable interrupts on RT in res_counter.c +Subject: [070/254] core: Do not disable interrupts on RT in res_counter.c Frederic Weisbecker reported this warning: @@ -41,16 +42,15 @@ So replace it with _nort(). This code needs a second look. Reported-by: Frederic Weisbecker Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner - --- kernel/res_counter.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) -Index: linux-3.4/kernel/res_counter.c -=================================================================== ---- linux-3.4.orig/kernel/res_counter.c -+++ linux-3.4/kernel/res_counter.c -@@ -43,7 +43,7 @@ int res_counter_charge(struct res_counte +diff --git a/kernel/res_counter.c b/kernel/res_counter.c +index d508363..402f91a 100644 +--- a/kernel/res_counter.c ++++ b/kernel/res_counter.c +@@ -43,7 +43,7 @@ int res_counter_charge(struct res_counter *counter, unsigned long val, struct res_counter *c, *u; *limit_fail_at = NULL; @@ -68,7 +68,7 @@ Index: linux-3.4/kernel/res_counter.c return ret; } -@@ -104,13 +104,13 @@ void res_counter_uncharge(struct res_cou +@@ -104,13 +104,13 @@ void res_counter_uncharge(struct res_counter *counter, unsigned long val) unsigned long flags; struct res_counter *c; diff --git a/debian/patches/features/all/rt/usb-hcd-use-local-irq-nort.patch b/debian/patches/features/all/rt/0071-usb-Use-local_irq_-_nort-variants.patch similarity index 64% rename from debian/patches/features/all/rt/usb-hcd-use-local-irq-nort.patch rename to debian/patches/features/all/rt/0071-usb-Use-local_irq_-_nort-variants.patch index 2a62a827b..80d170cdc 100644 --- a/debian/patches/features/all/rt/usb-hcd-use-local-irq-nort.patch +++ b/debian/patches/features/all/rt/0071-usb-Use-local_irq_-_nort-variants.patch @@ -1,22 +1,22 @@ +From a0898772cdac466d344b01a1c40901ef9d41df9a Mon Sep 17 00:00:00 2001 From: Steven Rostedt Date: Fri, 3 Jul 2009 08:44:26 -0500 -Subject: usb: Use local_irq_*_nort() variants +Subject: [071/254] usb: Use local_irq_*_nort() variants [ tglx: Now that irqf_disabled is dead we should kill that ] Signed-off-by: Steven Rostedt Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner - --- drivers/usb/core/hcd.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -Index: linux-3.4/drivers/usb/core/hcd.c -=================================================================== ---- linux-3.4.orig/drivers/usb/core/hcd.c -+++ linux-3.4/drivers/usb/core/hcd.c -@@ -2143,7 +2143,7 @@ irqreturn_t usb_hcd_irq (int irq, void * +diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c +index 140d3e1..82ea8bf 100644 +--- a/drivers/usb/core/hcd.c ++++ b/drivers/usb/core/hcd.c +@@ -2143,7 +2143,7 @@ irqreturn_t usb_hcd_irq (int irq, void *__hcd) * when the first handler doesn't use it. So let's just * assume it's never used. */ @@ -25,7 +25,7 @@ Index: linux-3.4/drivers/usb/core/hcd.c if (unlikely(HCD_DEAD(hcd) || !HCD_HW_ACCESSIBLE(hcd))) rc = IRQ_NONE; -@@ -2152,7 +2152,7 @@ irqreturn_t usb_hcd_irq (int irq, void * +@@ -2152,7 +2152,7 @@ irqreturn_t usb_hcd_irq (int irq, void *__hcd) else rc = IRQ_HANDLED; diff --git a/debian/patches/features/all/rt/tty-use-local-irq-nort.patch b/debian/patches/features/all/rt/0072-tty-Do-not-disable-interrupts-in-put_ldisc-on-rt.patch similarity index 75% rename from debian/patches/features/all/rt/tty-use-local-irq-nort.patch rename to debian/patches/features/all/rt/0072-tty-Do-not-disable-interrupts-in-put_ldisc-on-rt.patch index e34dc82e6..66ca23c9a 100644 --- a/debian/patches/features/all/rt/tty-use-local-irq-nort.patch +++ b/debian/patches/features/all/rt/0072-tty-Do-not-disable-interrupts-in-put_ldisc-on-rt.patch @@ -1,6 +1,7 @@ +From af892d9d7beb8d3dd7b286fe533f868e76fc4b76 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Mon, 17 Aug 2009 19:49:19 +0200 -Subject: tty: Do not disable interrupts in put_ldisc on -rt +Subject: [072/254] tty: Do not disable interrupts in put_ldisc on -rt Fixes the following on PREEMPT_RT: @@ -20,16 +21,15 @@ Call Trace: .... Signed-off-by: Thomas Gleixner - --- drivers/tty/tty_ldisc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -Index: linux-3.4/drivers/tty/tty_ldisc.c -=================================================================== ---- linux-3.4.orig/drivers/tty/tty_ldisc.c -+++ linux-3.4/drivers/tty/tty_ldisc.c -@@ -53,7 +53,7 @@ static void put_ldisc(struct tty_ldisc * +diff --git a/drivers/tty/tty_ldisc.c b/drivers/tty/tty_ldisc.c +index 24b95db..7894759 100644 +--- a/drivers/tty/tty_ldisc.c ++++ b/drivers/tty/tty_ldisc.c +@@ -53,7 +53,7 @@ static void put_ldisc(struct tty_ldisc *ld) * We really want an "atomic_dec_and_lock_irqsave()", * but we don't have it, so this does it by hand. */ @@ -38,7 +38,7 @@ Index: linux-3.4/drivers/tty/tty_ldisc.c if (atomic_dec_and_lock(&ld->users, &tty_ldisc_lock)) { struct tty_ldisc_ops *ldo = ld->ops; -@@ -64,7 +64,7 @@ static void put_ldisc(struct tty_ldisc * +@@ -64,7 +64,7 @@ static void put_ldisc(struct tty_ldisc *ld) kfree(ld); return; } diff --git a/debian/patches/features/all/rt/mm-scatterlist-dont-disable-irqs-on-RT.patch b/debian/patches/features/all/rt/0073-mm-scatterlist-dont-disable-irqs-on-RT.patch similarity index 58% rename from debian/patches/features/all/rt/mm-scatterlist-dont-disable-irqs-on-RT.patch rename to debian/patches/features/all/rt/0073-mm-scatterlist-dont-disable-irqs-on-RT.patch index 3d3f2b979..8e28999ff 100644 --- a/debian/patches/features/all/rt/mm-scatterlist-dont-disable-irqs-on-RT.patch +++ b/debian/patches/features/all/rt/0073-mm-scatterlist-dont-disable-irqs-on-RT.patch @@ -1,17 +1,18 @@ +From cbc17e6d10850202cd154a144b0540cc7b19996b Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 3 Jul 2009 08:44:34 -0500 -Subject: mm: scatterlist dont disable irqs on RT +Subject: [073/254] mm: scatterlist dont disable irqs on RT Signed-off-by: Thomas Gleixner --- lib/scatterlist.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) -Index: linux-3.4/lib/scatterlist.c -=================================================================== ---- linux-3.4.orig/lib/scatterlist.c -+++ linux-3.4/lib/scatterlist.c -@@ -423,7 +423,7 @@ void sg_miter_stop(struct sg_mapping_ite +diff --git a/lib/scatterlist.c b/lib/scatterlist.c +index 6096e89..4becb6d 100644 +--- a/lib/scatterlist.c ++++ b/lib/scatterlist.c +@@ -423,7 +423,7 @@ void sg_miter_stop(struct sg_mapping_iter *miter) flush_kernel_dcache_page(miter->page); if (miter->__flags & SG_MITER_ATOMIC) { @@ -20,7 +21,7 @@ Index: linux-3.4/lib/scatterlist.c kunmap_atomic(miter->addr); } else kunmap(miter->page); -@@ -463,7 +463,7 @@ static size_t sg_copy_buffer(struct scat +@@ -463,7 +463,7 @@ static size_t sg_copy_buffer(struct scatterlist *sgl, unsigned int nents, sg_miter_start(&miter, sgl, nents, sg_flags); @@ -29,7 +30,7 @@ Index: linux-3.4/lib/scatterlist.c while (sg_miter_next(&miter) && offset < buflen) { unsigned int len; -@@ -480,7 +480,7 @@ static size_t sg_copy_buffer(struct scat +@@ -480,7 +480,7 @@ static size_t sg_copy_buffer(struct scatterlist *sgl, unsigned int nents, sg_miter_stop(&miter); diff --git a/debian/patches/features/all/rt/signal-fix-up-rcu-wreckage.patch b/debian/patches/features/all/rt/0074-signal-fix-up-rcu-wreckage.patch.patch similarity index 67% rename from debian/patches/features/all/rt/signal-fix-up-rcu-wreckage.patch rename to debian/patches/features/all/rt/0074-signal-fix-up-rcu-wreckage.patch.patch index f92cc0647..a7e21ca53 100644 --- a/debian/patches/features/all/rt/signal-fix-up-rcu-wreckage.patch +++ b/debian/patches/features/all/rt/0074-signal-fix-up-rcu-wreckage.patch.patch @@ -1,17 +1,18 @@ -Subject: signal-fix-up-rcu-wreckage.patch +From e8b1bc31b01c97b8e1f101f40dda33d659c29ee5 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 22 Jul 2011 08:07:08 +0200 +Subject: [074/254] signal-fix-up-rcu-wreckage.patch Signed-off-by: Thomas Gleixner --- kernel/signal.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) -Index: linux-3.4/kernel/signal.c -=================================================================== ---- linux-3.4.orig/kernel/signal.c -+++ linux-3.4/kernel/signal.c -@@ -1401,12 +1401,12 @@ struct sighand_struct *__lock_task_sigha +diff --git a/kernel/signal.c b/kernel/signal.c +index 65cb5b4..3d32651 100644 +--- a/kernel/signal.c ++++ b/kernel/signal.c +@@ -1401,12 +1401,12 @@ struct sighand_struct *__lock_task_sighand(struct task_struct *tsk, struct sighand_struct *sighand; for (;;) { @@ -26,7 +27,7 @@ Index: linux-3.4/kernel/signal.c break; } -@@ -1417,7 +1417,7 @@ struct sighand_struct *__lock_task_sigha +@@ -1417,7 +1417,7 @@ struct sighand_struct *__lock_task_sighand(struct task_struct *tsk, } spin_unlock(&sighand->siglock); rcu_read_unlock(); diff --git a/debian/patches/features/all/rt/net-wireless-warn-nort.patch b/debian/patches/features/all/rt/0075-net-wireless-warn-nort.patch.patch similarity index 59% rename from debian/patches/features/all/rt/net-wireless-warn-nort.patch rename to debian/patches/features/all/rt/0075-net-wireless-warn-nort.patch.patch index ef38c04ce..5d3fbbaa8 100644 --- a/debian/patches/features/all/rt/net-wireless-warn-nort.patch +++ b/debian/patches/features/all/rt/0075-net-wireless-warn-nort.patch.patch @@ -1,17 +1,18 @@ -Subject: net-wireless-warn-nort.patch +From 8bc67c84b5cd8857c6c67af9c9a397a571d9648c Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Thu, 21 Jul 2011 21:05:33 +0200 +Subject: [075/254] net-wireless-warn-nort.patch Signed-off-by: Thomas Gleixner --- net/mac80211/rx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-3.4/net/mac80211/rx.c -=================================================================== ---- linux-3.4.orig/net/mac80211/rx.c -+++ linux-3.4/net/mac80211/rx.c -@@ -3015,7 +3015,7 @@ void ieee80211_rx(struct ieee80211_hw *h +diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c +index d64e285..5ddd808 100644 +--- a/net/mac80211/rx.c ++++ b/net/mac80211/rx.c +@@ -3015,7 +3015,7 @@ void ieee80211_rx(struct ieee80211_hw *hw, struct sk_buff *skb) struct ieee80211_supported_band *sband; struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb); diff --git a/debian/patches/features/all/rt/mm-cgroup-page-bit-spinlock.patch b/debian/patches/features/all/rt/0076-mm-Replace-cgroup_page-bit-spinlock.patch similarity index 69% rename from debian/patches/features/all/rt/mm-cgroup-page-bit-spinlock.patch rename to debian/patches/features/all/rt/0076-mm-Replace-cgroup_page-bit-spinlock.patch index 1d7ed9fc3..17c249f2f 100644 --- a/debian/patches/features/all/rt/mm-cgroup-page-bit-spinlock.patch +++ b/debian/patches/features/all/rt/0076-mm-Replace-cgroup_page-bit-spinlock.patch @@ -1,20 +1,20 @@ +From 4273e198ba30a1ea79be5cfe508340fb93362381 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 19 Aug 2009 09:56:42 +0200 -Subject: mm: Replace cgroup_page bit spinlock +Subject: [076/254] mm: Replace cgroup_page bit spinlock Bit spinlocks are not working on RT. Replace them. Signed-off-by: Thomas Gleixner - --- include/linux/page_cgroup.h | 15 +++++++++++++++ mm/page_cgroup.c | 11 +++++++++++ 2 files changed, 26 insertions(+) -Index: linux-3.4/include/linux/page_cgroup.h -=================================================================== ---- linux-3.4.orig/include/linux/page_cgroup.h -+++ linux-3.4/include/linux/page_cgroup.h +diff --git a/include/linux/page_cgroup.h b/include/linux/page_cgroup.h +index a88cdba..5f0fe2d 100644 +--- a/include/linux/page_cgroup.h ++++ b/include/linux/page_cgroup.h @@ -24,6 +24,9 @@ enum { */ struct page_cgroup { @@ -25,7 +25,7 @@ Index: linux-3.4/include/linux/page_cgroup.h struct mem_cgroup *mem_cgroup; }; -@@ -74,12 +77,20 @@ static inline void lock_page_cgroup(stru +@@ -74,12 +77,20 @@ static inline void lock_page_cgroup(struct page_cgroup *pc) * Don't take this lock in IRQ context. * This lock is for pc->mem_cgroup, USED, MIGRATION */ @@ -46,7 +46,7 @@ Index: linux-3.4/include/linux/page_cgroup.h } #else /* CONFIG_CGROUP_MEM_RES_CTLR */ -@@ -102,6 +113,10 @@ static inline void __init page_cgroup_in +@@ -102,6 +113,10 @@ static inline void __init page_cgroup_init_flatmem(void) { } @@ -57,10 +57,10 @@ Index: linux-3.4/include/linux/page_cgroup.h #endif /* CONFIG_CGROUP_MEM_RES_CTLR */ #include -Index: linux-3.4/mm/page_cgroup.c -=================================================================== ---- linux-3.4.orig/mm/page_cgroup.c -+++ linux-3.4/mm/page_cgroup.c +diff --git a/mm/page_cgroup.c b/mm/page_cgroup.c +index 1ccbd71..84f3ce8 100644 +--- a/mm/page_cgroup.c ++++ b/mm/page_cgroup.c @@ -13,6 +13,14 @@ static unsigned long total_usage; @@ -76,7 +76,7 @@ Index: linux-3.4/mm/page_cgroup.c #if !defined(CONFIG_SPARSEMEM) -@@ -60,6 +68,7 @@ static int __init alloc_node_page_cgroup +@@ -60,6 +68,7 @@ static int __init alloc_node_page_cgroup(int nid) return -ENOMEM; NODE_DATA(nid)->node_page_cgroup = base; total_usage += table_size; @@ -84,7 +84,7 @@ Index: linux-3.4/mm/page_cgroup.c return 0; } -@@ -150,6 +159,8 @@ static int __meminit init_section_page_c +@@ -150,6 +159,8 @@ static int __meminit init_section_page_cgroup(unsigned long pfn, int nid) return -ENOMEM; } diff --git a/debian/patches/features/all/rt/fs-replace-bh_uptodate_lock-for-rt.patch b/debian/patches/features/all/rt/0077-buffer_head-Replace-bh_uptodate_lock-for-rt.patch similarity index 74% rename from debian/patches/features/all/rt/fs-replace-bh_uptodate_lock-for-rt.patch rename to debian/patches/features/all/rt/0077-buffer_head-Replace-bh_uptodate_lock-for-rt.patch index 100f00a6f..1ec1368f2 100644 --- a/debian/patches/features/all/rt/fs-replace-bh_uptodate_lock-for-rt.patch +++ b/debian/patches/features/all/rt/0077-buffer_head-Replace-bh_uptodate_lock-for-rt.patch @@ -1,6 +1,7 @@ +From 939e5a1b280fa99e06775f7f3baf2d39d1278953 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 18 Mar 2011 09:18:52 +0100 -Subject: buffer_head: Replace bh_uptodate_lock for -rt +Subject: [077/254] buffer_head: Replace bh_uptodate_lock for -rt Wrap the bit_spin_lock calls into a separate inline and add the RT replacements with a real spinlock. @@ -12,11 +13,11 @@ Signed-off-by: Thomas Gleixner include/linux/buffer_head.h | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 44 insertions(+), 21 deletions(-) -Index: linux-3.4/fs/buffer.c -=================================================================== ---- linux-3.4.orig/fs/buffer.c -+++ linux-3.4/fs/buffer.c -@@ -281,8 +281,7 @@ static void end_buffer_async_read(struct +diff --git a/fs/buffer.c b/fs/buffer.c +index ad5938c..38956b5 100644 +--- a/fs/buffer.c ++++ b/fs/buffer.c +@@ -281,8 +281,7 @@ static void end_buffer_async_read(struct buffer_head *bh, int uptodate) * decide that the page is now completely done. */ first = page_buffers(page); @@ -26,7 +27,7 @@ Index: linux-3.4/fs/buffer.c clear_buffer_async_read(bh); unlock_buffer(bh); tmp = bh; -@@ -295,8 +294,7 @@ static void end_buffer_async_read(struct +@@ -295,8 +294,7 @@ static void end_buffer_async_read(struct buffer_head *bh, int uptodate) } tmp = tmp->b_this_page; } while (tmp != bh); @@ -36,7 +37,7 @@ Index: linux-3.4/fs/buffer.c /* * If none of the buffers had errors and they are all -@@ -308,9 +306,7 @@ static void end_buffer_async_read(struct +@@ -308,9 +306,7 @@ static void end_buffer_async_read(struct buffer_head *bh, int uptodate) return; still_busy: @@ -47,7 +48,7 @@ Index: linux-3.4/fs/buffer.c } /* -@@ -344,8 +340,7 @@ void end_buffer_async_write(struct buffe +@@ -344,8 +340,7 @@ void end_buffer_async_write(struct buffer_head *bh, int uptodate) } first = page_buffers(page); @@ -57,7 +58,7 @@ Index: linux-3.4/fs/buffer.c clear_buffer_async_write(bh); unlock_buffer(bh); -@@ -357,15 +352,12 @@ void end_buffer_async_write(struct buffe +@@ -357,15 +352,12 @@ void end_buffer_async_write(struct buffer_head *bh, int uptodate) } tmp = tmp->b_this_page; } @@ -75,7 +76,7 @@ Index: linux-3.4/fs/buffer.c } EXPORT_SYMBOL(end_buffer_async_write); -@@ -3185,6 +3177,7 @@ struct buffer_head *alloc_buffer_head(gf +@@ -3187,6 +3179,7 @@ struct buffer_head *alloc_buffer_head(gfp_t gfp_flags) struct buffer_head *ret = kmem_cache_zalloc(bh_cachep, gfp_flags); if (ret) { INIT_LIST_HEAD(&ret->b_assoc_buffers); @@ -83,11 +84,11 @@ Index: linux-3.4/fs/buffer.c preempt_disable(); __this_cpu_inc(bh_accounting.nr); recalc_bh_state(); -Index: linux-3.4/fs/ntfs/aops.c -=================================================================== ---- linux-3.4.orig/fs/ntfs/aops.c -+++ linux-3.4/fs/ntfs/aops.c -@@ -108,8 +108,7 @@ static void ntfs_end_buffer_async_read(s +diff --git a/fs/ntfs/aops.c b/fs/ntfs/aops.c +index fa9c05f..4e4ca73 100644 +--- a/fs/ntfs/aops.c ++++ b/fs/ntfs/aops.c +@@ -108,8 +108,7 @@ static void ntfs_end_buffer_async_read(struct buffer_head *bh, int uptodate) "0x%llx.", (unsigned long long)bh->b_blocknr); } first = page_buffers(page); @@ -97,7 +98,7 @@ Index: linux-3.4/fs/ntfs/aops.c clear_buffer_async_read(bh); unlock_buffer(bh); tmp = bh; -@@ -124,8 +123,7 @@ static void ntfs_end_buffer_async_read(s +@@ -124,8 +123,7 @@ static void ntfs_end_buffer_async_read(struct buffer_head *bh, int uptodate) } tmp = tmp->b_this_page; } while (tmp != bh); @@ -107,7 +108,7 @@ Index: linux-3.4/fs/ntfs/aops.c /* * If none of the buffers had errors then we can set the page uptodate, * but we first have to perform the post read mst fixups, if the -@@ -160,9 +158,7 @@ static void ntfs_end_buffer_async_read(s +@@ -160,9 +158,7 @@ static void ntfs_end_buffer_async_read(struct buffer_head *bh, int uptodate) unlock_page(page); return; still_busy: @@ -118,10 +119,10 @@ Index: linux-3.4/fs/ntfs/aops.c } /** -Index: linux-3.4/include/linux/buffer_head.h -=================================================================== ---- linux-3.4.orig/include/linux/buffer_head.h -+++ linux-3.4/include/linux/buffer_head.h +diff --git a/include/linux/buffer_head.h b/include/linux/buffer_head.h +index 458f497..5c16cf1 100644 +--- a/include/linux/buffer_head.h ++++ b/include/linux/buffer_head.h @@ -72,8 +72,42 @@ struct buffer_head { struct address_space *b_assoc_map; /* mapping this buffer is associated with */ diff --git a/debian/patches/features/all/rt/fs-jbd-replace-bh_state-lock.patch b/debian/patches/features/all/rt/0078-fs-jbd-jbd2-Make-state-lock-and-journal-head-lock-rt.patch similarity index 73% rename from debian/patches/features/all/rt/fs-jbd-replace-bh_state-lock.patch rename to debian/patches/features/all/rt/0078-fs-jbd-jbd2-Make-state-lock-and-journal-head-lock-rt.patch index 90a31fcfb..3293435ab 100644 --- a/debian/patches/features/all/rt/fs-jbd-replace-bh_state-lock.patch +++ b/debian/patches/features/all/rt/0078-fs-jbd-jbd2-Make-state-lock-and-journal-head-lock-rt.patch @@ -1,6 +1,8 @@ +From 4d1281e2aea71f9da8f3b43eedfffc71f41f4f5f Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 18 Mar 2011 10:11:25 +0100 -Subject: fs: jbd/jbd2: Make state lock and journal head lock rt safe +Subject: [078/254] fs: jbd/jbd2: Make state lock and journal head lock rt + safe bit_spin_locks break under RT. @@ -12,11 +14,15 @@ Signed-off-by: Thomas Gleixner include/linux/buffer_head.h | 10 ++++++++++ include/linux/jbd_common.h | 24 ++++++++++++++++++++++++ 2 files changed, 34 insertions(+) +--- + include/linux/buffer_head.h | 10 ++++++++++ + include/linux/jbd_common.h | 24 ++++++++++++++++++++++++ + 2 files changed, 34 insertions(+) -Index: linux-3.4/include/linux/buffer_head.h -=================================================================== ---- linux-3.4.orig/include/linux/buffer_head.h -+++ linux-3.4/include/linux/buffer_head.h +diff --git a/include/linux/buffer_head.h b/include/linux/buffer_head.h +index 5c16cf1..3f8e27b 100644 +--- a/include/linux/buffer_head.h ++++ b/include/linux/buffer_head.h @@ -74,6 +74,11 @@ struct buffer_head { atomic_t b_count; /* users using this buffer_head */ #ifdef CONFIG_PREEMPT_RT_BASE @@ -29,7 +35,7 @@ Index: linux-3.4/include/linux/buffer_head.h #endif }; -@@ -105,6 +110,11 @@ static inline void buffer_head_init_lock +@@ -105,6 +110,11 @@ static inline void buffer_head_init_locks(struct buffer_head *bh) { #ifdef CONFIG_PREEMPT_RT_BASE spin_lock_init(&bh->b_uptodate_lock); @@ -41,11 +47,11 @@ Index: linux-3.4/include/linux/buffer_head.h #endif } -Index: linux-3.4/include/linux/jbd_common.h -=================================================================== ---- linux-3.4.orig/include/linux/jbd_common.h -+++ linux-3.4/include/linux/jbd_common.h -@@ -37,32 +37,56 @@ static inline struct journal_head *bh2jh +diff --git a/include/linux/jbd_common.h b/include/linux/jbd_common.h +index 6230f85..11c313e 100644 +--- a/include/linux/jbd_common.h ++++ b/include/linux/jbd_common.h +@@ -37,32 +37,56 @@ static inline struct journal_head *bh2jh(struct buffer_head *bh) static inline void jbd_lock_bh_state(struct buffer_head *bh) { diff --git a/debian/patches/features/all/rt/genirq-nodebug-shirq.patch b/debian/patches/features/all/rt/0079-genirq-Disable-DEBUG_SHIRQ-for-rt.patch similarity index 64% rename from debian/patches/features/all/rt/genirq-nodebug-shirq.patch rename to debian/patches/features/all/rt/0079-genirq-Disable-DEBUG_SHIRQ-for-rt.patch index e58f28758..b915144ec 100644 --- a/debian/patches/features/all/rt/genirq-nodebug-shirq.patch +++ b/debian/patches/features/all/rt/0079-genirq-Disable-DEBUG_SHIRQ-for-rt.patch @@ -1,16 +1,17 @@ +From 849dda243d37ffc36908f6b0f4ae6e3176d53f87 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner -Date: Sun, 18 Mar 2011 10:22:04 +0100 -Subject: genirq: Disable DEBUG_SHIRQ for rt +Date: Fri, 18 Mar 2011 10:22:04 +0100 +Subject: [079/254] genirq: Disable DEBUG_SHIRQ for rt Signed-off-by: Thomas Gleixner --- lib/Kconfig.debug | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-3.4/lib/Kconfig.debug -=================================================================== ---- linux-3.4.orig/lib/Kconfig.debug -+++ linux-3.4/lib/Kconfig.debug +diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug +index 6777153..1d80795 100644 +--- a/lib/Kconfig.debug ++++ b/lib/Kconfig.debug @@ -151,7 +151,7 @@ config DEBUG_KERNEL config DEBUG_SHIRQ diff --git a/debian/patches/features/all/rt/genirq-disable-random-call-on-preempt-rt.patch b/debian/patches/features/all/rt/0080-genirq-Disable-random-call-on-preempt-rt.patch similarity index 59% rename from debian/patches/features/all/rt/genirq-disable-random-call-on-preempt-rt.patch rename to debian/patches/features/all/rt/0080-genirq-Disable-random-call-on-preempt-rt.patch index bac9e80c6..3a5d192b8 100644 --- a/debian/patches/features/all/rt/genirq-disable-random-call-on-preempt-rt.patch +++ b/debian/patches/features/all/rt/0080-genirq-Disable-random-call-on-preempt-rt.patch @@ -1,21 +1,21 @@ +From 319ca93c99595d65aaf2a0baf8c2ebacd1d0cdcd Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Tue, 21 Jul 2009 16:07:37 +0200 -Subject: genirq: Disable random call on preempt-rt +Subject: [080/254] genirq: Disable random call on preempt-rt The random call introduces high latencies and is almost unused. Disable it for -rt. Signed-off-by: Thomas Gleixner - --- kernel/irq/handle.c | 3 +++ 1 file changed, 3 insertions(+) -Index: linux-3.4/kernel/irq/handle.c -=================================================================== ---- linux-3.4.orig/kernel/irq/handle.c -+++ linux-3.4/kernel/irq/handle.c -@@ -172,8 +172,11 @@ handle_irq_event_percpu(struct irq_desc +diff --git a/kernel/irq/handle.c b/kernel/irq/handle.c +index bdb1803..982793c 100644 +--- a/kernel/irq/handle.c ++++ b/kernel/irq/handle.c +@@ -172,8 +172,11 @@ handle_irq_event_percpu(struct irq_desc *desc, struct irqaction *action) action = action->next; } while (action); diff --git a/debian/patches/features/all/rt/genirq-disable-irqpoll-on-rt.patch b/debian/patches/features/all/rt/0081-genirq-disable-irqpoll-on-rt.patch similarity index 72% rename from debian/patches/features/all/rt/genirq-disable-irqpoll-on-rt.patch rename to debian/patches/features/all/rt/0081-genirq-disable-irqpoll-on-rt.patch index 5bddf233c..5aa3127b0 100644 --- a/debian/patches/features/all/rt/genirq-disable-irqpoll-on-rt.patch +++ b/debian/patches/features/all/rt/0081-genirq-disable-irqpoll-on-rt.patch @@ -1,21 +1,21 @@ +From d25490efc909e82f8db900d0519ee6a64d3f731f Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Fri, 3 Jul 2009 08:29:57 -0500 -Subject: genirq: disable irqpoll on -rt +Subject: [081/254] genirq: disable irqpoll on -rt Creates long latencies for no value Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner - --- kernel/irq/spurious.c | 10 ++++++++++ 1 file changed, 10 insertions(+) -Index: linux-3.4/kernel/irq/spurious.c -=================================================================== ---- linux-3.4.orig/kernel/irq/spurious.c -+++ linux-3.4/kernel/irq/spurious.c -@@ -341,6 +341,11 @@ MODULE_PARM_DESC(noirqdebug, "Disable ir +diff --git a/kernel/irq/spurious.c b/kernel/irq/spurious.c +index 611cd60..d1c80fa 100644 +--- a/kernel/irq/spurious.c ++++ b/kernel/irq/spurious.c +@@ -341,6 +341,11 @@ MODULE_PARM_DESC(noirqdebug, "Disable irq lockup detection when true"); static int __init irqfixup_setup(char *str) { diff --git a/debian/patches/features/all/rt/genirq-force-threading.patch b/debian/patches/features/all/rt/0082-genirq-force-threading.patch.patch similarity index 58% rename from debian/patches/features/all/rt/genirq-force-threading.patch rename to debian/patches/features/all/rt/0082-genirq-force-threading.patch.patch index b841d8099..077bd287b 100644 --- a/debian/patches/features/all/rt/genirq-force-threading.patch +++ b/debian/patches/features/all/rt/0082-genirq-force-threading.patch.patch @@ -1,6 +1,7 @@ -Subject: genirq-force-threading.patch +From 90fbaa35b154a16a4eadababc178ae2306ca111a Mon Sep 17 00:00:00 2001 From: Thomas Gleixner -Date: Sun, 03 Apr 2011 11:57:29 +0200 +Date: Sun, 3 Apr 2011 11:57:29 +0200 +Subject: [082/254] genirq-force-threading.patch Signed-off-by: Thomas Gleixner --- @@ -8,11 +9,11 @@ Signed-off-by: Thomas Gleixner kernel/irq/manage.c | 2 ++ 2 files changed, 8 insertions(+), 2 deletions(-) -Index: linux-3.4/include/linux/interrupt.h -=================================================================== ---- linux-3.4.orig/include/linux/interrupt.h -+++ linux-3.4/include/linux/interrupt.h -@@ -394,9 +394,13 @@ static inline int disable_irq_wake(unsig +diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h +index d2cc272..9027bde 100644 +--- a/include/linux/interrupt.h ++++ b/include/linux/interrupt.h +@@ -394,9 +394,13 @@ static inline int disable_irq_wake(unsigned int irq) #ifdef CONFIG_IRQ_FORCED_THREADING @@ -28,10 +29,10 @@ Index: linux-3.4/include/linux/interrupt.h #endif #ifndef __ARCH_SET_SOFTIRQ_PENDING -Index: linux-3.4/kernel/irq/manage.c -=================================================================== ---- linux-3.4.orig/kernel/irq/manage.c -+++ linux-3.4/kernel/irq/manage.c +diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c +index 89a3ea8..975b3a1 100644 +--- a/kernel/irq/manage.c ++++ b/kernel/irq/manage.c @@ -18,6 +18,7 @@ #include "internals.h" @@ -40,7 +41,7 @@ Index: linux-3.4/kernel/irq/manage.c __read_mostly bool force_irqthreads; static int __init setup_forced_irqthreads(char *arg) -@@ -26,6 +27,7 @@ static int __init setup_forced_irqthread +@@ -26,6 +27,7 @@ static int __init setup_forced_irqthreads(char *arg) return 0; } early_param("threadirqs", setup_forced_irqthreads); diff --git a/debian/patches/features/all/rt/drivers-net-fix-livelock-issues.patch b/debian/patches/features/all/rt/0083-drivers-net-fix-livelock-issues.patch similarity index 58% rename from debian/patches/features/all/rt/drivers-net-fix-livelock-issues.patch rename to debian/patches/features/all/rt/0083-drivers-net-fix-livelock-issues.patch index 4e133ee84..567fb43a6 100644 --- a/debian/patches/features/all/rt/drivers-net-fix-livelock-issues.patch +++ b/debian/patches/features/all/rt/0083-drivers-net-fix-livelock-issues.patch @@ -1,6 +1,7 @@ +From 705be62f53daef2d231998e80cda8e3a4e2657f7 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sat, 20 Jun 2009 11:36:54 +0200 -Subject: drivers/net: fix livelock issues +Subject: [083/254] drivers/net: fix livelock issues Preempt-RT runs into a live lock issue with the NETDEV_TX_LOCKED micro optimization. The reason is that the softirq thread is rescheduling @@ -10,7 +11,6 @@ monoplize the CPU and livelock on UP systems. Remove it. Signed-off-by: Thomas Gleixner - --- drivers/net/ethernet/atheros/atl1c/atl1c_main.c | 6 +----- drivers/net/ethernet/atheros/atl1e/atl1e_main.c | 3 +-- @@ -21,11 +21,11 @@ Signed-off-by: Thomas Gleixner drivers/net/rionet.c | 6 +----- 7 files changed, 10 insertions(+), 31 deletions(-) -Index: linux-3.4/drivers/net/ethernet/atheros/atl1c/atl1c_main.c -=================================================================== ---- linux-3.4.orig/drivers/net/ethernet/atheros/atl1c/atl1c_main.c -+++ linux-3.4/drivers/net/ethernet/atheros/atl1c/atl1c_main.c -@@ -2240,11 +2240,7 @@ static netdev_tx_t atl1c_xmit_frame(stru +diff --git a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c +index 1ef0c92..7cb889c 100644 +--- a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c ++++ b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c +@@ -2240,11 +2240,7 @@ static netdev_tx_t atl1c_xmit_frame(struct sk_buff *skb, } tpd_req = atl1c_cal_tpd_req(skb); @@ -38,11 +38,11 @@ Index: linux-3.4/drivers/net/ethernet/atheros/atl1c/atl1c_main.c if (atl1c_tpd_avail(adapter, type) < tpd_req) { /* no enough descriptor, just stop queue */ -Index: linux-3.4/drivers/net/ethernet/atheros/atl1e/atl1e_main.c -=================================================================== ---- linux-3.4.orig/drivers/net/ethernet/atheros/atl1e/atl1e_main.c -+++ linux-3.4/drivers/net/ethernet/atheros/atl1e/atl1e_main.c -@@ -1822,8 +1822,7 @@ static netdev_tx_t atl1e_xmit_frame(stru +diff --git a/drivers/net/ethernet/atheros/atl1e/atl1e_main.c b/drivers/net/ethernet/atheros/atl1e/atl1e_main.c +index 93ff2b2..cecc414 100644 +--- a/drivers/net/ethernet/atheros/atl1e/atl1e_main.c ++++ b/drivers/net/ethernet/atheros/atl1e/atl1e_main.c +@@ -1822,8 +1822,7 @@ static netdev_tx_t atl1e_xmit_frame(struct sk_buff *skb, return NETDEV_TX_OK; } tpd_req = atl1e_cal_tdp_req(skb); @@ -52,11 +52,11 @@ Index: linux-3.4/drivers/net/ethernet/atheros/atl1e/atl1e_main.c if (atl1e_tpd_avail(adapter) < tpd_req) { /* no enough descriptor, just stop queue */ -Index: linux-3.4/drivers/net/ethernet/chelsio/cxgb/sge.c -=================================================================== ---- linux-3.4.orig/drivers/net/ethernet/chelsio/cxgb/sge.c -+++ linux-3.4/drivers/net/ethernet/chelsio/cxgb/sge.c -@@ -1678,8 +1678,7 @@ static int t1_sge_tx(struct sk_buff *skb +diff --git a/drivers/net/ethernet/chelsio/cxgb/sge.c b/drivers/net/ethernet/chelsio/cxgb/sge.c +index 47a8435..279c04e 100644 +--- a/drivers/net/ethernet/chelsio/cxgb/sge.c ++++ b/drivers/net/ethernet/chelsio/cxgb/sge.c +@@ -1678,8 +1678,7 @@ static int t1_sge_tx(struct sk_buff *skb, struct adapter *adapter, struct cmdQ *q = &sge->cmdQ[qid]; unsigned int credits, pidx, genbit, count, use_sched_skb = 0; @@ -66,11 +66,11 @@ Index: linux-3.4/drivers/net/ethernet/chelsio/cxgb/sge.c reclaim_completed_tx(sge, q); -Index: linux-3.4/drivers/net/ethernet/neterion/s2io.c -=================================================================== ---- linux-3.4.orig/drivers/net/ethernet/neterion/s2io.c -+++ linux-3.4/drivers/net/ethernet/neterion/s2io.c -@@ -4089,12 +4089,7 @@ static netdev_tx_t s2io_xmit(struct sk_b +diff --git a/drivers/net/ethernet/neterion/s2io.c b/drivers/net/ethernet/neterion/s2io.c +index 6338ef8..ad2f094 100644 +--- a/drivers/net/ethernet/neterion/s2io.c ++++ b/drivers/net/ethernet/neterion/s2io.c +@@ -4089,12 +4089,7 @@ static netdev_tx_t s2io_xmit(struct sk_buff *skb, struct net_device *dev) [skb->priority & (MAX_TX_FIFOS - 1)]; fifo = &mac_control->fifos[queue]; @@ -84,11 +84,11 @@ Index: linux-3.4/drivers/net/ethernet/neterion/s2io.c if (sp->config.multiq) { if (__netif_subqueue_stopped(dev, fifo->fifo_no)) { -Index: linux-3.4/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c -=================================================================== ---- linux-3.4.orig/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c -+++ linux-3.4/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c -@@ -2131,10 +2131,9 @@ static int pch_gbe_xmit_frame(struct sk_ +diff --git a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c +index 1e38d50..f017954 100644 +--- a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c ++++ b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c +@@ -2128,10 +2128,9 @@ static int pch_gbe_xmit_frame(struct sk_buff *skb, struct net_device *netdev) adapter->stats.tx_length_errors++; return NETDEV_TX_OK; } @@ -102,11 +102,11 @@ Index: linux-3.4/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c if (unlikely(!PCH_GBE_DESC_UNUSED(tx_ring))) { netif_stop_queue(netdev); spin_unlock_irqrestore(&tx_ring->tx_lock, flags); -Index: linux-3.4/drivers/net/ethernet/tehuti/tehuti.c -=================================================================== ---- linux-3.4.orig/drivers/net/ethernet/tehuti/tehuti.c -+++ linux-3.4/drivers/net/ethernet/tehuti/tehuti.c -@@ -1606,13 +1606,8 @@ static netdev_tx_t bdx_tx_transmit(struc +diff --git a/drivers/net/ethernet/tehuti/tehuti.c b/drivers/net/ethernet/tehuti/tehuti.c +index ad973ff..1afa33c 100644 +--- a/drivers/net/ethernet/tehuti/tehuti.c ++++ b/drivers/net/ethernet/tehuti/tehuti.c +@@ -1606,13 +1606,8 @@ static netdev_tx_t bdx_tx_transmit(struct sk_buff *skb, unsigned long flags; ENTER; @@ -122,11 +122,11 @@ Index: linux-3.4/drivers/net/ethernet/tehuti/tehuti.c /* build tx descriptor */ BDX_ASSERT(f->m.wptr >= f->m.memsz); /* started with valid wptr */ -Index: linux-3.4/drivers/net/rionet.c -=================================================================== ---- linux-3.4.orig/drivers/net/rionet.c -+++ linux-3.4/drivers/net/rionet.c -@@ -176,11 +176,7 @@ static int rionet_start_xmit(struct sk_b +diff --git a/drivers/net/rionet.c b/drivers/net/rionet.c +index 91d2588..d4c418e 100644 +--- a/drivers/net/rionet.c ++++ b/drivers/net/rionet.c +@@ -176,11 +176,7 @@ static int rionet_start_xmit(struct sk_buff *skb, struct net_device *ndev) u16 destid; unsigned long flags; diff --git a/debian/patches/features/all/rt/drivers-net-vortex-fix-locking-issues.patch b/debian/patches/features/all/rt/0084-drivers-net-vortex-fix-locking-issues.patch similarity index 72% rename from debian/patches/features/all/rt/drivers-net-vortex-fix-locking-issues.patch rename to debian/patches/features/all/rt/0084-drivers-net-vortex-fix-locking-issues.patch index 5fbd0ee8c..e2ff0b838 100644 --- a/debian/patches/features/all/rt/drivers-net-vortex-fix-locking-issues.patch +++ b/debian/patches/features/all/rt/0084-drivers-net-vortex-fix-locking-issues.patch @@ -1,6 +1,7 @@ +From 778af2b4f14a7702886b05248c0cedac9c2b5587 Mon Sep 17 00:00:00 2001 From: Steven Rostedt Date: Fri, 3 Jul 2009 08:30:00 -0500 -Subject: drivers/net: vortex fix locking issues +Subject: [084/254] drivers/net: vortex fix locking issues Argh, cut and paste wasn't enough... @@ -16,12 +17,15 @@ Signed-off-by: Thomas Gleixner 1 file changed, 4 insertions(+), 4 deletions(-) Signed-off-by: Ingo Molnar +--- + drivers/net/ethernet/3com/3c59x.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) -Index: linux-3.4/drivers/net/ethernet/3com/3c59x.c -=================================================================== ---- linux-3.4.orig/drivers/net/ethernet/3com/3c59x.c -+++ linux-3.4/drivers/net/ethernet/3com/3c59x.c -@@ -843,9 +843,9 @@ static void poll_vortex(struct net_devic +diff --git a/drivers/net/ethernet/3com/3c59x.c b/drivers/net/ethernet/3com/3c59x.c +index e463d10..848aeea 100644 +--- a/drivers/net/ethernet/3com/3c59x.c ++++ b/drivers/net/ethernet/3com/3c59x.c +@@ -843,9 +843,9 @@ static void poll_vortex(struct net_device *dev) { struct vortex_private *vp = netdev_priv(dev); unsigned long flags; @@ -33,7 +37,7 @@ Index: linux-3.4/drivers/net/ethernet/3com/3c59x.c } #endif -@@ -1920,12 +1920,12 @@ static void vortex_tx_timeout(struct net +@@ -1920,12 +1920,12 @@ static void vortex_tx_timeout(struct net_device *dev) * Block interrupts because vortex_interrupt does a bare spin_lock() */ unsigned long flags; diff --git a/debian/patches/features/all/rt/drivers-net-gianfar-make-rt-aware.patch b/debian/patches/features/all/rt/0085-drivers-net-gianfar-Make-RT-aware.patch similarity index 73% rename from debian/patches/features/all/rt/drivers-net-gianfar-make-rt-aware.patch rename to debian/patches/features/all/rt/0085-drivers-net-gianfar-Make-RT-aware.patch index 9bfc2b46c..7f5218d87 100644 --- a/debian/patches/features/all/rt/drivers-net-gianfar-make-rt-aware.patch +++ b/debian/patches/features/all/rt/0085-drivers-net-gianfar-Make-RT-aware.patch @@ -1,6 +1,7 @@ +From 37a77c8c514dc179049baca9cf708cbd9ec889d5 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Thu, 1 Apr 2010 20:20:57 +0200 -Subject: drivers: net: gianfar: Make RT aware +Subject: [085/254] drivers: net: gianfar: Make RT aware The adjust_link() disables interrupts before taking the queue locks. On RT those locks are converted to "sleeping" locks and @@ -10,15 +11,14 @@ local_irq_save/restore_nort. Reported-by: Xianghua Xiao Signed-off-by: Thomas Gleixner Tested-by: Xianghua Xiao - --- drivers/net/ethernet/freescale/gianfar.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) -Index: linux-3.4/drivers/net/ethernet/freescale/gianfar.c -=================================================================== ---- linux-3.4.orig/drivers/net/ethernet/freescale/gianfar.c -+++ linux-3.4/drivers/net/ethernet/freescale/gianfar.c +diff --git a/drivers/net/ethernet/freescale/gianfar.c b/drivers/net/ethernet/freescale/gianfar.c +index e7bed53..3a42d36 100644 +--- a/drivers/net/ethernet/freescale/gianfar.c ++++ b/drivers/net/ethernet/freescale/gianfar.c @@ -1643,7 +1643,7 @@ void stop_gfar(struct net_device *dev) @@ -37,7 +37,7 @@ Index: linux-3.4/drivers/net/ethernet/freescale/gianfar.c /* Free the IRQs */ if (priv->device_flags & FSL_GIANFAR_DEV_HAS_MULTI_INTR) { -@@ -2948,7 +2948,7 @@ static void adjust_link(struct net_devic +@@ -2948,7 +2948,7 @@ static void adjust_link(struct net_device *dev) struct phy_device *phydev = priv->phydev; int new_state = 0; @@ -46,7 +46,7 @@ Index: linux-3.4/drivers/net/ethernet/freescale/gianfar.c lock_tx_qs(priv); if (phydev->link) { -@@ -3015,7 +3015,7 @@ static void adjust_link(struct net_devic +@@ -3015,7 +3015,7 @@ static void adjust_link(struct net_device *dev) if (new_state && netif_msg_link(priv)) phy_print_status(phydev); unlock_tx_qs(priv); diff --git a/debian/patches/features/all/rt/usb-fix-mouse-problem-copying-large-data.patch b/debian/patches/features/all/rt/0086-USB-Fix-the-mouse-problem-when-copying-large-amounts.patch similarity index 69% rename from debian/patches/features/all/rt/usb-fix-mouse-problem-copying-large-data.patch rename to debian/patches/features/all/rt/0086-USB-Fix-the-mouse-problem-when-copying-large-amounts.patch index 008b53a77..53b553de6 100644 --- a/debian/patches/features/all/rt/usb-fix-mouse-problem-copying-large-data.patch +++ b/debian/patches/features/all/rt/0086-USB-Fix-the-mouse-problem-when-copying-large-amounts.patch @@ -1,6 +1,8 @@ +From 1053d66c1e626794e8a5c11179d120da22bcd626 Mon Sep 17 00:00:00 2001 From: Wu Zhangjin Date: Mon, 4 Jan 2010 11:33:02 +0800 -Subject: USB: Fix the mouse problem when copying large amounts of data +Subject: [086/254] USB: Fix the mouse problem when copying large amounts of + data When copying large amounts of data between the USB storage devices and the hard disk, the USB mouse will not work, this patch fixes it. @@ -10,16 +12,15 @@ sure whether it is producible on other platforms] Signed-off-by: Hu Hongbing Signed-off-by: Wu Zhangjin - --- drivers/usb/host/ohci-hcd.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) -Index: linux-3.4/drivers/usb/host/ohci-hcd.c -=================================================================== ---- linux-3.4.orig/drivers/usb/host/ohci-hcd.c -+++ linux-3.4/drivers/usb/host/ohci-hcd.c -@@ -829,9 +829,13 @@ static irqreturn_t ohci_irq (struct usb_ +diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c +index 235171f..0157357 100644 +--- a/drivers/usb/host/ohci-hcd.c ++++ b/drivers/usb/host/ohci-hcd.c +@@ -829,9 +829,13 @@ static irqreturn_t ohci_irq (struct usb_hcd *hcd) } if (ints & OHCI_INTR_WDH) { diff --git a/debian/patches/features/all/rt/local-var.patch b/debian/patches/features/all/rt/0087-local-var.patch.patch similarity index 69% rename from debian/patches/features/all/rt/local-var.patch rename to debian/patches/features/all/rt/0087-local-var.patch.patch index 3ba067b5a..a1024bc67 100644 --- a/debian/patches/features/all/rt/local-var.patch +++ b/debian/patches/features/all/rt/0087-local-var.patch.patch @@ -1,16 +1,17 @@ -Subject: local-var.patch +From 0406500ace84f79049a055d56671ad74fdd39f0e Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 24 Jun 2011 18:40:37 +0200 +Subject: [087/254] local-var.patch Signed-off-by: Thomas Gleixner --- include/linux/percpu.h | 5 +++++ 1 file changed, 5 insertions(+) -Index: linux-3.4/include/linux/percpu.h -=================================================================== ---- linux-3.4.orig/include/linux/percpu.h -+++ linux-3.4/include/linux/percpu.h +diff --git a/include/linux/percpu.h b/include/linux/percpu.h +index 21638ae..3d13ce0 100644 +--- a/include/linux/percpu.h ++++ b/include/linux/percpu.h @@ -48,6 +48,11 @@ preempt_enable(); \ } while (0) diff --git a/debian/patches/features/all/rt/rt-local-irq-lock.patch b/debian/patches/features/all/rt/0088-rt-local-irq-lock.patch.patch similarity index 94% rename from debian/patches/features/all/rt/rt-local-irq-lock.patch rename to debian/patches/features/all/rt/0088-rt-local-irq-lock.patch.patch index d05af60c2..2d2048e03 100644 --- a/debian/patches/features/all/rt/rt-local-irq-lock.patch +++ b/debian/patches/features/all/rt/0088-rt-local-irq-lock.patch.patch @@ -1,16 +1,19 @@ -Subject: rt-local-irq-lock.patch +From 7248b2cedce7ed66713782c57bd6167955411f82 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Mon, 20 Jun 2011 09:03:47 +0200 +Subject: [088/254] rt-local-irq-lock.patch Signed-off-by: Thomas Gleixner --- - include/linux/locallock.h | 230 ++++++++++++++++++++++++++++++++++++++++++++++ + include/linux/locallock.h | 230 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 230 insertions(+) + create mode 100644 include/linux/locallock.h -Index: linux-3.4/include/linux/locallock.h -=================================================================== +diff --git a/include/linux/locallock.h b/include/linux/locallock.h +new file mode 100644 +index 0000000..8fbc393 --- /dev/null -+++ linux-3.4/include/linux/locallock.h ++++ b/include/linux/locallock.h @@ -0,0 +1,230 @@ +#ifndef _LINUX_LOCALLOCK_H +#define _LINUX_LOCALLOCK_H diff --git a/debian/patches/features/all/rt/cpu-rt-variants.patch b/debian/patches/features/all/rt/0089-cpu-rt-variants.patch.patch similarity index 65% rename from debian/patches/features/all/rt/cpu-rt-variants.patch rename to debian/patches/features/all/rt/0089-cpu-rt-variants.patch.patch index 0e49fdb4c..5f4047567 100644 --- a/debian/patches/features/all/rt/cpu-rt-variants.patch +++ b/debian/patches/features/all/rt/0089-cpu-rt-variants.patch.patch @@ -1,17 +1,18 @@ -Subject: cpu-rt-variants.patch +From 78761954bd13ddac3e08a14f3d6465311e598f11 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 17 Jun 2011 15:42:38 +0200 +Subject: [089/254] cpu-rt-variants.patch Signed-off-by: Thomas Gleixner --- include/linux/smp.h | 8 ++++++++ 1 file changed, 8 insertions(+) -Index: linux-3.4/include/linux/smp.h -=================================================================== ---- linux-3.4.orig/include/linux/smp.h -+++ linux-3.4/include/linux/smp.h -@@ -219,6 +219,14 @@ smp_call_function_any(const struct cpuma +diff --git a/include/linux/smp.h b/include/linux/smp.h +index 10530d9..04e7ed9 100644 +--- a/include/linux/smp.h ++++ b/include/linux/smp.h +@@ -219,6 +219,14 @@ smp_call_function_any(const struct cpumask *mask, smp_call_func_t func, #define get_cpu() ({ preempt_disable(); smp_processor_id(); }) #define put_cpu() preempt_enable() diff --git a/debian/patches/features/all/rt/mm-slab-wrap-functions.patch b/debian/patches/features/all/rt/0090-mm-slab-wrap-functions.patch.patch similarity index 84% rename from debian/patches/features/all/rt/mm-slab-wrap-functions.patch rename to debian/patches/features/all/rt/0090-mm-slab-wrap-functions.patch.patch index 6392b20a8..b5043455d 100644 --- a/debian/patches/features/all/rt/mm-slab-wrap-functions.patch +++ b/debian/patches/features/all/rt/0090-mm-slab-wrap-functions.patch.patch @@ -1,16 +1,17 @@ -Subject: mm-slab-wrap-functions.patch +From 96d14b2f907b78c9e5c6ee1e46c843b09dcf6533 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sat, 18 Jun 2011 19:44:43 +0200 +Subject: [090/254] mm-slab-wrap-functions.patch Signed-off-by: Thomas Gleixner --- - mm/slab.c | 152 ++++++++++++++++++++++++++++++++++++++++++-------------------- + mm/slab.c | 152 ++++++++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 104 insertions(+), 48 deletions(-) -Index: linux-3.4/mm/slab.c -=================================================================== ---- linux-3.4.orig/mm/slab.c -+++ linux-3.4/mm/slab.c +diff --git a/mm/slab.c b/mm/slab.c +index 80c57f9..dc84364 100644 +--- a/mm/slab.c ++++ b/mm/slab.c @@ -116,6 +116,7 @@ #include #include @@ -19,7 +20,7 @@ Index: linux-3.4/mm/slab.c #include #include -@@ -726,12 +727,40 @@ static void slab_set_debugobj_lock_class +@@ -726,12 +727,40 @@ static void slab_set_debugobj_lock_classes(struct kmem_cache *cachep) #endif static DEFINE_PER_CPU(struct delayed_work, slab_reap_work); @@ -60,7 +61,7 @@ Index: linux-3.4/mm/slab.c static inline struct kmem_cache *__find_general_cachep(size_t size, gfp_t gfpflags) { -@@ -1080,9 +1109,10 @@ static void reap_alien(struct kmem_cache +@@ -1080,9 +1109,10 @@ static void reap_alien(struct kmem_cache *cachep, struct kmem_list3 *l3) if (l3->alien) { struct array_cache *ac = l3->alien[node]; @@ -73,7 +74,7 @@ Index: linux-3.4/mm/slab.c } } } -@@ -1097,9 +1127,9 @@ static void drain_alien_cache(struct kme +@@ -1097,9 +1127,9 @@ static void drain_alien_cache(struct kmem_cache *cachep, for_each_online_node(i) { ac = alien[i]; if (ac) { @@ -85,7 +86,7 @@ Index: linux-3.4/mm/slab.c } } } -@@ -1178,11 +1208,11 @@ static int init_cache_nodelists_node(int +@@ -1178,11 +1208,11 @@ static int init_cache_nodelists_node(int node) cachep->nodelists[node] = l3; } @@ -99,7 +100,7 @@ Index: linux-3.4/mm/slab.c } return 0; } -@@ -1207,7 +1237,7 @@ static void __cpuinit cpuup_canceled(lon +@@ -1207,7 +1237,7 @@ static void __cpuinit cpuup_canceled(long cpu) if (!l3) goto free_array_cache; @@ -108,7 +109,7 @@ Index: linux-3.4/mm/slab.c /* Free limit for this kmem_list3 */ l3->free_limit -= cachep->batchcount; -@@ -1215,7 +1245,7 @@ static void __cpuinit cpuup_canceled(lon +@@ -1215,7 +1245,7 @@ static void __cpuinit cpuup_canceled(long cpu) free_block(cachep, nc->entry, nc->avail, node); if (!cpumask_empty(mask)) { @@ -117,7 +118,7 @@ Index: linux-3.4/mm/slab.c goto free_array_cache; } -@@ -1229,7 +1259,7 @@ static void __cpuinit cpuup_canceled(lon +@@ -1229,7 +1259,7 @@ static void __cpuinit cpuup_canceled(long cpu) alien = l3->alien; l3->alien = NULL; @@ -126,7 +127,7 @@ Index: linux-3.4/mm/slab.c kfree(shared); if (alien) { -@@ -1303,7 +1333,7 @@ static int __cpuinit cpuup_prepare(long +@@ -1303,7 +1333,7 @@ static int __cpuinit cpuup_prepare(long cpu) l3 = cachep->nodelists[node]; BUG_ON(!l3); @@ -135,7 +136,7 @@ Index: linux-3.4/mm/slab.c if (!l3->shared) { /* * We are serialised from CPU_DEAD or -@@ -1318,7 +1348,7 @@ static int __cpuinit cpuup_prepare(long +@@ -1318,7 +1348,7 @@ static int __cpuinit cpuup_prepare(long cpu) alien = NULL; } #endif @@ -162,7 +163,7 @@ Index: linux-3.4/mm/slab.c } static void check_irq_on(void) -@@ -2600,13 +2632,12 @@ static void drain_array(struct kmem_cach +@@ -2600,13 +2632,12 @@ static void drain_array(struct kmem_cache *cachep, struct kmem_list3 *l3, struct array_cache *ac, int force, int node); @@ -204,7 +205,7 @@ Index: linux-3.4/mm/slab.c check_irq_on(); for_each_online_node(node) { l3 = cachep->nodelists[node]; -@@ -2650,10 +2693,10 @@ static int drain_freelist(struct kmem_ca +@@ -2650,10 +2693,10 @@ static int drain_freelist(struct kmem_cache *cache, nr_freed = 0; while (nr_freed < tofree && !list_empty(&l3->slabs_free)) { @@ -217,7 +218,7 @@ Index: linux-3.4/mm/slab.c goto out; } -@@ -2667,7 +2710,7 @@ static int drain_freelist(struct kmem_ca +@@ -2667,7 +2710,7 @@ static int drain_freelist(struct kmem_cache *cache, * to the cache. */ l3->free_objects -= cache->num; @@ -226,7 +227,7 @@ Index: linux-3.4/mm/slab.c slab_destroy(cache, slabp); nr_freed++; } -@@ -2962,7 +3005,7 @@ static int cache_grow(struct kmem_cache +@@ -2962,7 +3005,7 @@ static int cache_grow(struct kmem_cache *cachep, offset *= cachep->colour_off; if (local_flags & __GFP_WAIT) @@ -235,7 +236,7 @@ Index: linux-3.4/mm/slab.c /* * The test for missing atomic flag is performed here, rather than -@@ -2992,7 +3035,7 @@ static int cache_grow(struct kmem_cache +@@ -2992,7 +3035,7 @@ static int cache_grow(struct kmem_cache *cachep, cache_init_objs(cachep, slabp); if (local_flags & __GFP_WAIT) @@ -267,7 +268,7 @@ Index: linux-3.4/mm/slab.c if (obj) { /* * Insert into the appropriate per node queues -@@ -3522,7 +3565,7 @@ __cache_alloc_node(struct kmem_cache *ca +@@ -3522,7 +3565,7 @@ __cache_alloc_node(struct kmem_cache *cachep, gfp_t flags, int nodeid, return NULL; cache_alloc_debugcheck_before(cachep, flags); @@ -276,7 +277,7 @@ Index: linux-3.4/mm/slab.c if (nodeid == NUMA_NO_NODE) nodeid = slab_node; -@@ -3547,7 +3590,7 @@ __cache_alloc_node(struct kmem_cache *ca +@@ -3547,7 +3590,7 @@ __cache_alloc_node(struct kmem_cache *cachep, gfp_t flags, int nodeid, /* ___cache_alloc_node can fall back to other nodes */ ptr = ____cache_alloc_node(cachep, flags, nodeid); out: @@ -285,7 +286,7 @@ Index: linux-3.4/mm/slab.c ptr = cache_alloc_debugcheck_after(cachep, flags, ptr, caller); kmemleak_alloc_recursive(ptr, obj_size(cachep), 1, cachep->flags, flags); -@@ -3607,9 +3650,9 @@ __cache_alloc(struct kmem_cache *cachep, +@@ -3607,9 +3650,9 @@ __cache_alloc(struct kmem_cache *cachep, gfp_t flags, void *caller) return NULL; cache_alloc_debugcheck_before(cachep, flags); @@ -297,7 +298,7 @@ Index: linux-3.4/mm/slab.c objp = cache_alloc_debugcheck_after(cachep, flags, objp, caller); kmemleak_alloc_recursive(objp, obj_size(cachep), 1, cachep->flags, flags); -@@ -3922,9 +3965,9 @@ void kmem_cache_free(struct kmem_cache * +@@ -3922,9 +3965,9 @@ void kmem_cache_free(struct kmem_cache *cachep, void *objp) debug_check_no_locks_freed(objp, obj_size(cachep)); if (!(cachep->flags & SLAB_DEBUG_OBJECTS)) debug_check_no_obj_freed(objp, obj_size(cachep)); @@ -321,7 +322,7 @@ Index: linux-3.4/mm/slab.c } EXPORT_SYMBOL(kfree); -@@ -3997,7 +4040,7 @@ static int alloc_kmemlist(struct kmem_ca +@@ -3997,7 +4040,7 @@ static int alloc_kmemlist(struct kmem_cache *cachep, gfp_t gfp) if (l3) { struct array_cache *shared = l3->shared; @@ -330,7 +331,7 @@ Index: linux-3.4/mm/slab.c if (shared) free_block(cachep, shared->entry, -@@ -4010,7 +4053,7 @@ static int alloc_kmemlist(struct kmem_ca +@@ -4010,7 +4053,7 @@ static int alloc_kmemlist(struct kmem_cache *cachep, gfp_t gfp) } l3->free_limit = (1 + nr_cpus_node(node)) * cachep->batchcount + cachep->num; @@ -373,7 +374,7 @@ Index: linux-3.4/mm/slab.c /* Always called with the cache_chain_mutex held */ static int do_tune_cpucache(struct kmem_cache *cachep, int limit, -@@ -4093,7 +4147,7 @@ static int do_tune_cpucache(struct kmem_ +@@ -4093,7 +4147,7 @@ static int do_tune_cpucache(struct kmem_cache *cachep, int limit, } new->cachep = cachep; @@ -382,7 +383,7 @@ Index: linux-3.4/mm/slab.c check_irq_on(); cachep->batchcount = batchcount; -@@ -4104,9 +4158,11 @@ static int do_tune_cpucache(struct kmem_ +@@ -4104,9 +4158,11 @@ static int do_tune_cpucache(struct kmem_cache *cachep, int limit, struct array_cache *ccold = new->new[i]; if (!ccold) continue; @@ -396,7 +397,7 @@ Index: linux-3.4/mm/slab.c kfree(ccold); } kfree(new); -@@ -4182,7 +4238,7 @@ static void drain_array(struct kmem_cach +@@ -4182,7 +4238,7 @@ static void drain_array(struct kmem_cache *cachep, struct kmem_list3 *l3, if (ac->touched && !force) { ac->touched = 0; } else { @@ -405,7 +406,7 @@ Index: linux-3.4/mm/slab.c if (ac->avail) { tofree = force ? ac->avail : (ac->limit + 4) / 5; if (tofree > ac->avail) -@@ -4192,7 +4248,7 @@ static void drain_array(struct kmem_cach +@@ -4192,7 +4248,7 @@ static void drain_array(struct kmem_cache *cachep, struct kmem_list3 *l3, memmove(ac->entry, &(ac->entry[tofree]), sizeof(void *) * ac->avail); } @@ -414,7 +415,7 @@ Index: linux-3.4/mm/slab.c } } -@@ -4331,7 +4387,7 @@ static int s_show(struct seq_file *m, vo +@@ -4331,7 +4387,7 @@ static int s_show(struct seq_file *m, void *p) continue; check_irq_on(); @@ -423,7 +424,7 @@ Index: linux-3.4/mm/slab.c list_for_each_entry(slabp, &l3->slabs_full, list) { if (slabp->inuse != cachep->num && !error) -@@ -4356,7 +4412,7 @@ static int s_show(struct seq_file *m, vo +@@ -4356,7 +4412,7 @@ static int s_show(struct seq_file *m, void *p) if (l3->shared) shared_avail += l3->shared->avail; @@ -432,7 +433,7 @@ Index: linux-3.4/mm/slab.c } num_slabs += active_slabs; num_objs = num_slabs * cachep->num; -@@ -4585,13 +4641,13 @@ static int leaks_show(struct seq_file *m +@@ -4585,13 +4641,13 @@ static int leaks_show(struct seq_file *m, void *p) continue; check_irq_on(); diff --git a/debian/patches/features/all/rt/rt-slab-fix-__do_drain-to-use-the-right-array-cache.patch b/debian/patches/features/all/rt/0091-slab-Fix-__do_drain-to-use-the-right-array-cache.patch similarity index 85% rename from debian/patches/features/all/rt/rt-slab-fix-__do_drain-to-use-the-right-array-cache.patch rename to debian/patches/features/all/rt/0091-slab-Fix-__do_drain-to-use-the-right-array-cache.patch index bb4905e1c..e0bc056e3 100644 --- a/debian/patches/features/all/rt/rt-slab-fix-__do_drain-to-use-the-right-array-cache.patch +++ b/debian/patches/features/all/rt/0091-slab-Fix-__do_drain-to-use-the-right-array-cache.patch @@ -1,6 +1,7 @@ -Subject: slab: Fix __do_drain to use the right array cache +From 47920759ab097d50717691a48c9e8815fa60a605 Mon Sep 17 00:00:00 2001 From: Steven Rostedt Date: Tue, 11 Oct 2011 23:56:23 -0400 +Subject: [091/254] slab: Fix __do_drain to use the right array cache The array cache in __do_drain() was using the cpu_cache_get() function which uses smp_processor_id() to get the proper array. On mainline, this @@ -33,16 +34,15 @@ Cc: Clark Williams Cc: Peter Zijlstra Link: http://lkml.kernel.org/r/1318391783.13262.11.camel@gandalf.stny.rr.com Signed-off-by: Thomas Gleixner - --- mm/slab.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-3.4/mm/slab.c -=================================================================== ---- linux-3.4.orig/mm/slab.c -+++ linux-3.4/mm/slab.c -@@ -2638,7 +2638,7 @@ static void __do_drain(void *arg, unsign +diff --git a/mm/slab.c b/mm/slab.c +index dc84364..341748b 100644 +--- a/mm/slab.c ++++ b/mm/slab.c +@@ -2638,7 +2638,7 @@ static void __do_drain(void *arg, unsigned int cpu) struct array_cache *ac; int node = cpu_to_mem(cpu); diff --git a/debian/patches/features/all/rt/mm-slab-more-lock-breaks.patch b/debian/patches/features/all/rt/0092-mm-More-lock-breaks-in-slab.c.patch similarity index 81% rename from debian/patches/features/all/rt/mm-slab-more-lock-breaks.patch rename to debian/patches/features/all/rt/0092-mm-More-lock-breaks-in-slab.c.patch index 3eb1a6e9b..d1a611ca7 100644 --- a/debian/patches/features/all/rt/mm-slab-more-lock-breaks.patch +++ b/debian/patches/features/all/rt/0092-mm-More-lock-breaks-in-slab.c.patch @@ -1,22 +1,22 @@ +From e7404bdc7a924a84fe61c0bcbe7ecefcf0287555 Mon Sep 17 00:00:00 2001 From: Peter Zijlstra Date: Fri, 3 Jul 2009 08:44:43 -0500 -Subject: mm: More lock breaks in slab.c +Subject: [092/254] mm: More lock breaks in slab.c Handle __free_pages outside of the locked regions. This reduces the lock contention on the percpu slab locks in -rt significantly. Signed-off-by: Peter Zijlstra Signed-off-by: Thomas Gleixner - --- - mm/slab.c | 90 ++++++++++++++++++++++++++++++++++++++++++++++---------------- + mm/slab.c | 90 ++++++++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 68 insertions(+), 22 deletions(-) -Index: linux-3.4/mm/slab.c -=================================================================== ---- linux-3.4.orig/mm/slab.c -+++ linux-3.4/mm/slab.c -@@ -727,6 +727,7 @@ static void slab_set_debugobj_lock_class +diff --git a/mm/slab.c b/mm/slab.c +index 341748b..15bce6b 100644 +--- a/mm/slab.c ++++ b/mm/slab.c +@@ -727,6 +727,7 @@ static void slab_set_debugobj_lock_classes(struct kmem_cache *cachep) #endif static DEFINE_PER_CPU(struct delayed_work, slab_reap_work); @@ -24,7 +24,7 @@ Index: linux-3.4/mm/slab.c static DEFINE_LOCAL_IRQ_LOCK(slab_lock); #ifndef CONFIG_PREEMPT_RT_BASE -@@ -742,14 +743,39 @@ slab_on_each_cpu(void (*func)(void *arg, +@@ -742,14 +743,39 @@ slab_on_each_cpu(void (*func)(void *arg, int this_cpu), void *arg) { unsigned int i; @@ -68,7 +68,7 @@ Index: linux-3.4/mm/slab.c static inline struct array_cache *cpu_cache_get(struct kmem_cache *cachep) { return cachep->array[smp_processor_id()]; -@@ -1245,7 +1271,7 @@ static void __cpuinit cpuup_canceled(lon +@@ -1245,7 +1271,7 @@ static void __cpuinit cpuup_canceled(long cpu) free_block(cachep, nc->entry, nc->avail, node); if (!cpumask_empty(mask)) { @@ -77,7 +77,7 @@ Index: linux-3.4/mm/slab.c goto free_array_cache; } -@@ -1259,7 +1285,7 @@ static void __cpuinit cpuup_canceled(lon +@@ -1259,7 +1285,7 @@ static void __cpuinit cpuup_canceled(long cpu) alien = l3->alien; l3->alien = NULL; @@ -95,7 +95,7 @@ Index: linux-3.4/mm/slab.c for (i = 0; i < NUM_INIT_LISTS; i++) { kmem_list3_init(&initkmem_list3[i]); -@@ -1868,12 +1896,14 @@ static void *kmem_getpages(struct kmem_c +@@ -1868,12 +1896,14 @@ static void *kmem_getpages(struct kmem_cache *cachep, gfp_t flags, int nodeid) /* * Interface to system's page release. */ @@ -112,7 +112,7 @@ Index: linux-3.4/mm/slab.c kmemcheck_free_shadow(page, cachep->gfporder); if (cachep->flags & SLAB_RECLAIM_ACCOUNT) -@@ -1889,7 +1919,13 @@ static void kmem_freepages(struct kmem_c +@@ -1889,7 +1919,13 @@ static void kmem_freepages(struct kmem_cache *cachep, void *addr) } if (current->reclaim_state) current->reclaim_state->reclaimed_slab += nr_freed; @@ -127,7 +127,7 @@ Index: linux-3.4/mm/slab.c } static void kmem_rcu_free(struct rcu_head *head) -@@ -1897,7 +1933,7 @@ static void kmem_rcu_free(struct rcu_hea +@@ -1897,7 +1933,7 @@ static void kmem_rcu_free(struct rcu_head *head) struct slab_rcu *slab_rcu = (struct slab_rcu *)head; struct kmem_cache *cachep = slab_rcu->cachep; @@ -136,7 +136,7 @@ Index: linux-3.4/mm/slab.c if (OFF_SLAB(cachep)) kmem_cache_free(cachep->slabp_cache, slab_rcu); } -@@ -2116,7 +2152,8 @@ static void slab_destroy_debugcheck(stru +@@ -2116,7 +2152,8 @@ static void slab_destroy_debugcheck(struct kmem_cache *cachep, struct slab *slab * Before calling the slab must have been unlinked from the cache. The * cache-lock is not held/needed. */ @@ -146,7 +146,7 @@ Index: linux-3.4/mm/slab.c { void *addr = slabp->s_mem - slabp->colouroff; -@@ -2129,7 +2166,7 @@ static void slab_destroy(struct kmem_cac +@@ -2129,7 +2166,7 @@ static void slab_destroy(struct kmem_cache *cachep, struct slab *slabp) slab_rcu->addr = addr; call_rcu(&slab_rcu->head, kmem_rcu_free); } else { @@ -173,7 +173,7 @@ Index: linux-3.4/mm/slab.c } #endif -@@ -2711,7 +2754,7 @@ static int drain_freelist(struct kmem_ca +@@ -2711,7 +2754,7 @@ static int drain_freelist(struct kmem_cache *cache, */ l3->free_objects -= cache->num; local_spin_unlock_irq(slab_lock, &l3->list_lock); @@ -182,7 +182,7 @@ Index: linux-3.4/mm/slab.c nr_freed++; } out: -@@ -3046,7 +3089,7 @@ static int cache_grow(struct kmem_cache +@@ -3046,7 +3089,7 @@ static int cache_grow(struct kmem_cache *cachep, spin_unlock(&l3->list_lock); return 1; opps1: @@ -191,7 +191,7 @@ Index: linux-3.4/mm/slab.c failed: if (local_flags & __GFP_WAIT) local_lock_irq(slab_lock); -@@ -3700,7 +3743,7 @@ static void free_block(struct kmem_cache +@@ -3700,7 +3743,7 @@ static void free_block(struct kmem_cache *cachep, void **objpp, int nr_objects, * a different cache, refer to comments before * alloc_slabmgmt. */ @@ -200,7 +200,7 @@ Index: linux-3.4/mm/slab.c } else { list_add(&slabp->list, &l3->slabs_free); } -@@ -3967,7 +4010,7 @@ void kmem_cache_free(struct kmem_cache * +@@ -3967,7 +4010,7 @@ void kmem_cache_free(struct kmem_cache *cachep, void *objp) debug_check_no_obj_freed(objp, obj_size(cachep)); local_lock_irqsave(slab_lock, flags); __cache_free(cachep, objp, __builtin_return_address(0)); @@ -218,7 +218,7 @@ Index: linux-3.4/mm/slab.c } EXPORT_SYMBOL(kfree); -@@ -4053,7 +4096,8 @@ static int alloc_kmemlist(struct kmem_ca +@@ -4053,7 +4096,8 @@ static int alloc_kmemlist(struct kmem_cache *cachep, gfp_t gfp) } l3->free_limit = (1 + nr_cpus_node(node)) * cachep->batchcount + cachep->num; @@ -228,7 +228,7 @@ Index: linux-3.4/mm/slab.c kfree(shared); free_alien_cache(new_alien); continue; -@@ -4119,7 +4163,9 @@ static void do_ccupdate_local(void *info +@@ -4119,7 +4163,9 @@ static void do_ccupdate_local(void *info) #else static void do_ccupdate_local(void *info, int cpu) { @@ -238,7 +238,7 @@ Index: linux-3.4/mm/slab.c } #endif -@@ -4161,8 +4207,8 @@ static int do_tune_cpucache(struct kmem_ +@@ -4161,8 +4207,8 @@ static int do_tune_cpucache(struct kmem_cache *cachep, int limit, local_spin_lock_irq(slab_lock, &cachep->nodelists[cpu_to_mem(i)]->list_lock); free_block(cachep, ccold->entry, ccold->avail, cpu_to_mem(i)); diff --git a/debian/patches/features/all/rt/mm-page_alloc-rt-friendly-per-cpu-pages.patch b/debian/patches/features/all/rt/0093-mm-page_alloc-rt-friendly-per-cpu-pages.patch similarity index 86% rename from debian/patches/features/all/rt/mm-page_alloc-rt-friendly-per-cpu-pages.patch rename to debian/patches/features/all/rt/0093-mm-page_alloc-rt-friendly-per-cpu-pages.patch index 8222bfb63..bec862e06 100644 --- a/debian/patches/features/all/rt/mm-page_alloc-rt-friendly-per-cpu-pages.patch +++ b/debian/patches/features/all/rt/0093-mm-page_alloc-rt-friendly-per-cpu-pages.patch @@ -1,6 +1,7 @@ +From 24ef007fc0efe3e35ecb7b566e1bb8f62ebafb88 Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Fri, 3 Jul 2009 08:29:37 -0500 -Subject: mm: page_alloc: rt-friendly per-cpu pages +Subject: [093/254] mm: page_alloc: rt-friendly per-cpu pages rt-friendly per-cpu pages: convert the irqs-off per-cpu locking method into a preemptible, explicit-per-cpu-locks method. @@ -11,15 +12,14 @@ Contains fixes from: Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner - --- mm/page_alloc.c | 53 +++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 37 insertions(+), 16 deletions(-) -Index: linux-3.4/mm/page_alloc.c -=================================================================== ---- linux-3.4.orig/mm/page_alloc.c -+++ linux-3.4/mm/page_alloc.c +diff --git a/mm/page_alloc.c b/mm/page_alloc.c +index b27e8cb..dbe4146 100644 +--- a/mm/page_alloc.c ++++ b/mm/page_alloc.c @@ -57,6 +57,7 @@ #include #include @@ -47,7 +47,7 @@ Index: linux-3.4/mm/page_alloc.c int page_group_by_mobility_disabled __read_mostly; static void set_pageblock_migratetype(struct page *page, int migratetype) -@@ -721,13 +734,13 @@ static void __free_pages_ok(struct page +@@ -721,13 +734,13 @@ static void __free_pages_ok(struct page *page, unsigned int order) if (!free_pages_prepare(page, order)) return; @@ -63,7 +63,7 @@ Index: linux-3.4/mm/page_alloc.c } void __meminit __free_pages_bootmem(struct page *page, unsigned int order) -@@ -1113,14 +1126,14 @@ void drain_zone_pages(struct zone *zone, +@@ -1113,14 +1126,14 @@ void drain_zone_pages(struct zone *zone, struct per_cpu_pages *pcp) unsigned long flags; int to_drain; @@ -80,7 +80,7 @@ Index: linux-3.4/mm/page_alloc.c } #endif -@@ -1140,7 +1153,7 @@ static void drain_pages(unsigned int cpu +@@ -1140,7 +1153,7 @@ static void drain_pages(unsigned int cpu) struct per_cpu_pageset *pset; struct per_cpu_pages *pcp; @@ -89,7 +89,7 @@ Index: linux-3.4/mm/page_alloc.c pset = per_cpu_ptr(zone->pageset, cpu); pcp = &pset->pcp; -@@ -1148,7 +1161,7 @@ static void drain_pages(unsigned int cpu +@@ -1148,7 +1161,7 @@ static void drain_pages(unsigned int cpu) free_pcppages_bulk(zone, pcp->count, pcp); pcp->count = 0; } @@ -111,7 +111,7 @@ Index: linux-3.4/mm/page_alloc.c } #ifdef CONFIG_HIBERNATION -@@ -1257,7 +1275,7 @@ void free_hot_cold_page(struct page *pag +@@ -1257,7 +1275,7 @@ void free_hot_cold_page(struct page *page, int cold) migratetype = get_pageblock_migratetype(page); set_page_private(page, migratetype); @@ -120,7 +120,7 @@ Index: linux-3.4/mm/page_alloc.c if (unlikely(wasMlocked)) free_page_mlock(page); __count_vm_event(PGFREE); -@@ -1289,7 +1307,7 @@ void free_hot_cold_page(struct page *pag +@@ -1289,7 +1307,7 @@ void free_hot_cold_page(struct page *page, int cold) } out: @@ -184,7 +184,7 @@ Index: linux-3.4/mm/page_alloc.c } return 0; } -@@ -4892,6 +4912,7 @@ static int page_alloc_cpu_notify(struct +@@ -4892,6 +4912,7 @@ static int page_alloc_cpu_notify(struct notifier_block *self, void __init page_alloc_init(void) { hotcpu_notifier(page_alloc_cpu_notify, 0); diff --git a/debian/patches/features/all/rt/mm-page_alloc-reduce-lock-sections-further.patch b/debian/patches/features/all/rt/0094-mm-page_alloc-reduce-lock-sections-further.patch similarity index 86% rename from debian/patches/features/all/rt/mm-page_alloc-reduce-lock-sections-further.patch rename to debian/patches/features/all/rt/0094-mm-page_alloc-reduce-lock-sections-further.patch index 52527faf9..d6379cb63 100644 --- a/debian/patches/features/all/rt/mm-page_alloc-reduce-lock-sections-further.patch +++ b/debian/patches/features/all/rt/0094-mm-page_alloc-reduce-lock-sections-further.patch @@ -1,6 +1,7 @@ +From 47ce615d9fbc979fdb8403a326081e7a1921ddaa Mon Sep 17 00:00:00 2001 From: Peter Zijlstra Date: Fri, 3 Jul 2009 08:44:37 -0500 -Subject: mm: page_alloc reduce lock sections further +Subject: [094/254] mm: page_alloc reduce lock sections further Split out the pages which are to be freed into a separate list and call free_pages_bulk() outside of the percpu page allocator locks. @@ -8,14 +9,14 @@ call free_pages_bulk() outside of the percpu page allocator locks. Signed-off-by: Peter Zijlstra Signed-off-by: Thomas Gleixner --- - mm/page_alloc.c | 77 ++++++++++++++++++++++++++++++++++++++++++-------------- + mm/page_alloc.c | 77 +++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 58 insertions(+), 19 deletions(-) -Index: linux-3.4/mm/page_alloc.c -=================================================================== ---- linux-3.4.orig/mm/page_alloc.c -+++ linux-3.4/mm/page_alloc.c -@@ -632,7 +632,7 @@ static inline int free_pages_check(struc +diff --git a/mm/page_alloc.c b/mm/page_alloc.c +index dbe4146..2edd044 100644 +--- a/mm/page_alloc.c ++++ b/mm/page_alloc.c +@@ -632,7 +632,7 @@ static inline int free_pages_check(struct page *page) } /* @@ -24,7 +25,7 @@ Index: linux-3.4/mm/page_alloc.c * Assumes all pages on list are in same zone, and of same order. * count is the number of pages to free. * -@@ -643,16 +643,42 @@ static inline int free_pages_check(struc +@@ -643,16 +643,42 @@ static inline int free_pages_check(struct page *page) * pinned" detection logic. */ static void free_pcppages_bulk(struct zone *zone, int count, @@ -71,7 +72,7 @@ Index: linux-3.4/mm/page_alloc.c while (to_free) { struct page *page; struct list_head *list; -@@ -668,7 +694,7 @@ static void free_pcppages_bulk(struct zo +@@ -668,7 +694,7 @@ static void free_pcppages_bulk(struct zone *zone, int count, batch_free++; if (++migratetype == MIGRATE_PCPTYPES) migratetype = 0; @@ -80,7 +81,7 @@ Index: linux-3.4/mm/page_alloc.c } while (list_empty(list)); /* This is the only non-empty list. Free them all. */ -@@ -677,27 +703,24 @@ static void free_pcppages_bulk(struct zo +@@ -677,27 +703,24 @@ static void free_pcppages_bulk(struct zone *zone, int count, do { page = list_last_entry(list, struct page, lru); @@ -113,7 +114,7 @@ Index: linux-3.4/mm/page_alloc.c } static bool free_pages_prepare(struct page *page, unsigned int order) -@@ -1124,6 +1147,7 @@ static int rmqueue_bulk(struct zone *zon +@@ -1124,6 +1147,7 @@ static int rmqueue_bulk(struct zone *zone, unsigned int order, void drain_zone_pages(struct zone *zone, struct per_cpu_pages *pcp) { unsigned long flags; @@ -121,7 +122,7 @@ Index: linux-3.4/mm/page_alloc.c int to_drain; local_lock_irqsave(pa_lock, flags); -@@ -1131,9 +1155,10 @@ void drain_zone_pages(struct zone *zone, +@@ -1131,9 +1155,10 @@ void drain_zone_pages(struct zone *zone, struct per_cpu_pages *pcp) to_drain = pcp->batch; else to_drain = pcp->count; @@ -133,7 +134,7 @@ Index: linux-3.4/mm/page_alloc.c } #endif -@@ -1152,16 +1177,21 @@ static void drain_pages(unsigned int cpu +@@ -1152,16 +1177,21 @@ static void drain_pages(unsigned int cpu) for_each_populated_zone(zone) { struct per_cpu_pageset *pset; struct per_cpu_pages *pcp; @@ -157,7 +158,7 @@ Index: linux-3.4/mm/page_alloc.c } } -@@ -1302,8 +1332,15 @@ void free_hot_cold_page(struct page *pag +@@ -1302,8 +1332,15 @@ void free_hot_cold_page(struct page *page, int cold) list_add(&page->lru, &pcp->lists[migratetype]); pcp->count++; if (pcp->count >= pcp->high) { diff --git a/debian/patches/features/all/rt/mm-page-alloc-fix.patch b/debian/patches/features/all/rt/0095-mm-page-alloc-fix.patch.patch similarity index 61% rename from debian/patches/features/all/rt/mm-page-alloc-fix.patch rename to debian/patches/features/all/rt/0095-mm-page-alloc-fix.patch.patch index 1356b1867..7166c34e6 100644 --- a/debian/patches/features/all/rt/mm-page-alloc-fix.patch +++ b/debian/patches/features/all/rt/0095-mm-page-alloc-fix.patch.patch @@ -1,17 +1,18 @@ -Subject: mm-page-alloc-fix.patch +From 2d5d5f2541474bc2d6d522713b4e6e51b9b35dc9 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Thu, 21 Jul 2011 16:47:49 +0200 +Subject: [095/254] mm-page-alloc-fix.patch Signed-off-by: Thomas Gleixner --- mm/page_alloc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -Index: linux-3.4/mm/page_alloc.c -=================================================================== ---- linux-3.4.orig/mm/page_alloc.c -+++ linux-3.4/mm/page_alloc.c -@@ -2095,8 +2095,8 @@ __alloc_pages_direct_compact(gfp_t gfp_m +diff --git a/mm/page_alloc.c b/mm/page_alloc.c +index 2edd044..4a68c8f 100644 +--- a/mm/page_alloc.c ++++ b/mm/page_alloc.c +@@ -2095,8 +2095,8 @@ __alloc_pages_direct_compact(gfp_t gfp_mask, unsigned int order, if (*did_some_progress != COMPACT_SKIPPED) { /* Page migration frees to the PCP lists but we want merging */ diff --git a/debian/patches/features/all/rt/mm-convert-swap-to-percpu-locked.patch b/debian/patches/features/all/rt/0096-mm-convert-swap-to-percpu-locked.patch similarity index 89% rename from debian/patches/features/all/rt/mm-convert-swap-to-percpu-locked.patch rename to debian/patches/features/all/rt/0096-mm-convert-swap-to-percpu-locked.patch index 220d0b780..1116ad2d7 100644 --- a/debian/patches/features/all/rt/mm-convert-swap-to-percpu-locked.patch +++ b/debian/patches/features/all/rt/0096-mm-convert-swap-to-percpu-locked.patch @@ -1,18 +1,18 @@ +From 04e55a30ad50c554681bc20c9b07080cb8cc43f8 Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Fri, 3 Jul 2009 08:29:51 -0500 -Subject: mm: convert swap to percpu locked +Subject: [096/254] mm: convert swap to percpu locked Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner - --- mm/swap.c | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) -Index: linux-3.4/mm/swap.c -=================================================================== ---- linux-3.4.orig/mm/swap.c -+++ linux-3.4/mm/swap.c +diff --git a/mm/swap.c b/mm/swap.c +index 5c13f13..2051da9 100644 +--- a/mm/swap.c ++++ b/mm/swap.c @@ -30,6 +30,7 @@ #include #include @@ -21,7 +21,7 @@ Index: linux-3.4/mm/swap.c #include "internal.h" -@@ -40,6 +41,9 @@ static DEFINE_PER_CPU(struct pagevec[NR_ +@@ -40,6 +41,9 @@ static DEFINE_PER_CPU(struct pagevec[NR_LRU_LISTS], lru_add_pvecs); static DEFINE_PER_CPU(struct pagevec, lru_rotate_pvecs); static DEFINE_PER_CPU(struct pagevec, lru_deactivate_pvecs); @@ -31,7 +31,7 @@ Index: linux-3.4/mm/swap.c /* * This path almost never happens for VM activity - pages are normally * freed via pagevecs. But it gets used by networking. -@@ -268,11 +272,11 @@ void rotate_reclaimable_page(struct page +@@ -268,11 +272,11 @@ void rotate_reclaimable_page(struct page *page) unsigned long flags; page_cache_get(page); diff --git a/debian/patches/features/all/rt/mm-make-vmstat-rt-aware.patch b/debian/patches/features/all/rt/0097-mm-make-vmstat-rt-aware.patch similarity index 62% rename from debian/patches/features/all/rt/mm-make-vmstat-rt-aware.patch rename to debian/patches/features/all/rt/0097-mm-make-vmstat-rt-aware.patch index 8792ceb1b..ed9fd71eb 100644 --- a/debian/patches/features/all/rt/mm-make-vmstat-rt-aware.patch +++ b/debian/patches/features/all/rt/0097-mm-make-vmstat-rt-aware.patch @@ -1,20 +1,20 @@ +From 55b4def7f62a956af1bae2e52aad48dafdcd300f Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Fri, 3 Jul 2009 08:30:13 -0500 -Subject: [PATCH] mm: make vmstat -rt aware +Subject: [097/254] mm: make vmstat -rt aware Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner - --- include/linux/vmstat.h | 4 ++++ mm/vmstat.c | 6 ++++++ 2 files changed, 10 insertions(+) -Index: linux-3.4/include/linux/vmstat.h -=================================================================== ---- linux-3.4.orig/include/linux/vmstat.h -+++ linux-3.4/include/linux/vmstat.h -@@ -29,7 +29,9 @@ DECLARE_PER_CPU(struct vm_event_state, v +diff --git a/include/linux/vmstat.h b/include/linux/vmstat.h +index 65efb92..1b3f2ef 100644 +--- a/include/linux/vmstat.h ++++ b/include/linux/vmstat.h +@@ -29,7 +29,9 @@ DECLARE_PER_CPU(struct vm_event_state, vm_event_states); static inline void __count_vm_event(enum vm_event_item item) { @@ -24,7 +24,7 @@ Index: linux-3.4/include/linux/vmstat.h } static inline void count_vm_event(enum vm_event_item item) -@@ -39,7 +41,9 @@ static inline void count_vm_event(enum v +@@ -39,7 +41,9 @@ static inline void count_vm_event(enum vm_event_item item) static inline void __count_vm_events(enum vm_event_item item, long delta) { @@ -34,11 +34,11 @@ Index: linux-3.4/include/linux/vmstat.h } static inline void count_vm_events(enum vm_event_item item, long delta) -Index: linux-3.4/mm/vmstat.c -=================================================================== ---- linux-3.4.orig/mm/vmstat.c -+++ linux-3.4/mm/vmstat.c -@@ -216,6 +216,7 @@ void __mod_zone_page_state(struct zone * +diff --git a/mm/vmstat.c b/mm/vmstat.c +index 7db1b9b..172212f 100644 +--- a/mm/vmstat.c ++++ b/mm/vmstat.c +@@ -216,6 +216,7 @@ void __mod_zone_page_state(struct zone *zone, enum zone_stat_item item, long x; long t; @@ -46,7 +46,7 @@ Index: linux-3.4/mm/vmstat.c x = delta + __this_cpu_read(*p); t = __this_cpu_read(pcp->stat_threshold); -@@ -225,6 +226,7 @@ void __mod_zone_page_state(struct zone * +@@ -225,6 +226,7 @@ void __mod_zone_page_state(struct zone *zone, enum zone_stat_item item, x = 0; } __this_cpu_write(*p, x); @@ -54,7 +54,7 @@ Index: linux-3.4/mm/vmstat.c } EXPORT_SYMBOL(__mod_zone_page_state); -@@ -257,6 +259,7 @@ void __inc_zone_state(struct zone *zone, +@@ -257,6 +259,7 @@ void __inc_zone_state(struct zone *zone, enum zone_stat_item item) s8 __percpu *p = pcp->vm_stat_diff + item; s8 v, t; @@ -62,7 +62,7 @@ Index: linux-3.4/mm/vmstat.c v = __this_cpu_inc_return(*p); t = __this_cpu_read(pcp->stat_threshold); if (unlikely(v > t)) { -@@ -265,6 +268,7 @@ void __inc_zone_state(struct zone *zone, +@@ -265,6 +268,7 @@ void __inc_zone_state(struct zone *zone, enum zone_stat_item item) zone_page_state_add(v + overstep, zone, item); __this_cpu_write(*p, -overstep); } @@ -70,7 +70,7 @@ Index: linux-3.4/mm/vmstat.c } void __inc_zone_page_state(struct page *page, enum zone_stat_item item) -@@ -279,6 +283,7 @@ void __dec_zone_state(struct zone *zone, +@@ -279,6 +283,7 @@ void __dec_zone_state(struct zone *zone, enum zone_stat_item item) s8 __percpu *p = pcp->vm_stat_diff + item; s8 v, t; @@ -78,7 +78,7 @@ Index: linux-3.4/mm/vmstat.c v = __this_cpu_dec_return(*p); t = __this_cpu_read(pcp->stat_threshold); if (unlikely(v < - t)) { -@@ -287,6 +292,7 @@ void __dec_zone_state(struct zone *zone, +@@ -287,6 +292,7 @@ void __dec_zone_state(struct zone *zone, enum zone_stat_item item) zone_page_state_add(v - overstep, zone, item); __this_cpu_write(*p, overstep); } diff --git a/debian/patches/features/all/rt/mm-shrink-the-page-frame-to-rt-size.patch b/debian/patches/features/all/rt/0098-mm-shrink-the-page-frame-to-rt-size.patch similarity index 85% rename from debian/patches/features/all/rt/mm-shrink-the-page-frame-to-rt-size.patch rename to debian/patches/features/all/rt/0098-mm-shrink-the-page-frame-to-rt-size.patch index 5b756e1c7..dbf58fb98 100644 --- a/debian/patches/features/all/rt/mm-shrink-the-page-frame-to-rt-size.patch +++ b/debian/patches/features/all/rt/0098-mm-shrink-the-page-frame-to-rt-size.patch @@ -1,6 +1,7 @@ +From 95fcabac2735a0b9cae26bb2d9ea53dbbd27dd59 Mon Sep 17 00:00:00 2001 From: Peter Zijlstra Date: Fri, 3 Jul 2009 08:44:54 -0500 -Subject: mm: shrink the page frame to !-rt size +Subject: [098/254] mm: shrink the page frame to !-rt size He below is a boot-tested hack to shrink the page frame size back to normal. @@ -10,18 +11,17 @@ page-frames. Signed-off-by: Peter Zijlstra Signed-off-by: Thomas Gleixner - --- include/linux/mm.h | 46 +++++++++++++++++++++++++++++++++++++++------- include/linux/mm_types.h | 6 +++++- mm/memory.c | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 76 insertions(+), 8 deletions(-) -Index: linux-3.4/include/linux/mm.h -=================================================================== ---- linux-3.4.orig/include/linux/mm.h -+++ linux-3.4/include/linux/mm.h -@@ -1200,27 +1200,59 @@ static inline pmd_t *pmd_alloc(struct mm +diff --git a/include/linux/mm.h b/include/linux/mm.h +index 74aa71b..7e11734 100644 +--- a/include/linux/mm.h ++++ b/include/linux/mm.h +@@ -1200,27 +1200,59 @@ static inline pmd_t *pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long a * overflow into the next struct page (as it might with DEBUG_SPINLOCK). * When freeing, reset page->mapping so free_pages_check won't complain. */ @@ -88,10 +88,10 @@ Index: linux-3.4/include/linux/mm.h static inline void pgtable_page_dtor(struct page *page) { pte_lock_deinit(page); -Index: linux-3.4/include/linux/mm_types.h -=================================================================== ---- linux-3.4.orig/include/linux/mm_types.h -+++ linux-3.4/include/linux/mm_types.h +diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h +index 3cc3062..e70ea9b 100644 +--- a/include/linux/mm_types.h ++++ b/include/linux/mm_types.h @@ -118,7 +118,11 @@ struct page { * system if PG_buddy is set. */ @@ -105,11 +105,11 @@ Index: linux-3.4/include/linux/mm_types.h #endif struct kmem_cache *slab; /* SLUB: Pointer to slab */ struct page *first_page; /* Compound tail pages */ -Index: linux-3.4/mm/memory.c -=================================================================== ---- linux-3.4.orig/mm/memory.c -+++ linux-3.4/mm/memory.c -@@ -4033,3 +4033,35 @@ void copy_user_huge_page(struct page *ds +diff --git a/mm/memory.c b/mm/memory.c +index 346246c..68676fd 100644 +--- a/mm/memory.c ++++ b/mm/memory.c +@@ -4033,3 +4033,35 @@ void copy_user_huge_page(struct page *dst, struct page *src, } } #endif /* CONFIG_TRANSPARENT_HUGEPAGE || CONFIG_HUGETLBFS */ diff --git a/debian/patches/features/all/rt/re-preempt_rt_full-arm-coredump-fails-for-cpu-3e-3d-4.patch b/debian/patches/features/all/rt/0099-ARM-Initialize-ptl-lock-for-vector-page.patch similarity index 84% rename from debian/patches/features/all/rt/re-preempt_rt_full-arm-coredump-fails-for-cpu-3e-3d-4.patch rename to debian/patches/features/all/rt/0099-ARM-Initialize-ptl-lock-for-vector-page.patch index a74d13f5a..717f61e0e 100644 --- a/debian/patches/features/all/rt/re-preempt_rt_full-arm-coredump-fails-for-cpu-3e-3d-4.patch +++ b/debian/patches/features/all/rt/0099-ARM-Initialize-ptl-lock-for-vector-page.patch @@ -1,6 +1,7 @@ -Subject: ARM: Initialize ptl->lock for vector page +From 744cbf0beed85b73f9fb5880d2d8d65283e3d6d6 Mon Sep 17 00:00:00 2001 From: Frank Rowand Date: Sat, 1 Oct 2011 18:58:13 -0700 +Subject: [099/254] ARM: Initialize ptl->lock for vector page Without this patch, ARM can not use SPLIT_PTLOCK_CPUS if PREEMPT_RT_FULL=y because vectors_user_mapping() creates a @@ -33,11 +34,11 @@ Signed-off-by: Thomas Gleixner arch/arm/kernel/process.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) -Index: linux-3.4/arch/arm/kernel/process.c -=================================================================== ---- linux-3.4.orig/arch/arm/kernel/process.c -+++ linux-3.4/arch/arm/kernel/process.c -@@ -526,6 +526,31 @@ unsigned long arch_randomize_brk(struct +diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c +index 2b7b017..ed2300e 100644 +--- a/arch/arm/kernel/process.c ++++ b/arch/arm/kernel/process.c +@@ -526,6 +526,31 @@ unsigned long arch_randomize_brk(struct mm_struct *mm) } #ifdef CONFIG_MMU diff --git a/debian/patches/features/all/rt/mm-allow-slab-rt.patch b/debian/patches/features/all/rt/0100-mm-Allow-only-slab-on-RT.patch similarity index 76% rename from debian/patches/features/all/rt/mm-allow-slab-rt.patch rename to debian/patches/features/all/rt/0100-mm-Allow-only-slab-on-RT.patch index 12c9ecc07..dc85e2c49 100644 --- a/debian/patches/features/all/rt/mm-allow-slab-rt.patch +++ b/debian/patches/features/all/rt/0100-mm-Allow-only-slab-on-RT.patch @@ -1,18 +1,18 @@ +From 97218da01dfabc08743a7b0e32d8db3ed21d0cf2 Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Fri, 3 Jul 2009 08:44:03 -0500 -Subject: mm: Allow only slab on RT +Subject: [100/254] mm: Allow only slab on RT Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner - --- init/Kconfig | 2 ++ 1 file changed, 2 insertions(+) -Index: linux-3.4/init/Kconfig -=================================================================== ---- linux-3.4.orig/init/Kconfig -+++ linux-3.4/init/Kconfig +diff --git a/init/Kconfig b/init/Kconfig +index 6cfd71d..7c0b369 100644 +--- a/init/Kconfig ++++ b/init/Kconfig @@ -1265,6 +1265,7 @@ config SLAB config SLUB diff --git a/debian/patches/features/all/rt/radix-tree-rt-aware.patch b/debian/patches/features/all/rt/0101-radix-tree-rt-aware.patch.patch similarity index 68% rename from debian/patches/features/all/rt/radix-tree-rt-aware.patch rename to debian/patches/features/all/rt/0101-radix-tree-rt-aware.patch.patch index dd58a92b3..d289d159c 100644 --- a/debian/patches/features/all/rt/radix-tree-rt-aware.patch +++ b/debian/patches/features/all/rt/0101-radix-tree-rt-aware.patch.patch @@ -1,6 +1,7 @@ -Subject: radix-tree-rt-aware.patch +From c2586e16a634821ae63f10206610b306b84241dd Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sun, 17 Jul 2011 21:33:18 +0200 +Subject: [101/254] radix-tree-rt-aware.patch Signed-off-by: Thomas Gleixner --- @@ -8,11 +9,11 @@ Signed-off-by: Thomas Gleixner lib/radix-tree.c | 5 ++++- 2 files changed, 11 insertions(+), 2 deletions(-) -Index: linux-3.4/include/linux/radix-tree.h -=================================================================== ---- linux-3.4.orig/include/linux/radix-tree.h -+++ linux-3.4/include/linux/radix-tree.h -@@ -230,7 +230,13 @@ unsigned long radix_tree_next_hole(struc +diff --git a/include/linux/radix-tree.h b/include/linux/radix-tree.h +index ffc444c..7ddfbf9 100644 +--- a/include/linux/radix-tree.h ++++ b/include/linux/radix-tree.h +@@ -230,7 +230,13 @@ unsigned long radix_tree_next_hole(struct radix_tree_root *root, unsigned long index, unsigned long max_scan); unsigned long radix_tree_prev_hole(struct radix_tree_root *root, unsigned long index, unsigned long max_scan); @@ -26,7 +27,7 @@ Index: linux-3.4/include/linux/radix-tree.h void radix_tree_init(void); void *radix_tree_tag_set(struct radix_tree_root *root, unsigned long index, unsigned int tag); -@@ -255,7 +261,7 @@ unsigned long radix_tree_locate_item(str +@@ -255,7 +261,7 @@ unsigned long radix_tree_locate_item(struct radix_tree_root *root, void *item); static inline void radix_tree_preload_end(void) { @@ -35,11 +36,11 @@ Index: linux-3.4/include/linux/radix-tree.h } /** -Index: linux-3.4/lib/radix-tree.c -=================================================================== ---- linux-3.4.orig/lib/radix-tree.c -+++ linux-3.4/lib/radix-tree.c -@@ -202,12 +202,13 @@ radix_tree_node_alloc(struct radix_tree_ +diff --git a/lib/radix-tree.c b/lib/radix-tree.c +index 3ac50dc..52ebdb1 100644 +--- a/lib/radix-tree.c ++++ b/lib/radix-tree.c +@@ -202,12 +202,13 @@ radix_tree_node_alloc(struct radix_tree_root *root) * succeed in getting a node here (and never reach * kmem_cache_alloc) */ @@ -54,7 +55,7 @@ Index: linux-3.4/lib/radix-tree.c } if (ret == NULL) ret = kmem_cache_alloc(radix_tree_node_cachep, gfp_mask); -@@ -242,6 +243,7 @@ radix_tree_node_free(struct radix_tree_n +@@ -242,6 +243,7 @@ radix_tree_node_free(struct radix_tree_node *node) call_rcu(&node->rcu_head, radix_tree_node_rcu_free); } diff --git a/debian/patches/features/all/rt/panic-disable-random-on-rt.patch b/debian/patches/features/all/rt/0102-panic-disable-random-on-rt.patch similarity index 54% rename from debian/patches/features/all/rt/panic-disable-random-on-rt.patch rename to debian/patches/features/all/rt/0102-panic-disable-random-on-rt.patch index 56135a72e..1d9d4f5b1 100644 --- a/debian/patches/features/all/rt/panic-disable-random-on-rt.patch +++ b/debian/patches/features/all/rt/0102-panic-disable-random-on-rt.patch @@ -1,13 +1,16 @@ +From b1a97f8db05573694fa25524668970673db2babb Mon Sep 17 00:00:00 2001 From: Thomas Gleixner +Date: Thu, 7 Jun 2012 07:46:55 -0400 +Subject: [102/254] panic-disable-random-on-rt --- kernel/panic.c | 2 ++ 1 file changed, 2 insertions(+) -Index: linux-3.4/kernel/panic.c -=================================================================== ---- linux-3.4.orig/kernel/panic.c -+++ linux-3.4/kernel/panic.c +diff --git a/kernel/panic.c b/kernel/panic.c +index 8ed89a1..f1c847a 100644 +--- a/kernel/panic.c ++++ b/kernel/panic.c @@ -363,9 +363,11 @@ static u64 oops_id; static int init_oops_id(void) diff --git a/debian/patches/features/all/rt/ipc-make-rt-aware.patch b/debian/patches/features/all/rt/0103-ipc-Make-the-ipc-code-rt-aware.patch similarity index 72% rename from debian/patches/features/all/rt/ipc-make-rt-aware.patch rename to debian/patches/features/all/rt/0103-ipc-Make-the-ipc-code-rt-aware.patch index 2a4736be8..f93bac0a8 100644 --- a/debian/patches/features/all/rt/ipc-make-rt-aware.patch +++ b/debian/patches/features/all/rt/0103-ipc-Make-the-ipc-code-rt-aware.patch @@ -1,6 +1,7 @@ +From abb82ac7e31552531c278f9ca15cb3a64e125c21 Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Fri, 3 Jul 2009 08:30:12 -0500 -Subject: ipc: Make the ipc code -rt aware +Subject: [103/254] ipc: Make the ipc code -rt aware RT serializes the code with the (rt)spinlock but keeps preemption enabled. Some parts of the code need to be atomic nevertheless. @@ -9,17 +10,16 @@ Protect it with preempt_disable/enable_rt pairts. Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner - --- ipc/mqueue.c | 5 +++++ ipc/msg.c | 16 ++++++++++++++++ 2 files changed, 21 insertions(+) -Index: linux-3.4/ipc/mqueue.c -=================================================================== ---- linux-3.4.orig/ipc/mqueue.c -+++ linux-3.4/ipc/mqueue.c -@@ -813,12 +813,17 @@ static inline void pipelined_send(struct +diff --git a/ipc/mqueue.c b/ipc/mqueue.c +index 28bd64d..dd9e66a 100644 +--- a/ipc/mqueue.c ++++ b/ipc/mqueue.c +@@ -813,12 +813,17 @@ static inline void pipelined_send(struct mqueue_inode_info *info, struct msg_msg *message, struct ext_wait_queue *receiver) { @@ -37,11 +37,11 @@ Index: linux-3.4/ipc/mqueue.c } /* pipelined_receive() - if there is task waiting in sys_mq_timedsend() -Index: linux-3.4/ipc/msg.c -=================================================================== ---- linux-3.4.orig/ipc/msg.c -+++ linux-3.4/ipc/msg.c -@@ -259,12 +259,20 @@ static void expunge_all(struct msg_queue +diff --git a/ipc/msg.c b/ipc/msg.c +index 7385de2..06642ac 100644 +--- a/ipc/msg.c ++++ b/ipc/msg.c +@@ -259,12 +259,20 @@ static void expunge_all(struct msg_queue *msq, int res) while (tmp != &msq->q_receivers) { struct msg_receiver *msr; @@ -62,7 +62,7 @@ Index: linux-3.4/ipc/msg.c } } -@@ -611,6 +619,12 @@ static inline int pipelined_send(struct +@@ -611,6 +619,12 @@ static inline int pipelined_send(struct msg_queue *msq, struct msg_msg *msg) !security_msg_queue_msgrcv(msq, msg, msr->r_tsk, msr->r_msgtype, msr->r_mode)) { @@ -75,7 +75,7 @@ Index: linux-3.4/ipc/msg.c list_del(&msr->r_list); if (msr->r_maxsize < msg->m_ts) { msr->r_msg = NULL; -@@ -624,9 +638,11 @@ static inline int pipelined_send(struct +@@ -624,9 +638,11 @@ static inline int pipelined_send(struct msg_queue *msq, struct msg_msg *msg) wake_up_process(msr->r_tsk); smp_mb(); msr->r_msg = msg; diff --git a/debian/patches/features/all/rt/ipc-mqueue-add-a-critical-section-to-avoid-a-deadlock.patch b/debian/patches/features/all/rt/0104-ipc-mqueue-Add-a-critical-section-to-avoid-a-deadloc.patch similarity index 84% rename from debian/patches/features/all/rt/ipc-mqueue-add-a-critical-section-to-avoid-a-deadlock.patch rename to debian/patches/features/all/rt/0104-ipc-mqueue-Add-a-critical-section-to-avoid-a-deadloc.patch index 96d7b3662..4f21b1c7a 100644 --- a/debian/patches/features/all/rt/ipc-mqueue-add-a-critical-section-to-avoid-a-deadlock.patch +++ b/debian/patches/features/all/rt/0104-ipc-mqueue-Add-a-critical-section-to-avoid-a-deadloc.patch @@ -1,6 +1,7 @@ -Subject: ipc/mqueue: Add a critical section to avoid a deadlock +From c38b6322366916e5b12e1ab515b1f983f362ce20 Mon Sep 17 00:00:00 2001 From: KOBAYASHI Yoshitake Date: Sat, 23 Jul 2011 11:57:36 +0900 +Subject: [104/254] ipc/mqueue: Add a critical section to avoid a deadlock (Repost for v3.0-rt1 and changed the distination addreses) I have tested the following patch on v3.0-rt1 with PREEMPT_RT_FULL. @@ -21,7 +22,6 @@ Description of the problem *. receiver will never wake up and cannot change sender's state to STATE_READY because sender has higher priority - Signed-off-by: Yoshitake Kobayashi Cc: viro@zeniv.linux.org.uk Cc: dchinner@redhat.com @@ -34,11 +34,11 @@ Signed-off-by: Thomas Gleixner ipc/mqueue.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) -Index: linux-3.4/ipc/mqueue.c -=================================================================== ---- linux-3.4.orig/ipc/mqueue.c -+++ linux-3.4/ipc/mqueue.c -@@ -837,15 +837,19 @@ static inline void pipelined_receive(str +diff --git a/ipc/mqueue.c b/ipc/mqueue.c +index dd9e66a..e630272 100644 +--- a/ipc/mqueue.c ++++ b/ipc/mqueue.c +@@ -837,15 +837,19 @@ static inline void pipelined_receive(struct mqueue_inode_info *info) wake_up_interruptible(&info->wait_q); return; } diff --git a/debian/patches/features/all/rt/relay-fix-timer-madness.patch b/debian/patches/features/all/rt/0105-relay-fix-timer-madness.patch similarity index 72% rename from debian/patches/features/all/rt/relay-fix-timer-madness.patch rename to debian/patches/features/all/rt/0105-relay-fix-timer-madness.patch index bed2a5271..1fe5668d1 100644 --- a/debian/patches/features/all/rt/relay-fix-timer-madness.patch +++ b/debian/patches/features/all/rt/0105-relay-fix-timer-madness.patch @@ -1,6 +1,7 @@ +From 5b26aeec69958300fee7494cdfb11d30d912f3ec Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Fri, 3 Jul 2009 08:44:07 -0500 -Subject: relay: fix timer madness +Subject: [105/254] relay: fix timer madness remove timer calls (!!!) from deep within the tracing infrastructure. This was totally bogus code that can cause lockups and worse. Poll @@ -8,16 +9,15 @@ the buffer every 2 jiffies for now. Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner - --- kernel/relay.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) -Index: linux-3.4/kernel/relay.c -=================================================================== ---- linux-3.4.orig/kernel/relay.c -+++ linux-3.4/kernel/relay.c -@@ -340,6 +340,10 @@ static void wakeup_readers(unsigned long +diff --git a/kernel/relay.c b/kernel/relay.c +index ab56a17..0fb9799 100644 +--- a/kernel/relay.c ++++ b/kernel/relay.c +@@ -340,6 +340,10 @@ static void wakeup_readers(unsigned long data) { struct rchan_buf *buf = (struct rchan_buf *)data; wake_up_interruptible(&buf->read_wait); @@ -28,7 +28,7 @@ Index: linux-3.4/kernel/relay.c } /** -@@ -357,6 +361,7 @@ static void __relay_reset(struct rchan_b +@@ -357,6 +361,7 @@ static void __relay_reset(struct rchan_buf *buf, unsigned int init) init_waitqueue_head(&buf->read_wait); kref_init(&buf->kref); setup_timer(&buf->timer, wakeup_readers, (unsigned long)buf); @@ -36,7 +36,7 @@ Index: linux-3.4/kernel/relay.c } else del_timer_sync(&buf->timer); -@@ -739,15 +744,6 @@ size_t relay_switch_subbuf(struct rchan_ +@@ -739,15 +744,6 @@ size_t relay_switch_subbuf(struct rchan_buf *buf, size_t length) else buf->early_bytes += buf->chan->subbuf_size - buf->padding[old_subbuf]; diff --git a/debian/patches/features/all/rt/net-ipv4-route-use-locks-on-up-rt.patch b/debian/patches/features/all/rt/0106-net-ipv4-route-use-locks-on-up-rt.patch.patch similarity index 70% rename from debian/patches/features/all/rt/net-ipv4-route-use-locks-on-up-rt.patch rename to debian/patches/features/all/rt/0106-net-ipv4-route-use-locks-on-up-rt.patch.patch index a99156803..dc4cc0dc7 100644 --- a/debian/patches/features/all/rt/net-ipv4-route-use-locks-on-up-rt.patch +++ b/debian/patches/features/all/rt/0106-net-ipv4-route-use-locks-on-up-rt.patch.patch @@ -1,16 +1,17 @@ -Subject: net-ipv4-route-use-locks-on-up-rt.patch +From 3cd864316772f685e15904da79ebcb57f7ef3171 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 15 Jul 2011 16:24:45 +0200 +Subject: [106/254] net-ipv4-route-use-locks-on-up-rt.patch Signed-off-by: Thomas Gleixner --- net/ipv4/route.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-3.4/net/ipv4/route.c -=================================================================== ---- linux-3.4.orig/net/ipv4/route.c -+++ linux-3.4/net/ipv4/route.c +diff --git a/net/ipv4/route.c b/net/ipv4/route.c +index 167ea10..eea5d9e 100644 +--- a/net/ipv4/route.c ++++ b/net/ipv4/route.c @@ -250,7 +250,7 @@ struct rt_hash_bucket { }; diff --git a/debian/patches/features/all/rt/workqueue-avoid-the-lock-in-cpu-dying.patch b/debian/patches/features/all/rt/0107-workqueue-avoid-the-lock-in-cpu-dying.patch.patch similarity index 71% rename from debian/patches/features/all/rt/workqueue-avoid-the-lock-in-cpu-dying.patch rename to debian/patches/features/all/rt/0107-workqueue-avoid-the-lock-in-cpu-dying.patch.patch index 0089e403b..5ec8df049 100644 --- a/debian/patches/features/all/rt/workqueue-avoid-the-lock-in-cpu-dying.patch +++ b/debian/patches/features/all/rt/0107-workqueue-avoid-the-lock-in-cpu-dying.patch.patch @@ -1,17 +1,18 @@ -Subject: workqueue-avoid-the-lock-in-cpu-dying.patch +From 5f064180f888f9ea8d4a2e054aea7fcfdd5c0e69 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 24 Jun 2011 20:39:24 +0200 +Subject: [107/254] workqueue-avoid-the-lock-in-cpu-dying.patch Signed-off-by: Thomas Gleixner --- kernel/workqueue.c | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) -Index: linux-3.4/kernel/workqueue.c -=================================================================== ---- linux-3.4.orig/kernel/workqueue.c -+++ linux-3.4/kernel/workqueue.c -@@ -3505,6 +3505,25 @@ static int __devinit workqueue_cpu_callb +diff --git a/kernel/workqueue.c b/kernel/workqueue.c +index 50e0d00..3fd5280 100644 +--- a/kernel/workqueue.c ++++ b/kernel/workqueue.c +@@ -3505,6 +3505,25 @@ static int __devinit workqueue_cpu_callback(struct notifier_block *nfb, kthread_stop(new_trustee); return NOTIFY_BAD; } @@ -37,7 +38,7 @@ Index: linux-3.4/kernel/workqueue.c } /* some are called w/ irq disabled, don't disturb irq status */ -@@ -3524,16 +3543,6 @@ static int __devinit workqueue_cpu_callb +@@ -3524,16 +3543,6 @@ static int __devinit workqueue_cpu_callback(struct notifier_block *nfb, gcwq->first_idle = new_worker; break; @@ -54,7 +55,7 @@ Index: linux-3.4/kernel/workqueue.c case CPU_POST_DEAD: gcwq->trustee_state = TRUSTEE_BUTCHER; /* fall through */ -@@ -3567,6 +3576,7 @@ static int __devinit workqueue_cpu_callb +@@ -3567,6 +3576,7 @@ static int __devinit workqueue_cpu_callback(struct notifier_block *nfb, spin_unlock_irqrestore(&gcwq->lock, flags); diff --git a/debian/patches/features/all/rt/timers-prepare-for-full-preemption.patch b/debian/patches/features/all/rt/0108-timers-prepare-for-full-preemption.patch similarity index 79% rename from debian/patches/features/all/rt/timers-prepare-for-full-preemption.patch rename to debian/patches/features/all/rt/0108-timers-prepare-for-full-preemption.patch index 01cdcea55..8784f20b3 100644 --- a/debian/patches/features/all/rt/timers-prepare-for-full-preemption.patch +++ b/debian/patches/features/all/rt/0108-timers-prepare-for-full-preemption.patch @@ -1,6 +1,7 @@ +From 421669c70501857774ee79e66db3c8272145bedf Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Fri, 3 Jul 2009 08:29:34 -0500 -Subject: timers: prepare for full preemption +Subject: [108/254] timers: prepare for full preemption When softirqs can be preempted we need to make sure that cancelling the timer from the active thread can not deadlock vs. a running timer @@ -8,17 +9,16 @@ callback. Add a waitqueue to resolve that. Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner - --- include/linux/timer.h | 2 +- kernel/timer.c | 35 ++++++++++++++++++++++++++++++++--- 2 files changed, 33 insertions(+), 4 deletions(-) -Index: linux-3.4/include/linux/timer.h -=================================================================== ---- linux-3.4.orig/include/linux/timer.h -+++ linux-3.4/include/linux/timer.h -@@ -276,7 +276,7 @@ extern void add_timer(struct timer_list +diff --git a/include/linux/timer.h b/include/linux/timer.h +index 6abd913..b703477 100644 +--- a/include/linux/timer.h ++++ b/include/linux/timer.h +@@ -276,7 +276,7 @@ extern void add_timer(struct timer_list *timer); extern int try_to_del_timer_sync(struct timer_list *timer); @@ -27,10 +27,10 @@ Index: linux-3.4/include/linux/timer.h extern int del_timer_sync(struct timer_list *timer); #else # define del_timer_sync(t) del_timer(t) -Index: linux-3.4/kernel/timer.c -=================================================================== ---- linux-3.4.orig/kernel/timer.c -+++ linux-3.4/kernel/timer.c +diff --git a/kernel/timer.c b/kernel/timer.c +index a297ffc..d7ad9d0 100644 +--- a/kernel/timer.c ++++ b/kernel/timer.c @@ -75,6 +75,7 @@ struct tvec_root { struct tvec_base { spinlock_t lock; @@ -39,7 +39,7 @@ Index: linux-3.4/kernel/timer.c unsigned long timer_jiffies; unsigned long next_timer; struct tvec_root tv1; -@@ -725,12 +726,15 @@ __mod_timer(struct timer_list *timer, un +@@ -725,12 +726,15 @@ __mod_timer(struct timer_list *timer, unsigned long expires, debug_activate(timer, expires); @@ -55,7 +55,7 @@ Index: linux-3.4/kernel/timer.c new_base = per_cpu(tvec_bases, cpu); if (base != new_base) { -@@ -931,6 +935,29 @@ void add_timer_on(struct timer_list *tim +@@ -931,6 +935,29 @@ void add_timer_on(struct timer_list *timer, int cpu) } EXPORT_SYMBOL_GPL(add_timer_on); @@ -94,7 +94,7 @@ Index: linux-3.4/kernel/timer.c /** * del_timer_sync - deactivate a timer and wait for the handler to finish. * @timer: the timer to be deactivated -@@ -1063,7 +1090,7 @@ int del_timer_sync(struct timer_list *ti +@@ -1063,7 +1090,7 @@ int del_timer_sync(struct timer_list *timer) int ret = try_to_del_timer_sync(timer); if (ret >= 0) return ret; @@ -103,7 +103,7 @@ Index: linux-3.4/kernel/timer.c } } EXPORT_SYMBOL(del_timer_sync); -@@ -1174,10 +1201,11 @@ static inline void __run_timers(struct t +@@ -1174,10 +1201,11 @@ static inline void __run_timers(struct tvec_base *base) spin_unlock_irq(&base->lock); call_timer_fn(timer, fn, data); @@ -116,7 +116,7 @@ Index: linux-3.4/kernel/timer.c spin_unlock_irq(&base->lock); } -@@ -1684,6 +1712,7 @@ static int __cpuinit init_timers_cpu(int +@@ -1684,6 +1712,7 @@ static int __cpuinit init_timers_cpu(int cpu) } spin_lock_init(&base->lock); diff --git a/debian/patches/features/all/rt/timers-preempt-rt-support.patch b/debian/patches/features/all/rt/0109-timers-preempt-rt-support.patch similarity index 72% rename from debian/patches/features/all/rt/timers-preempt-rt-support.patch rename to debian/patches/features/all/rt/0109-timers-preempt-rt-support.patch index f45871dc9..01ddefdc1 100644 --- a/debian/patches/features/all/rt/timers-preempt-rt-support.patch +++ b/debian/patches/features/all/rt/0109-timers-preempt-rt-support.patch @@ -1,6 +1,7 @@ +From 68ba9a349e42a61e2365021e2a72b8ef2631dc36 Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Fri, 3 Jul 2009 08:30:20 -0500 -Subject: timers: preempt-rt support +Subject: [109/254] timers: preempt-rt support Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner @@ -8,11 +9,11 @@ Signed-off-by: Thomas Gleixner kernel/timer.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) -Index: linux-3.4/kernel/timer.c -=================================================================== ---- linux-3.4.orig/kernel/timer.c -+++ linux-3.4/kernel/timer.c -@@ -1344,6 +1344,22 @@ unsigned long get_next_timer_interrupt(u +diff --git a/kernel/timer.c b/kernel/timer.c +index d7ad9d0..05cee31 100644 +--- a/kernel/timer.c ++++ b/kernel/timer.c +@@ -1344,6 +1344,22 @@ unsigned long get_next_timer_interrupt(unsigned long now) */ if (cpu_is_offline(smp_processor_id())) return now + NEXT_TIMER_MAX_DELTA; @@ -35,7 +36,7 @@ Index: linux-3.4/kernel/timer.c spin_lock(&base->lock); if (time_before_eq(base->next_timer, base->timer_jiffies)) base->next_timer = __next_timer_interrupt(base); -@@ -1352,7 +1368,7 @@ unsigned long get_next_timer_interrupt(u +@@ -1352,7 +1368,7 @@ unsigned long get_next_timer_interrupt(unsigned long now) if (time_before_eq(expires, now)) return now; diff --git a/debian/patches/features/all/rt/timers-fix-timer-hotplug-on-rt.patch b/debian/patches/features/all/rt/0110-timers-fix-timer-hotplug-on-rt.patch similarity index 70% rename from debian/patches/features/all/rt/timers-fix-timer-hotplug-on-rt.patch rename to debian/patches/features/all/rt/0110-timers-fix-timer-hotplug-on-rt.patch index da011e2d7..74b118a56 100644 --- a/debian/patches/features/all/rt/timers-fix-timer-hotplug-on-rt.patch +++ b/debian/patches/features/all/rt/0110-timers-fix-timer-hotplug-on-rt.patch @@ -1,22 +1,22 @@ +From a9cf68dfc65059b5cef24c4f6ac00dd1b3a4f46f Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Fri, 3 Jul 2009 08:30:32 -0500 -Subject: timers: fix timer hotplug on -rt +Subject: [110/254] timers: fix timer hotplug on -rt Here we are in the CPU_DEAD notifier, and we must not sleep nor enable interrupts. Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner - --- kernel/timer.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) -Index: linux-3.4/kernel/timer.c -=================================================================== ---- linux-3.4.orig/kernel/timer.c -+++ linux-3.4/kernel/timer.c -@@ -1764,6 +1764,7 @@ static void __cpuinit migrate_timers(int +diff --git a/kernel/timer.c b/kernel/timer.c +index 05cee31..7ba0602 100644 +--- a/kernel/timer.c ++++ b/kernel/timer.c +@@ -1764,6 +1764,7 @@ static void __cpuinit migrate_timers(int cpu) { struct tvec_base *old_base; struct tvec_base *new_base; @@ -24,7 +24,7 @@ Index: linux-3.4/kernel/timer.c int i; BUG_ON(cpu_online(cpu)); -@@ -1773,8 +1774,11 @@ static void __cpuinit migrate_timers(int +@@ -1773,8 +1774,11 @@ static void __cpuinit migrate_timers(int cpu) * The caller is globally serialized and nobody else * takes two locks at once, deadlock is not possible. */ @@ -38,7 +38,7 @@ Index: linux-3.4/kernel/timer.c BUG_ON(old_base->running_timer); -@@ -1788,7 +1792,9 @@ static void __cpuinit migrate_timers(int +@@ -1788,7 +1792,9 @@ static void __cpuinit migrate_timers(int cpu) } spin_unlock(&old_base->lock); diff --git a/debian/patches/features/all/rt/timers-mov-printk_tick-to-soft-interrupt.patch b/debian/patches/features/all/rt/0111-timers-mov-printk_tick-to-soft-interrupt.patch similarity index 66% rename from debian/patches/features/all/rt/timers-mov-printk_tick-to-soft-interrupt.patch rename to debian/patches/features/all/rt/0111-timers-mov-printk_tick-to-soft-interrupt.patch index e4049b630..97d688758 100644 --- a/debian/patches/features/all/rt/timers-mov-printk_tick-to-soft-interrupt.patch +++ b/debian/patches/features/all/rt/0111-timers-mov-printk_tick-to-soft-interrupt.patch @@ -1,18 +1,18 @@ +From f49406b46d12ca5f132fb056e0179f4a98fc1a35 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 3 Jul 2009 08:44:30 -0500 -Subject: timers: mov printk_tick to soft interrupt +Subject: [111/254] timers: mov printk_tick to soft interrupt Signed-off-by: Thomas Gleixner Signed-off-by: Ingo Molnar - --- kernel/timer.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-3.4/kernel/timer.c -=================================================================== ---- linux-3.4.orig/kernel/timer.c -+++ linux-3.4/kernel/timer.c +diff --git a/kernel/timer.c b/kernel/timer.c +index 7ba0602..e069d9f 100644 +--- a/kernel/timer.c ++++ b/kernel/timer.c @@ -1386,7 +1386,6 @@ void update_process_times(int user_tick) account_process_tick(p, user_tick); run_local_timers(); @@ -21,7 +21,7 @@ Index: linux-3.4/kernel/timer.c #ifdef CONFIG_IRQ_WORK if (in_irq()) irq_work_run(); -@@ -1402,6 +1401,7 @@ static void run_timer_softirq(struct sof +@@ -1402,6 +1401,7 @@ static void run_timer_softirq(struct softirq_action *h) { struct tvec_base *base = __this_cpu_read(tvec_bases); diff --git a/debian/patches/features/all/rt/timer-delay-waking-softirqs-from-the-jiffy-tick.patch b/debian/patches/features/all/rt/0112-timer-delay-waking-softirqs-from-the-jiffy-tick.patch similarity index 91% rename from debian/patches/features/all/rt/timer-delay-waking-softirqs-from-the-jiffy-tick.patch rename to debian/patches/features/all/rt/0112-timer-delay-waking-softirqs-from-the-jiffy-tick.patch index 665c2ce1a..4b72f050b 100644 --- a/debian/patches/features/all/rt/timer-delay-waking-softirqs-from-the-jiffy-tick.patch +++ b/debian/patches/features/all/rt/0112-timer-delay-waking-softirqs-from-the-jiffy-tick.patch @@ -1,6 +1,7 @@ +From 9fc456627473841f51e8f2dafd9a32a35d4342ef Mon Sep 17 00:00:00 2001 From: Peter Zijlstra Date: Fri, 21 Aug 2009 11:56:45 +0200 -Subject: timer: delay waking softirqs from the jiffy tick +Subject: [112/254] timer: delay waking softirqs from the jiffy tick People were complaining about broken balancing with the recent -rt series. @@ -51,15 +52,14 @@ behaviour. Signed-off-by: Peter Zijlstra Signed-off-by: Thomas Gleixner - --- kernel/timer.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-3.4/kernel/timer.c -=================================================================== ---- linux-3.4.orig/kernel/timer.c -+++ linux-3.4/kernel/timer.c +diff --git a/kernel/timer.c b/kernel/timer.c +index e069d9f..8e410fc 100644 +--- a/kernel/timer.c ++++ b/kernel/timer.c @@ -1384,13 +1384,13 @@ void update_process_times(int user_tick) /* Note: this timer irq context must be accounted for as well. */ diff --git a/debian/patches/features/all/rt/timers-avoid-the-base-null-otptimization-on-rt.patch b/debian/patches/features/all/rt/0113-timers-Avoid-the-switch-timers-base-set-to-NULL-tric.patch similarity index 80% rename from debian/patches/features/all/rt/timers-avoid-the-base-null-otptimization-on-rt.patch rename to debian/patches/features/all/rt/0113-timers-Avoid-the-switch-timers-base-set-to-NULL-tric.patch index abd11fbb5..85a4ef1f9 100644 --- a/debian/patches/features/all/rt/timers-avoid-the-base-null-otptimization-on-rt.patch +++ b/debian/patches/features/all/rt/0113-timers-Avoid-the-switch-timers-base-set-to-NULL-tric.patch @@ -1,6 +1,8 @@ -Subject: timers: Avoid the switch timers base set to NULL trick on RT +From 0cb90306c48a6f0f799dc2beb539f230b4d88bce Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Thu, 21 Jul 2011 15:23:39 +0200 +Subject: [113/254] timers: Avoid the switch timers base set to NULL trick on + RT On RT that code is preemptible, so we cannot assign NULL to timers base as a preempter would spin forever in lock_timer_base(). @@ -10,11 +12,11 @@ Signed-off-by: Thomas Gleixner kernel/timer.c | 40 ++++++++++++++++++++++++++++++++-------- 1 file changed, 32 insertions(+), 8 deletions(-) -Index: linux-3.4/kernel/timer.c -=================================================================== ---- linux-3.4.orig/kernel/timer.c -+++ linux-3.4/kernel/timer.c -@@ -700,6 +700,36 @@ static struct tvec_base *lock_timer_base +diff --git a/kernel/timer.c b/kernel/timer.c +index 8e410fc..cc2588b 100644 +--- a/kernel/timer.c ++++ b/kernel/timer.c +@@ -700,6 +700,36 @@ static struct tvec_base *lock_timer_base(struct timer_list *timer, } } @@ -51,7 +53,7 @@ Index: linux-3.4/kernel/timer.c static inline int __mod_timer(struct timer_list *timer, unsigned long expires, bool pending_only, int pinned) -@@ -745,14 +775,8 @@ __mod_timer(struct timer_list *timer, un +@@ -745,14 +775,8 @@ __mod_timer(struct timer_list *timer, unsigned long expires, * handler yet has not finished. This also guarantees that * the timer is serialized wrt itself. */ diff --git a/debian/patches/features/all/rt/rfc-printk-don-27t-call-printk_tick-in-printk_needs_cpu.patch b/debian/patches/features/all/rt/0114-printk-Don-t-call-printk_tick-in-printk_needs_cpu-on.patch similarity index 85% rename from debian/patches/features/all/rt/rfc-printk-don-27t-call-printk_tick-in-printk_needs_cpu.patch rename to debian/patches/features/all/rt/0114-printk-Don-t-call-printk_tick-in-printk_needs_cpu-on.patch index c3efd9ac4..8987b2bc8 100644 --- a/debian/patches/features/all/rt/rfc-printk-don-27t-call-printk_tick-in-printk_needs_cpu.patch +++ b/debian/patches/features/all/rt/0114-printk-Don-t-call-printk_tick-in-printk_needs_cpu-on.patch @@ -1,6 +1,7 @@ -Subject: printk: Don't call printk_tick in printk_needs_cpu() on RT +From 35ec009909d17b810911bf01151dc52f0fb9abc4 Mon Sep 17 00:00:00 2001 From: Yong Zhang Date: Sun, 16 Oct 2011 18:56:45 +0800 +Subject: [114/254] printk: Don't call printk_tick in printk_needs_cpu() on RT printk_tick() can't be called in atomic context when RT is enabled, otherwise below warning will show: @@ -30,10 +31,10 @@ Signed-off-by: Thomas Gleixner kernel/printk.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -Index: linux-3.4/kernel/printk.c -=================================================================== ---- linux-3.4.orig/kernel/printk.c -+++ linux-3.4/kernel/printk.c +diff --git a/kernel/printk.c b/kernel/printk.c +index 300952e..9a27a94 100644 +--- a/kernel/printk.c ++++ b/kernel/printk.c @@ -1298,8 +1298,8 @@ void printk_tick(void) int printk_needs_cpu(int cpu) diff --git a/debian/patches/features/all/rt/hrtimers-prepare-full-preemption.patch b/debian/patches/features/all/rt/0115-hrtimers-prepare-full-preemption.patch similarity index 80% rename from debian/patches/features/all/rt/hrtimers-prepare-full-preemption.patch rename to debian/patches/features/all/rt/0115-hrtimers-prepare-full-preemption.patch index 7828640ff..ffcffe2ad 100644 --- a/debian/patches/features/all/rt/hrtimers-prepare-full-preemption.patch +++ b/debian/patches/features/all/rt/0115-hrtimers-prepare-full-preemption.patch @@ -1,13 +1,13 @@ +From 783d78fe5799ccba19084b9ee39f921c90ffe284 Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Fri, 3 Jul 2009 08:29:34 -0500 -Subject: hrtimers: prepare full preemption +Subject: [115/254] hrtimers: prepare full preemption Make cancellation of a running callback in softirq context safe against preemption. Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner - --- include/linux/hrtimer.h | 10 ++++++++++ kernel/hrtimer.c | 33 ++++++++++++++++++++++++++++++++- @@ -15,10 +15,10 @@ Signed-off-by: Thomas Gleixner kernel/posix-timers.c | 33 +++++++++++++++++++++++++++++++++ 4 files changed, 76 insertions(+), 1 deletion(-) -Index: linux-3.4/include/linux/hrtimer.h -=================================================================== ---- linux-3.4.orig/include/linux/hrtimer.h -+++ linux-3.4/include/linux/hrtimer.h +diff --git a/include/linux/hrtimer.h b/include/linux/hrtimer.h +index fd0dc30..e8b395d 100644 +--- a/include/linux/hrtimer.h ++++ b/include/linux/hrtimer.h @@ -187,6 +187,9 @@ struct hrtimer_cpu_base { unsigned long nr_hangs; ktime_t max_hang_time; @@ -29,7 +29,7 @@ Index: linux-3.4/include/linux/hrtimer.h struct hrtimer_clock_base clock_base[HRTIMER_MAX_CLOCK_BASES]; }; -@@ -374,6 +377,13 @@ static inline int hrtimer_restart(struct +@@ -374,6 +377,13 @@ static inline int hrtimer_restart(struct hrtimer *timer) return hrtimer_start_expires(timer, HRTIMER_MODE_ABS); } @@ -43,11 +43,11 @@ Index: linux-3.4/include/linux/hrtimer.h /* Query timers: */ extern ktime_t hrtimer_get_remaining(const struct hrtimer *timer); extern int hrtimer_get_res(const clockid_t which_clock, struct timespec *tp); -Index: linux-3.4/kernel/hrtimer.c -=================================================================== ---- linux-3.4.orig/kernel/hrtimer.c -+++ linux-3.4/kernel/hrtimer.c -@@ -847,6 +847,32 @@ u64 hrtimer_forward(struct hrtimer *time +diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c +index 1a3695e..905e2cd2 100644 +--- a/kernel/hrtimer.c ++++ b/kernel/hrtimer.c +@@ -847,6 +847,32 @@ u64 hrtimer_forward(struct hrtimer *timer, ktime_t now, ktime_t interval) } EXPORT_SYMBOL_GPL(hrtimer_forward); @@ -80,7 +80,7 @@ Index: linux-3.4/kernel/hrtimer.c /* * enqueue_hrtimer - internal function to (re)start a timer * -@@ -1073,7 +1099,7 @@ int hrtimer_cancel(struct hrtimer *timer +@@ -1073,7 +1099,7 @@ int hrtimer_cancel(struct hrtimer *timer) if (ret >= 0) return ret; @@ -98,7 +98,7 @@ Index: linux-3.4/kernel/hrtimer.c } /* -@@ -1638,6 +1666,9 @@ static void __cpuinit init_hrtimers_cpu( +@@ -1638,6 +1666,9 @@ static void __cpuinit init_hrtimers_cpu(int cpu) } hrtimer_init_hres(cpu_base); @@ -108,10 +108,10 @@ Index: linux-3.4/kernel/hrtimer.c } #ifdef CONFIG_HOTPLUG_CPU -Index: linux-3.4/kernel/itimer.c -=================================================================== ---- linux-3.4.orig/kernel/itimer.c -+++ linux-3.4/kernel/itimer.c +diff --git a/kernel/itimer.c b/kernel/itimer.c +index 8d262b4..d051390 100644 +--- a/kernel/itimer.c ++++ b/kernel/itimer.c @@ -213,6 +213,7 @@ again: /* We are sharing ->siglock with it_real_fn() */ if (hrtimer_try_to_cancel(timer) < 0) { @@ -120,11 +120,11 @@ Index: linux-3.4/kernel/itimer.c goto again; } expires = timeval_to_ktime(value->it_value); -Index: linux-3.4/kernel/posix-timers.c -=================================================================== ---- linux-3.4.orig/kernel/posix-timers.c -+++ linux-3.4/kernel/posix-timers.c -@@ -766,6 +766,20 @@ SYSCALL_DEFINE1(timer_getoverrun, timer_ +diff --git a/kernel/posix-timers.c b/kernel/posix-timers.c +index 7b73c34..6a74800 100644 +--- a/kernel/posix-timers.c ++++ b/kernel/posix-timers.c +@@ -766,6 +766,20 @@ SYSCALL_DEFINE1(timer_getoverrun, timer_t, timer_id) return overrun; } @@ -182,7 +182,7 @@ Index: linux-3.4/kernel/posix-timers.c spin_lock(¤t->sighand->siglock); list_del(&timer->list); -@@ -920,8 +943,18 @@ static void itimer_delete(struct k_itime +@@ -920,8 +943,18 @@ static void itimer_delete(struct k_itimer *timer) retry_delete: spin_lock_irqsave(&timer->it_lock, flags); diff --git a/debian/patches/features/all/rt/hrtimer-fixup-hrtimer-callback-changes-for-preempt-r.patch b/debian/patches/features/all/rt/0116-hrtimer-fixup-hrtimer-callback-changes-for-preempt-r.patch similarity index 81% rename from debian/patches/features/all/rt/hrtimer-fixup-hrtimer-callback-changes-for-preempt-r.patch rename to debian/patches/features/all/rt/0116-hrtimer-fixup-hrtimer-callback-changes-for-preempt-r.patch index ff50cc31c..cb22446bc 100644 --- a/debian/patches/features/all/rt/hrtimer-fixup-hrtimer-callback-changes-for-preempt-r.patch +++ b/debian/patches/features/all/rt/0116-hrtimer-fixup-hrtimer-callback-changes-for-preempt-r.patch @@ -1,6 +1,7 @@ +From ca0ef1fa734b02ca804b48de57aa91bfc2b6e0d3 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 3 Jul 2009 08:44:31 -0500 -Subject: hrtimer: fixup hrtimer callback changes for preempt-rt +Subject: [116/254] hrtimer: fixup hrtimer callback changes for preempt-rt In preempt-rt we can not call the callbacks which take sleeping locks from the timer interrupt context. @@ -10,20 +11,19 @@ delivery problem for real. Signed-off-by: Thomas Gleixner Signed-off-by: Ingo Molnar - --- - include/linux/hrtimer.h | 3 - kernel/hrtimer.c | 190 ++++++++++++++++++++++++++++++++++++++++++----- - kernel/sched/core.c | 1 - kernel/sched/rt.c | 1 - kernel/time/tick-sched.c | 1 - kernel/watchdog.c | 1 + include/linux/hrtimer.h | 3 + + kernel/hrtimer.c | 190 +++++++++++++++++++++++++++++++++++++++++----- + kernel/sched/core.c | 1 + + kernel/sched/rt.c | 1 + + kernel/time/tick-sched.c | 1 + + kernel/watchdog.c | 1 + 6 files changed, 179 insertions(+), 18 deletions(-) -Index: linux-3.4/include/linux/hrtimer.h -=================================================================== ---- linux-3.4.orig/include/linux/hrtimer.h -+++ linux-3.4/include/linux/hrtimer.h +diff --git a/include/linux/hrtimer.h b/include/linux/hrtimer.h +index e8b395d..0e37086 100644 +--- a/include/linux/hrtimer.h ++++ b/include/linux/hrtimer.h @@ -111,6 +111,8 @@ struct hrtimer { enum hrtimer_restart (*function)(struct hrtimer *); struct hrtimer_clock_base *base; @@ -41,11 +41,11 @@ Index: linux-3.4/include/linux/hrtimer.h ktime_t resolution; ktime_t (*get_time)(void); ktime_t softirq_time; -Index: linux-3.4/kernel/hrtimer.c -=================================================================== ---- linux-3.4.orig/kernel/hrtimer.c -+++ linux-3.4/kernel/hrtimer.c -@@ -589,8 +589,7 @@ static int hrtimer_reprogram(struct hrti +diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c +index 905e2cd2..1dd627b 100644 +--- a/kernel/hrtimer.c ++++ b/kernel/hrtimer.c +@@ -589,8 +589,7 @@ static int hrtimer_reprogram(struct hrtimer *timer, * When the callback is running, we do not reprogram the clock event * device. The timer callback is either running on a different CPU or * the callback is executed in the hrtimer_interrupt context. The @@ -55,7 +55,7 @@ Index: linux-3.4/kernel/hrtimer.c */ if (hrtimer_callback_running(timer)) return 0; -@@ -625,6 +624,9 @@ static int hrtimer_reprogram(struct hrti +@@ -625,6 +624,9 @@ static int hrtimer_reprogram(struct hrtimer *timer, return res; } @@ -65,7 +65,7 @@ Index: linux-3.4/kernel/hrtimer.c /* * Initialize the high resolution related parts of cpu_base */ -@@ -644,7 +646,29 @@ static inline int hrtimer_enqueue_reprog +@@ -644,7 +646,29 @@ static inline int hrtimer_enqueue_reprogram(struct hrtimer *timer, struct hrtimer_clock_base *base, int wakeup) { @@ -95,7 +95,7 @@ Index: linux-3.4/kernel/hrtimer.c if (wakeup) { raw_spin_unlock(&base->cpu_base->lock); raise_softirq_irqoff(HRTIMER_SOFTIRQ); -@@ -733,6 +757,11 @@ static inline int hrtimer_enqueue_reprog +@@ -733,6 +757,11 @@ static inline int hrtimer_enqueue_reprogram(struct hrtimer *timer, } static inline void hrtimer_init_hres(struct hrtimer_cpu_base *base) { } static inline void retrigger_next_event(void *arg) { } @@ -107,7 +107,7 @@ Index: linux-3.4/kernel/hrtimer.c #endif /* CONFIG_HIGH_RES_TIMERS */ -@@ -864,9 +893,9 @@ void hrtimer_wait_for_timer(const struct +@@ -864,9 +893,9 @@ void hrtimer_wait_for_timer(const struct hrtimer *timer) { struct hrtimer_clock_base *base = timer->base; @@ -119,7 +119,7 @@ Index: linux-3.4/kernel/hrtimer.c } #else -@@ -916,6 +945,11 @@ static void __remove_hrtimer(struct hrti +@@ -916,6 +945,11 @@ static void __remove_hrtimer(struct hrtimer *timer, if (!(timer->state & HRTIMER_STATE_ENQUEUED)) goto out; @@ -131,7 +131,7 @@ Index: linux-3.4/kernel/hrtimer.c next_timer = timerqueue_getnext(&base->active); timerqueue_del(&base->active, &timer->node); if (&timer->node == next_timer) { -@@ -1178,6 +1212,7 @@ static void __hrtimer_init(struct hrtime +@@ -1178,6 +1212,7 @@ static void __hrtimer_init(struct hrtimer *timer, clockid_t clock_id, base = hrtimer_clockid_to_base(clock_id); timer->base = &cpu_base->clock_base[base]; @@ -139,7 +139,7 @@ Index: linux-3.4/kernel/hrtimer.c timerqueue_init(&timer->node); #ifdef CONFIG_TIMER_STATS -@@ -1261,10 +1296,118 @@ static void __run_hrtimer(struct hrtimer +@@ -1261,10 +1296,118 @@ static void __run_hrtimer(struct hrtimer *timer, ktime_t *now) timer->state &= ~HRTIMER_STATE_CALLBACK; } @@ -260,7 +260,7 @@ Index: linux-3.4/kernel/hrtimer.c /* * High resolution timer interrupt * Called with interrupts disabled -@@ -1273,7 +1416,7 @@ void hrtimer_interrupt(struct clock_even +@@ -1273,7 +1416,7 @@ void hrtimer_interrupt(struct clock_event_device *dev) { struct hrtimer_cpu_base *cpu_base = &__get_cpu_var(hrtimer_bases); ktime_t expires_next, now, entry_time, delta; @@ -343,7 +343,7 @@ Index: linux-3.4/kernel/hrtimer.c } /* -@@ -1525,6 +1679,7 @@ static enum hrtimer_restart hrtimer_wake +@@ -1525,6 +1679,7 @@ static enum hrtimer_restart hrtimer_wakeup(struct hrtimer *timer) void hrtimer_init_sleeper(struct hrtimer_sleeper *sl, struct task_struct *task) { sl->timer.function = hrtimer_wakeup; @@ -351,7 +351,7 @@ Index: linux-3.4/kernel/hrtimer.c sl->task = task; } EXPORT_SYMBOL_GPL(hrtimer_init_sleeper); -@@ -1663,6 +1818,7 @@ static void __cpuinit init_hrtimers_cpu( +@@ -1663,6 +1818,7 @@ static void __cpuinit init_hrtimers_cpu(int cpu) for (i = 0; i < HRTIMER_MAX_CLOCK_BASES; i++) { cpu_base->clock_base[i].cpu_base = cpu_base; timerqueue_init_head(&cpu_base->clock_base[i].active); @@ -369,11 +369,11 @@ Index: linux-3.4/kernel/hrtimer.c } /** -Index: linux-3.4/kernel/sched/core.c -=================================================================== ---- linux-3.4.orig/kernel/sched/core.c -+++ linux-3.4/kernel/sched/core.c -@@ -480,6 +480,7 @@ static void init_rq_hrtick(struct rq *rq +diff --git a/kernel/sched/core.c b/kernel/sched/core.c +index 7274881..29fa0de 100644 +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -480,6 +480,7 @@ static void init_rq_hrtick(struct rq *rq) hrtimer_init(&rq->hrtick_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); rq->hrtick_timer.function = hrtick; @@ -381,11 +381,11 @@ Index: linux-3.4/kernel/sched/core.c } #else /* CONFIG_SCHED_HRTICK */ static inline void hrtick_clear(struct rq *rq) -Index: linux-3.4/kernel/sched/rt.c -=================================================================== ---- linux-3.4.orig/kernel/sched/rt.c -+++ linux-3.4/kernel/sched/rt.c -@@ -41,6 +41,7 @@ void init_rt_bandwidth(struct rt_bandwid +diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c +index 44af55e..8bb9f00 100644 +--- a/kernel/sched/rt.c ++++ b/kernel/sched/rt.c +@@ -41,6 +41,7 @@ void init_rt_bandwidth(struct rt_bandwidth *rt_b, u64 period, u64 runtime) hrtimer_init(&rt_b->rt_period_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); @@ -393,11 +393,11 @@ Index: linux-3.4/kernel/sched/rt.c rt_b->rt_period_timer.function = sched_rt_period_timer; } -Index: linux-3.4/kernel/time/tick-sched.c -=================================================================== ---- linux-3.4.orig/kernel/time/tick-sched.c -+++ linux-3.4/kernel/time/tick-sched.c -@@ -830,6 +830,7 @@ void tick_setup_sched_timer(void) +diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c +index a607a7c..5d409b0 100644 +--- a/kernel/time/tick-sched.c ++++ b/kernel/time/tick-sched.c +@@ -840,6 +840,7 @@ void tick_setup_sched_timer(void) * Emulate tick processing via per-CPU hrtimers: */ hrtimer_init(&ts->sched_timer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS); @@ -405,11 +405,11 @@ Index: linux-3.4/kernel/time/tick-sched.c ts->sched_timer.function = tick_sched_timer; /* Get the next period (per cpu) */ -Index: linux-3.4/kernel/watchdog.c -=================================================================== ---- linux-3.4.orig/kernel/watchdog.c -+++ linux-3.4/kernel/watchdog.c -@@ -441,6 +441,7 @@ static void watchdog_prepare_cpu(int cpu +diff --git a/kernel/watchdog.c b/kernel/watchdog.c +index de08263..87192eb 100644 +--- a/kernel/watchdog.c ++++ b/kernel/watchdog.c +@@ -441,6 +441,7 @@ static void watchdog_prepare_cpu(int cpu) WARN_ON(per_cpu(softlockup_watchdog, cpu)); hrtimer_init(hrtimer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); hrtimer->function = watchdog_timer_fn; diff --git a/debian/patches/features/all/rt/peter_zijlstra-frob-hrtimer.patch b/debian/patches/features/all/rt/0117-hrtimer-Don-t-call-the-timer-handler-from-hrtimer_st.patch similarity index 87% rename from debian/patches/features/all/rt/peter_zijlstra-frob-hrtimer.patch rename to debian/patches/features/all/rt/0117-hrtimer-Don-t-call-the-timer-handler-from-hrtimer_st.patch index c9a877268..c8451bdc3 100644 --- a/debian/patches/features/all/rt/peter_zijlstra-frob-hrtimer.patch +++ b/debian/patches/features/all/rt/0117-hrtimer-Don-t-call-the-timer-handler-from-hrtimer_st.patch @@ -1,6 +1,7 @@ -Subject: hrtimer: Don't call the timer handler from hrtimer_start +From 7ffc6b23db7add5dbed68eb2f868c98701788dbd Mon Sep 17 00:00:00 2001 From: Peter Zijlstra -Date: Fri Aug 12 17:39:54 CEST 2011 +Date: Fri, 12 Aug 2011 17:39:54 +0200 +Subject: [117/254] hrtimer: Don't call the timer handler from hrtimer_start [] __delay+0xf/0x11 [] do_raw_spin_lock+0xd2/0x13c @@ -30,11 +31,11 @@ Signed-off-by: Peter Zijlstra kernel/hrtimer.c | 48 +++++++++++++++++++++++------------------------- 1 file changed, 23 insertions(+), 25 deletions(-) -Index: linux-3.4/kernel/hrtimer.c -=================================================================== ---- linux-3.4.orig/kernel/hrtimer.c -+++ linux-3.4/kernel/hrtimer.c -@@ -646,37 +646,24 @@ static inline int hrtimer_enqueue_reprog +diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c +index 1dd627b..358442b 100644 +--- a/kernel/hrtimer.c ++++ b/kernel/hrtimer.c +@@ -646,37 +646,24 @@ static inline int hrtimer_enqueue_reprogram(struct hrtimer *timer, struct hrtimer_clock_base *base, int wakeup) { @@ -82,7 +83,7 @@ Index: linux-3.4/kernel/hrtimer.c } return 0; -@@ -1046,8 +1033,19 @@ int __hrtimer_start_range_ns(struct hrti +@@ -1046,8 +1033,19 @@ int __hrtimer_start_range_ns(struct hrtimer *timer, ktime_t tim, * * XXX send_remote_softirq() ? */ diff --git a/debian/patches/features/all/rt/0118-hrtimer-Add-missing-debug_activate-aid-Was-Re-ANNOUN.patch b/debian/patches/features/all/rt/0118-hrtimer-Add-missing-debug_activate-aid-Was-Re-ANNOUN.patch new file mode 100644 index 000000000..44f8c2851 --- /dev/null +++ b/debian/patches/features/all/rt/0118-hrtimer-Add-missing-debug_activate-aid-Was-Re-ANNOUN.patch @@ -0,0 +1,38 @@ +From 0863c73ac1d97013dc77f2523ac9dbbbdc1957fa Mon Sep 17 00:00:00 2001 +From: Yong Zhang +Date: Thu, 13 Oct 2011 15:52:30 +0800 +Subject: [118/254] hrtimer: Add missing debug_activate() aid [Was: Re: + [ANNOUNCE] 3.0.6-rt17] + +On Fri, Oct 07, 2011 at 10:25:25AM -0700, Fernando Lopez-Lezcano wrote: +> On 10/06/2011 06:15 PM, Thomas Gleixner wrote: +> >Dear RT Folks, +> > +> >I'm pleased to announce the 3.0.6-rt17 release. +> +> Hi and thanks again. So far this one is not hanging which is very +> good news. But I still see the hrtimer_fixup_activate warnings I +> reported for rt16... + +Hi Fernando, + +I think below patch will smooth your concern? + +Thanks, +Yong +--- + kernel/hrtimer.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c +index 358442b..d363df8 100644 +--- a/kernel/hrtimer.c ++++ b/kernel/hrtimer.c +@@ -1042,6 +1042,7 @@ int __hrtimer_start_range_ns(struct hrtimer *timer, ktime_t tim, + * remove it again and report a failure. This avoids + * stale base->first entries. + */ ++ debug_deactivate(timer); + __remove_hrtimer(timer, new_base, + timer->state & HRTIMER_STATE_CALLBACK, 0); + } diff --git a/debian/patches/features/all/rt/hrtimer-fix-reprogram-madness.patch b/debian/patches/features/all/rt/0119-hrtimer-fix-reprogram-madness.patch.patch similarity index 65% rename from debian/patches/features/all/rt/hrtimer-fix-reprogram-madness.patch rename to debian/patches/features/all/rt/0119-hrtimer-fix-reprogram-madness.patch.patch index c257998b4..5fb15128d 100644 --- a/debian/patches/features/all/rt/hrtimer-fix-reprogram-madness.patch +++ b/debian/patches/features/all/rt/0119-hrtimer-fix-reprogram-madness.patch.patch @@ -1,17 +1,18 @@ -Subject: hrtimer-fix-reprogram-madness.patch +From a8754ac5a7545c887bc46077dbcd3e7afac6da16 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 14 Sep 2011 14:48:43 +0200 +Subject: [119/254] hrtimer-fix-reprogram-madness.patch Signed-off-by: Thomas Gleixner --- kernel/hrtimer.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) -Index: linux-3.4/kernel/hrtimer.c -=================================================================== ---- linux-3.4.orig/kernel/hrtimer.c -+++ linux-3.4/kernel/hrtimer.c -@@ -1317,7 +1317,11 @@ static void hrtimer_rt_reprogram(int res +diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c +index d363df8..3991464 100644 +--- a/kernel/hrtimer.c ++++ b/kernel/hrtimer.c +@@ -1317,7 +1317,11 @@ static void hrtimer_rt_reprogram(int restart, struct hrtimer *timer, if (!enqueue_hrtimer(timer, base)) return; @@ -24,7 +25,7 @@ Index: linux-3.4/kernel/hrtimer.c goto requeue; } else if (hrtimer_active(timer)) { -@@ -1326,6 +1330,7 @@ static void hrtimer_rt_reprogram(int res +@@ -1326,6 +1330,7 @@ static void hrtimer_rt_reprogram(int restart, struct hrtimer *timer, * the event device. */ if (&timer->node == base->active.next && diff --git a/debian/patches/features/all/rt/timer-fd-avoid-live-lock.patch b/debian/patches/features/all/rt/0120-timer-fd-Prevent-live-lock.patch similarity index 69% rename from debian/patches/features/all/rt/timer-fd-avoid-live-lock.patch rename to debian/patches/features/all/rt/0120-timer-fd-Prevent-live-lock.patch index 554409021..a819163d3 100644 --- a/debian/patches/features/all/rt/timer-fd-avoid-live-lock.patch +++ b/debian/patches/features/all/rt/0120-timer-fd-Prevent-live-lock.patch @@ -1,6 +1,7 @@ -Subject: timer-fd: Prevent live lock +From 6d733c50647f8c95152f450cfe7e5a5f391cce00 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 25 Jan 2012 11:08:40 +0100 +Subject: [120/254] timer-fd: Prevent live lock If hrtimer_try_to_cancel() requires a retry, then depending on the priority setting te retry loop might prevent timer callback completion @@ -14,11 +15,11 @@ Cc: stable-rt@vger.kernel.org fs/timerfd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-3.4/fs/timerfd.c -=================================================================== ---- linux-3.4.orig/fs/timerfd.c -+++ linux-3.4/fs/timerfd.c -@@ -313,7 +313,7 @@ SYSCALL_DEFINE4(timerfd_settime, int, uf +diff --git a/fs/timerfd.c b/fs/timerfd.c +index dffeb37..57f0e4e 100644 +--- a/fs/timerfd.c ++++ b/fs/timerfd.c +@@ -313,7 +313,7 @@ SYSCALL_DEFINE4(timerfd_settime, int, ufd, int, flags, if (hrtimer_try_to_cancel(&ctx->tmr) >= 0) break; spin_unlock_irq(&ctx->wqh.lock); diff --git a/debian/patches/features/all/rt/posix-timers-thread-posix-cpu-timers-on-rt.patch b/debian/patches/features/all/rt/0121-posix-timers-thread-posix-cpu-timers-on-rt.patch similarity index 85% rename from debian/patches/features/all/rt/posix-timers-thread-posix-cpu-timers-on-rt.patch rename to debian/patches/features/all/rt/0121-posix-timers-thread-posix-cpu-timers-on-rt.patch index 2a67ae932..4209353d7 100644 --- a/debian/patches/features/all/rt/posix-timers-thread-posix-cpu-timers-on-rt.patch +++ b/debian/patches/features/all/rt/0121-posix-timers-thread-posix-cpu-timers-on-rt.patch @@ -1,6 +1,7 @@ +From 9b362ebbb72b066e28f46da946e0ee2d0013d619 Mon Sep 17 00:00:00 2001 From: John Stultz Date: Fri, 3 Jul 2009 08:29:58 -0500 -Subject: posix-timers: thread posix-cpu-timers on -rt +Subject: [121/254] posix-timers: thread posix-cpu-timers on -rt posix-cpu-timer code takes non -rt safe locks in hard irq context. Move it to a thread. @@ -9,19 +10,18 @@ context. Move it to a thread. Signed-off-by: John Stultz Signed-off-by: Thomas Gleixner - --- - include/linux/init_task.h | 7 + - include/linux/sched.h | 3 - init/main.c | 1 - kernel/fork.c | 3 - kernel/posix-cpu-timers.c | 182 ++++++++++++++++++++++++++++++++++++++++++++-- + include/linux/init_task.h | 7 ++ + include/linux/sched.h | 3 + + init/main.c | 1 + + kernel/fork.c | 3 + + kernel/posix-cpu-timers.c | 182 +++++++++++++++++++++++++++++++++++++++++++-- 5 files changed, 190 insertions(+), 6 deletions(-) -Index: linux-3.4/include/linux/init_task.h -=================================================================== ---- linux-3.4.orig/include/linux/init_task.h -+++ linux-3.4/include/linux/init_task.h +diff --git a/include/linux/init_task.h b/include/linux/init_task.h +index e4baff5..29334a5 100644 +--- a/include/linux/init_task.h ++++ b/include/linux/init_task.h @@ -132,6 +132,12 @@ extern struct cred init_cred; # define INIT_PERF_EVENTS(tsk) #endif @@ -43,10 +43,10 @@ Index: linux-3.4/include/linux/init_task.h .pids = { \ [PIDTYPE_PID] = INIT_PID_LINK(PIDTYPE_PID), \ [PIDTYPE_PGID] = INIT_PID_LINK(PIDTYPE_PGID), \ -Index: linux-3.4/include/linux/sched.h -=================================================================== ---- linux-3.4.orig/include/linux/sched.h -+++ linux-3.4/include/linux/sched.h +diff --git a/include/linux/sched.h b/include/linux/sched.h +index 5b63855..b997506 100644 +--- a/include/linux/sched.h ++++ b/include/linux/sched.h @@ -1403,6 +1403,9 @@ struct task_struct { struct task_cputime cputime_expires; @@ -57,10 +57,10 @@ Index: linux-3.4/include/linux/sched.h /* process credentials */ const struct cred __rcu *real_cred; /* objective and real subjective task -Index: linux-3.4/init/main.c -=================================================================== ---- linux-3.4.orig/init/main.c -+++ linux-3.4/init/main.c +diff --git a/init/main.c b/init/main.c +index cb54cd3..894d2bd 100644 +--- a/init/main.c ++++ b/init/main.c @@ -68,6 +68,7 @@ #include #include @@ -69,11 +69,11 @@ Index: linux-3.4/init/main.c #include #include -Index: linux-3.4/kernel/fork.c -=================================================================== ---- linux-3.4.orig/kernel/fork.c -+++ linux-3.4/kernel/fork.c -@@ -1096,6 +1096,9 @@ void mm_init_owner(struct mm_struct *mm, +diff --git a/kernel/fork.c b/kernel/fork.c +index 4c9def3..45a45b7 100644 +--- a/kernel/fork.c ++++ b/kernel/fork.c +@@ -1098,6 +1098,9 @@ void mm_init_owner(struct mm_struct *mm, struct task_struct *p) */ static void posix_cpu_timers_init(struct task_struct *tsk) { @@ -83,11 +83,11 @@ Index: linux-3.4/kernel/fork.c tsk->cputime_expires.prof_exp = 0; tsk->cputime_expires.virt_exp = 0; tsk->cputime_expires.sched_exp = 0; -Index: linux-3.4/kernel/posix-cpu-timers.c -=================================================================== ---- linux-3.4.orig/kernel/posix-cpu-timers.c -+++ linux-3.4/kernel/posix-cpu-timers.c -@@ -682,7 +682,7 @@ static int posix_cpu_timer_set(struct k_ +diff --git a/kernel/posix-cpu-timers.c b/kernel/posix-cpu-timers.c +index 125cb67..63468d1 100644 +--- a/kernel/posix-cpu-timers.c ++++ b/kernel/posix-cpu-timers.c +@@ -682,7 +682,7 @@ static int posix_cpu_timer_set(struct k_itimer *timer, int flags, /* * Disarm any old timer after extracting its expiry time. */ @@ -96,7 +96,7 @@ Index: linux-3.4/kernel/posix-cpu-timers.c ret = 0; old_incr = timer->it.cpu.incr; -@@ -1198,7 +1198,7 @@ void posix_cpu_timer_schedule(struct k_i +@@ -1198,7 +1198,7 @@ void posix_cpu_timer_schedule(struct k_itimer *timer) /* * Now re-arm for the new expiry time. */ @@ -105,7 +105,7 @@ Index: linux-3.4/kernel/posix-cpu-timers.c arm_timer(timer); spin_unlock(&p->sighand->siglock); -@@ -1262,10 +1262,11 @@ static inline int fastpath_timer_check(s +@@ -1262,10 +1262,11 @@ static inline int fastpath_timer_check(struct task_struct *tsk) sig = tsk->signal; if (sig->cputimer.running) { struct task_cputime group_sample; @@ -119,7 +119,7 @@ Index: linux-3.4/kernel/posix-cpu-timers.c if (task_cputime_expired(&group_sample, &sig->cputime_expires)) return 1; -@@ -1279,13 +1280,13 @@ static inline int fastpath_timer_check(s +@@ -1279,13 +1280,13 @@ static inline int fastpath_timer_check(struct task_struct *tsk) * already updated our counts. We need to check if any timers fire now. * Interrupts are disabled. */ @@ -135,7 +135,7 @@ Index: linux-3.4/kernel/posix-cpu-timers.c /* * The fast path checks that there are no expired thread or thread -@@ -1343,6 +1344,175 @@ void run_posix_cpu_timers(struct task_st +@@ -1343,6 +1344,175 @@ void run_posix_cpu_timers(struct task_struct *tsk) } } diff --git a/debian/patches/features/all/rt/posix-timers-shorten-cpu-timers-thread.patch b/debian/patches/features/all/rt/0122-posix-timers-Shorten-posix_cpu_timers-CPU-kernel-thr.patch similarity index 63% rename from debian/patches/features/all/rt/posix-timers-shorten-cpu-timers-thread.patch rename to debian/patches/features/all/rt/0122-posix-timers-Shorten-posix_cpu_timers-CPU-kernel-thr.patch index b837a1ea8..185565a08 100644 --- a/debian/patches/features/all/rt/posix-timers-shorten-cpu-timers-thread.patch +++ b/debian/patches/features/all/rt/0122-posix-timers-Shorten-posix_cpu_timers-CPU-kernel-thr.patch @@ -1,6 +1,8 @@ +From c70d7bbfe3feea245d70f5fc5ebae17f03060cc6 Mon Sep 17 00:00:00 2001 From: Arnaldo Carvalho de Melo Date: Fri, 3 Jul 2009 08:30:00 -0500 -Subject: posix-timers: Shorten posix_cpu_timers/ kernel thread names +Subject: [122/254] posix-timers: Shorten posix_cpu_timers/ kernel thread + names Shorten the softirq kernel thread names because they always overflow the limited comm length, appearing as "posix_cpu_timer" CPU# times. @@ -8,16 +10,15 @@ limited comm length, appearing as "posix_cpu_timer" CPU# times. Signed-off-by: Arnaldo Carvalho de Melo Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner - --- kernel/posix-cpu-timers.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-3.4/kernel/posix-cpu-timers.c -=================================================================== ---- linux-3.4.orig/kernel/posix-cpu-timers.c -+++ linux-3.4/kernel/posix-cpu-timers.c -@@ -1451,7 +1451,7 @@ static int posix_cpu_thread_call(struct +diff --git a/kernel/posix-cpu-timers.c b/kernel/posix-cpu-timers.c +index 63468d1..09eb469 100644 +--- a/kernel/posix-cpu-timers.c ++++ b/kernel/posix-cpu-timers.c +@@ -1451,7 +1451,7 @@ static int posix_cpu_thread_call(struct notifier_block *nfb, switch (action) { case CPU_UP_PREPARE: p = kthread_create(posix_cpu_timers_thread, hcpu, diff --git a/debian/patches/features/all/rt/posix-timers-avoid-wakeups-when-no-timers-are-active.patch b/debian/patches/features/all/rt/0123-posix-timers-Avoid-wakeups-when-no-timers-are-active.patch similarity index 74% rename from debian/patches/features/all/rt/posix-timers-avoid-wakeups-when-no-timers-are-active.patch rename to debian/patches/features/all/rt/0123-posix-timers-Avoid-wakeups-when-no-timers-are-active.patch index fe24274da..07617185e 100644 --- a/debian/patches/features/all/rt/posix-timers-avoid-wakeups-when-no-timers-are-active.patch +++ b/debian/patches/features/all/rt/0123-posix-timers-Avoid-wakeups-when-no-timers-are-active.patch @@ -1,19 +1,19 @@ +From f0053e439e95d197160fd458a3b0c6c74afe80b0 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 3 Jul 2009 08:44:44 -0500 -Subject: posix-timers: Avoid wakeups when no timers are active +Subject: [123/254] posix-timers: Avoid wakeups when no timers are active Waking the thread even when no timers are scheduled is useless. Signed-off-by: Thomas Gleixner - --- kernel/posix-cpu-timers.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) -Index: linux-3.4/kernel/posix-cpu-timers.c -=================================================================== ---- linux-3.4.orig/kernel/posix-cpu-timers.c -+++ linux-3.4/kernel/posix-cpu-timers.c +diff --git a/kernel/posix-cpu-timers.c b/kernel/posix-cpu-timers.c +index 09eb469..2af6ea68 100644 +--- a/kernel/posix-cpu-timers.c ++++ b/kernel/posix-cpu-timers.c @@ -1408,6 +1408,21 @@ wait_to_die: return 0; } @@ -36,7 +36,7 @@ Index: linux-3.4/kernel/posix-cpu-timers.c void run_posix_cpu_timers(struct task_struct *tsk) { unsigned long cpu = smp_processor_id(); -@@ -1420,7 +1435,7 @@ void run_posix_cpu_timers(struct task_st +@@ -1420,7 +1435,7 @@ void run_posix_cpu_timers(struct task_struct *tsk) tasklist = per_cpu(posix_timer_tasklist, cpu); /* check to see if we're already queued */ @@ -45,7 +45,7 @@ Index: linux-3.4/kernel/posix-cpu-timers.c get_task_struct(tsk); if (tasklist) { tsk->posix_timer_list = tasklist; -@@ -1432,9 +1447,9 @@ void run_posix_cpu_timers(struct task_st +@@ -1432,9 +1447,9 @@ void run_posix_cpu_timers(struct task_struct *tsk) tsk->posix_timer_list = tsk; } per_cpu(posix_timer_tasklist, cpu) = tsk; diff --git a/debian/patches/features/all/rt/sched-delay-put-task.patch b/debian/patches/features/all/rt/0124-sched-delay-put-task.patch.patch similarity index 76% rename from debian/patches/features/all/rt/sched-delay-put-task.patch rename to debian/patches/features/all/rt/0124-sched-delay-put-task.patch.patch index e5a4b688a..42ee8cd9b 100644 --- a/debian/patches/features/all/rt/sched-delay-put-task.patch +++ b/debian/patches/features/all/rt/0124-sched-delay-put-task.patch.patch @@ -1,6 +1,7 @@ -Subject: sched-delay-put-task.patch +From 515eb49a89668a47e1cb68e0beca2236b83efe27 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Tue, 31 May 2011 16:59:16 +0200 +Subject: [124/254] sched-delay-put-task.patch Signed-off-by: Thomas Gleixner --- @@ -8,10 +9,10 @@ Signed-off-by: Thomas Gleixner kernel/fork.c | 11 +++++++++++ 2 files changed, 24 insertions(+) -Index: linux-3.4/include/linux/sched.h -=================================================================== ---- linux-3.4.orig/include/linux/sched.h -+++ linux-3.4/include/linux/sched.h +diff --git a/include/linux/sched.h b/include/linux/sched.h +index b997506..0fbffda 100644 +--- a/include/linux/sched.h ++++ b/include/linux/sched.h @@ -1635,6 +1635,9 @@ struct task_struct { #ifdef CONFIG_HAVE_HW_BREAKPOINT atomic_t ptrace_bp_refcnt; @@ -38,7 +39,7 @@ Index: linux-3.4/include/linux/sched.h extern void __put_task_struct(struct task_struct *t); static inline void put_task_struct(struct task_struct *t) -@@ -1826,6 +1838,7 @@ static inline void put_task_struct(struc +@@ -1826,6 +1838,7 @@ static inline void put_task_struct(struct task_struct *t) if (atomic_dec_and_test(&t->usage)) __put_task_struct(t); } @@ -46,11 +47,11 @@ Index: linux-3.4/include/linux/sched.h extern void task_times(struct task_struct *p, cputime_t *ut, cputime_t *st); extern void thread_group_times(struct task_struct *p, cputime_t *ut, cputime_t *st); -Index: linux-3.4/kernel/fork.c -=================================================================== ---- linux-3.4.orig/kernel/fork.c -+++ linux-3.4/kernel/fork.c -@@ -201,7 +201,18 @@ void __put_task_struct(struct task_struc +diff --git a/kernel/fork.c b/kernel/fork.c +index 45a45b7..e13be8a 100644 +--- a/kernel/fork.c ++++ b/kernel/fork.c +@@ -202,7 +202,18 @@ void __put_task_struct(struct task_struct *tsk) if (!profile_handoff_task(tsk)) free_task(tsk); } diff --git a/debian/patches/features/all/rt/sched-limit-nr-migrate.patch b/debian/patches/features/all/rt/0125-sched-limit-nr-migrate.patch.patch similarity index 65% rename from debian/patches/features/all/rt/sched-limit-nr-migrate.patch rename to debian/patches/features/all/rt/0125-sched-limit-nr-migrate.patch.patch index 321384282..70bd1936e 100644 --- a/debian/patches/features/all/rt/sched-limit-nr-migrate.patch +++ b/debian/patches/features/all/rt/0125-sched-limit-nr-migrate.patch.patch @@ -1,16 +1,17 @@ -Subject: sched-limit-nr-migrate.patch +From 1d0ffc64c3742ad262b361394b4a14c5763685a4 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner -Date: Mon, 06 Jun 2011 12:12:51 +0200 +Date: Mon, 6 Jun 2011 12:12:51 +0200 +Subject: [125/254] sched-limit-nr-migrate.patch Signed-off-by: Thomas Gleixner --- kernel/sched/core.c | 4 ++++ 1 file changed, 4 insertions(+) -Index: linux-3.4/kernel/sched/core.c -=================================================================== ---- linux-3.4.orig/kernel/sched/core.c -+++ linux-3.4/kernel/sched/core.c +diff --git a/kernel/sched/core.c b/kernel/sched/core.c +index 29fa0de..22a962b 100644 +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c @@ -263,7 +263,11 @@ late_initcall(sched_init_debug); * Number of tasks to iterate in a single balance run. * Limited because this is done with IRQs disabled. diff --git a/debian/patches/features/all/rt/sched-mmdrop-delayed.patch b/debian/patches/features/all/rt/0126-sched-mmdrop-delayed.patch.patch similarity index 75% rename from debian/patches/features/all/rt/sched-mmdrop-delayed.patch rename to debian/patches/features/all/rt/0126-sched-mmdrop-delayed.patch.patch index 38c7e629d..59be1f98a 100644 --- a/debian/patches/features/all/rt/sched-mmdrop-delayed.patch +++ b/debian/patches/features/all/rt/0126-sched-mmdrop-delayed.patch.patch @@ -1,6 +1,7 @@ -Subject: sched-mmdrop-delayed.patch +From ed10eeda69cfac7525fd30348923e8bfe1cb5e97 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner -Date: Mon, 06 Jun 2011 12:20:33 +0200 +Date: Mon, 6 Jun 2011 12:20:33 +0200 +Subject: [126/254] sched-mmdrop-delayed.patch Needs thread context (pgd_lock) -> ifdeffed. workqueues wont work with RT @@ -13,10 +14,10 @@ Signed-off-by: Thomas Gleixner kernel/sched/core.c | 21 +++++++++++++++++++-- 4 files changed, 49 insertions(+), 3 deletions(-) -Index: linux-3.4/include/linux/mm_types.h -=================================================================== ---- linux-3.4.orig/include/linux/mm_types.h -+++ linux-3.4/include/linux/mm_types.h +diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h +index e70ea9b..8574996 100644 +--- a/include/linux/mm_types.h ++++ b/include/linux/mm_types.h @@ -12,6 +12,7 @@ #include #include @@ -35,11 +36,11 @@ Index: linux-3.4/include/linux/mm_types.h }; static inline void mm_init_cpumask(struct mm_struct *mm) -Index: linux-3.4/include/linux/sched.h -=================================================================== ---- linux-3.4.orig/include/linux/sched.h -+++ linux-3.4/include/linux/sched.h -@@ -2324,12 +2324,24 @@ extern struct mm_struct * mm_alloc(void) +diff --git a/include/linux/sched.h b/include/linux/sched.h +index 0fbffda..a198e77 100644 +--- a/include/linux/sched.h ++++ b/include/linux/sched.h +@@ -2324,12 +2324,24 @@ extern struct mm_struct * mm_alloc(void); /* mmdrop drops the mm and the page tables */ extern void __mmdrop(struct mm_struct *); @@ -64,11 +65,11 @@ Index: linux-3.4/include/linux/sched.h /* mmput gets rid of the mappings and all user-space */ extern void mmput(struct mm_struct *); /* Grab a reference to a task's mm, if it is not already going away */ -Index: linux-3.4/kernel/fork.c -=================================================================== ---- linux-3.4.orig/kernel/fork.c -+++ linux-3.4/kernel/fork.c -@@ -206,7 +206,7 @@ EXPORT_SYMBOL_GPL(__put_task_struct); +diff --git a/kernel/fork.c b/kernel/fork.c +index e13be8a..e6cf9db 100644 +--- a/kernel/fork.c ++++ b/kernel/fork.c +@@ -207,7 +207,7 @@ EXPORT_SYMBOL_GPL(__put_task_struct); #else void __put_task_struct_cb(struct rcu_head *rhp) { @@ -77,7 +78,7 @@ Index: linux-3.4/kernel/fork.c __put_task_struct(tsk); -@@ -572,6 +572,19 @@ void __mmdrop(struct mm_struct *mm) +@@ -574,6 +574,19 @@ void __mmdrop(struct mm_struct *mm) } EXPORT_SYMBOL_GPL(__mmdrop); @@ -97,11 +98,11 @@ Index: linux-3.4/kernel/fork.c /* * Decrement the use count and release all resources for an mm. */ -Index: linux-3.4/kernel/sched/core.c -=================================================================== ---- linux-3.4.orig/kernel/sched/core.c -+++ linux-3.4/kernel/sched/core.c -@@ -1934,8 +1934,12 @@ static void finish_task_switch(struct rq +diff --git a/kernel/sched/core.c b/kernel/sched/core.c +index 22a962b..9f07282 100644 +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -1934,8 +1934,12 @@ static void finish_task_switch(struct rq *rq, struct task_struct *prev) finish_arch_post_lock_switch(); fire_sched_in_preempt_notifiers(current); @@ -115,7 +116,7 @@ Index: linux-3.4/kernel/sched/core.c if (unlikely(prev_state == TASK_DEAD)) { /* * Remove function-return probe instances associated with this -@@ -5075,6 +5079,8 @@ static int migration_cpu_stop(void *data +@@ -5075,6 +5079,8 @@ static int migration_cpu_stop(void *data) #ifdef CONFIG_HOTPLUG_CPU @@ -138,7 +139,7 @@ Index: linux-3.4/kernel/sched/core.c } /* -@@ -5408,6 +5419,12 @@ migration_call(struct notifier_block *nf +@@ -5408,6 +5419,12 @@ migration_call(struct notifier_block *nfb, unsigned long action, void *hcpu) migrate_nr_uninterruptible(rq); calc_global_load_remove(rq); break; diff --git a/debian/patches/features/all/rt/sched-rt-mutex-wakeup.patch b/debian/patches/features/all/rt/0127-sched-rt-mutex-wakeup.patch.patch similarity index 79% rename from debian/patches/features/all/rt/sched-rt-mutex-wakeup.patch rename to debian/patches/features/all/rt/0127-sched-rt-mutex-wakeup.patch.patch index 86dc1fb77..bf1be4993 100644 --- a/debian/patches/features/all/rt/sched-rt-mutex-wakeup.patch +++ b/debian/patches/features/all/rt/0127-sched-rt-mutex-wakeup.patch.patch @@ -1,6 +1,7 @@ -Subject: sched-rt-mutex-wakeup.patch +From 7c444a9c30dd4d9f001431b91907d60c8b5be837 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sat, 25 Jun 2011 09:21:04 +0200 +Subject: [127/254] sched-rt-mutex-wakeup.patch Signed-off-by: Thomas Gleixner --- @@ -8,10 +9,10 @@ Signed-off-by: Thomas Gleixner kernel/sched/core.c | 31 ++++++++++++++++++++++++++++++- 2 files changed, 33 insertions(+), 1 deletion(-) -Index: linux-3.4/include/linux/sched.h -=================================================================== ---- linux-3.4.orig/include/linux/sched.h -+++ linux-3.4/include/linux/sched.h +diff --git a/include/linux/sched.h b/include/linux/sched.h +index a198e77..d177da5 100644 +--- a/include/linux/sched.h ++++ b/include/linux/sched.h @@ -1109,6 +1109,7 @@ struct sched_domain; #define WF_SYNC 0x01 /* waker goes to sleep after wakup */ #define WF_FORK 0x02 /* child wakeup after fork */ @@ -28,7 +29,7 @@ Index: linux-3.4/include/linux/sched.h void *stack; atomic_t usage; unsigned int flags; /* per process flags, defined below */ -@@ -2234,6 +2236,7 @@ extern void xtime_update(unsigned long t +@@ -2234,6 +2236,7 @@ extern void xtime_update(unsigned long ticks); extern int wake_up_state(struct task_struct *tsk, unsigned int state); extern int wake_up_process(struct task_struct *tsk); @@ -36,11 +37,11 @@ Index: linux-3.4/include/linux/sched.h extern void wake_up_new_task(struct task_struct *tsk); #ifdef CONFIG_SMP extern void kick_process(struct task_struct *tsk); -Index: linux-3.4/kernel/sched/core.c -=================================================================== ---- linux-3.4.orig/kernel/sched/core.c -+++ linux-3.4/kernel/sched/core.c -@@ -1586,8 +1586,25 @@ try_to_wake_up(struct task_struct *p, un +diff --git a/kernel/sched/core.c b/kernel/sched/core.c +index 9f07282..d775bd8 100644 +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -1586,8 +1586,25 @@ try_to_wake_up(struct task_struct *p, unsigned int state, int wake_flags) smp_wmb(); raw_spin_lock_irqsave(&p->pi_lock, flags); @@ -67,7 +68,7 @@ Index: linux-3.4/kernel/sched/core.c success = 1; /* we're going to change ->state */ cpu = task_cpu(p); -@@ -1659,6 +1676,18 @@ int wake_up_process(struct task_struct * +@@ -1659,6 +1676,18 @@ int wake_up_process(struct task_struct *p) } EXPORT_SYMBOL(wake_up_process); diff --git a/debian/patches/features/all/rt/sched-might-sleep-do-not-account-rcu-depth.patch b/debian/patches/features/all/rt/0128-sched-might-sleep-do-not-account-rcu-depth.patch.patch similarity index 64% rename from debian/patches/features/all/rt/sched-might-sleep-do-not-account-rcu-depth.patch rename to debian/patches/features/all/rt/0128-sched-might-sleep-do-not-account-rcu-depth.patch.patch index 1bf06b987..ccdf9290e 100644 --- a/debian/patches/features/all/rt/sched-might-sleep-do-not-account-rcu-depth.patch +++ b/debian/patches/features/all/rt/0128-sched-might-sleep-do-not-account-rcu-depth.patch.patch @@ -1,6 +1,7 @@ -Subject: sched-might-sleep-do-not-account-rcu-depth.patch +From 3dbe390e8dcbd8b218e423286858ecbf2a96b41a Mon Sep 17 00:00:00 2001 From: Thomas Gleixner -Date: Tue, 07 Jun 2011 09:19:06 +0200 +Date: Tue, 7 Jun 2011 09:19:06 +0200 +Subject: [128/254] sched-might-sleep-do-not-account-rcu-depth.patch Signed-off-by: Thomas Gleixner --- @@ -8,10 +9,10 @@ Signed-off-by: Thomas Gleixner kernel/sched/core.c | 3 ++- 2 files changed, 9 insertions(+), 1 deletion(-) -Index: linux-3.4/include/linux/rcupdate.h -=================================================================== ---- linux-3.4.orig/include/linux/rcupdate.h -+++ linux-3.4/include/linux/rcupdate.h +diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h +index 20fb776..23a500f 100644 +--- a/include/linux/rcupdate.h ++++ b/include/linux/rcupdate.h @@ -156,6 +156,11 @@ void synchronize_rcu(void); * types of kernel builds, the rcu_read_lock() nesting depth is unknowable. */ @@ -24,7 +25,7 @@ Index: linux-3.4/include/linux/rcupdate.h #else /* #ifdef CONFIG_PREEMPT_RCU */ -@@ -179,6 +184,8 @@ static inline int rcu_preempt_depth(void +@@ -179,6 +184,8 @@ static inline int rcu_preempt_depth(void) return 0; } @@ -33,11 +34,11 @@ Index: linux-3.4/include/linux/rcupdate.h #endif /* #else #ifdef CONFIG_PREEMPT_RCU */ /* Internal to kernel */ -Index: linux-3.4/kernel/sched/core.c -=================================================================== ---- linux-3.4.orig/kernel/sched/core.c -+++ linux-3.4/kernel/sched/core.c -@@ -7092,7 +7092,8 @@ void __init sched_init(void) +diff --git a/kernel/sched/core.c b/kernel/sched/core.c +index d775bd8..2fd05d5 100644 +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -7094,7 +7094,8 @@ void __init sched_init(void) #ifdef CONFIG_DEBUG_ATOMIC_SLEEP static inline int preempt_count_equals(int preempt_offset) { diff --git a/debian/patches/features/all/rt/sched-cond-resched.patch b/debian/patches/features/all/rt/0129-sched-cond-resched.patch.patch similarity index 69% rename from debian/patches/features/all/rt/sched-cond-resched.patch rename to debian/patches/features/all/rt/0129-sched-cond-resched.patch.patch index c95479f69..5fb9cf3b0 100644 --- a/debian/patches/features/all/rt/sched-cond-resched.patch +++ b/debian/patches/features/all/rt/0129-sched-cond-resched.patch.patch @@ -1,16 +1,17 @@ -Subject: sched-cond-resched.patch +From 5e5536d33de838ba1962c9c78f73a463d77b3aac Mon Sep 17 00:00:00 2001 From: Thomas Gleixner -Date: Tue, 07 Jun 2011 11:25:03 +0200 +Date: Tue, 7 Jun 2011 11:25:03 +0200 +Subject: [129/254] sched-cond-resched.patch Signed-off-by: Thomas Gleixner --- kernel/sched/core.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) -Index: linux-3.4/kernel/sched/core.c -=================================================================== ---- linux-3.4.orig/kernel/sched/core.c -+++ linux-3.4/kernel/sched/core.c +diff --git a/kernel/sched/core.c b/kernel/sched/core.c +index 2fd05d5..053b830 100644 +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c @@ -4554,9 +4554,17 @@ static inline int should_resched(void) static void __cond_resched(void) diff --git a/debian/patches/features/all/rt/cond-resched-softirq-rt.patch b/debian/patches/features/all/rt/0130-cond-resched-softirq-fix.patch.patch similarity index 68% rename from debian/patches/features/all/rt/cond-resched-softirq-rt.patch rename to debian/patches/features/all/rt/0130-cond-resched-softirq-fix.patch.patch index 2f89bbc27..cf3262499 100644 --- a/debian/patches/features/all/rt/cond-resched-softirq-rt.patch +++ b/debian/patches/features/all/rt/0130-cond-resched-softirq-fix.patch.patch @@ -1,6 +1,7 @@ -Subject: cond-resched-softirq-fix.patch +From 3a79efa5b8078b8594a5d64e02eae51f5761b048 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Thu, 14 Jul 2011 09:56:44 +0200 +Subject: [130/254] cond-resched-softirq-fix.patch Signed-off-by: Thomas Gleixner --- @@ -8,11 +9,11 @@ Signed-off-by: Thomas Gleixner kernel/sched/core.c | 2 ++ 2 files changed, 6 insertions(+) -Index: linux-3.4/include/linux/sched.h -=================================================================== ---- linux-3.4.orig/include/linux/sched.h -+++ linux-3.4/include/linux/sched.h -@@ -2700,12 +2700,16 @@ extern int __cond_resched_lock(spinlock_ +diff --git a/include/linux/sched.h b/include/linux/sched.h +index d177da5..b76e0c8 100644 +--- a/include/linux/sched.h ++++ b/include/linux/sched.h +@@ -2700,12 +2700,16 @@ extern int __cond_resched_lock(spinlock_t *lock); __cond_resched_lock(lock); \ }) @@ -29,11 +30,11 @@ Index: linux-3.4/include/linux/sched.h /* * Does a critical section need to be broken due to another -Index: linux-3.4/kernel/sched/core.c -=================================================================== ---- linux-3.4.orig/kernel/sched/core.c -+++ linux-3.4/kernel/sched/core.c -@@ -4605,6 +4605,7 @@ int __cond_resched_lock(spinlock_t *lock +diff --git a/kernel/sched/core.c b/kernel/sched/core.c +index 053b830..9bc29c2 100644 +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -4605,6 +4605,7 @@ int __cond_resched_lock(spinlock_t *lock) } EXPORT_SYMBOL(__cond_resched_lock); diff --git a/debian/patches/features/all/rt/cond-resched-lock-rt-tweak.patch b/debian/patches/features/all/rt/0131-cond-resched-lock-rt-tweak.patch.patch similarity index 65% rename from debian/patches/features/all/rt/cond-resched-lock-rt-tweak.patch rename to debian/patches/features/all/rt/0131-cond-resched-lock-rt-tweak.patch.patch index e387fdf93..406a15441 100644 --- a/debian/patches/features/all/rt/cond-resched-lock-rt-tweak.patch +++ b/debian/patches/features/all/rt/0131-cond-resched-lock-rt-tweak.patch.patch @@ -1,16 +1,17 @@ -Subject: cond-resched-lock-rt-tweak.patch +From bdac2cd08ebb63a3bca64b5085c120811056639d Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sun, 17 Jul 2011 22:51:33 +0200 +Subject: [131/254] cond-resched-lock-rt-tweak.patch Signed-off-by: Thomas Gleixner --- include/linux/sched.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-3.4/include/linux/sched.h -=================================================================== ---- linux-3.4.orig/include/linux/sched.h -+++ linux-3.4/include/linux/sched.h +diff --git a/include/linux/sched.h b/include/linux/sched.h +index b76e0c8..a6b9a6d 100644 +--- a/include/linux/sched.h ++++ b/include/linux/sched.h @@ -2689,7 +2689,7 @@ extern int _cond_resched(void); extern int __cond_resched_lock(spinlock_t *lock); diff --git a/debian/patches/features/all/rt/sched-disable-ttwu-queue.patch b/debian/patches/features/all/rt/0132-sched-disable-ttwu-queue.patch.patch similarity index 69% rename from debian/patches/features/all/rt/sched-disable-ttwu-queue.patch rename to debian/patches/features/all/rt/0132-sched-disable-ttwu-queue.patch.patch index df6356535..63d08518d 100644 --- a/debian/patches/features/all/rt/sched-disable-ttwu-queue.patch +++ b/debian/patches/features/all/rt/0132-sched-disable-ttwu-queue.patch.patch @@ -1,16 +1,17 @@ -Subject: sched-disable-ttwu-queue.patch +From 5043bd3e903362e19898b30b94ce45b558ae686d Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Tue, 13 Sep 2011 16:42:35 +0200 +Subject: [132/254] sched-disable-ttwu-queue.patch Signed-off-by: Thomas Gleixner --- kernel/sched/features.h | 4 ++++ 1 file changed, 4 insertions(+) -Index: linux-3.4/kernel/sched/features.h -=================================================================== ---- linux-3.4.orig/kernel/sched/features.h -+++ linux-3.4/kernel/sched/features.h +diff --git a/kernel/sched/features.h b/kernel/sched/features.h +index de00a48..27afd1e 100644 +--- a/kernel/sched/features.h ++++ b/kernel/sched/features.h @@ -60,11 +60,15 @@ SCHED_FEAT(OWNER_SPIN, true) */ SCHED_FEAT(NONTASK_POWER, true) diff --git a/debian/patches/features/all/rt/sched-disable-rt-group-sched-on-rt.patch b/debian/patches/features/all/rt/0133-sched-Disable-CONFIG_RT_GROUP_SCHED-on-RT.patch similarity index 76% rename from debian/patches/features/all/rt/sched-disable-rt-group-sched-on-rt.patch rename to debian/patches/features/all/rt/0133-sched-Disable-CONFIG_RT_GROUP_SCHED-on-RT.patch index e6e3b9331..2f36e6cb2 100644 --- a/debian/patches/features/all/rt/sched-disable-rt-group-sched-on-rt.patch +++ b/debian/patches/features/all/rt/0133-sched-Disable-CONFIG_RT_GROUP_SCHED-on-RT.patch @@ -1,6 +1,7 @@ -Subject: sched: Disable CONFIG_RT_GROUP_SCHED on RT +From 93edb9d25d9535a648d70911cd13aa0f9ac1bd87 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Mon, 18 Jul 2011 17:03:52 +0200 +Subject: [133/254] sched: Disable CONFIG_RT_GROUP_SCHED on RT Carsten reported problems when running: @@ -16,10 +17,10 @@ Signed-off-by: Thomas Gleixner init/Kconfig | 1 + 1 file changed, 1 insertion(+) -Index: linux-3.4/init/Kconfig -=================================================================== ---- linux-3.4.orig/init/Kconfig -+++ linux-3.4/init/Kconfig +diff --git a/init/Kconfig b/init/Kconfig +index 7c0b369..c06208b 100644 +--- a/init/Kconfig ++++ b/init/Kconfig @@ -746,6 +746,7 @@ config RT_GROUP_SCHED bool "Group scheduling for SCHED_RR/FIFO" depends on EXPERIMENTAL diff --git a/debian/patches/features/all/rt/sched-ttwu-ensure-success-return-is-correct.patch b/debian/patches/features/all/rt/0134-sched-ttwu-Return-success-when-only-changing-the-sav.patch similarity index 70% rename from debian/patches/features/all/rt/sched-ttwu-ensure-success-return-is-correct.patch rename to debian/patches/features/all/rt/0134-sched-ttwu-Return-success-when-only-changing-the-sav.patch index 9aeffde85..51b4222a5 100644 --- a/debian/patches/features/all/rt/sched-ttwu-ensure-success-return-is-correct.patch +++ b/debian/patches/features/all/rt/0134-sched-ttwu-Return-success-when-only-changing-the-sav.patch @@ -1,6 +1,8 @@ -Subject: sched: ttwu: Return success when only changing the saved_state value +From 4bb6f4ea50ecfaed76049e40f81705df47369085 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Tue, 13 Dec 2011 21:42:19 +0100 +Subject: [134/254] sched: ttwu: Return success when only changing the + saved_state value When a task blocks on a rt lock, it saves the current state in p->saved_state, so a lock related wake up will not destroy the @@ -18,11 +20,11 @@ Cc: stable-rt@vger.kernel.org kernel/sched/core.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) -Index: linux-3.4/kernel/sched/core.c -=================================================================== ---- linux-3.4.orig/kernel/sched/core.c -+++ linux-3.4/kernel/sched/core.c -@@ -1593,8 +1593,10 @@ try_to_wake_up(struct task_struct *p, un +diff --git a/kernel/sched/core.c b/kernel/sched/core.c +index 9bc29c2..ea45f8b 100644 +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -1593,8 +1593,10 @@ try_to_wake_up(struct task_struct *p, unsigned int state, int wake_flags) * if the wakeup condition is true. */ if (!(wake_flags & WF_LOCK_SLEEPER)) { diff --git a/debian/patches/features/all/rt/stop_machine-convert-stop_machine_run-to-PREEMPT_RT.patch b/debian/patches/features/all/rt/0135-stop_machine-convert-stop_machine_run-to-PREEMPT_RT.patch similarity index 76% rename from debian/patches/features/all/rt/stop_machine-convert-stop_machine_run-to-PREEMPT_RT.patch rename to debian/patches/features/all/rt/0135-stop_machine-convert-stop_machine_run-to-PREEMPT_RT.patch index 0159c7f99..63e872491 100644 --- a/debian/patches/features/all/rt/stop_machine-convert-stop_machine_run-to-PREEMPT_RT.patch +++ b/debian/patches/features/all/rt/0135-stop_machine-convert-stop_machine_run-to-PREEMPT_RT.patch @@ -1,6 +1,7 @@ +From 054c4ec6d2b8ab7f3465541e8405db208e3056e0 Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Fri, 3 Jul 2009 08:30:27 -0500 -Subject: stop_machine: convert stop_machine_run() to PREEMPT_RT +Subject: [135/254] stop_machine: convert stop_machine_run() to PREEMPT_RT Instead of playing with non-preemption, introduce explicit startup serialization. This is more robust and cleaner as @@ -8,16 +9,15 @@ well. Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner - --- kernel/stop_machine.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) -Index: linux-3.4/kernel/stop_machine.c -=================================================================== ---- linux-3.4.orig/kernel/stop_machine.c -+++ linux-3.4/kernel/stop_machine.c -@@ -135,6 +135,7 @@ void stop_one_cpu_nowait(unsigned int cp +diff --git a/kernel/stop_machine.c b/kernel/stop_machine.c +index 2f194e9..61779f8 100644 +--- a/kernel/stop_machine.c ++++ b/kernel/stop_machine.c +@@ -135,6 +135,7 @@ void stop_one_cpu_nowait(unsigned int cpu, cpu_stop_fn_t fn, void *arg, /* static data for stop_cpus */ static DEFINE_MUTEX(stop_cpus_mutex); @@ -25,7 +25,7 @@ Index: linux-3.4/kernel/stop_machine.c static DEFINE_PER_CPU(struct cpu_stop_work, stop_cpus_work); static void queue_stop_cpus_work(const struct cpumask *cpumask, -@@ -153,15 +154,14 @@ static void queue_stop_cpus_work(const s +@@ -153,15 +154,14 @@ static void queue_stop_cpus_work(const struct cpumask *cpumask, } /* diff --git a/debian/patches/features/all/rt/stomp-machine-mark-stomper-thread.patch b/debian/patches/features/all/rt/0136-stomp-machine-mark-stomper-thread.patch.patch similarity index 58% rename from debian/patches/features/all/rt/stomp-machine-mark-stomper-thread.patch rename to debian/patches/features/all/rt/0136-stomp-machine-mark-stomper-thread.patch.patch index 8445ba1c0..bee9efe16 100644 --- a/debian/patches/features/all/rt/stomp-machine-mark-stomper-thread.patch +++ b/debian/patches/features/all/rt/0136-stomp-machine-mark-stomper-thread.patch.patch @@ -1,6 +1,7 @@ -Subject: stomp-machine-mark-stomper-thread.patch +From 263e5d0ddf6e966b311457febd5554e44f4f073e Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sun, 17 Jul 2011 19:53:19 +0200 +Subject: [136/254] stomp-machine-mark-stomper-thread.patch Signed-off-by: Thomas Gleixner --- @@ -8,11 +9,11 @@ Signed-off-by: Thomas Gleixner kernel/stop_machine.c | 1 + 2 files changed, 2 insertions(+) -Index: linux-3.4/include/linux/sched.h -=================================================================== ---- linux-3.4.orig/include/linux/sched.h -+++ linux-3.4/include/linux/sched.h -@@ -1864,6 +1864,7 @@ extern void thread_group_times(struct ta +diff --git a/include/linux/sched.h b/include/linux/sched.h +index a6b9a6d..cdfc16e 100644 +--- a/include/linux/sched.h ++++ b/include/linux/sched.h +@@ -1864,6 +1864,7 @@ extern void thread_group_times(struct task_struct *p, cputime_t *ut, cputime_t * #define PF_FROZEN 0x00010000 /* frozen for system suspend */ #define PF_FSTRANS 0x00020000 /* inside a filesystem transaction */ #define PF_KSWAPD 0x00040000 /* I am kswapd */ @@ -20,11 +21,11 @@ Index: linux-3.4/include/linux/sched.h #define PF_LESS_THROTTLE 0x00100000 /* Throttle me less: I clean memory */ #define PF_KTHREAD 0x00200000 /* I am a kernel thread */ #define PF_RANDOMIZE 0x00400000 /* randomize virtual address space */ -Index: linux-3.4/kernel/stop_machine.c -=================================================================== ---- linux-3.4.orig/kernel/stop_machine.c -+++ linux-3.4/kernel/stop_machine.c -@@ -327,6 +327,7 @@ static int __cpuinit cpu_stop_cpu_callba +diff --git a/kernel/stop_machine.c b/kernel/stop_machine.c +index 61779f8..484a335 100644 +--- a/kernel/stop_machine.c ++++ b/kernel/stop_machine.c +@@ -327,6 +327,7 @@ static int __cpuinit cpu_stop_cpu_callback(struct notifier_block *nfb, if (IS_ERR(p)) return notifier_from_errno(PTR_ERR(p)); get_task_struct(p); diff --git a/debian/patches/features/all/rt/stomp-machine-raw-lock.patch b/debian/patches/features/all/rt/0137-stomp-machine-raw-lock.patch.patch similarity index 80% rename from debian/patches/features/all/rt/stomp-machine-raw-lock.patch rename to debian/patches/features/all/rt/0137-stomp-machine-raw-lock.patch.patch index bf9424d1e..3d16055fc 100644 --- a/debian/patches/features/all/rt/stomp-machine-raw-lock.patch +++ b/debian/patches/features/all/rt/0137-stomp-machine-raw-lock.patch.patch @@ -1,16 +1,17 @@ -Subject: stomp-machine-raw-lock.patch +From 3bd668359c428bc5daa0a7c428c1ea6c62e0a58b Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 29 Jun 2011 11:01:51 +0200 +Subject: [137/254] stomp-machine-raw-lock.patch Signed-off-by: Thomas Gleixner --- - kernel/stop_machine.c | 58 +++++++++++++++++++++++++++++++++++--------------- + kernel/stop_machine.c | 58 ++++++++++++++++++++++++++++++++++--------------- 1 file changed, 41 insertions(+), 17 deletions(-) -Index: linux-3.4/kernel/stop_machine.c -=================================================================== ---- linux-3.4.orig/kernel/stop_machine.c -+++ linux-3.4/kernel/stop_machine.c +diff --git a/kernel/stop_machine.c b/kernel/stop_machine.c +index 484a335..561ba3a 100644 +--- a/kernel/stop_machine.c ++++ b/kernel/stop_machine.c @@ -29,12 +29,12 @@ struct cpu_stop_done { atomic_t nr_todo; /* nr left to execute */ bool executed; /* actually executed? */ @@ -26,7 +27,7 @@ Index: linux-3.4/kernel/stop_machine.c bool enabled; /* is this stopper enabled? */ struct list_head works; /* list of pending works */ struct task_struct *thread; /* stopper thread */ -@@ -47,7 +47,7 @@ static void cpu_stop_init_done(struct cp +@@ -47,7 +47,7 @@ static void cpu_stop_init_done(struct cpu_stop_done *done, unsigned int nr_todo) { memset(done, 0, sizeof(*done)); atomic_set(&done->nr_todo, nr_todo); @@ -35,7 +36,7 @@ Index: linux-3.4/kernel/stop_machine.c } /* signal completion unless @done is NULL */ -@@ -56,8 +56,10 @@ static void cpu_stop_signal_done(struct +@@ -56,8 +56,10 @@ static void cpu_stop_signal_done(struct cpu_stop_done *done, bool executed) if (done) { if (executed) done->executed = true; @@ -48,7 +49,7 @@ Index: linux-3.4/kernel/stop_machine.c } } -@@ -67,7 +69,7 @@ static void cpu_stop_queue_work(struct c +@@ -67,7 +69,7 @@ static void cpu_stop_queue_work(struct cpu_stopper *stopper, { unsigned long flags; @@ -57,7 +58,7 @@ Index: linux-3.4/kernel/stop_machine.c if (stopper->enabled) { list_add_tail(&work->list, &stopper->works); -@@ -75,7 +77,23 @@ static void cpu_stop_queue_work(struct c +@@ -75,7 +77,23 @@ static void cpu_stop_queue_work(struct cpu_stopper *stopper, } else cpu_stop_signal_done(work->done, false); @@ -82,7 +83,7 @@ Index: linux-3.4/kernel/stop_machine.c } /** -@@ -109,7 +127,7 @@ int stop_one_cpu(unsigned int cpu, cpu_s +@@ -109,7 +127,7 @@ int stop_one_cpu(unsigned int cpu, cpu_stop_fn_t fn, void *arg) cpu_stop_init_done(&done, 1); cpu_stop_queue_work(&per_cpu(cpu_stopper, cpu), &work); @@ -91,7 +92,7 @@ Index: linux-3.4/kernel/stop_machine.c return done.executed ? done.ret : -ENOENT; } -@@ -171,7 +189,7 @@ static int __stop_cpus(const struct cpum +@@ -171,7 +189,7 @@ static int __stop_cpus(const struct cpumask *cpumask, cpu_stop_init_done(&done, cpumask_weight(cpumask)); queue_stop_cpus_work(cpumask, fn, arg, &done); @@ -130,7 +131,7 @@ Index: linux-3.4/kernel/stop_machine.c } else schedule(); -@@ -337,9 +361,9 @@ static int __cpuinit cpu_stop_cpu_callba +@@ -337,9 +361,9 @@ static int __cpuinit cpu_stop_cpu_callback(struct notifier_block *nfb, /* strictly unnecessary, as first user will wake it */ wake_up_process(stopper->thread); /* mark enabled */ @@ -142,7 +143,7 @@ Index: linux-3.4/kernel/stop_machine.c break; #ifdef CONFIG_HOTPLUG_CPU -@@ -352,11 +376,11 @@ static int __cpuinit cpu_stop_cpu_callba +@@ -352,11 +376,11 @@ static int __cpuinit cpu_stop_cpu_callback(struct notifier_block *nfb, /* kill the stopper */ kthread_stop(stopper->thread); /* drain remaining works */ @@ -165,7 +166,7 @@ Index: linux-3.4/kernel/stop_machine.c INIT_LIST_HEAD(&stopper->works); } -@@ -581,7 +605,7 @@ int stop_machine_from_inactive_cpu(int ( +@@ -581,7 +605,7 @@ int stop_machine_from_inactive_cpu(int (*fn)(void *), void *data, ret = stop_machine_cpu_stop(&smdata); /* Busy wait for completion. */ diff --git a/debian/patches/features/all/rt/hotplug-light-get-online-cpus.patch b/debian/patches/features/all/rt/0138-hotplug-Lightweight-get-online-cpus.patch similarity index 87% rename from debian/patches/features/all/rt/hotplug-light-get-online-cpus.patch rename to debian/patches/features/all/rt/0138-hotplug-Lightweight-get-online-cpus.patch index 1ea75afd7..35c688a5c 100644 --- a/debian/patches/features/all/rt/hotplug-light-get-online-cpus.patch +++ b/debian/patches/features/all/rt/0138-hotplug-Lightweight-get-online-cpus.patch @@ -1,6 +1,7 @@ -Subject: hotplug: Lightweight get online cpus +From f079fedbfbd2c15beeca29baaf2de7bd1f04ae0f Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 15 Jun 2011 12:36:06 +0200 +Subject: [138/254] hotplug: Lightweight get online cpus get_online_cpus() is a heavy weight function which involves a global mutex. migrate_disable() wants a simpler construct which prevents only @@ -12,14 +13,14 @@ tasks on the cpu which should be brought down. Signed-off-by: Thomas Gleixner --- - include/linux/cpu.h | 4 + - kernel/cpu.c | 127 ++++++++++++++++++++++++++++++++++++++++++++++++++-- + include/linux/cpu.h | 4 ++ + kernel/cpu.c | 127 +++++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 128 insertions(+), 3 deletions(-) -Index: linux-3.4/include/linux/cpu.h -=================================================================== ---- linux-3.4.orig/include/linux/cpu.h -+++ linux-3.4/include/linux/cpu.h +diff --git a/include/linux/cpu.h b/include/linux/cpu.h +index ee28844..00d2f6f8 100644 +--- a/include/linux/cpu.h ++++ b/include/linux/cpu.h @@ -176,6 +176,8 @@ extern struct bus_type cpu_subsys; extern void get_online_cpus(void); @@ -29,7 +30,7 @@ Index: linux-3.4/include/linux/cpu.h #define hotcpu_notifier(fn, pri) cpu_notifier(fn, pri) #define register_hotcpu_notifier(nb) register_cpu_notifier(nb) #define unregister_hotcpu_notifier(nb) unregister_cpu_notifier(nb) -@@ -198,6 +200,8 @@ static inline void cpu_hotplug_driver_un +@@ -198,6 +200,8 @@ static inline void cpu_hotplug_driver_unlock(void) #define get_online_cpus() do { } while (0) #define put_online_cpus() do { } while (0) @@ -38,10 +39,10 @@ Index: linux-3.4/include/linux/cpu.h #define hotcpu_notifier(fn, pri) do { (void)(fn); } while (0) /* These aren't inline functions due to a GCC bug. */ #define register_hotcpu_notifier(nb) ({ (void)(nb); 0; }) -Index: linux-3.4/kernel/cpu.c -=================================================================== ---- linux-3.4.orig/kernel/cpu.c -+++ linux-3.4/kernel/cpu.c +diff --git a/kernel/cpu.c b/kernel/cpu.c +index 2060c6e..8aaa210 100644 +--- a/kernel/cpu.c ++++ b/kernel/cpu.c @@ -58,6 +58,102 @@ static struct { .refcount = 0, }; @@ -145,7 +146,7 @@ Index: linux-3.4/kernel/cpu.c void get_online_cpus(void) { might_sleep(); -@@ -210,13 +306,14 @@ static int __ref take_cpu_down(void *_pa +@@ -210,13 +306,14 @@ static int __ref take_cpu_down(void *_param) /* Requires cpu_add_remove_lock to be held */ static int __ref _cpu_down(unsigned int cpu, int tasks_frozen) { @@ -161,7 +162,7 @@ Index: linux-3.4/kernel/cpu.c if (num_online_cpus() == 1) return -EBUSY; -@@ -224,7 +321,20 @@ static int __ref _cpu_down(unsigned int +@@ -224,7 +321,20 @@ static int __ref _cpu_down(unsigned int cpu, int tasks_frozen) if (!cpu_online(cpu)) return -EINVAL; @@ -183,7 +184,7 @@ Index: linux-3.4/kernel/cpu.c err = __cpu_notify(CPU_DOWN_PREPARE | mod, hcpu, -1, &nr_calls); if (err) { -@@ -232,7 +342,16 @@ static int __ref _cpu_down(unsigned int +@@ -232,7 +342,16 @@ static int __ref _cpu_down(unsigned int cpu, int tasks_frozen) __cpu_notify(CPU_DOWN_FAILED | mod, hcpu, nr_calls, NULL); printk("%s: attempt to take down CPU %u failed\n", __func__, cpu); @@ -201,7 +202,7 @@ Index: linux-3.4/kernel/cpu.c } err = __stop_machine(take_cpu_down, &tcd_param, cpumask_of(cpu)); -@@ -263,6 +382,8 @@ static int __ref _cpu_down(unsigned int +@@ -263,6 +382,8 @@ static int __ref _cpu_down(unsigned int cpu, int tasks_frozen) check_for_tasks(cpu); out_release: diff --git a/debian/patches/features/all/rt/hotplug-sync_unplug-no-27-5cn-27-in-task-name.patch b/debian/patches/features/all/rt/0139-hotplug-sync_unplug-No.patch similarity index 68% rename from debian/patches/features/all/rt/hotplug-sync_unplug-no-27-5cn-27-in-task-name.patch rename to debian/patches/features/all/rt/0139-hotplug-sync_unplug-No.patch index 9094f6086..855629e2a 100644 --- a/debian/patches/features/all/rt/hotplug-sync_unplug-no-27-5cn-27-in-task-name.patch +++ b/debian/patches/features/all/rt/0139-hotplug-sync_unplug-No.patch @@ -1,6 +1,7 @@ -Subject: hotplug: sync_unplug: No "\n" in task name +From 036db7c3f65e2199b657dbb1552cf1c6e9e7d471 Mon Sep 17 00:00:00 2001 From: Yong Zhang Date: Sun, 16 Oct 2011 18:56:43 +0800 +Subject: [139/254] hotplug: sync_unplug: No " " in task name Otherwise the output will look a little odd. @@ -11,11 +12,11 @@ Signed-off-by: Thomas Gleixner kernel/cpu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-3.4/kernel/cpu.c -=================================================================== ---- linux-3.4.orig/kernel/cpu.c -+++ linux-3.4/kernel/cpu.c -@@ -138,7 +138,7 @@ static int cpu_unplug_begin(unsigned int +diff --git a/kernel/cpu.c b/kernel/cpu.c +index 8aaa210..da4ed4f 100644 +--- a/kernel/cpu.c ++++ b/kernel/cpu.c +@@ -138,7 +138,7 @@ static int cpu_unplug_begin(unsigned int cpu) struct task_struct *tsk; init_completion(&hp->synced); diff --git a/debian/patches/features/all/rt/re-migrate_disable-race-with-cpu-hotplug-3f.patch b/debian/patches/features/all/rt/0140-hotplug-Reread-hotplug_pcp-on-pin_current_cpu-retry.patch similarity index 73% rename from debian/patches/features/all/rt/re-migrate_disable-race-with-cpu-hotplug-3f.patch rename to debian/patches/features/all/rt/0140-hotplug-Reread-hotplug_pcp-on-pin_current_cpu-retry.patch index b0686751e..7886e645d 100644 --- a/debian/patches/features/all/rt/re-migrate_disable-race-with-cpu-hotplug-3f.patch +++ b/debian/patches/features/all/rt/0140-hotplug-Reread-hotplug_pcp-on-pin_current_cpu-retry.patch @@ -1,6 +1,7 @@ +From 569ad607808f91c8564266de2b9aa3b9d3abad8c Mon Sep 17 00:00:00 2001 From: Yong Zhang Date: Thu, 28 Jul 2011 11:16:00 +0800 -Subject: hotplug: Reread hotplug_pcp on pin_current_cpu() retry +Subject: [140/254] hotplug: Reread hotplug_pcp on pin_current_cpu() retry When retry happens, it's likely that the task has been migrated to another cpu (except unplug failed), but it still derefernces the @@ -17,11 +18,11 @@ Signed-off-by: Thomas Gleixner kernel/cpu.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) -Index: linux-3.4/kernel/cpu.c -=================================================================== ---- linux-3.4.orig/kernel/cpu.c -+++ linux-3.4/kernel/cpu.c -@@ -76,9 +76,11 @@ static DEFINE_PER_CPU(struct hotplug_pcp +diff --git a/kernel/cpu.c b/kernel/cpu.c +index da4ed4f..1e80dff 100644 +--- a/kernel/cpu.c ++++ b/kernel/cpu.c +@@ -76,9 +76,11 @@ static DEFINE_PER_CPU(struct hotplug_pcp, hotplug_pcp); */ void pin_current_cpu(void) { diff --git a/debian/patches/features/all/rt/sched-migrate-disable.patch b/debian/patches/features/all/rt/0141-sched-migrate-disable.patch.patch similarity index 78% rename from debian/patches/features/all/rt/sched-migrate-disable.patch rename to debian/patches/features/all/rt/0141-sched-migrate-disable.patch.patch index 421e3d861..15581c871 100644 --- a/debian/patches/features/all/rt/sched-migrate-disable.patch +++ b/debian/patches/features/all/rt/0141-sched-migrate-disable.patch.patch @@ -1,20 +1,21 @@ -Subject: sched-migrate-disable.patch +From 1aa198e21260f443ea1de77568b4f124ddadb188 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Thu, 16 Jun 2011 13:26:08 +0200 +Subject: [141/254] sched-migrate-disable.patch Signed-off-by: Thomas Gleixner --- - include/linux/preempt.h | 8 ++++ + include/linux/preempt.h | 8 +++++ include/linux/sched.h | 13 +++++-- - include/linux/smp.h | 1 - kernel/sched/core.c | 88 +++++++++++++++++++++++++++++++++++++++++++++--- - lib/smp_processor_id.c | 6 +-- + include/linux/smp.h | 1 - + kernel/sched/core.c | 88 ++++++++++++++++++++++++++++++++++++++++++++--- + lib/smp_processor_id.c | 6 ++-- 5 files changed, 104 insertions(+), 12 deletions(-) -Index: linux-3.4/include/linux/preempt.h -=================================================================== ---- linux-3.4.orig/include/linux/preempt.h -+++ linux-3.4/include/linux/preempt.h +diff --git a/include/linux/preempt.h b/include/linux/preempt.h +index 5b46536..c5d2a36 100644 +--- a/include/linux/preempt.h ++++ b/include/linux/preempt.h @@ -108,6 +108,14 @@ do { \ #endif /* CONFIG_PREEMPT_COUNT */ @@ -30,10 +31,10 @@ Index: linux-3.4/include/linux/preempt.h #ifdef CONFIG_PREEMPT_RT_FULL # define preempt_disable_rt() preempt_disable() # define preempt_enable_rt() preempt_enable() -Index: linux-3.4/include/linux/sched.h -=================================================================== ---- linux-3.4.orig/include/linux/sched.h -+++ linux-3.4/include/linux/sched.h +diff --git a/include/linux/sched.h b/include/linux/sched.h +index cdfc16e..c5f690a 100644 +--- a/include/linux/sched.h ++++ b/include/linux/sched.h @@ -1302,6 +1302,7 @@ struct task_struct { #endif @@ -52,7 +53,7 @@ Index: linux-3.4/include/linux/sched.h #ifdef CONFIG_PREEMPT_RT_FULL static inline bool cur_pf_disabled(void) { return current->pagefault_disabled; } #else -@@ -2773,6 +2771,15 @@ static inline void set_task_cpu(struct t +@@ -2773,6 +2771,15 @@ static inline void set_task_cpu(struct task_struct *p, unsigned int cpu) #endif /* CONFIG_SMP */ @@ -68,11 +69,11 @@ Index: linux-3.4/include/linux/sched.h extern long sched_setaffinity(pid_t pid, const struct cpumask *new_mask); extern long sched_getaffinity(pid_t pid, struct cpumask *mask); -Index: linux-3.4/include/linux/smp.h -=================================================================== ---- linux-3.4.orig/include/linux/smp.h -+++ linux-3.4/include/linux/smp.h -@@ -80,7 +80,6 @@ void __smp_call_function_single(int cpui +diff --git a/include/linux/smp.h b/include/linux/smp.h +index 04e7ed9..980c525 100644 +--- a/include/linux/smp.h ++++ b/include/linux/smp.h +@@ -80,7 +80,6 @@ void __smp_call_function_single(int cpuid, struct call_single_data *data, int smp_call_function_any(const struct cpumask *mask, smp_call_func_t func, void *info, int wait); @@ -80,11 +81,11 @@ Index: linux-3.4/include/linux/smp.h /* * Generic and arch helpers */ -Index: linux-3.4/kernel/sched/core.c -=================================================================== ---- linux-3.4.orig/kernel/sched/core.c -+++ linux-3.4/kernel/sched/core.c -@@ -4976,11 +4976,12 @@ void __cpuinit init_idle(struct task_str +diff --git a/kernel/sched/core.c b/kernel/sched/core.c +index ea45f8b..8109af2 100644 +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -4976,11 +4976,12 @@ void __cpuinit init_idle(struct task_struct *idle, int cpu) #ifdef CONFIG_SMP void do_set_cpus_allowed(struct task_struct *p, const struct cpumask *new_mask) { @@ -101,7 +102,7 @@ Index: linux-3.4/kernel/sched/core.c } /* -@@ -5031,7 +5032,7 @@ int set_cpus_allowed_ptr(struct task_str +@@ -5031,7 +5032,7 @@ int set_cpus_allowed_ptr(struct task_struct *p, const struct cpumask *new_mask) do_set_cpus_allowed(p, new_mask); /* Can the task run on the task's current CPU? If so, we're done */ @@ -194,11 +195,11 @@ Index: linux-3.4/kernel/sched/core.c /* * Move (not current) task off this cpu, onto dest cpu. We're doing * this because either it can't run here any more (set_cpus_allowed() -Index: linux-3.4/lib/smp_processor_id.c -=================================================================== ---- linux-3.4.orig/lib/smp_processor_id.c -+++ linux-3.4/lib/smp_processor_id.c -@@ -39,9 +39,9 @@ notrace unsigned int debug_smp_processor +diff --git a/lib/smp_processor_id.c b/lib/smp_processor_id.c +index 4c0d0e5..0a846e7 100644 +--- a/lib/smp_processor_id.c ++++ b/lib/smp_processor_id.c +@@ -39,9 +39,9 @@ notrace unsigned int debug_smp_processor_id(void) if (!printk_ratelimit()) goto out_enable; diff --git a/debian/patches/features/all/rt/hotplug-use-migrate-disable.patch b/debian/patches/features/all/rt/0142-hotplug-use-migrate-disable.patch.patch similarity index 66% rename from debian/patches/features/all/rt/hotplug-use-migrate-disable.patch rename to debian/patches/features/all/rt/0142-hotplug-use-migrate-disable.patch.patch index d818ae113..a8de4e571 100644 --- a/debian/patches/features/all/rt/hotplug-use-migrate-disable.patch +++ b/debian/patches/features/all/rt/0142-hotplug-use-migrate-disable.patch.patch @@ -1,17 +1,18 @@ -Subject: hotplug-use-migrate-disable.patch +From 3f1b7dc5d942297a7c0f25a635ea7d702cd5123a Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sun, 17 Jul 2011 19:35:29 +0200 +Subject: [142/254] hotplug-use-migrate-disable.patch Signed-off-by: Thomas Gleixner --- kernel/cpu.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) -Index: linux-3.4/kernel/cpu.c -=================================================================== ---- linux-3.4.orig/kernel/cpu.c -+++ linux-3.4/kernel/cpu.c -@@ -329,14 +329,13 @@ static int __ref _cpu_down(unsigned int +diff --git a/kernel/cpu.c b/kernel/cpu.c +index 1e80dff..c8aee90 100644 +--- a/kernel/cpu.c ++++ b/kernel/cpu.c +@@ -329,14 +329,13 @@ static int __ref _cpu_down(unsigned int cpu, int tasks_frozen) cpumask_andnot(cpumask, cpu_online_mask, cpumask_of(cpu)); set_cpus_allowed_ptr(current, cpumask); free_cpumask_var(cpumask); @@ -28,7 +29,7 @@ Index: linux-3.4/kernel/cpu.c err = __cpu_notify(CPU_DOWN_PREPARE | mod, hcpu, -1, &nr_calls); if (err) { -@@ -386,6 +385,7 @@ static int __ref _cpu_down(unsigned int +@@ -386,6 +385,7 @@ static int __ref _cpu_down(unsigned int cpu, int tasks_frozen) out_release: cpu_unplug_done(cpu); out_cancel: diff --git a/debian/patches/features/all/rt/hotplug-call-cpu_unplug_begin-a-little-early.patch b/debian/patches/features/all/rt/0143-hotplug-Call-cpu_unplug_begin-before-DOWN_PREPARE.patch similarity index 85% rename from debian/patches/features/all/rt/hotplug-call-cpu_unplug_begin-a-little-early.patch rename to debian/patches/features/all/rt/0143-hotplug-Call-cpu_unplug_begin-before-DOWN_PREPARE.patch index 15ae737e2..ed93286ce 100644 --- a/debian/patches/features/all/rt/hotplug-call-cpu_unplug_begin-a-little-early.patch +++ b/debian/patches/features/all/rt/0143-hotplug-Call-cpu_unplug_begin-before-DOWN_PREPARE.patch @@ -1,6 +1,7 @@ -Subject: hotplug: Call cpu_unplug_begin() before DOWN_PREPARE +From ae4c2be9bcf4548166d1a62996df5276041ae923 Mon Sep 17 00:00:00 2001 From: Yong Zhang Date: Sun, 16 Oct 2011 18:56:44 +0800 +Subject: [143/254] hotplug: Call cpu_unplug_begin() before DOWN_PREPARE cpu_unplug_begin() should be called before CPU_DOWN_PREPARE, because at CPU_DOWN_PREPARE cpu_active is cleared and sched_domain is @@ -25,11 +26,11 @@ Signed-off-by: Thomas Gleixner kernel/cpu.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) -Index: linux-3.4/kernel/cpu.c -=================================================================== ---- linux-3.4.orig/kernel/cpu.c -+++ linux-3.4/kernel/cpu.c -@@ -337,22 +337,20 @@ static int __ref _cpu_down(unsigned int +diff --git a/kernel/cpu.c b/kernel/cpu.c +index c8aee90..37b2212 100644 +--- a/kernel/cpu.c ++++ b/kernel/cpu.c +@@ -337,22 +337,20 @@ static int __ref _cpu_down(unsigned int cpu, int tasks_frozen) return -EBUSY; } diff --git a/debian/patches/features/all/rt/ftrace-migrate-disable-tracing.patch b/debian/patches/features/all/rt/0144-ftrace-migrate-disable-tracing.patch.patch similarity index 64% rename from debian/patches/features/all/rt/ftrace-migrate-disable-tracing.patch rename to debian/patches/features/all/rt/0144-ftrace-migrate-disable-tracing.patch.patch index e740ea3c3..5e6b67afa 100644 --- a/debian/patches/features/all/rt/ftrace-migrate-disable-tracing.patch +++ b/debian/patches/features/all/rt/0144-ftrace-migrate-disable-tracing.patch.patch @@ -1,6 +1,7 @@ -Subject: ftrace-migrate-disable-tracing.patch +From 9a16b0271e87711fde615d98db38b97c1cda2c53 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sun, 17 Jul 2011 21:56:42 +0200 +Subject: [144/254] ftrace-migrate-disable-tracing.patch Signed-off-by: Thomas Gleixner --- @@ -10,10 +11,10 @@ Signed-off-by: Thomas Gleixner kernel/trace/trace_output.c | 5 +++++ 4 files changed, 14 insertions(+), 4 deletions(-) -Index: linux-3.4/include/linux/ftrace_event.h -=================================================================== ---- linux-3.4.orig/include/linux/ftrace_event.h -+++ linux-3.4/include/linux/ftrace_event.h +diff --git a/include/linux/ftrace_event.h b/include/linux/ftrace_event.h +index 176a939..14cac32 100644 +--- a/include/linux/ftrace_event.h ++++ b/include/linux/ftrace_event.h @@ -49,7 +49,8 @@ struct trace_entry { unsigned char flags; unsigned char preempt_count; @@ -24,11 +25,11 @@ Index: linux-3.4/include/linux/ftrace_event.h }; #define FTRACE_MAX_EVENT \ -Index: linux-3.4/kernel/trace/trace.c -=================================================================== ---- linux-3.4.orig/kernel/trace/trace.c -+++ linux-3.4/kernel/trace/trace.c -@@ -1179,6 +1179,8 @@ tracing_generic_entry_update(struct trac +diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c +index 2a22255..0514f8f 100644 +--- a/kernel/trace/trace.c ++++ b/kernel/trace/trace.c +@@ -1179,6 +1179,8 @@ tracing_generic_entry_update(struct trace_entry *entry, unsigned long flags, ((pc & HARDIRQ_MASK) ? TRACE_FLAG_HARDIRQ : 0) | ((pc & SOFTIRQ_MASK) ? TRACE_FLAG_SOFTIRQ : 0) | (need_resched() ? TRACE_FLAG_NEED_RESCHED : 0); @@ -37,7 +38,7 @@ Index: linux-3.4/kernel/trace/trace.c } EXPORT_SYMBOL_GPL(tracing_generic_entry_update); -@@ -1937,9 +1939,10 @@ static void print_lat_help_header(struct +@@ -1937,9 +1939,10 @@ static void print_lat_help_header(struct seq_file *m) seq_puts(m, "# | / _----=> need-resched \n"); seq_puts(m, "# || / _---=> hardirq/softirq \n"); seq_puts(m, "# ||| / _--=> preempt-depth \n"); @@ -51,11 +52,11 @@ Index: linux-3.4/kernel/trace/trace.c } static void print_event_info(struct trace_array *tr, struct seq_file *m) -Index: linux-3.4/kernel/trace/trace_events.c -=================================================================== ---- linux-3.4.orig/kernel/trace/trace_events.c -+++ linux-3.4/kernel/trace/trace_events.c -@@ -116,6 +116,7 @@ static int trace_define_common_fields(vo +diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c +index 29111da..4c3a7b3 100644 +--- a/kernel/trace/trace_events.c ++++ b/kernel/trace/trace_events.c +@@ -116,6 +116,7 @@ static int trace_define_common_fields(void) __common_field(unsigned char, flags); __common_field(unsigned char, preempt_count); __common_field(int, pid); @@ -63,11 +64,11 @@ Index: linux-3.4/kernel/trace/trace_events.c __common_field(int, padding); return ret; -Index: linux-3.4/kernel/trace/trace_output.c -=================================================================== ---- linux-3.4.orig/kernel/trace/trace_output.c -+++ linux-3.4/kernel/trace/trace_output.c -@@ -593,6 +593,11 @@ int trace_print_lat_fmt(struct trace_seq +diff --git a/kernel/trace/trace_output.c b/kernel/trace/trace_output.c +index df611a0..1b79535 100644 +--- a/kernel/trace/trace_output.c ++++ b/kernel/trace/trace_output.c +@@ -593,6 +593,11 @@ int trace_print_lat_fmt(struct trace_seq *s, struct trace_entry *entry) else ret = trace_seq_putc(s, '.'); diff --git a/debian/patches/features/all/rt/rt-tracing-show-padding-as-unsigned-short.patch b/debian/patches/features/all/rt/0145-tracing-Show-padding-as-unsigned-short.patch similarity index 80% rename from debian/patches/features/all/rt/rt-tracing-show-padding-as-unsigned-short.patch rename to debian/patches/features/all/rt/0145-tracing-Show-padding-as-unsigned-short.patch index 6a057a55f..5bad94898 100644 --- a/debian/patches/features/all/rt/rt-tracing-show-padding-as-unsigned-short.patch +++ b/debian/patches/features/all/rt/0145-tracing-Show-padding-as-unsigned-short.patch @@ -1,6 +1,7 @@ -Subject: tracing: Show padding as unsigned short +From c0c1ad88250aaa0d3fbb64d93c46c073b965ebe9 Mon Sep 17 00:00:00 2001 From: Steven Rostedt Date: Wed, 16 Nov 2011 13:19:35 -0500 +Subject: [145/254] tracing: Show padding as unsigned short RT added two bytes to trace migrate disable counting to the trace events and used two bytes of the padding to make the change. The structures and @@ -19,7 +20,6 @@ format: field:unsigned short common_migrate_disable; offset:8; size:2; signed:0; field:int common_padding; offset:10; size:2; signed:0; - The field for common_padding has the correct size and offset, but the use of "int" might confuse some parsers (and people that are reading it). This needs to be changed to "unsigned short". @@ -28,16 +28,15 @@ Signed-off-by: Steven Rostedt Link: http://lkml.kernel.org/r/1321467575.4181.36.camel@frodo Cc: stable-rt@vger.kernel.org Signed-off-by: Thomas Gleixner - --- kernel/trace/trace_events.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-3.4/kernel/trace/trace_events.c -=================================================================== ---- linux-3.4.orig/kernel/trace/trace_events.c -+++ linux-3.4/kernel/trace/trace_events.c -@@ -117,7 +117,7 @@ static int trace_define_common_fields(vo +diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c +index 4c3a7b3..9d94e2f 100644 +--- a/kernel/trace/trace_events.c ++++ b/kernel/trace/trace_events.c +@@ -117,7 +117,7 @@ static int trace_define_common_fields(void) __common_field(unsigned char, preempt_count); __common_field(int, pid); __common_field(unsigned short, migrate_disable); diff --git a/debian/patches/features/all/rt/migrate-disable-rt-variant.patch b/debian/patches/features/all/rt/0146-migrate-disable-rt-variant.patch.patch similarity index 75% rename from debian/patches/features/all/rt/migrate-disable-rt-variant.patch rename to debian/patches/features/all/rt/0146-migrate-disable-rt-variant.patch.patch index e27d9c8f5..a98df476c 100644 --- a/debian/patches/features/all/rt/migrate-disable-rt-variant.patch +++ b/debian/patches/features/all/rt/0146-migrate-disable-rt-variant.patch.patch @@ -1,16 +1,17 @@ -Subject: migrate-disable-rt-variant.patch +From 2ce9fa0b3f3aefded45d33e101056447be2ca085 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sun, 17 Jul 2011 19:48:20 +0200 +Subject: [146/254] migrate-disable-rt-variant.patch Signed-off-by: Thomas Gleixner --- include/linux/preempt.h | 4 ++++ 1 file changed, 4 insertions(+) -Index: linux-3.4/include/linux/preempt.h -=================================================================== ---- linux-3.4.orig/include/linux/preempt.h -+++ linux-3.4/include/linux/preempt.h +diff --git a/include/linux/preempt.h b/include/linux/preempt.h +index c5d2a36..714a08c 100644 +--- a/include/linux/preempt.h ++++ b/include/linux/preempt.h @@ -121,11 +121,15 @@ extern void migrate_enable(void); # define preempt_enable_rt() preempt_enable() # define preempt_disable_nort() do { } while (0) diff --git a/debian/patches/features/all/rt/peter_zijlstra-frob-migrate_disable.patch b/debian/patches/features/all/rt/0147-sched-Optimize-migrate_disable.patch similarity index 86% rename from debian/patches/features/all/rt/peter_zijlstra-frob-migrate_disable.patch rename to debian/patches/features/all/rt/0147-sched-Optimize-migrate_disable.patch index 083eca443..303efab47 100644 --- a/debian/patches/features/all/rt/peter_zijlstra-frob-migrate_disable.patch +++ b/debian/patches/features/all/rt/0147-sched-Optimize-migrate_disable.patch @@ -1,6 +1,7 @@ -Subject: sched: Optimize migrate_disable +From 1b0ce6cde45798eb04d05af34efd4c40ba3f7220 Mon Sep 17 00:00:00 2001 From: Peter Zijlstra -Date: Thu Aug 11 15:03:35 CEST 2011 +Date: Thu, 11 Aug 2011 15:03:35 +0200 +Subject: [147/254] sched: Optimize migrate_disable Change from task_rq_lock() to raw_spin_lock(&rq->lock) to avoid a few atomic ops. See comment on why it should be safe. @@ -11,10 +12,10 @@ Link: http://lkml.kernel.org/n/tip-cbz6hkl5r5mvwtx5s3tor2y6@git.kernel.org kernel/sched/core.c | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) -Index: linux-3.4/kernel/sched/core.c -=================================================================== ---- linux-3.4.orig/kernel/sched/core.c -+++ linux-3.4/kernel/sched/core.c +diff --git a/kernel/sched/core.c b/kernel/sched/core.c +index 8109af2..d64b1e5 100644 +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c @@ -5071,7 +5071,19 @@ void migrate_disable(void) preempt_enable(); return; diff --git a/debian/patches/features/all/rt/peter_zijlstra-frob-migrate_disable-2.patch b/debian/patches/features/all/rt/0148-sched-Generic-migrate_disable.patch similarity index 76% rename from debian/patches/features/all/rt/peter_zijlstra-frob-migrate_disable-2.patch rename to debian/patches/features/all/rt/0148-sched-Generic-migrate_disable.patch index 9b3ac5938..ec920d1d6 100644 --- a/debian/patches/features/all/rt/peter_zijlstra-frob-migrate_disable-2.patch +++ b/debian/patches/features/all/rt/0148-sched-Generic-migrate_disable.patch @@ -1,6 +1,7 @@ -Subject: sched: Generic migrate_disable +From 4ba12e13e795a5ab7f745dfe93b7509d211e8b22 Mon Sep 17 00:00:00 2001 From: Peter Zijlstra -Date: Thu Aug 11 15:14:58 CEST 2011 +Date: Thu, 11 Aug 2011 15:14:58 +0200 +Subject: [148/254] sched: Generic migrate_disable Make migrate_disable() be a preempt_disable() for !rt kernels. This allows generic code to use it but still enforces that these code @@ -21,10 +22,10 @@ Link: http://lkml.kernel.org/n/tip-275i87sl8e1jcamtchmehonm@git.kernel.org lib/smp_processor_id.c | 2 +- 6 files changed, 30 insertions(+), 23 deletions(-) -Index: linux-3.4/include/linux/preempt.h -=================================================================== ---- linux-3.4.orig/include/linux/preempt.h -+++ linux-3.4/include/linux/preempt.h +diff --git a/include/linux/preempt.h b/include/linux/preempt.h +index 714a08c..5af46d0 100644 +--- a/include/linux/preempt.h ++++ b/include/linux/preempt.h @@ -108,28 +108,25 @@ do { \ #endif /* CONFIG_PREEMPT_COUNT */ @@ -63,10 +64,10 @@ Index: linux-3.4/include/linux/preempt.h #endif #ifdef CONFIG_PREEMPT_NOTIFIERS -Index: linux-3.4/include/linux/sched.h -=================================================================== ---- linux-3.4.orig/include/linux/sched.h -+++ linux-3.4/include/linux/sched.h +diff --git a/include/linux/sched.h b/include/linux/sched.h +index c5f690a..cf6809b 100644 +--- a/include/linux/sched.h ++++ b/include/linux/sched.h @@ -1302,7 +1302,9 @@ struct task_struct { #endif @@ -77,7 +78,7 @@ Index: linux-3.4/include/linux/sched.h cpumask_t cpus_allowed; #ifdef CONFIG_PREEMPT_RCU -@@ -2771,11 +2773,22 @@ static inline void set_task_cpu(struct t +@@ -2771,11 +2773,22 @@ static inline void set_task_cpu(struct task_struct *p, unsigned int cpu) #endif /* CONFIG_SMP */ @@ -100,11 +101,11 @@ Index: linux-3.4/include/linux/sched.h return &p->cpus_allowed; } -Index: linux-3.4/include/linux/smp.h -=================================================================== ---- linux-3.4.orig/include/linux/smp.h -+++ linux-3.4/include/linux/smp.h -@@ -218,13 +218,8 @@ smp_call_function_any(const struct cpuma +diff --git a/include/linux/smp.h b/include/linux/smp.h +index 980c525..3001ba5 100644 +--- a/include/linux/smp.h ++++ b/include/linux/smp.h +@@ -218,13 +218,8 @@ smp_call_function_any(const struct cpumask *mask, smp_call_func_t func, #define get_cpu() ({ preempt_disable(); smp_processor_id(); }) #define put_cpu() preempt_enable() @@ -120,11 +121,11 @@ Index: linux-3.4/include/linux/smp.h /* * Callback to arch code if there's nosmp or maxcpus=0 on the -Index: linux-3.4/kernel/sched/core.c -=================================================================== ---- linux-3.4.orig/kernel/sched/core.c -+++ linux-3.4/kernel/sched/core.c -@@ -4976,7 +4976,7 @@ void __cpuinit init_idle(struct task_str +diff --git a/kernel/sched/core.c b/kernel/sched/core.c +index d64b1e5..bfd712b 100644 +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -4976,7 +4976,7 @@ void __cpuinit init_idle(struct task_struct *idle, int cpu) #ifdef CONFIG_SMP void do_set_cpus_allowed(struct task_struct *p, const struct cpumask *new_mask) { @@ -133,7 +134,7 @@ Index: linux-3.4/kernel/sched/core.c if (p->sched_class && p->sched_class->set_cpus_allowed) p->sched_class->set_cpus_allowed(p, new_mask); p->rt.nr_cpus_allowed = cpumask_weight(new_mask); -@@ -5032,7 +5032,7 @@ int set_cpus_allowed_ptr(struct task_str +@@ -5032,7 +5032,7 @@ int set_cpus_allowed_ptr(struct task_struct *p, const struct cpumask *new_mask) do_set_cpus_allowed(p, new_mask); /* Can the task run on the task's current CPU? If so, we're done */ @@ -158,11 +159,11 @@ Index: linux-3.4/kernel/sched/core.c /* * Move (not current) task off this cpu, onto dest cpu. We're doing -Index: linux-3.4/kernel/trace/trace.c -=================================================================== ---- linux-3.4.orig/kernel/trace/trace.c -+++ linux-3.4/kernel/trace/trace.c -@@ -1180,7 +1180,7 @@ tracing_generic_entry_update(struct trac +diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c +index 0514f8f..096ca81 100644 +--- a/kernel/trace/trace.c ++++ b/kernel/trace/trace.c +@@ -1180,7 +1180,7 @@ tracing_generic_entry_update(struct trace_entry *entry, unsigned long flags, ((pc & SOFTIRQ_MASK) ? TRACE_FLAG_SOFTIRQ : 0) | (need_resched() ? TRACE_FLAG_NEED_RESCHED : 0); @@ -171,11 +172,11 @@ Index: linux-3.4/kernel/trace/trace.c } EXPORT_SYMBOL_GPL(tracing_generic_entry_update); -Index: linux-3.4/lib/smp_processor_id.c -=================================================================== ---- linux-3.4.orig/lib/smp_processor_id.c -+++ linux-3.4/lib/smp_processor_id.c -@@ -41,7 +41,7 @@ notrace unsigned int debug_smp_processor +diff --git a/lib/smp_processor_id.c b/lib/smp_processor_id.c +index 0a846e7..dbb1570 100644 +--- a/lib/smp_processor_id.c ++++ b/lib/smp_processor_id.c +@@ -41,7 +41,7 @@ notrace unsigned int debug_smp_processor_id(void) printk(KERN_ERR "BUG: using smp_processor_id() in preemptible [%08x %08x] " "code: %s/%d\n", preempt_count() - 1, diff --git a/debian/patches/features/all/rt/sched-rt-fix-migrate_enable-thinko.patch b/debian/patches/features/all/rt/0149-sched-rt-Fix-migrate_enable-thinko.patch similarity index 72% rename from debian/patches/features/all/rt/sched-rt-fix-migrate_enable-thinko.patch rename to debian/patches/features/all/rt/0149-sched-rt-Fix-migrate_enable-thinko.patch index 23d5f38d0..573df20fc 100644 --- a/debian/patches/features/all/rt/sched-rt-fix-migrate_enable-thinko.patch +++ b/debian/patches/features/all/rt/0149-sched-rt-Fix-migrate_enable-thinko.patch @@ -1,6 +1,7 @@ -Subject: sched, rt: Fix migrate_enable() thinko +From 2fd77c2a588604fce82075f101a1996ea3075e72 Mon Sep 17 00:00:00 2001 From: Mike Galbraith Date: Tue, 23 Aug 2011 16:12:43 +0200 +Subject: [149/254] sched, rt: Fix migrate_enable() thinko Assigning mask = tsk_cpus_allowed(p) after p->migrate_disable = 0 ensures that we won't see a mask change.. no push/pull, we stack tasks on one CPU. @@ -14,16 +15,15 @@ Cc: Paul E. McKenney Cc: Peter Zijlstra Link: http://lkml.kernel.org/r/1314108763.6689.4.camel@marge.simson.net Signed-off-by: Thomas Gleixner - --- kernel/sched/core.c | 4 +++- kernel/sched/debug.c | 7 +++++++ 2 files changed, 10 insertions(+), 1 deletion(-) -Index: linux-3.4/kernel/sched/core.c -=================================================================== ---- linux-3.4.orig/kernel/sched/core.c -+++ linux-3.4/kernel/sched/core.c +diff --git a/kernel/sched/core.c b/kernel/sched/core.c +index bfd712b..7ab052a 100644 +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c @@ -5128,12 +5128,14 @@ void migrate_enable(void) */ rq = this_rq(); @@ -40,11 +40,11 @@ Index: linux-3.4/kernel/sched/core.c if (p->sched_class->set_cpus_allowed) p->sched_class->set_cpus_allowed(p, mask); p->rt.nr_cpus_allowed = cpumask_weight(mask); -Index: linux-3.4/kernel/sched/debug.c -=================================================================== ---- linux-3.4.orig/kernel/sched/debug.c -+++ linux-3.4/kernel/sched/debug.c -@@ -237,6 +237,9 @@ void print_rt_rq(struct seq_file *m, int +diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c +index 09acaa1..451512ff 100644 +--- a/kernel/sched/debug.c ++++ b/kernel/sched/debug.c +@@ -237,6 +237,9 @@ void print_rt_rq(struct seq_file *m, int cpu, struct rt_rq *rt_rq) P(rt_throttled); PN(rt_time); PN(rt_runtime); @@ -54,7 +54,7 @@ Index: linux-3.4/kernel/sched/debug.c #undef PN #undef P -@@ -485,6 +488,10 @@ void proc_sched_show_task(struct task_st +@@ -485,6 +488,10 @@ void proc_sched_show_task(struct task_struct *p, struct seq_file *m) P(se.load.weight); P(policy); P(prio); diff --git a/debian/patches/features/all/rt/sched-teach-migrate_disable-about-atomic-contexts.patch b/debian/patches/features/all/rt/0150-sched-teach-migrate_disable-about-atomic-contexts.patch similarity index 77% rename from debian/patches/features/all/rt/sched-teach-migrate_disable-about-atomic-contexts.patch rename to debian/patches/features/all/rt/0150-sched-teach-migrate_disable-about-atomic-contexts.patch index f1c3495c5..46a7f9454 100644 --- a/debian/patches/features/all/rt/sched-teach-migrate_disable-about-atomic-contexts.patch +++ b/debian/patches/features/all/rt/0150-sched-teach-migrate_disable-about-atomic-contexts.patch @@ -1,10 +1,7 @@ -Subject: sched: Teach migrate_disable about atomic contexts -From: Peter Zijlstra -Date: Fri, 02 Sep 2011 14:41:37 +0200 - -Subject: sched: teach migrate_disable about atomic contexts +From 6efd9b62a58f643333e65d9f4c37dd98970ff37a Mon Sep 17 00:00:00 2001 From: Peter Zijlstra -Date: Fri Sep 02 14:29:27 CEST 2011 +Date: Fri, 2 Sep 2011 14:29:27 +0200 +Subject: [150/254] sched: teach migrate_disable about atomic contexts [] spin_bug+0x94/0xa8 [] do_raw_spin_lock+0x43/0xea @@ -37,10 +34,10 @@ Link: http://lkml.kernel.org/n/tip-wbot4vsmwhi8vmbf83hsclk6@git.kernel.org kernel/sched/core.c | 21 +++++++++++++++++++++ 2 files changed, 24 insertions(+) -Index: linux-3.4/include/linux/sched.h -=================================================================== ---- linux-3.4.orig/include/linux/sched.h -+++ linux-3.4/include/linux/sched.h +diff --git a/include/linux/sched.h b/include/linux/sched.h +index cf6809b..01f2d96 100644 +--- a/include/linux/sched.h ++++ b/include/linux/sched.h @@ -1304,6 +1304,9 @@ struct task_struct { unsigned int policy; #ifdef CONFIG_PREEMPT_RT_FULL @@ -51,10 +48,10 @@ Index: linux-3.4/include/linux/sched.h #endif cpumask_t cpus_allowed; -Index: linux-3.4/kernel/sched/core.c -=================================================================== ---- linux-3.4.orig/kernel/sched/core.c -+++ linux-3.4/kernel/sched/core.c +diff --git a/kernel/sched/core.c b/kernel/sched/core.c +index 7ab052a..a73841e 100644 +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c @@ -5059,6 +5059,17 @@ void migrate_disable(void) unsigned long flags; struct rq *rq; diff --git a/debian/patches/features/all/rt/rt-sched-postpone-actual-migration-disalbe-to-schedule.patch b/debian/patches/features/all/rt/0151-sched-Postpone-actual-migration-disalbe-to-schedule.patch similarity index 95% rename from debian/patches/features/all/rt/rt-sched-postpone-actual-migration-disalbe-to-schedule.patch rename to debian/patches/features/all/rt/0151-sched-Postpone-actual-migration-disalbe-to-schedule.patch index 529c33cd3..a29337b15 100644 --- a/debian/patches/features/all/rt/rt-sched-postpone-actual-migration-disalbe-to-schedule.patch +++ b/debian/patches/features/all/rt/0151-sched-Postpone-actual-migration-disalbe-to-schedule.patch @@ -1,6 +1,7 @@ -Subject: sched: Postpone actual migration disalbe to schedule +From f9824fab6bee24a916cc250530ed0c9f59b6b4a1 Mon Sep 17 00:00:00 2001 From: Steven Rostedt Date: Tue, 27 Sep 2011 08:40:23 -0400 +Subject: [151/254] sched: Postpone actual migration disalbe to schedule The migrate_disable() can cause a bit of a overhead to the RT kernel, as changing the affinity is expensive to do at every lock encountered. @@ -17,16 +18,15 @@ Cc: Peter Zijlstra Cc: Clark Williams Link: http://lkml.kernel.org/r/20110927124422.779693167@goodmis.org Signed-off-by: Thomas Gleixner - --- - kernel/sched/core.c | 251 +++++++++++++++++++++++++++------------------------- + kernel/sched/core.c | 251 +++++++++++++++++++++++++++------------------------ 1 file changed, 132 insertions(+), 119 deletions(-) -Index: linux-3.4/kernel/sched/core.c -=================================================================== ---- linux-3.4.orig/kernel/sched/core.c -+++ linux-3.4/kernel/sched/core.c -@@ -3136,6 +3136,135 @@ static inline void schedule_debug(struct +diff --git a/kernel/sched/core.c b/kernel/sched/core.c +index a73841e..c62dd4d 100644 +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -3136,6 +3136,135 @@ static inline void schedule_debug(struct task_struct *prev) schedstat_inc(this_rq(), sched_count); } @@ -171,7 +171,7 @@ Index: linux-3.4/kernel/sched/core.c switch_count = &prev->nivcsw; if (prev->state && !(preempt_count() & PREEMPT_ACTIVE)) { if (unlikely(signal_pending_state(prev->state, prev))) { -@@ -4976,7 +5107,7 @@ void __cpuinit init_idle(struct task_str +@@ -4976,7 +5107,7 @@ void __cpuinit init_idle(struct task_struct *idle, int cpu) #ifdef CONFIG_SMP void do_set_cpus_allowed(struct task_struct *p, const struct cpumask *new_mask) { diff --git a/debian/patches/features/all/rt/rt-sched-do-not-compare-cpu-masks-in-scheduler.patch b/debian/patches/features/all/rt/0152-sched-Do-not-compare-cpu-masks-in-scheduler.patch similarity index 79% rename from debian/patches/features/all/rt/rt-sched-do-not-compare-cpu-masks-in-scheduler.patch rename to debian/patches/features/all/rt/0152-sched-Do-not-compare-cpu-masks-in-scheduler.patch index b908fde56..61f6be845 100644 --- a/debian/patches/features/all/rt/rt-sched-do-not-compare-cpu-masks-in-scheduler.patch +++ b/debian/patches/features/all/rt/0152-sched-Do-not-compare-cpu-masks-in-scheduler.patch @@ -1,22 +1,22 @@ -Subject: sched: Do not compare cpu masks in scheduler -Date: Tue, 27 Sep 2011 08:40:24 -0400 +From 0ccd1c15423032853255e50fbafbf4b654d2366e Mon Sep 17 00:00:00 2001 From: Peter Zijlstra +Date: Tue, 27 Sep 2011 08:40:24 -0400 +Subject: [152/254] sched: Do not compare cpu masks in scheduler Signed-off-by: Peter Zijlstra Cc: Peter Zijlstra Cc: Clark Williams Link: http://lkml.kernel.org/r/20110927124423.128129033@goodmis.org Signed-off-by: Thomas Gleixner - --- kernel/sched/core.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) -Index: linux-3.4/kernel/sched/core.c -=================================================================== ---- linux-3.4.orig/kernel/sched/core.c -+++ linux-3.4/kernel/sched/core.c -@@ -3164,16 +3164,12 @@ static inline void update_migrate_disabl +diff --git a/kernel/sched/core.c b/kernel/sched/core.c +index c62dd4d..e9d2386 100644 +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -3164,16 +3164,12 @@ static inline void update_migrate_disable(struct task_struct *p) */ mask = tsk_cpus_allowed(p); diff --git a/debian/patches/features/all/rt/rt-sched-have-migrate_disable-ignore-bounded-threads.patch b/debian/patches/features/all/rt/0153-sched-Have-migrate_disable-ignore-bounded-threads.patch similarity index 87% rename from debian/patches/features/all/rt/rt-sched-have-migrate_disable-ignore-bounded-threads.patch rename to debian/patches/features/all/rt/0153-sched-Have-migrate_disable-ignore-bounded-threads.patch index 23eec2226..350c23e91 100644 --- a/debian/patches/features/all/rt/rt-sched-have-migrate_disable-ignore-bounded-threads.patch +++ b/debian/patches/features/all/rt/0153-sched-Have-migrate_disable-ignore-bounded-threads.patch @@ -1,21 +1,21 @@ -Subject: sched: Have migrate_disable ignore bounded threads -Date: Tue, 27 Sep 2011 08:40:25 -0400 +From e57c825bc66c61a26b782c4cd10d36a1c28a8505 Mon Sep 17 00:00:00 2001 From: Peter Zijlstra +Date: Tue, 27 Sep 2011 08:40:25 -0400 +Subject: [153/254] sched: Have migrate_disable ignore bounded threads Signed-off-by: Peter Zijlstra Cc: Peter Zijlstra Cc: Clark Williams Link: http://lkml.kernel.org/r/20110927124423.567944215@goodmis.org Signed-off-by: Thomas Gleixner - --- kernel/sched/core.c | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) -Index: linux-3.4/kernel/sched/core.c -=================================================================== ---- linux-3.4.orig/kernel/sched/core.c -+++ linux-3.4/kernel/sched/core.c +diff --git a/kernel/sched/core.c b/kernel/sched/core.c +index e9d2386..8e69311 100644 +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c @@ -3176,7 +3176,7 @@ void migrate_disable(void) { struct task_struct *p = current; diff --git a/debian/patches/features/all/rt/sched-clear-pf-thread-bound-on-fallback-rq.patch b/debian/patches/features/all/rt/0154-sched-clear-pf-thread-bound-on-fallback-rq.patch.patch similarity index 56% rename from debian/patches/features/all/rt/sched-clear-pf-thread-bound-on-fallback-rq.patch rename to debian/patches/features/all/rt/0154-sched-clear-pf-thread-bound-on-fallback-rq.patch.patch index ac3751a29..4b4665082 100644 --- a/debian/patches/features/all/rt/sched-clear-pf-thread-bound-on-fallback-rq.patch +++ b/debian/patches/features/all/rt/0154-sched-clear-pf-thread-bound-on-fallback-rq.patch.patch @@ -1,16 +1,17 @@ -Subject: sched-clear-pf-thread-bound-on-fallback-rq.patch +From b962b64d826dafb70a4cf7a7627b2040c4a32517 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner -Date: Fri, 04 Nov 2011 20:48:36 +0100 +Date: Fri, 4 Nov 2011 20:48:36 +0100 +Subject: [154/254] sched-clear-pf-thread-bound-on-fallback-rq.patch Signed-off-by: Thomas Gleixner --- kernel/sched/core.c | 6 ++++++ 1 file changed, 6 insertions(+) -Index: linux-3.4/kernel/sched/core.c -=================================================================== ---- linux-3.4.orig/kernel/sched/core.c -+++ linux-3.4/kernel/sched/core.c +diff --git a/kernel/sched/core.c b/kernel/sched/core.c +index 8e69311..60e46f4 100644 +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c @@ -1325,6 +1325,12 @@ out: } } diff --git a/debian/patches/features/all/rt/ftrace-crap.patch b/debian/patches/features/all/rt/0155-ftrace-crap.patch.patch similarity index 67% rename from debian/patches/features/all/rt/ftrace-crap.patch rename to debian/patches/features/all/rt/0155-ftrace-crap.patch.patch index 88bee8374..1fb44b005 100644 --- a/debian/patches/features/all/rt/ftrace-crap.patch +++ b/debian/patches/features/all/rt/0155-ftrace-crap.patch.patch @@ -1,6 +1,7 @@ -Subject: ftrace-crap.patch +From 518b3fa7b9cc1ac4f76a28df3349f195444ea2d4 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner -Date: Fri, 09 Sep 2011 16:55:53 +0200 +Date: Fri, 9 Sep 2011 16:55:53 +0200 +Subject: [155/254] ftrace-crap.patch Signed-off-by: Thomas Gleixner --- @@ -8,10 +9,10 @@ Signed-off-by: Thomas Gleixner kernel/trace/trace.h | 1 - 2 files changed, 24 insertions(+), 3 deletions(-) -Index: linux-3.4/kernel/trace/trace.c -=================================================================== ---- linux-3.4.orig/kernel/trace/trace.c -+++ linux-3.4/kernel/trace/trace.c +diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c +index 096ca81..6665bea 100644 +--- a/kernel/trace/trace.c ++++ b/kernel/trace/trace.c @@ -414,11 +414,13 @@ EXPORT_SYMBOL_GPL(tracing_is_on); */ void trace_wake_up(void) @@ -26,7 +27,7 @@ Index: linux-3.4/kernel/trace/trace.c } static int __init set_buf_size(char *str) -@@ -775,6 +777,12 @@ update_max_tr_single(struct trace_array +@@ -775,6 +777,12 @@ update_max_tr_single(struct trace_array *tr, struct task_struct *tsk, int cpu) } #endif /* CONFIG_TRACER_MAX_TRACE */ @@ -39,7 +40,7 @@ Index: linux-3.4/kernel/trace/trace.c /** * register_tracer - register a tracer with the ftrace system. * @type - the plugin for the tracer -@@ -3303,6 +3311,7 @@ static int tracing_release_pipe(struct i +@@ -3303,6 +3311,7 @@ static int tracing_release_pipe(struct inode *inode, struct file *file) return 0; } @@ -47,7 +48,7 @@ Index: linux-3.4/kernel/trace/trace.c static unsigned int tracing_poll_pipe(struct file *filp, poll_table *poll_table) { -@@ -3324,8 +3333,7 @@ tracing_poll_pipe(struct file *filp, pol +@@ -3324,8 +3333,7 @@ tracing_poll_pipe(struct file *filp, poll_table *poll_table) } } @@ -57,7 +58,7 @@ Index: linux-3.4/kernel/trace/trace.c { DEFINE_WAIT(wait); -@@ -3336,6 +3344,20 @@ void default_wait_pipe(struct trace_iter +@@ -3336,6 +3344,20 @@ void default_wait_pipe(struct trace_iterator *iter) finish_wait(&trace_wait, &wait); } @@ -78,11 +79,11 @@ Index: linux-3.4/kernel/trace/trace.c /* * This is a make-shift waitqueue. -Index: linux-3.4/kernel/trace/trace.h -=================================================================== ---- linux-3.4.orig/kernel/trace/trace.h -+++ linux-3.4/kernel/trace/trace.h -@@ -354,7 +354,6 @@ void trace_init_global_iter(struct trace +diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h +index f95d65d..fe96b7c 100644 +--- a/kernel/trace/trace.h ++++ b/kernel/trace/trace.h +@@ -354,7 +354,6 @@ void trace_init_global_iter(struct trace_iterator *iter); void tracing_iter_reset(struct trace_iterator *iter, int cpu); diff --git a/debian/patches/features/all/rt/rt-ring-buffer-convert-reader_lock-from-raw_spin_lock-into-spin_lock.patch b/debian/patches/features/all/rt/0156-ring-buffer-Convert-reader_lock-from-raw_spin_lock-i.patch similarity index 85% rename from debian/patches/features/all/rt/rt-ring-buffer-convert-reader_lock-from-raw_spin_lock-into-spin_lock.patch rename to debian/patches/features/all/rt/0156-ring-buffer-Convert-reader_lock-from-raw_spin_lock-i.patch index 4dd5156c3..49a74f904 100644 --- a/debian/patches/features/all/rt/rt-ring-buffer-convert-reader_lock-from-raw_spin_lock-into-spin_lock.patch +++ b/debian/patches/features/all/rt/0156-ring-buffer-Convert-reader_lock-from-raw_spin_lock-i.patch @@ -1,6 +1,8 @@ -Subject: ring-buffer: Convert reader_lock from raw_spin_lock into spin_lock +From fb8099127ca9ca59f6f9434810f42fcbb3e70fb9 Mon Sep 17 00:00:00 2001 From: Steven Rostedt Date: Tue, 27 Sep 2011 13:56:50 -0400 +Subject: [156/254] ring-buffer: Convert reader_lock from raw_spin_lock into + spin_lock The reader_lock is mostly taken in normal context with interrupts enabled. But because ftrace_dump() can happen anywhere, it is used as a spin lock @@ -37,17 +39,14 @@ Cc: Peter Zijlstra Cc: Clark Williams Link: http://lkml.kernel.org/r/1317146210.26514.33.camel@gandalf.stny.rr.com Signed-off-by: Thomas Gleixner - - - --- - kernel/trace/ring_buffer.c | 151 ++++++++++++++++++++++++--------------------- + kernel/trace/ring_buffer.c | 151 ++++++++++++++++++++++++-------------------- 1 file changed, 81 insertions(+), 70 deletions(-) -Index: linux-3.4/kernel/trace/ring_buffer.c -=================================================================== ---- linux-3.4.orig/kernel/trace/ring_buffer.c -+++ linux-3.4/kernel/trace/ring_buffer.c +diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c +index cf8d11e..24efd16 100644 +--- a/kernel/trace/ring_buffer.c ++++ b/kernel/trace/ring_buffer.c @@ -446,7 +446,7 @@ struct ring_buffer_per_cpu { int cpu; atomic_t record_disabled; @@ -57,7 +56,7 @@ Index: linux-3.4/kernel/trace/ring_buffer.c arch_spinlock_t lock; struct lock_class_key lock_key; struct list_head *pages; -@@ -1017,6 +1017,44 @@ static int rb_allocate_pages(struct ring +@@ -1017,6 +1017,44 @@ static int rb_allocate_pages(struct ring_buffer_per_cpu *cpu_buffer, return -ENOMEM; } @@ -102,7 +101,7 @@ Index: linux-3.4/kernel/trace/ring_buffer.c static struct ring_buffer_per_cpu * rb_allocate_cpu_buffer(struct ring_buffer *buffer, int cpu) { -@@ -1032,7 +1070,7 @@ rb_allocate_cpu_buffer(struct ring_buffe +@@ -1032,7 +1070,7 @@ rb_allocate_cpu_buffer(struct ring_buffer *buffer, int cpu) cpu_buffer->cpu = cpu; cpu_buffer->buffer = buffer; @@ -111,7 +110,7 @@ Index: linux-3.4/kernel/trace/ring_buffer.c lockdep_set_class(&cpu_buffer->reader_lock, buffer->reader_lock_key); cpu_buffer->lock = (arch_spinlock_t)__ARCH_SPIN_LOCK_UNLOCKED; -@@ -1227,9 +1265,11 @@ rb_remove_pages(struct ring_buffer_per_c +@@ -1227,9 +1265,11 @@ rb_remove_pages(struct ring_buffer_per_cpu *cpu_buffer, unsigned nr_pages) { struct buffer_page *bpage; struct list_head *p; @@ -124,7 +123,7 @@ Index: linux-3.4/kernel/trace/ring_buffer.c rb_head_page_deactivate(cpu_buffer); for (i = 0; i < nr_pages; i++) { -@@ -1247,7 +1287,7 @@ rb_remove_pages(struct ring_buffer_per_c +@@ -1247,7 +1287,7 @@ rb_remove_pages(struct ring_buffer_per_cpu *cpu_buffer, unsigned nr_pages) rb_check_pages(cpu_buffer); out: @@ -133,7 +132,7 @@ Index: linux-3.4/kernel/trace/ring_buffer.c } static void -@@ -1256,9 +1296,11 @@ rb_insert_pages(struct ring_buffer_per_c +@@ -1256,9 +1296,11 @@ rb_insert_pages(struct ring_buffer_per_cpu *cpu_buffer, { struct buffer_page *bpage; struct list_head *p; @@ -146,7 +145,7 @@ Index: linux-3.4/kernel/trace/ring_buffer.c rb_head_page_deactivate(cpu_buffer); for (i = 0; i < nr_pages; i++) { -@@ -1273,7 +1315,7 @@ rb_insert_pages(struct ring_buffer_per_c +@@ -1273,7 +1315,7 @@ rb_insert_pages(struct ring_buffer_per_cpu *cpu_buffer, rb_check_pages(cpu_buffer); out: @@ -155,7 +154,7 @@ Index: linux-3.4/kernel/trace/ring_buffer.c } /** -@@ -2714,7 +2756,7 @@ unsigned long ring_buffer_oldest_event_t +@@ -2714,7 +2756,7 @@ unsigned long ring_buffer_oldest_event_ts(struct ring_buffer *buffer, int cpu) return 0; cpu_buffer = buffer->buffers[cpu]; @@ -164,7 +163,7 @@ Index: linux-3.4/kernel/trace/ring_buffer.c /* * if the tail is on reader_page, oldest time stamp is on the reader * page -@@ -2724,7 +2766,7 @@ unsigned long ring_buffer_oldest_event_t +@@ -2724,7 +2766,7 @@ unsigned long ring_buffer_oldest_event_ts(struct ring_buffer *buffer, int cpu) else bpage = rb_set_head_page(cpu_buffer); ret = bpage->page->time_stamp; @@ -173,7 +172,7 @@ Index: linux-3.4/kernel/trace/ring_buffer.c return ret; } -@@ -2888,15 +2930,16 @@ void ring_buffer_iter_reset(struct ring_ +@@ -2888,15 +2930,16 @@ void ring_buffer_iter_reset(struct ring_buffer_iter *iter) { struct ring_buffer_per_cpu *cpu_buffer; unsigned long flags; @@ -192,7 +191,7 @@ Index: linux-3.4/kernel/trace/ring_buffer.c } EXPORT_SYMBOL_GPL(ring_buffer_iter_reset); -@@ -3314,21 +3357,6 @@ rb_iter_peek(struct ring_buffer_iter *it +@@ -3314,21 +3357,6 @@ rb_iter_peek(struct ring_buffer_iter *iter, u64 *ts) } EXPORT_SYMBOL_GPL(ring_buffer_iter_peek); @@ -214,7 +213,7 @@ Index: linux-3.4/kernel/trace/ring_buffer.c /** * ring_buffer_peek - peek at the next event to be read * @buffer: The ring buffer to read -@@ -3346,22 +3374,17 @@ ring_buffer_peek(struct ring_buffer *buf +@@ -3346,22 +3374,17 @@ ring_buffer_peek(struct ring_buffer *buffer, int cpu, u64 *ts, struct ring_buffer_per_cpu *cpu_buffer = buffer->buffers[cpu]; struct ring_buffer_event *event; unsigned long flags; @@ -240,7 +239,7 @@ Index: linux-3.4/kernel/trace/ring_buffer.c if (event && event->type_len == RINGBUF_TYPE_PADDING) goto again; -@@ -3383,11 +3406,12 @@ ring_buffer_iter_peek(struct ring_buffer +@@ -3383,11 +3406,12 @@ ring_buffer_iter_peek(struct ring_buffer_iter *iter, u64 *ts) struct ring_buffer_per_cpu *cpu_buffer = iter->cpu_buffer; struct ring_buffer_event *event; unsigned long flags; @@ -255,7 +254,7 @@ Index: linux-3.4/kernel/trace/ring_buffer.c if (event && event->type_len == RINGBUF_TYPE_PADDING) goto again; -@@ -3413,9 +3437,7 @@ ring_buffer_consume(struct ring_buffer * +@@ -3413,9 +3437,7 @@ ring_buffer_consume(struct ring_buffer *buffer, int cpu, u64 *ts, struct ring_buffer_per_cpu *cpu_buffer; struct ring_buffer_event *event = NULL; unsigned long flags; @@ -266,7 +265,7 @@ Index: linux-3.4/kernel/trace/ring_buffer.c again: /* might be called in atomic */ -@@ -3425,9 +3447,7 @@ ring_buffer_consume(struct ring_buffer * +@@ -3425,9 +3447,7 @@ ring_buffer_consume(struct ring_buffer *buffer, int cpu, u64 *ts, goto out; cpu_buffer = buffer->buffers[cpu]; @@ -277,7 +276,7 @@ Index: linux-3.4/kernel/trace/ring_buffer.c event = rb_buffer_peek(cpu_buffer, ts, lost_events); if (event) { -@@ -3435,9 +3455,8 @@ ring_buffer_consume(struct ring_buffer * +@@ -3435,9 +3455,8 @@ ring_buffer_consume(struct ring_buffer *buffer, int cpu, u64 *ts, rb_advance_reader(cpu_buffer); } @@ -289,7 +288,7 @@ Index: linux-3.4/kernel/trace/ring_buffer.c out: preempt_enable(); -@@ -3522,17 +3541,18 @@ ring_buffer_read_start(struct ring_buffe +@@ -3522,17 +3541,18 @@ ring_buffer_read_start(struct ring_buffer_iter *iter) { struct ring_buffer_per_cpu *cpu_buffer; unsigned long flags; @@ -310,7 +309,7 @@ Index: linux-3.4/kernel/trace/ring_buffer.c } EXPORT_SYMBOL_GPL(ring_buffer_read_start); -@@ -3566,8 +3586,9 @@ ring_buffer_read(struct ring_buffer_iter +@@ -3566,8 +3586,9 @@ ring_buffer_read(struct ring_buffer_iter *iter, u64 *ts) struct ring_buffer_event *event; struct ring_buffer_per_cpu *cpu_buffer = iter->cpu_buffer; unsigned long flags; @@ -321,7 +320,7 @@ Index: linux-3.4/kernel/trace/ring_buffer.c again: event = rb_iter_peek(iter, ts); if (!event) -@@ -3578,7 +3599,7 @@ ring_buffer_read(struct ring_buffer_iter +@@ -3578,7 +3599,7 @@ ring_buffer_read(struct ring_buffer_iter *iter, u64 *ts) rb_advance_iter(iter); out: @@ -330,7 +329,7 @@ Index: linux-3.4/kernel/trace/ring_buffer.c return event; } -@@ -3643,13 +3664,14 @@ void ring_buffer_reset_cpu(struct ring_b +@@ -3643,13 +3664,14 @@ void ring_buffer_reset_cpu(struct ring_buffer *buffer, int cpu) { struct ring_buffer_per_cpu *cpu_buffer = buffer->buffers[cpu]; unsigned long flags; @@ -346,7 +345,7 @@ Index: linux-3.4/kernel/trace/ring_buffer.c if (RB_WARN_ON(cpu_buffer, local_read(&cpu_buffer->committing))) goto out; -@@ -3661,7 +3683,7 @@ void ring_buffer_reset_cpu(struct ring_b +@@ -3661,7 +3683,7 @@ void ring_buffer_reset_cpu(struct ring_buffer *buffer, int cpu) arch_spin_unlock(&cpu_buffer->lock); out: @@ -355,7 +354,7 @@ Index: linux-3.4/kernel/trace/ring_buffer.c atomic_dec(&cpu_buffer->record_disabled); } -@@ -3688,22 +3710,16 @@ int ring_buffer_empty(struct ring_buffer +@@ -3688,22 +3710,16 @@ int ring_buffer_empty(struct ring_buffer *buffer) { struct ring_buffer_per_cpu *cpu_buffer; unsigned long flags; @@ -381,7 +380,7 @@ Index: linux-3.4/kernel/trace/ring_buffer.c if (!ret) return 0; -@@ -3722,22 +3738,16 @@ int ring_buffer_empty_cpu(struct ring_bu +@@ -3722,22 +3738,16 @@ int ring_buffer_empty_cpu(struct ring_buffer *buffer, int cpu) { struct ring_buffer_per_cpu *cpu_buffer; unsigned long flags; @@ -407,7 +406,7 @@ Index: linux-3.4/kernel/trace/ring_buffer.c return ret; } -@@ -3912,6 +3922,7 @@ int ring_buffer_read_page(struct ring_bu +@@ -3912,6 +3922,7 @@ int ring_buffer_read_page(struct ring_buffer *buffer, unsigned int commit; unsigned int read; u64 save_timestamp; @@ -415,7 +414,7 @@ Index: linux-3.4/kernel/trace/ring_buffer.c int ret = -1; if (!cpumask_test_cpu(cpu, buffer->cpumask)) -@@ -3933,7 +3944,7 @@ int ring_buffer_read_page(struct ring_bu +@@ -3933,7 +3944,7 @@ int ring_buffer_read_page(struct ring_buffer *buffer, if (!bpage) goto out; @@ -424,7 +423,7 @@ Index: linux-3.4/kernel/trace/ring_buffer.c reader = rb_get_reader_page(cpu_buffer); if (!reader) -@@ -4057,7 +4068,7 @@ int ring_buffer_read_page(struct ring_bu +@@ -4057,7 +4068,7 @@ int ring_buffer_read_page(struct ring_buffer *buffer, memset(&bpage->data[commit], 0, BUF_PAGE_SIZE - commit); out_unlock: diff --git a/debian/patches/features/all/rt/net-netif_rx_ni-migrate-disable.patch b/debian/patches/features/all/rt/0157-net-netif_rx_ni-migrate-disable.patch.patch similarity index 57% rename from debian/patches/features/all/rt/net-netif_rx_ni-migrate-disable.patch rename to debian/patches/features/all/rt/0157-net-netif_rx_ni-migrate-disable.patch.patch index 007147d50..c024cc9bb 100644 --- a/debian/patches/features/all/rt/net-netif_rx_ni-migrate-disable.patch +++ b/debian/patches/features/all/rt/0157-net-netif_rx_ni-migrate-disable.patch.patch @@ -1,17 +1,18 @@ -Subject: net-netif_rx_ni-migrate-disable.patch +From 2a6a4a7401d2513ae35af2c71d99633eee75d0ea Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sun, 17 Jul 2011 16:29:27 +0200 +Subject: [157/254] net-netif_rx_ni-migrate-disable.patch Signed-off-by: Thomas Gleixner --- net/core/dev.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -Index: linux-3.4/net/core/dev.c -=================================================================== ---- linux-3.4.orig/net/core/dev.c -+++ linux-3.4/net/core/dev.c -@@ -2986,11 +2986,11 @@ int netif_rx_ni(struct sk_buff *skb) +diff --git a/net/core/dev.c b/net/core/dev.c +index ca7a845..8b645be 100644 +--- a/net/core/dev.c ++++ b/net/core/dev.c +@@ -2960,11 +2960,11 @@ int netif_rx_ni(struct sk_buff *skb) { int err; diff --git a/debian/patches/features/all/rt/softirq-sanitize-softirq-pending.patch b/debian/patches/features/all/rt/0158-softirq-Sanitize-softirq-pending-for-NOHZ-RT.patch similarity index 75% rename from debian/patches/features/all/rt/softirq-sanitize-softirq-pending.patch rename to debian/patches/features/all/rt/0158-softirq-Sanitize-softirq-pending-for-NOHZ-RT.patch index eae4b5a1c..b93b1665b 100644 --- a/debian/patches/features/all/rt/softirq-sanitize-softirq-pending.patch +++ b/debian/patches/features/all/rt/0158-softirq-Sanitize-softirq-pending-for-NOHZ-RT.patch @@ -1,20 +1,20 @@ +From 6a9984f394a168d96b0d755c153f5e5b423aed4d Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 3 Jul 2009 13:16:38 -0500 -Subject: softirq: Sanitize softirq pending for NOHZ/RT +Subject: [158/254] softirq: Sanitize softirq pending for NOHZ/RT Signed-off-by: Thomas Gleixner - --- - include/linux/interrupt.h | 2 + - kernel/softirq.c | 61 ++++++++++++++++++++++++++++++++++++++++++++++ - kernel/time/tick-sched.c | 8 ------ + include/linux/interrupt.h | 2 ++ + kernel/softirq.c | 61 +++++++++++++++++++++++++++++++++++++++++++++ + kernel/time/tick-sched.c | 8 +----- 3 files changed, 64 insertions(+), 7 deletions(-) -Index: linux-3.4/include/linux/interrupt.h -=================================================================== ---- linux-3.4.orig/include/linux/interrupt.h -+++ linux-3.4/include/linux/interrupt.h -@@ -464,6 +464,8 @@ extern void __raise_softirq_irqoff(unsig +diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h +index 9027bde..d3b1727 100644 +--- a/include/linux/interrupt.h ++++ b/include/linux/interrupt.h +@@ -464,6 +464,8 @@ extern void __raise_softirq_irqoff(unsigned int nr); extern void raise_softirq_irqoff(unsigned int nr); extern void raise_softirq(unsigned int nr); @@ -23,10 +23,10 @@ Index: linux-3.4/include/linux/interrupt.h /* This is the worklist that queues up per-cpu softirq work. * * send_remote_sendirq() adds work to these lists, and -Index: linux-3.4/kernel/softirq.c -=================================================================== ---- linux-3.4.orig/kernel/softirq.c -+++ linux-3.4/kernel/softirq.c +diff --git a/kernel/softirq.c b/kernel/softirq.c +index 6ec3a78..6f84f09 100644 +--- a/kernel/softirq.c ++++ b/kernel/softirq.c @@ -61,6 +61,67 @@ char *softirq_to_name[NR_SOFTIRQS] = { "TASKLET", "SCHED", "HRTIMER", "RCU" }; @@ -95,11 +95,11 @@ Index: linux-3.4/kernel/softirq.c /* * we cannot loop indefinitely here to avoid userspace starvation, * but we also don't want to introduce a worst case 1/HZ latency -Index: linux-3.4/kernel/time/tick-sched.c -=================================================================== ---- linux-3.4.orig/kernel/time/tick-sched.c -+++ linux-3.4/kernel/time/tick-sched.c -@@ -307,13 +307,7 @@ static void tick_nohz_stop_sched_tick(st +diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c +index 5d409b0..9f958cb 100644 +--- a/kernel/time/tick-sched.c ++++ b/kernel/time/tick-sched.c +@@ -307,13 +307,7 @@ static void tick_nohz_stop_sched_tick(struct tick_sched *ts) return; if (unlikely(local_softirq_pending() && cpu_online(cpu))) { diff --git a/debian/patches/features/all/rt/lockdep-no-softirq-accounting-on-rt.patch b/debian/patches/features/all/rt/0159-lockdep-rt.patch.patch similarity index 76% rename from debian/patches/features/all/rt/lockdep-no-softirq-accounting-on-rt.patch rename to debian/patches/features/all/rt/0159-lockdep-rt.patch.patch index b9155a4c4..073c0e5ba 100644 --- a/debian/patches/features/all/rt/lockdep-no-softirq-accounting-on-rt.patch +++ b/debian/patches/features/all/rt/0159-lockdep-rt.patch.patch @@ -1,6 +1,7 @@ -Subject: lockdep-rt.patch +From 07672cd2aa15659fb69fa89d43303b3856dceb35 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sun, 17 Jul 2011 18:51:23 +0200 +Subject: [159/254] lockdep-rt.patch Signed-off-by: Thomas Gleixner --- @@ -8,10 +9,10 @@ Signed-off-by: Thomas Gleixner kernel/lockdep.c | 2 ++ 2 files changed, 9 insertions(+), 3 deletions(-) -Index: linux-3.4/include/linux/irqflags.h -=================================================================== ---- linux-3.4.orig/include/linux/irqflags.h -+++ linux-3.4/include/linux/irqflags.h +diff --git a/include/linux/irqflags.h b/include/linux/irqflags.h +index 37b13c4..a52b35d 100644 +--- a/include/linux/irqflags.h ++++ b/include/linux/irqflags.h @@ -25,8 +25,6 @@ # define trace_softirqs_enabled(p) ((p)->softirqs_enabled) # define trace_hardirq_enter() do { current->hardirq_context++; } while (0) @@ -38,11 +39,11 @@ Index: linux-3.4/include/linux/irqflags.h #endif #if defined(CONFIG_IRQSOFF_TRACER) || \ -Index: linux-3.4/kernel/lockdep.c -=================================================================== ---- linux-3.4.orig/kernel/lockdep.c -+++ linux-3.4/kernel/lockdep.c -@@ -3495,6 +3495,7 @@ static void check_flags(unsigned long fl +diff --git a/kernel/lockdep.c b/kernel/lockdep.c +index ea9ee45..6537c1c 100644 +--- a/kernel/lockdep.c ++++ b/kernel/lockdep.c +@@ -3495,6 +3495,7 @@ static void check_flags(unsigned long flags) } } @@ -50,7 +51,7 @@ Index: linux-3.4/kernel/lockdep.c /* * We dont accurately track softirq state in e.g. * hardirq contexts (such as on 4KSTACKS), so only -@@ -3509,6 +3510,7 @@ static void check_flags(unsigned long fl +@@ -3509,6 +3510,7 @@ static void check_flags(unsigned long flags) DEBUG_LOCKS_WARN_ON(!current->softirqs_enabled); } } diff --git a/debian/patches/features/all/rt/mutex-no-spin-on-rt.patch b/debian/patches/features/all/rt/0160-mutex-no-spin-on-rt.patch.patch similarity index 64% rename from debian/patches/features/all/rt/mutex-no-spin-on-rt.patch rename to debian/patches/features/all/rt/0160-mutex-no-spin-on-rt.patch.patch index 1af4bb437..2a360d0b1 100644 --- a/debian/patches/features/all/rt/mutex-no-spin-on-rt.patch +++ b/debian/patches/features/all/rt/0160-mutex-no-spin-on-rt.patch.patch @@ -1,16 +1,17 @@ -Subject: mutex-no-spin-on-rt.patch +From 5b65905ea53c7d12c2a4d211cc8d6173723bdf2d Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sun, 17 Jul 2011 21:51:45 +0200 +Subject: [160/254] mutex-no-spin-on-rt.patch Signed-off-by: Thomas Gleixner --- kernel/Kconfig.locks | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-3.4/kernel/Kconfig.locks -=================================================================== ---- linux-3.4.orig/kernel/Kconfig.locks -+++ linux-3.4/kernel/Kconfig.locks +diff --git a/kernel/Kconfig.locks b/kernel/Kconfig.locks +index 2251882..033ebc0 100644 +--- a/kernel/Kconfig.locks ++++ b/kernel/Kconfig.locks @@ -199,4 +199,4 @@ config INLINE_WRITE_UNLOCK_IRQRESTORE def_bool !DEBUG_SPINLOCK && ARCH_INLINE_WRITE_UNLOCK_IRQRESTORE diff --git a/debian/patches/features/all/rt/softirq-local-lock.patch b/debian/patches/features/all/rt/0161-softirq-local-lock.patch.patch similarity index 84% rename from debian/patches/features/all/rt/softirq-local-lock.patch rename to debian/patches/features/all/rt/0161-softirq-local-lock.patch.patch index 9719c76a6..add2bfdef 100644 --- a/debian/patches/features/all/rt/softirq-local-lock.patch +++ b/debian/patches/features/all/rt/0161-softirq-local-lock.patch.patch @@ -1,20 +1,21 @@ -Subject: softirq-local-lock.patch +From 4177a94ca4148cdf8c51edf0af5d97eb8eb8d65f Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Tue, 28 Jun 2011 15:57:18 +0200 +Subject: [161/254] softirq-local-lock.patch Signed-off-by: Thomas Gleixner --- - include/linux/hardirq.h | 16 +++- - include/linux/interrupt.h | 12 +++ - include/linux/sched.h | 1 - init/main.c | 1 - kernel/softirq.c | 166 +++++++++++++++++++++++++++++++++++++++++++++- + include/linux/hardirq.h | 16 ++++- + include/linux/interrupt.h | 12 ++++ + include/linux/sched.h | 1 + + init/main.c | 1 + + kernel/softirq.c | 166 ++++++++++++++++++++++++++++++++++++++++++++- 5 files changed, 191 insertions(+), 5 deletions(-) -Index: linux-3.4/include/linux/hardirq.h -=================================================================== ---- linux-3.4.orig/include/linux/hardirq.h -+++ linux-3.4/include/linux/hardirq.h +diff --git a/include/linux/hardirq.h b/include/linux/hardirq.h +index bb7f309..cbd7c99 100644 +--- a/include/linux/hardirq.h ++++ b/include/linux/hardirq.h @@ -60,7 +60,11 @@ #define HARDIRQ_OFFSET (1UL << HARDIRQ_SHIFT) #define NMI_OFFSET (1UL << NMI_SHIFT) @@ -55,10 +56,10 @@ Index: linux-3.4/include/linux/hardirq.h /* * Are we in NMI context? -Index: linux-3.4/include/linux/interrupt.h -=================================================================== ---- linux-3.4.orig/include/linux/interrupt.h -+++ linux-3.4/include/linux/interrupt.h +diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h +index d3b1727..e53bd8b 100644 +--- a/include/linux/interrupt.h ++++ b/include/linux/interrupt.h @@ -456,7 +456,13 @@ struct softirq_action asmlinkage void do_softirq(void); @@ -73,7 +74,7 @@ Index: linux-3.4/include/linux/interrupt.h extern void open_softirq(int nr, void (*action)(struct softirq_action *)); extern void softirq_init(void); extern void __raise_softirq_irqoff(unsigned int nr); -@@ -643,6 +649,12 @@ void tasklet_hrtimer_cancel(struct taskl +@@ -643,6 +649,12 @@ void tasklet_hrtimer_cancel(struct tasklet_hrtimer *ttimer) tasklet_kill(&ttimer->tasklet); } @@ -86,10 +87,10 @@ Index: linux-3.4/include/linux/interrupt.h /* * Autoprobing for irqs: * -Index: linux-3.4/include/linux/sched.h -=================================================================== ---- linux-3.4.orig/include/linux/sched.h -+++ linux-3.4/include/linux/sched.h +diff --git a/include/linux/sched.h b/include/linux/sched.h +index 01f2d96..372c15d 100644 +--- a/include/linux/sched.h ++++ b/include/linux/sched.h @@ -1645,6 +1645,7 @@ struct task_struct { #endif #ifdef CONFIG_PREEMPT_RT_BASE @@ -98,11 +99,11 @@ Index: linux-3.4/include/linux/sched.h #endif }; -Index: linux-3.4/init/main.c -=================================================================== ---- linux-3.4.orig/init/main.c -+++ linux-3.4/init/main.c -@@ -490,6 +490,7 @@ asmlinkage void __init start_kernel(void +diff --git a/init/main.c b/init/main.c +index 894d2bd..a998050 100644 +--- a/init/main.c ++++ b/init/main.c +@@ -490,6 +490,7 @@ asmlinkage void __init start_kernel(void) * Interrupts are still disabled. Do necessary setups, then * enable them */ @@ -110,10 +111,10 @@ Index: linux-3.4/init/main.c tick_init(); boot_cpu_init(); page_address_init(); -Index: linux-3.4/kernel/softirq.c -=================================================================== ---- linux-3.4.orig/kernel/softirq.c -+++ linux-3.4/kernel/softirq.c +diff --git a/kernel/softirq.c b/kernel/softirq.c +index 6f84f09..a6207be 100644 +--- a/kernel/softirq.c ++++ b/kernel/softirq.c @@ -24,6 +24,7 @@ #include #include @@ -122,7 +123,7 @@ Index: linux-3.4/kernel/softirq.c #define CREATE_TRACE_POINTS #include -@@ -165,6 +166,7 @@ static void handle_pending_softirqs(u32 +@@ -165,6 +166,7 @@ static void handle_pending_softirqs(u32 pending, int cpu) local_irq_disable(); } diff --git a/debian/patches/features/all/rt/softirq-export-in-serving-softirq.patch b/debian/patches/features/all/rt/0162-softirq-Export-in_serving_softirq.patch similarity index 74% rename from debian/patches/features/all/rt/softirq-export-in-serving-softirq.patch rename to debian/patches/features/all/rt/0162-softirq-Export-in_serving_softirq.patch index bfd034d97..251a8aa43 100644 --- a/debian/patches/features/all/rt/softirq-export-in-serving-softirq.patch +++ b/debian/patches/features/all/rt/0162-softirq-Export-in_serving_softirq.patch @@ -1,6 +1,7 @@ -Subject: softirq: Export in_serving_softirq() +From 894d83de595d7bd86da203dddc2e042b3e7a0197 Mon Sep 17 00:00:00 2001 From: John Kacur Date: Mon, 14 Nov 2011 02:44:43 +0100 +Subject: [162/254] softirq: Export in_serving_softirq() ERROR: "in_serving_softirq" [net/sched/cls_cgroup.ko] undefined! @@ -11,15 +12,14 @@ Cc: Paul McKenney Cc: stable-rt@vger.kernel.org Link: http://lkml.kernel.org/r/1321235083-21756-2-git-send-email-jkacur@redhat.com Signed-off-by: Thomas Gleixner - --- kernel/softirq.c | 1 + 1 file changed, 1 insertion(+) -Index: linux-3.4/kernel/softirq.c -=================================================================== ---- linux-3.4.orig/kernel/softirq.c -+++ linux-3.4/kernel/softirq.c +diff --git a/kernel/softirq.c b/kernel/softirq.c +index a6207be..5741cf7 100644 +--- a/kernel/softirq.c ++++ b/kernel/softirq.c @@ -439,6 +439,7 @@ int in_serving_softirq(void) preempt_enable(); return res; diff --git a/debian/patches/features/all/rt/harirq-h-define-softirq_count-as-oul-to-kill-build-warning.patch b/debian/patches/features/all/rt/0163-hardirq.h-Define-softirq_count-as-OUL-to-kill-build-.patch similarity index 76% rename from debian/patches/features/all/rt/harirq-h-define-softirq_count-as-oul-to-kill-build-warning.patch rename to debian/patches/features/all/rt/0163-hardirq.h-Define-softirq_count-as-OUL-to-kill-build-.patch index 121237928..329738dd2 100644 --- a/debian/patches/features/all/rt/harirq-h-define-softirq_count-as-oul-to-kill-build-warning.patch +++ b/debian/patches/features/all/rt/0163-hardirq.h-Define-softirq_count-as-OUL-to-kill-build-.patch @@ -1,6 +1,11 @@ -Subject: hardirq.h: Define softirq_count() as OUL to kill build warning +From 57536261694e62418bb08bc6514c6788e85ac559 Mon Sep 17 00:00:00 2001 From: Yong Zhang Date: Thu, 13 Oct 2011 17:19:09 +0800 +Subject: [163/254] hardirq.h: Define softirq_count() as OUL to kill build + warning +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit kernel/lockdep.c: In function ‘print_bad_irq_dependency’: kernel/lockdep.c:1476:3: warning: format ‘%lu’ expects type ‘long unsigned int’, but argument 7 has type ‘unsigned int’ @@ -22,10 +27,10 @@ Signed-off-by: Thomas Gleixner include/linux/hardirq.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-3.4/include/linux/hardirq.h -=================================================================== ---- linux-3.4.orig/include/linux/hardirq.h -+++ linux-3.4/include/linux/hardirq.h +diff --git a/include/linux/hardirq.h b/include/linux/hardirq.h +index cbd7c99..318d91e 100644 +--- a/include/linux/hardirq.h ++++ b/include/linux/hardirq.h @@ -84,7 +84,7 @@ # define softirq_count() (preempt_count() & SOFTIRQ_MASK) # define in_serving_softirq() (softirq_count() & SOFTIRQ_OFFSET) diff --git a/debian/patches/features/all/rt/softirq-fix-unplug-deadlock.patch b/debian/patches/features/all/rt/0164-softirq-Fix-unplug-deadlock.patch similarity index 81% rename from debian/patches/features/all/rt/softirq-fix-unplug-deadlock.patch rename to debian/patches/features/all/rt/0164-softirq-Fix-unplug-deadlock.patch index 9789c5c76..e09cbc341 100644 --- a/debian/patches/features/all/rt/softirq-fix-unplug-deadlock.patch +++ b/debian/patches/features/all/rt/0164-softirq-Fix-unplug-deadlock.patch @@ -1,10 +1,7 @@ -Subject: softirq: Fix unplug deadlock -From: Peter Zijlstra -Date: Fri, 30 Sep 2011 15:59:16 +0200 - -Subject: [RT] softirq: Fix unplug deadlock +From 2807cdd27179d688d6e9163670f0ac9e28028837 Mon Sep 17 00:00:00 2001 From: Peter Zijlstra -Date: Fri Sep 30 15:52:14 CEST 2011 +Date: Fri, 30 Sep 2011 15:52:14 +0200 +Subject: [164/254] softirq: Fix unplug deadlock If ksoftirqd gets woken during hot-unplug, __thread_do_softirq() will call pin_current_cpu() which will block on the held cpu_hotplug.lock. @@ -30,11 +27,11 @@ Signed-off-by: Thomas Gleixner kernel/softirq.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) -Index: linux-3.4/kernel/softirq.c -=================================================================== ---- linux-3.4.orig/kernel/softirq.c -+++ linux-3.4/kernel/softirq.c -@@ -1078,9 +1078,8 @@ static int __cpuinit cpu_callback(struct +diff --git a/kernel/softirq.c b/kernel/softirq.c +index 5741cf7..d1fdb91 100644 +--- a/kernel/softirq.c ++++ b/kernel/softirq.c +@@ -1078,9 +1078,8 @@ static int __cpuinit cpu_callback(struct notifier_block *nfb, int hotcpu = (unsigned long)hcpu; struct task_struct *p; @@ -45,7 +42,7 @@ Index: linux-3.4/kernel/softirq.c p = kthread_create_on_node(run_ksoftirqd, hcpu, cpu_to_node(hotcpu), -@@ -1093,19 +1092,16 @@ static int __cpuinit cpu_callback(struct +@@ -1093,19 +1092,16 @@ static int __cpuinit cpu_callback(struct notifier_block *nfb, per_cpu(ksoftirqd, hotcpu) = p; break; case CPU_ONLINE: diff --git a/debian/patches/features/all/rt/softirq-disable-softirq-stacks-for-rt.patch b/debian/patches/features/all/rt/0165-softirq-disable-softirq-stacks-for-rt.patch.patch similarity index 60% rename from debian/patches/features/all/rt/softirq-disable-softirq-stacks-for-rt.patch rename to debian/patches/features/all/rt/0165-softirq-disable-softirq-stacks-for-rt.patch.patch index f87be58fa..0242f03ce 100644 --- a/debian/patches/features/all/rt/softirq-disable-softirq-stacks-for-rt.patch +++ b/debian/patches/features/all/rt/0165-softirq-disable-softirq-stacks-for-rt.patch.patch @@ -1,6 +1,7 @@ -Subject: softirq-disable-softirq-stacks-for-rt.patch +From 2f3b717084b127d5a3d1fa3a8e7d27f0ce994711 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Mon, 18 Jul 2011 13:59:17 +0200 +Subject: [165/254] softirq-disable-softirq-stacks-for-rt.patch Signed-off-by: Thomas Gleixner --- @@ -15,11 +16,11 @@ Signed-off-by: Thomas Gleixner include/linux/interrupt.h | 3 +-- 9 files changed, 17 insertions(+), 3 deletions(-) -Index: linux-3.4/arch/powerpc/kernel/irq.c -=================================================================== ---- linux-3.4.orig/arch/powerpc/kernel/irq.c -+++ linux-3.4/arch/powerpc/kernel/irq.c -@@ -523,6 +523,7 @@ void irq_ctx_init(void) +diff --git a/arch/powerpc/kernel/irq.c b/arch/powerpc/kernel/irq.c +index 641da9e..7841465 100644 +--- a/arch/powerpc/kernel/irq.c ++++ b/arch/powerpc/kernel/irq.c +@@ -538,6 +538,7 @@ void irq_ctx_init(void) } } @@ -27,7 +28,7 @@ Index: linux-3.4/arch/powerpc/kernel/irq.c static inline void do_softirq_onstack(void) { struct thread_info *curtp, *irqtp; -@@ -559,6 +560,7 @@ void do_softirq(void) +@@ -574,6 +575,7 @@ void do_softirq(void) local_irq_restore(flags); } @@ -35,10 +36,10 @@ Index: linux-3.4/arch/powerpc/kernel/irq.c irq_hw_number_t virq_to_hw(unsigned int virq) { -Index: linux-3.4/arch/powerpc/kernel/misc_32.S -=================================================================== ---- linux-3.4.orig/arch/powerpc/kernel/misc_32.S -+++ linux-3.4/arch/powerpc/kernel/misc_32.S +diff --git a/arch/powerpc/kernel/misc_32.S b/arch/powerpc/kernel/misc_32.S +index 7cd07b4..46c6073 100644 +--- a/arch/powerpc/kernel/misc_32.S ++++ b/arch/powerpc/kernel/misc_32.S @@ -36,6 +36,7 @@ .text @@ -55,10 +56,10 @@ Index: linux-3.4/arch/powerpc/kernel/misc_32.S _GLOBAL(call_handle_irq) mflr r0 -Index: linux-3.4/arch/powerpc/kernel/misc_64.S -=================================================================== ---- linux-3.4.orig/arch/powerpc/kernel/misc_64.S -+++ linux-3.4/arch/powerpc/kernel/misc_64.S +diff --git a/arch/powerpc/kernel/misc_64.S b/arch/powerpc/kernel/misc_64.S +index 616921e..2961d75 100644 +--- a/arch/powerpc/kernel/misc_64.S ++++ b/arch/powerpc/kernel/misc_64.S @@ -29,6 +29,7 @@ .text @@ -75,10 +76,10 @@ Index: linux-3.4/arch/powerpc/kernel/misc_64.S _GLOBAL(call_handle_irq) ld r8,0(r6) -Index: linux-3.4/arch/sh/kernel/irq.c -=================================================================== ---- linux-3.4.orig/arch/sh/kernel/irq.c -+++ linux-3.4/arch/sh/kernel/irq.c +diff --git a/arch/sh/kernel/irq.c b/arch/sh/kernel/irq.c +index a3ee919..9127bc0 100644 +--- a/arch/sh/kernel/irq.c ++++ b/arch/sh/kernel/irq.c @@ -149,6 +149,7 @@ void irq_ctx_exit(int cpu) hardirq_ctx[cpu] = NULL; } @@ -95,11 +96,11 @@ Index: linux-3.4/arch/sh/kernel/irq.c #else static inline void handle_one_irq(unsigned int irq) { -Index: linux-3.4/arch/sparc/kernel/irq_64.c -=================================================================== ---- linux-3.4.orig/arch/sparc/kernel/irq_64.c -+++ linux-3.4/arch/sparc/kernel/irq_64.c -@@ -698,6 +698,7 @@ void __irq_entry handler_irq(int pil, st +diff --git a/arch/sparc/kernel/irq_64.c b/arch/sparc/kernel/irq_64.c +index dff2c3d..618d4c2 100644 +--- a/arch/sparc/kernel/irq_64.c ++++ b/arch/sparc/kernel/irq_64.c +@@ -698,6 +698,7 @@ void __irq_entry handler_irq(int pil, struct pt_regs *regs) set_irq_regs(old_regs); } @@ -115,10 +116,10 @@ Index: linux-3.4/arch/sparc/kernel/irq_64.c #ifdef CONFIG_HOTPLUG_CPU void fixup_irqs(void) -Index: linux-3.4/arch/x86/kernel/entry_64.S -=================================================================== ---- linux-3.4.orig/arch/x86/kernel/entry_64.S -+++ linux-3.4/arch/x86/kernel/entry_64.S +diff --git a/arch/x86/kernel/entry_64.S b/arch/x86/kernel/entry_64.S +index cdc79b5..1bfb07b 100644 +--- a/arch/x86/kernel/entry_64.S ++++ b/arch/x86/kernel/entry_64.S @@ -1240,6 +1240,7 @@ ENTRY(kernel_execve) CFI_ENDPROC END(kernel_execve) @@ -135,10 +136,10 @@ Index: linux-3.4/arch/x86/kernel/entry_64.S #ifdef CONFIG_XEN zeroentry xen_hypervisor_callback xen_do_hypervisor_callback -Index: linux-3.4/arch/x86/kernel/irq_32.c -=================================================================== ---- linux-3.4.orig/arch/x86/kernel/irq_32.c -+++ linux-3.4/arch/x86/kernel/irq_32.c +diff --git a/arch/x86/kernel/irq_32.c b/arch/x86/kernel/irq_32.c +index 58b7f27..a7b4e1b 100644 +--- a/arch/x86/kernel/irq_32.c ++++ b/arch/x86/kernel/irq_32.c @@ -149,6 +149,7 @@ void __cpuinit irq_ctx_init(int cpu) cpu, per_cpu(hardirq_ctx, cpu), per_cpu(softirq_ctx, cpu)); } @@ -155,11 +156,11 @@ Index: linux-3.4/arch/x86/kernel/irq_32.c bool handle_irq(unsigned irq, struct pt_regs *regs) { -Index: linux-3.4/arch/x86/kernel/irq_64.c -=================================================================== ---- linux-3.4.orig/arch/x86/kernel/irq_64.c -+++ linux-3.4/arch/x86/kernel/irq_64.c -@@ -88,7 +88,7 @@ bool handle_irq(unsigned irq, struct pt_ +diff --git a/arch/x86/kernel/irq_64.c b/arch/x86/kernel/irq_64.c +index d04d3ec..831f247 100644 +--- a/arch/x86/kernel/irq_64.c ++++ b/arch/x86/kernel/irq_64.c +@@ -88,7 +88,7 @@ bool handle_irq(unsigned irq, struct pt_regs *regs) return true; } @@ -173,10 +174,10 @@ Index: linux-3.4/arch/x86/kernel/irq_64.c local_irq_restore(flags); } +#endif -Index: linux-3.4/include/linux/interrupt.h -=================================================================== ---- linux-3.4.orig/include/linux/interrupt.h -+++ linux-3.4/include/linux/interrupt.h +diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h +index e53bd8b..5dde591 100644 +--- a/include/linux/interrupt.h ++++ b/include/linux/interrupt.h @@ -454,10 +454,9 @@ struct softirq_action void (*action)(struct softirq_action *); }; diff --git a/debian/patches/features/all/rt/softirq-make-fifo.patch b/debian/patches/features/all/rt/0166-softirq-make-fifo.patch.patch similarity index 83% rename from debian/patches/features/all/rt/softirq-make-fifo.patch rename to debian/patches/features/all/rt/0166-softirq-make-fifo.patch.patch index 9226544ef..2da606e35 100644 --- a/debian/patches/features/all/rt/softirq-make-fifo.patch +++ b/debian/patches/features/all/rt/0166-softirq-make-fifo.patch.patch @@ -1,16 +1,17 @@ -Subject: softirq-make-fifo.patch +From 5f3a09a14046fdafeb9e23a4bd66500c38478e09 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Thu, 21 Jul 2011 21:06:43 +0200 +Subject: [166/254] softirq-make-fifo.patch Signed-off-by: Thomas Gleixner --- kernel/softirq.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) -Index: linux-3.4/kernel/softirq.c -=================================================================== ---- linux-3.4.orig/kernel/softirq.c -+++ linux-3.4/kernel/softirq.c +diff --git a/kernel/softirq.c b/kernel/softirq.c +index d1fdb91..86561c0 100644 +--- a/kernel/softirq.c ++++ b/kernel/softirq.c @@ -372,6 +372,8 @@ asmlinkage void do_softirq(void) static inline void local_bh_disable_nort(void) { local_bh_disable(); } @@ -50,7 +51,7 @@ Index: linux-3.4/kernel/softirq.c set_current_state(TASK_INTERRUPTIBLE); while (!kthread_should_stop()) { -@@ -1002,6 +1020,7 @@ static int run_ksoftirqd(void * __bind_c +@@ -1002,6 +1020,7 @@ static int run_ksoftirqd(void * __bind_cpu) wait_to_die: preempt_enable(); diff --git a/debian/patches/features/all/rt/tasklet-rt-prevent-tasklets-from-going-into-infinite-spin-in-rt.patch b/debian/patches/features/all/rt/0167-tasklet-Prevent-tasklets-from-going-into-infinite-sp.patch similarity index 91% rename from debian/patches/features/all/rt/tasklet-rt-prevent-tasklets-from-going-into-infinite-spin-in-rt.patch rename to debian/patches/features/all/rt/0167-tasklet-Prevent-tasklets-from-going-into-infinite-sp.patch index 08ccce879..657ab5857 100644 --- a/debian/patches/features/all/rt/tasklet-rt-prevent-tasklets-from-going-into-infinite-spin-in-rt.patch +++ b/debian/patches/features/all/rt/0167-tasklet-Prevent-tasklets-from-going-into-infinite-sp.patch @@ -1,6 +1,8 @@ -Subject: tasklet: Prevent tasklets from going into infinite spin in RT +From 80fdbf497740a237e82e80d57b820efe8c3f42e9 Mon Sep 17 00:00:00 2001 From: Ingo Molnar -Date: Tue Nov 29 20:18:22 2011 -0500 +Date: Tue, 29 Nov 2011 20:18:22 -0500 +Subject: [167/254] tasklet: Prevent tasklets from going into infinite spin in + RT When CONFIG_PREEMPT_RT_FULL is enabled, tasklets run as threads, and spinlocks turn are mutexes. But this can cause issues with @@ -9,21 +11,21 @@ if a tasklets are disabled with tasklet_disable(), the tasklet count is increased. When a tasklet runs, it checks this counter and if it is set, it adds itself back on the softirq queue and returns. - + The problem arises in RT because ksoftirq will see that a softirq is ready to run (the tasklet softirq just re-armed itself), and will not sleep, but instead run the softirqs again. The tasklet softirq will still see that the count is non-zero and will not execute the tasklet and requeue itself on the softirq again, which will cause ksoftirqd to run it again and again and again. - + It gets worse because ksoftirqd runs as a real-time thread. If it preempted the task that disabled tasklets, and that task has migration disabled, or can't run for other reasons, the tasklet softirq will never run because the count will never be zero, and ksoftirqd will go into an infinite loop. As an RT task, it this becomes a big problem. - + This is a hack solution to have tasklet_disable stop tasklets, and when a tasklet runs, instead of requeueing the tasklet softirqd it delays it. When tasklet_enable() is called, and tasklets are @@ -31,21 +33,20 @@ waiting, then the tasklet_enable() will kick the tasklets to continue. This prevents the lock up from ksoftirq going into an infinite loop. [ rostedt@goodmis.org: ported to 3.0-rt ] - + Signed-off-by: Ingo Molnar Signed-off-by: Steven Rostedt Signed-off-by: Thomas Gleixner - --- - include/linux/interrupt.h | 39 ++++---- - kernel/softirq.c | 208 +++++++++++++++++++++++++++++++++------------- + include/linux/interrupt.h | 39 ++++----- + kernel/softirq.c | 208 ++++++++++++++++++++++++++++++++------------- 2 files changed, 170 insertions(+), 77 deletions(-) -Index: linux-3.4/include/linux/interrupt.h -=================================================================== ---- linux-3.4.orig/include/linux/interrupt.h -+++ linux-3.4/include/linux/interrupt.h -@@ -511,8 +511,9 @@ extern void __send_remote_softirq(struct +diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h +index 5dde591..be33625 100644 +--- a/include/linux/interrupt.h ++++ b/include/linux/interrupt.h +@@ -511,8 +511,9 @@ extern void __send_remote_softirq(struct call_single_data *cp, int cpu, to be executed on some cpu at least once after this. * If the tasklet is already scheduled, but its execution is still not started, it will be executed only once. @@ -57,7 +58,7 @@ Index: linux-3.4/include/linux/interrupt.h * Tasklet is strictly serialized wrt itself, but not wrt another tasklets. If client needs some intertask synchronization, he makes it with spinlocks. -@@ -537,27 +538,36 @@ struct tasklet_struct name = { NULL, 0, +@@ -537,27 +538,36 @@ struct tasklet_struct name = { NULL, 0, ATOMIC_INIT(1), func, data } enum { TASKLET_STATE_SCHED, /* Tasklet is scheduled for execution */ @@ -100,7 +101,7 @@ Index: linux-3.4/include/linux/interrupt.h #define tasklet_unlock_wait(t) do { } while (0) #define tasklet_unlock(t) do { } while (0) #endif -@@ -606,17 +616,8 @@ static inline void tasklet_disable(struc +@@ -606,17 +616,8 @@ static inline void tasklet_disable(struct tasklet_struct *t) smp_mb(); } @@ -120,10 +121,10 @@ Index: linux-3.4/include/linux/interrupt.h extern void tasklet_kill(struct tasklet_struct *t); extern void tasklet_kill_immediate(struct tasklet_struct *t, unsigned int cpu); -Index: linux-3.4/kernel/softirq.c -=================================================================== ---- linux-3.4.orig/kernel/softirq.c -+++ linux-3.4/kernel/softirq.c +diff --git a/kernel/softirq.c b/kernel/softirq.c +index 86561c0..aec7d69 100644 +--- a/kernel/softirq.c ++++ b/kernel/softirq.c @@ -21,6 +21,7 @@ #include #include @@ -182,7 +183,7 @@ Index: linux-3.4/kernel/softirq.c local_irq_restore(flags); } -@@ -675,10 +706,7 @@ void __tasklet_hi_schedule(struct taskle +@@ -675,10 +706,7 @@ void __tasklet_hi_schedule(struct tasklet_struct *t) unsigned long flags; local_irq_save(flags); @@ -340,7 +341,7 @@ Index: linux-3.4/kernel/softirq.c static void tasklet_hi_action(struct softirq_action *a) { struct tasklet_struct *list; -@@ -740,29 +837,7 @@ static void tasklet_hi_action(struct sof +@@ -740,29 +837,7 @@ static void tasklet_hi_action(struct softirq_action *a) __this_cpu_write(tasklet_hi_vec.tail, &__get_cpu_var(tasklet_hi_vec).head); local_irq_enable(); @@ -371,7 +372,7 @@ Index: linux-3.4/kernel/softirq.c } -@@ -785,7 +860,7 @@ void tasklet_kill(struct tasklet_struct +@@ -785,7 +860,7 @@ void tasklet_kill(struct tasklet_struct *t) while (test_and_set_bit(TASKLET_STATE_SCHED, &t->state)) { do { diff --git a/debian/patches/features/all/rt/irq-allow-disabling-of-softirq-processing-in-irq-thread-context.patch b/debian/patches/features/all/rt/0168-genirq-Allow-disabling-of-softirq-processing-in-irq-.patch similarity index 75% rename from debian/patches/features/all/rt/irq-allow-disabling-of-softirq-processing-in-irq-thread-context.patch rename to debian/patches/features/all/rt/0168-genirq-Allow-disabling-of-softirq-processing-in-irq-.patch index 2d1919832..56690b0c9 100644 --- a/debian/patches/features/all/rt/irq-allow-disabling-of-softirq-processing-in-irq-thread-context.patch +++ b/debian/patches/features/all/rt/0168-genirq-Allow-disabling-of-softirq-processing-in-irq-.patch @@ -1,6 +1,8 @@ -Subject: genirq: Allow disabling of softirq processing in irq thread context +From 550abf6c199c53911f835d7603af102eabaa8079 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Tue, 31 Jan 2012 13:01:27 +0100 +Subject: [168/254] genirq: Allow disabling of softirq processing in irq + thread context The processing of softirqs in irq thread context is a performance gain for the non-rt workloads of a system, but it's counterproductive for @@ -18,10 +20,10 @@ Cc: stable-rt@vger.kernel.org kernel/softirq.c | 7 +++++++ 5 files changed, 37 insertions(+), 2 deletions(-) -Index: linux-3.4/include/linux/interrupt.h -=================================================================== ---- linux-3.4.orig/include/linux/interrupt.h -+++ linux-3.4/include/linux/interrupt.h +diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h +index be33625..773dbc9 100644 +--- a/include/linux/interrupt.h ++++ b/include/linux/interrupt.h @@ -59,6 +59,7 @@ * IRQF_NO_THREAD - Interrupt cannot be threaded * IRQF_EARLY_RESUME - Resume IRQ early during syscore instead of at device @@ -38,11 +40,11 @@ Index: linux-3.4/include/linux/interrupt.h #define IRQF_TIMER (__IRQF_TIMER | IRQF_NO_SUSPEND | IRQF_NO_THREAD) -Index: linux-3.4/include/linux/irq.h -=================================================================== ---- linux-3.4.orig/include/linux/irq.h -+++ linux-3.4/include/linux/irq.h -@@ -73,6 +73,7 @@ typedef void (*irq_preflow_handler_t)(st +diff --git a/include/linux/irq.h b/include/linux/irq.h +index b27cfcf..496fa99 100644 +--- a/include/linux/irq.h ++++ b/include/linux/irq.h +@@ -73,6 +73,7 @@ typedef void (*irq_preflow_handler_t)(struct irq_data *data); * IRQ_MOVE_PCNTXT - Interrupt can be migrated from process context * IRQ_NESTED_TRHEAD - Interrupt nests into another thread * IRQ_PER_CPU_DEVID - Dev_id is a per-cpu variable @@ -66,11 +68,11 @@ Index: linux-3.4/include/linux/irq.h #define IRQ_NO_BALANCING_MASK (IRQ_PER_CPU | IRQ_NO_BALANCING) -Index: linux-3.4/kernel/irq/manage.c -=================================================================== ---- linux-3.4.orig/kernel/irq/manage.c -+++ linux-3.4/kernel/irq/manage.c -@@ -749,7 +749,15 @@ irq_forced_thread_fn(struct irq_desc *de +diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c +index 975b3a1..cd4eb0a 100644 +--- a/kernel/irq/manage.c ++++ b/kernel/irq/manage.c +@@ -749,7 +749,15 @@ irq_forced_thread_fn(struct irq_desc *desc, struct irqaction *action) local_bh_disable(); ret = action->thread_fn(action->irq, action->dev_id); irq_finalize_oneshot(desc, action); @@ -87,7 +89,7 @@ Index: linux-3.4/kernel/irq/manage.c return ret; } -@@ -1071,6 +1079,9 @@ __setup_irq(unsigned int irq, struct irq +@@ -1071,6 +1079,9 @@ __setup_irq(unsigned int irq, struct irq_desc *desc, struct irqaction *new) irqd_set(&desc->irq_data, IRQD_NO_BALANCING); } @@ -97,10 +99,10 @@ Index: linux-3.4/kernel/irq/manage.c /* Set default affinity mask once everything is setup */ setup_affinity(irq, desc, mask); -Index: linux-3.4/kernel/irq/settings.h -=================================================================== ---- linux-3.4.orig/kernel/irq/settings.h -+++ linux-3.4/kernel/irq/settings.h +diff --git a/kernel/irq/settings.h b/kernel/irq/settings.h +index 1162f10..0d2c381 100644 +--- a/kernel/irq/settings.h ++++ b/kernel/irq/settings.h @@ -14,6 +14,7 @@ enum { _IRQ_NO_BALANCING = IRQ_NO_BALANCING, _IRQ_NESTED_THREAD = IRQ_NESTED_THREAD, @@ -117,7 +119,7 @@ Index: linux-3.4/kernel/irq/settings.h #undef IRQF_MODIFY_MASK #define IRQF_MODIFY_MASK GOT_YOU_MORON -@@ -36,6 +38,16 @@ irq_settings_clr_and_set(struct irq_desc +@@ -36,6 +38,16 @@ irq_settings_clr_and_set(struct irq_desc *desc, u32 clr, u32 set) desc->status_use_accessors |= (set & _IRQF_MODIFY_MASK); } @@ -134,11 +136,11 @@ Index: linux-3.4/kernel/irq/settings.h static inline bool irq_settings_is_per_cpu(struct irq_desc *desc) { return desc->status_use_accessors & _IRQ_PER_CPU; -Index: linux-3.4/kernel/softirq.c -=================================================================== ---- linux-3.4.orig/kernel/softirq.c -+++ linux-3.4/kernel/softirq.c -@@ -425,6 +425,13 @@ void local_bh_enable_ip(unsigned long ip +diff --git a/kernel/softirq.c b/kernel/softirq.c +index aec7d69..35fb713 100644 +--- a/kernel/softirq.c ++++ b/kernel/softirq.c +@@ -425,6 +425,13 @@ void local_bh_enable_ip(unsigned long ip) } EXPORT_SYMBOL(local_bh_enable_ip); diff --git a/debian/patches/features/all/rt/local-vars-migrate-disable.patch b/debian/patches/features/all/rt/0169-local-vars-migrate-disable.patch.patch similarity index 81% rename from debian/patches/features/all/rt/local-vars-migrate-disable.patch rename to debian/patches/features/all/rt/0169-local-vars-migrate-disable.patch.patch index 92c68b80c..c0788aae1 100644 --- a/debian/patches/features/all/rt/local-vars-migrate-disable.patch +++ b/debian/patches/features/all/rt/0169-local-vars-migrate-disable.patch.patch @@ -1,16 +1,17 @@ -Subject: local-vars-migrate-disable.patch +From e00e0254aa4ab633017de029ae89def84898e920 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Tue, 28 Jun 2011 20:42:16 +0200 +Subject: [169/254] local-vars-migrate-disable.patch Signed-off-by: Thomas Gleixner --- include/linux/percpu.h | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) -Index: linux-3.4/include/linux/percpu.h -=================================================================== ---- linux-3.4.orig/include/linux/percpu.h -+++ linux-3.4/include/linux/percpu.h +diff --git a/include/linux/percpu.h b/include/linux/percpu.h +index 3d13ce0..5a56f183 100644 +--- a/include/linux/percpu.h ++++ b/include/linux/percpu.h @@ -48,10 +48,30 @@ preempt_enable(); \ } while (0) diff --git a/debian/patches/features/all/rt/md-raid5-percpu-handling-rt-aware.patch b/debian/patches/features/all/rt/0170-md-raid5-Make-raid5_percpu-handling-RT-aware.patch similarity index 70% rename from debian/patches/features/all/rt/md-raid5-percpu-handling-rt-aware.patch rename to debian/patches/features/all/rt/0170-md-raid5-Make-raid5_percpu-handling-RT-aware.patch index c1ee398a7..6674e1a15 100644 --- a/debian/patches/features/all/rt/md-raid5-percpu-handling-rt-aware.patch +++ b/debian/patches/features/all/rt/0170-md-raid5-Make-raid5_percpu-handling-RT-aware.patch @@ -1,6 +1,7 @@ +From ab929aea2a3848283a910c63d077ae954a0b5ca7 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Tue, 6 Apr 2010 16:51:31 +0200 -Subject: md: raid5: Make raid5_percpu handling RT aware +Subject: [170/254] md: raid5: Make raid5_percpu handling RT aware __raid_run_ops() disables preemption with get_cpu() around the access to the raid5_percpu variables. That causes scheduling while atomic @@ -12,17 +13,16 @@ preemptible. Reported-by: Udo van den Heuvel Signed-off-by: Thomas Gleixner Tested-by: Udo van den Heuvel - --- drivers/md/raid5.c | 7 +++++-- drivers/md/raid5.h | 1 + 2 files changed, 6 insertions(+), 2 deletions(-) -Index: linux-3.4/drivers/md/raid5.c -=================================================================== ---- linux-3.4.orig/drivers/md/raid5.c -+++ linux-3.4/drivers/md/raid5.c -@@ -1309,8 +1309,9 @@ static void __raid_run_ops(struct stripe +diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c +index f351422..02e2ea3 100644 +--- a/drivers/md/raid5.c ++++ b/drivers/md/raid5.c +@@ -1309,8 +1309,9 @@ static void __raid_run_ops(struct stripe_head *sh, unsigned long ops_request) struct raid5_percpu *percpu; unsigned long cpu; @@ -33,7 +33,7 @@ Index: linux-3.4/drivers/md/raid5.c if (test_bit(STRIPE_OP_BIOFILL, &ops_request)) { ops_run_biofill(sh); overlap_clear++; -@@ -1362,7 +1363,8 @@ static void __raid_run_ops(struct stripe +@@ -1362,7 +1363,8 @@ static void __raid_run_ops(struct stripe_head *sh, unsigned long ops_request) if (test_and_clear_bit(R5_Overlap, &dev->flags)) wake_up(&sh->raid_conf->wait_for_overlap); } @@ -43,7 +43,7 @@ Index: linux-3.4/drivers/md/raid5.c } #ifdef CONFIG_MULTICORE_RAID456 -@@ -4758,6 +4760,7 @@ static int raid5_alloc_percpu(struct r5c +@@ -4758,6 +4760,7 @@ static int raid5_alloc_percpu(struct r5conf *conf) break; } per_cpu_ptr(conf->percpu, cpu)->scribble = scribble; @@ -51,10 +51,10 @@ Index: linux-3.4/drivers/md/raid5.c } #ifdef CONFIG_HOTPLUG_CPU conf->cpu_notify.notifier_call = raid456_cpu_notify; -Index: linux-3.4/drivers/md/raid5.h -=================================================================== ---- linux-3.4.orig/drivers/md/raid5.h -+++ linux-3.4/drivers/md/raid5.h +diff --git a/drivers/md/raid5.h b/drivers/md/raid5.h +index 8d8e139..a784311 100644 +--- a/drivers/md/raid5.h ++++ b/drivers/md/raid5.h @@ -417,6 +417,7 @@ struct r5conf { int recovery_disabled; /* per cpu variables */ diff --git a/debian/patches/features/all/rt/rtmutex-lock-killable.patch b/debian/patches/features/all/rt/0171-rtmutex-lock-killable.patch.patch similarity index 79% rename from debian/patches/features/all/rt/rtmutex-lock-killable.patch rename to debian/patches/features/all/rt/0171-rtmutex-lock-killable.patch.patch index 29e07a9a9..0966d99ad 100644 --- a/debian/patches/features/all/rt/rtmutex-lock-killable.patch +++ b/debian/patches/features/all/rt/0171-rtmutex-lock-killable.patch.patch @@ -1,6 +1,7 @@ -Subject: rtmutex-lock-killable.patch +From fab80d09b52a408e9a75a46d1337411ebe5d3d3f Mon Sep 17 00:00:00 2001 From: Thomas Gleixner -Date: Thu, 09 Jun 2011 11:43:52 +0200 +Date: Thu, 9 Jun 2011 11:43:52 +0200 +Subject: [171/254] rtmutex-lock-killable.patch Signed-off-by: Thomas Gleixner --- @@ -8,11 +9,11 @@ Signed-off-by: Thomas Gleixner kernel/rtmutex.c | 33 +++++++++++++++++++++++++++------ 2 files changed, 28 insertions(+), 6 deletions(-) -Index: linux-3.4/include/linux/rtmutex.h -=================================================================== ---- linux-3.4.orig/include/linux/rtmutex.h -+++ linux-3.4/include/linux/rtmutex.h -@@ -90,6 +90,7 @@ extern void rt_mutex_destroy(struct rt_m +diff --git a/include/linux/rtmutex.h b/include/linux/rtmutex.h +index de17134..3561eb2 100644 +--- a/include/linux/rtmutex.h ++++ b/include/linux/rtmutex.h +@@ -90,6 +90,7 @@ extern void rt_mutex_destroy(struct rt_mutex *lock); extern void rt_mutex_lock(struct rt_mutex *lock); extern int rt_mutex_lock_interruptible(struct rt_mutex *lock, int detect_deadlock); @@ -20,10 +21,10 @@ Index: linux-3.4/include/linux/rtmutex.h extern int rt_mutex_timed_lock(struct rt_mutex *lock, struct hrtimer_sleeper *timeout, int detect_deadlock); -Index: linux-3.4/kernel/rtmutex.c -=================================================================== ---- linux-3.4.orig/kernel/rtmutex.c -+++ linux-3.4/kernel/rtmutex.c +diff --git a/kernel/rtmutex.c b/kernel/rtmutex.c +index a242e69..f641ce9 100644 +--- a/kernel/rtmutex.c ++++ b/kernel/rtmutex.c @@ -791,12 +791,12 @@ EXPORT_SYMBOL_GPL(rt_mutex_lock); /** * rt_mutex_lock_interruptible - lock a rt_mutex interruptible @@ -40,7 +41,7 @@ Index: linux-3.4/kernel/rtmutex.c * -EDEADLK when the lock would deadlock (when deadlock detection is on) */ int __sched rt_mutex_lock_interruptible(struct rt_mutex *lock, -@@ -810,17 +810,38 @@ int __sched rt_mutex_lock_interruptible( +@@ -810,17 +810,38 @@ int __sched rt_mutex_lock_interruptible(struct rt_mutex *lock, EXPORT_SYMBOL_GPL(rt_mutex_lock_interruptible); /** diff --git a/debian/patches/features/all/rt/rtmutex-futex-prepare-rt.patch b/debian/patches/features/all/rt/0172-rtmutex-futex-prepare-rt.patch.patch similarity index 81% rename from debian/patches/features/all/rt/rtmutex-futex-prepare-rt.patch rename to debian/patches/features/all/rt/0172-rtmutex-futex-prepare-rt.patch.patch index 564f395c5..85df3b8ec 100644 --- a/debian/patches/features/all/rt/rtmutex-futex-prepare-rt.patch +++ b/debian/patches/features/all/rt/0172-rtmutex-futex-prepare-rt.patch.patch @@ -1,18 +1,19 @@ -Subject: rtmutex-futex-prepare-rt.patch +From 77e35c145d45b481df3b67d629f008e768b385a5 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 10 Jun 2011 11:04:15 +0200 +Subject: [172/254] rtmutex-futex-prepare-rt.patch Signed-off-by: Thomas Gleixner --- - kernel/futex.c | 77 ++++++++++++++++++++++++++++++++++++++---------- + kernel/futex.c | 77 ++++++++++++++++++++++++++++++++++++++--------- kernel/rtmutex.c | 31 ++++++++++++++++--- - kernel/rtmutex_common.h | 2 + + kernel/rtmutex_common.h | 2 ++ 3 files changed, 91 insertions(+), 19 deletions(-) -Index: linux-3.4/kernel/futex.c -=================================================================== ---- linux-3.4.orig/kernel/futex.c -+++ linux-3.4/kernel/futex.c +diff --git a/kernel/futex.c b/kernel/futex.c +index e2b0fb9..9decb1c 100644 +--- a/kernel/futex.c ++++ b/kernel/futex.c @@ -1423,6 +1423,16 @@ retry_private: requeue_pi_wake_futex(this, &key2, hb2); drop_count++; @@ -30,7 +31,7 @@ Index: linux-3.4/kernel/futex.c } else if (ret) { /* -EDEADLK */ this->pi_state = NULL; -@@ -2267,7 +2277,7 @@ static int futex_wait_requeue_pi(u32 __u +@@ -2267,7 +2277,7 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags, struct hrtimer_sleeper timeout, *to = NULL; struct rt_mutex_waiter rt_waiter; struct rt_mutex *pi_mutex = NULL; @@ -39,7 +40,7 @@ Index: linux-3.4/kernel/futex.c union futex_key key2 = FUTEX_KEY_INIT; struct futex_q q = futex_q_init; int res, ret; -@@ -2311,20 +2321,55 @@ static int futex_wait_requeue_pi(u32 __u +@@ -2311,20 +2321,55 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags, /* Queue the futex_q, drop the hb lock, wait for wakeup. */ futex_wait_queue_me(hb, &q, to); @@ -106,7 +107,7 @@ Index: linux-3.4/kernel/futex.c /* Check if the requeue code acquired the second futex for us. */ if (!q.rt_waiter) { -@@ -2333,9 +2378,10 @@ static int futex_wait_requeue_pi(u32 __u +@@ -2333,9 +2378,10 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags, * did a lock-steal - fix up the PI-state in that case. */ if (q.pi_state && (q.pi_state->owner != current)) { @@ -119,7 +120,7 @@ Index: linux-3.4/kernel/futex.c } } else { /* -@@ -2348,7 +2394,8 @@ static int futex_wait_requeue_pi(u32 __u +@@ -2348,7 +2394,8 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags, ret = rt_mutex_finish_proxy_lock(pi_mutex, to, &rt_waiter, 1); debug_rt_mutex_free_waiter(&rt_waiter); @@ -129,11 +130,11 @@ Index: linux-3.4/kernel/futex.c /* * Fixup the pi_state owner and possibly acquire the lock if we * haven't already. -Index: linux-3.4/kernel/rtmutex.c -=================================================================== ---- linux-3.4.orig/kernel/rtmutex.c -+++ linux-3.4/kernel/rtmutex.c -@@ -67,6 +67,11 @@ static void fixup_rt_mutex_waiters(struc +diff --git a/kernel/rtmutex.c b/kernel/rtmutex.c +index f641ce9..1e98e24 100644 +--- a/kernel/rtmutex.c ++++ b/kernel/rtmutex.c +@@ -67,6 +67,11 @@ static void fixup_rt_mutex_waiters(struct rt_mutex *lock) clear_rt_mutex_waiters(lock); } @@ -145,7 +146,7 @@ Index: linux-3.4/kernel/rtmutex.c /* * We can speed up the acquire/release, if the architecture * supports cmpxchg and if there's no debugging state to be set up -@@ -196,7 +201,7 @@ static int rt_mutex_adjust_prio_chain(st +@@ -196,7 +201,7 @@ static int rt_mutex_adjust_prio_chain(struct task_struct *task, * reached or the state of the chain has changed while we * dropped the locks. */ @@ -154,7 +155,7 @@ Index: linux-3.4/kernel/rtmutex.c goto out_unlock_pi; /* -@@ -399,6 +404,23 @@ static int task_blocks_on_rt_mutex(struc +@@ -399,6 +404,23 @@ static int task_blocks_on_rt_mutex(struct rt_mutex *lock, int chain_walk = 0, res; raw_spin_lock_irqsave(&task->pi_lock, flags); @@ -178,7 +179,7 @@ Index: linux-3.4/kernel/rtmutex.c __rt_mutex_adjust_prio(task); waiter->task = task; waiter->lock = lock; -@@ -423,7 +445,7 @@ static int task_blocks_on_rt_mutex(struc +@@ -423,7 +445,7 @@ static int task_blocks_on_rt_mutex(struct rt_mutex *lock, plist_add(&waiter->pi_list_entry, &owner->pi_waiters); __rt_mutex_adjust_prio(owner); @@ -187,7 +188,7 @@ Index: linux-3.4/kernel/rtmutex.c chain_walk = 1; raw_spin_unlock_irqrestore(&owner->pi_lock, flags); } -@@ -517,7 +539,7 @@ static void remove_waiter(struct rt_mute +@@ -517,7 +539,7 @@ static void remove_waiter(struct rt_mutex *lock, } __rt_mutex_adjust_prio(owner); @@ -196,7 +197,7 @@ Index: linux-3.4/kernel/rtmutex.c chain_walk = 1; raw_spin_unlock_irqrestore(&owner->pi_lock, flags); -@@ -551,7 +573,8 @@ void rt_mutex_adjust_pi(struct task_stru +@@ -551,7 +573,8 @@ void rt_mutex_adjust_pi(struct task_struct *task) raw_spin_lock_irqsave(&task->pi_lock, flags); waiter = task->pi_blocked_on; @@ -206,11 +207,11 @@ Index: linux-3.4/kernel/rtmutex.c raw_spin_unlock_irqrestore(&task->pi_lock, flags); return; } -Index: linux-3.4/kernel/rtmutex_common.h -=================================================================== ---- linux-3.4.orig/kernel/rtmutex_common.h -+++ linux-3.4/kernel/rtmutex_common.h -@@ -103,6 +103,8 @@ static inline struct task_struct *rt_mut +diff --git a/kernel/rtmutex_common.h b/kernel/rtmutex_common.h +index 53a66c8..b43d832 100644 +--- a/kernel/rtmutex_common.h ++++ b/kernel/rtmutex_common.h +@@ -103,6 +103,8 @@ static inline struct task_struct *rt_mutex_owner(struct rt_mutex *lock) /* * PI-futex support (proxy locking functions, etc.): */ diff --git a/debian/patches/features/all/rt/futex-requeue-pi-fix.patch b/debian/patches/features/all/rt/0173-futex-Fix-bug-on-when-a-requeued-RT-task-times-out.patch similarity index 82% rename from debian/patches/features/all/rt/futex-requeue-pi-fix.patch rename to debian/patches/features/all/rt/0173-futex-Fix-bug-on-when-a-requeued-RT-task-times-out.patch index cc22b0ca8..2c377838c 100644 --- a/debian/patches/features/all/rt/futex-requeue-pi-fix.patch +++ b/debian/patches/features/all/rt/0173-futex-Fix-bug-on-when-a-requeued-RT-task-times-out.patch @@ -1,11 +1,12 @@ -Subject: futex: Fix bug on when a requeued RT task times out +From 9235c127c85c87728a27589b128ec612bcf10f7f Mon Sep 17 00:00:00 2001 From: Steven Rostedt +Date: Thu, 7 Jun 2012 07:47:03 -0400 +Subject: [173/254] futex: Fix bug on when a requeued RT task times out Requeue with timeout causes a bug with PREEMPT_RT_FULL. The bug comes from a timed out condition. - TASK 1 TASK 2 ------ ------ futex_wait_requeue_pi() @@ -15,13 +16,12 @@ The bug comes from a timed out condition. double_lock_hb(); raw_spin_lock(pi_lock); - if (current->pi_blocked_on) { + if (current->pi_blocked_on) { } else { current->pi_blocked_on = PI_WAKE_INPROGRESS; run_spin_unlock(pi_lock); spin_lock(hb->lock); <-- blocked! - plist_for_each_entry_safe(this) { rt_mutex_start_proxy_lock(); task_blocks_on_rt_mutex(); @@ -47,18 +47,16 @@ appropriately. Cc: stable-rt@vger.kernel.org Signed-off-by: Steven Rostedt Signed-off-by: Thomas Gleixner - - --- kernel/rtmutex.c | 32 +++++++++++++++++++++++++++++++- kernel/rtmutex_common.h | 1 + 2 files changed, 32 insertions(+), 1 deletion(-) -Index: linux-3.4/kernel/rtmutex.c -=================================================================== ---- linux-3.4.orig/kernel/rtmutex.c -+++ linux-3.4/kernel/rtmutex.c -@@ -69,7 +69,8 @@ static void fixup_rt_mutex_waiters(struc +diff --git a/kernel/rtmutex.c b/kernel/rtmutex.c +index 1e98e24..7a96797 100644 +--- a/kernel/rtmutex.c ++++ b/kernel/rtmutex.c +@@ -69,7 +69,8 @@ static void fixup_rt_mutex_waiters(struct rt_mutex *lock) static int rt_mutex_real_waiter(struct rt_mutex_waiter *waiter) { @@ -68,7 +66,7 @@ Index: linux-3.4/kernel/rtmutex.c } /* -@@ -1002,6 +1003,35 @@ int rt_mutex_start_proxy_lock(struct rt_ +@@ -1002,6 +1003,35 @@ int rt_mutex_start_proxy_lock(struct rt_mutex *lock, return 1; } @@ -104,11 +102,11 @@ Index: linux-3.4/kernel/rtmutex.c ret = task_blocks_on_rt_mutex(lock, waiter, task, detect_deadlock); if (ret && !rt_mutex_owner(lock)) { -Index: linux-3.4/kernel/rtmutex_common.h -=================================================================== ---- linux-3.4.orig/kernel/rtmutex_common.h -+++ linux-3.4/kernel/rtmutex_common.h -@@ -104,6 +104,7 @@ static inline struct task_struct *rt_mut +diff --git a/kernel/rtmutex_common.h b/kernel/rtmutex_common.h +index b43d832..47290ec 100644 +--- a/kernel/rtmutex_common.h ++++ b/kernel/rtmutex_common.h +@@ -104,6 +104,7 @@ static inline struct task_struct *rt_mutex_owner(struct rt_mutex *lock) * PI-futex support (proxy locking functions, etc.): */ #define PI_WAKEUP_INPROGRESS ((struct rt_mutex_waiter *) 1) diff --git a/debian/patches/features/all/rt/rt-mutex-add-sleeping-spinlocks-support.patch b/debian/patches/features/all/rt/0174-rt-mutex-add-sleeping-spinlocks-support.patch.patch similarity index 88% rename from debian/patches/features/all/rt/rt-mutex-add-sleeping-spinlocks-support.patch rename to debian/patches/features/all/rt/0174-rt-mutex-add-sleeping-spinlocks-support.patch.patch index 729a51ad5..cab82a1df 100644 --- a/debian/patches/features/all/rt/rt-mutex-add-sleeping-spinlocks-support.patch +++ b/debian/patches/features/all/rt/0174-rt-mutex-add-sleeping-spinlocks-support.patch.patch @@ -1,19 +1,20 @@ -Subject: rt-mutex-add-sleeping-spinlocks-support.patch +From 6c3205eb334fd7b14b200518008d480fac0869ca Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 10 Jun 2011 11:21:25 +0200 +Subject: [174/254] rt-mutex-add-sleeping-spinlocks-support.patch Signed-off-by: Thomas Gleixner --- - include/linux/rtmutex.h | 35 +++- - kernel/futex.c | 3 - kernel/rtmutex.c | 384 +++++++++++++++++++++++++++++++++++++++++++++--- - kernel/rtmutex_common.h | 9 + + include/linux/rtmutex.h | 35 ++++- + kernel/futex.c | 3 +- + kernel/rtmutex.c | 384 ++++++++++++++++++++++++++++++++++++++++++++--- + kernel/rtmutex_common.h | 9 ++ 4 files changed, 404 insertions(+), 27 deletions(-) -Index: linux-3.4/include/linux/rtmutex.h -=================================================================== ---- linux-3.4.orig/include/linux/rtmutex.h -+++ linux-3.4/include/linux/rtmutex.h +diff --git a/include/linux/rtmutex.h b/include/linux/rtmutex.h +index 3561eb2..928d93e 100644 +--- a/include/linux/rtmutex.h ++++ b/include/linux/rtmutex.h @@ -29,9 +29,10 @@ struct rt_mutex { raw_spinlock_t wait_lock; struct plist_head wait_list; @@ -72,11 +73,11 @@ Index: linux-3.4/include/linux/rtmutex.h #define DEFINE_RT_MUTEX(mutexname) \ struct rt_mutex mutexname = __RT_MUTEX_INITIALIZER(mutexname) -Index: linux-3.4/kernel/futex.c -=================================================================== ---- linux-3.4.orig/kernel/futex.c -+++ linux-3.4/kernel/futex.c -@@ -2299,8 +2299,7 @@ static int futex_wait_requeue_pi(u32 __u +diff --git a/kernel/futex.c b/kernel/futex.c +index 9decb1c..3ee96ed 100644 +--- a/kernel/futex.c ++++ b/kernel/futex.c +@@ -2299,8 +2299,7 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags, * The waiter is allocated on our stack, manipulated by the requeue * code while we sleep on uaddr. */ @@ -86,10 +87,10 @@ Index: linux-3.4/kernel/futex.c ret = get_futex_key(uaddr2, flags & FLAGS_SHARED, &key2, VERIFY_WRITE); if (unlikely(ret != 0)) -Index: linux-3.4/kernel/rtmutex.c -=================================================================== ---- linux-3.4.orig/kernel/rtmutex.c -+++ linux-3.4/kernel/rtmutex.c +diff --git a/kernel/rtmutex.c b/kernel/rtmutex.c +index 7a96797..f9baaae 100644 +--- a/kernel/rtmutex.c ++++ b/kernel/rtmutex.c @@ -8,6 +8,12 @@ * Copyright (C) 2005 Kihon Technologies Inc., Steven Rostedt * Copyright (C) 2006 Esben Nielsen @@ -103,7 +104,7 @@ Index: linux-3.4/kernel/rtmutex.c * See Documentation/rt-mutex-design.txt for details. */ #include -@@ -96,6 +102,12 @@ static inline void mark_rt_mutex_waiters +@@ -96,6 +102,12 @@ static inline void mark_rt_mutex_waiters(struct rt_mutex *lock) } #endif @@ -116,7 +117,7 @@ Index: linux-3.4/kernel/rtmutex.c /* * Calculate task priority from the waiter list priority * -@@ -142,6 +154,14 @@ static void rt_mutex_adjust_prio(struct +@@ -142,6 +154,14 @@ static void rt_mutex_adjust_prio(struct task_struct *task) raw_spin_unlock_irqrestore(&task->pi_lock, flags); } @@ -131,7 +132,7 @@ Index: linux-3.4/kernel/rtmutex.c /* * Max number of times we'll walk the boosting chain: */ -@@ -253,13 +273,15 @@ static int rt_mutex_adjust_prio_chain(st +@@ -253,13 +273,15 @@ static int rt_mutex_adjust_prio_chain(struct task_struct *task, /* Release the task */ raw_spin_unlock_irqrestore(&task->pi_lock, flags); if (!rt_mutex_owner(lock)) { @@ -150,7 +151,7 @@ Index: linux-3.4/kernel/rtmutex.c raw_spin_unlock(&lock->wait_lock); goto out_put_task; } -@@ -304,6 +326,25 @@ static int rt_mutex_adjust_prio_chain(st +@@ -304,6 +326,25 @@ static int rt_mutex_adjust_prio_chain(struct task_struct *task, return ret; } @@ -176,7 +177,7 @@ Index: linux-3.4/kernel/rtmutex.c /* * Try to take an rt-mutex * -@@ -313,8 +354,9 @@ static int rt_mutex_adjust_prio_chain(st +@@ -313,8 +354,9 @@ static int rt_mutex_adjust_prio_chain(struct task_struct *task, * @task: the task which wants to acquire the lock * @waiter: the waiter that is queued to the lock's wait list. (could be NULL) */ @@ -188,7 +189,7 @@ Index: linux-3.4/kernel/rtmutex.c { /* * We have to be careful here if the atomic speedups are -@@ -347,12 +389,14 @@ static int try_to_take_rt_mutex(struct r +@@ -347,12 +389,14 @@ static int try_to_take_rt_mutex(struct rt_mutex *lock, struct task_struct *task, * 3) it is top waiter */ if (rt_mutex_has_waiters(lock)) { @@ -207,7 +208,7 @@ Index: linux-3.4/kernel/rtmutex.c if (waiter || rt_mutex_has_waiters(lock)) { unsigned long flags; struct rt_mutex_waiter *top; -@@ -377,7 +421,6 @@ static int try_to_take_rt_mutex(struct r +@@ -377,7 +421,6 @@ static int try_to_take_rt_mutex(struct rt_mutex *lock, struct task_struct *task, raw_spin_unlock_irqrestore(&task->pi_lock, flags); } @@ -215,7 +216,7 @@ Index: linux-3.4/kernel/rtmutex.c debug_rt_mutex_lock(lock); rt_mutex_set_owner(lock, task); -@@ -387,6 +430,13 @@ static int try_to_take_rt_mutex(struct r +@@ -387,6 +430,13 @@ static int try_to_take_rt_mutex(struct rt_mutex *lock, struct task_struct *task, return 1; } @@ -229,7 +230,7 @@ Index: linux-3.4/kernel/rtmutex.c /* * Task blocks on lock. * -@@ -501,7 +551,7 @@ static void wakeup_next_waiter(struct rt +@@ -501,7 +551,7 @@ static void wakeup_next_waiter(struct rt_mutex *lock) raw_spin_unlock_irqrestore(¤t->pi_lock, flags); @@ -238,7 +239,7 @@ Index: linux-3.4/kernel/rtmutex.c } /* -@@ -580,18 +630,315 @@ void rt_mutex_adjust_pi(struct task_stru +@@ -580,18 +630,315 @@ void rt_mutex_adjust_pi(struct task_struct *task) return; } @@ -557,7 +558,7 @@ Index: linux-3.4/kernel/rtmutex.c * @timeout: the pre-initialized and started timer, or NULL for none * @waiter: the pre-initialized rt_mutex_waiter * -@@ -647,9 +994,10 @@ rt_mutex_slowlock(struct rt_mutex *lock, +@@ -647,9 +994,10 @@ rt_mutex_slowlock(struct rt_mutex *lock, int state, struct rt_mutex_waiter waiter; int ret = 0; @@ -569,7 +570,7 @@ Index: linux-3.4/kernel/rtmutex.c /* Try to acquire the lock again: */ if (try_to_take_rt_mutex(lock, current, NULL)) { -@@ -702,6 +1050,7 @@ rt_mutex_slowtrylock(struct rt_mutex *lo +@@ -702,6 +1050,7 @@ rt_mutex_slowtrylock(struct rt_mutex *lock) int ret = 0; raw_spin_lock(&lock->wait_lock); @@ -600,10 +601,10 @@ Index: linux-3.4/kernel/rtmutex.c debug_rt_mutex_proxy_lock(lock, proxy_owner); rt_mutex_set_owner(lock, proxy_owner); rt_mutex_deadlock_account_lock(lock, proxy_owner); -Index: linux-3.4/kernel/rtmutex_common.h -=================================================================== ---- linux-3.4.orig/kernel/rtmutex_common.h -+++ linux-3.4/kernel/rtmutex_common.h +diff --git a/kernel/rtmutex_common.h b/kernel/rtmutex_common.h +index 47290ec..6ec3dc1 100644 +--- a/kernel/rtmutex_common.h ++++ b/kernel/rtmutex_common.h @@ -49,6 +49,7 @@ struct rt_mutex_waiter { struct plist_node pi_list_entry; struct task_struct *task; @@ -612,7 +613,7 @@ Index: linux-3.4/kernel/rtmutex_common.h #ifdef CONFIG_DEBUG_RT_MUTEXES unsigned long ip; struct pid *deadlock_task_pid; -@@ -126,4 +127,12 @@ extern int rt_mutex_finish_proxy_lock(st +@@ -126,4 +127,12 @@ extern int rt_mutex_finish_proxy_lock(struct rt_mutex *lock, # include "rtmutex.h" #endif diff --git a/debian/patches/features/all/rt/spinlock-types-separate-raw.patch b/debian/patches/features/all/rt/0175-spinlock-types-separate-raw.patch.patch similarity index 81% rename from debian/patches/features/all/rt/spinlock-types-separate-raw.patch rename to debian/patches/features/all/rt/0175-spinlock-types-separate-raw.patch.patch index e7ebba1d5..621cdbacf 100644 --- a/debian/patches/features/all/rt/spinlock-types-separate-raw.patch +++ b/debian/patches/features/all/rt/0175-spinlock-types-separate-raw.patch.patch @@ -1,19 +1,22 @@ -Subject: spinlock-types-separate-raw.patch +From 28775871f9cd9187f17ac3367a5cb1fc67df7f22 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 29 Jun 2011 19:34:01 +0200 +Subject: [175/254] spinlock-types-separate-raw.patch Signed-off-by: Thomas Gleixner --- - include/linux/rwlock_types.h | 4 + - include/linux/spinlock_types.h | 74 ------------------------------------ + include/linux/rwlock_types.h | 4 ++ + include/linux/spinlock_types.h | 74 +---------------------------------- include/linux/spinlock_types_nort.h | 33 ++++++++++++++++ - include/linux/spinlock_types_raw.h | 56 +++++++++++++++++++++++++++ + include/linux/spinlock_types_raw.h | 56 ++++++++++++++++++++++++++ 4 files changed, 95 insertions(+), 72 deletions(-) + create mode 100644 include/linux/spinlock_types_nort.h + create mode 100644 include/linux/spinlock_types_raw.h -Index: linux-3.4/include/linux/rwlock_types.h -=================================================================== ---- linux-3.4.orig/include/linux/rwlock_types.h -+++ linux-3.4/include/linux/rwlock_types.h +diff --git a/include/linux/rwlock_types.h b/include/linux/rwlock_types.h +index cc0072e..5317cd9 100644 +--- a/include/linux/rwlock_types.h ++++ b/include/linux/rwlock_types.h @@ -1,6 +1,10 @@ #ifndef __LINUX_RWLOCK_TYPES_H #define __LINUX_RWLOCK_TYPES_H @@ -25,10 +28,10 @@ Index: linux-3.4/include/linux/rwlock_types.h /* * include/linux/rwlock_types.h - generic rwlock type definitions * and initializers -Index: linux-3.4/include/linux/spinlock_types.h -=================================================================== ---- linux-3.4.orig/include/linux/spinlock_types.h -+++ linux-3.4/include/linux/spinlock_types.h +diff --git a/include/linux/spinlock_types.h b/include/linux/spinlock_types.h +index 73548eb..5c8664d 100644 +--- a/include/linux/spinlock_types.h ++++ b/include/linux/spinlock_types.h @@ -9,79 +9,9 @@ * Released under the General Public License (GPL). */ @@ -111,10 +114,11 @@ Index: linux-3.4/include/linux/spinlock_types.h #include -Index: linux-3.4/include/linux/spinlock_types_nort.h -=================================================================== +diff --git a/include/linux/spinlock_types_nort.h b/include/linux/spinlock_types_nort.h +new file mode 100644 +index 0000000..f1dac1f --- /dev/null -+++ linux-3.4/include/linux/spinlock_types_nort.h ++++ b/include/linux/spinlock_types_nort.h @@ -0,0 +1,33 @@ +#ifndef __LINUX_SPINLOCK_TYPES_NORT_H +#define __LINUX_SPINLOCK_TYPES_NORT_H @@ -149,10 +153,11 @@ Index: linux-3.4/include/linux/spinlock_types_nort.h +#define DEFINE_SPINLOCK(x) spinlock_t x = __SPIN_LOCK_UNLOCKED(x) + +#endif -Index: linux-3.4/include/linux/spinlock_types_raw.h -=================================================================== +diff --git a/include/linux/spinlock_types_raw.h b/include/linux/spinlock_types_raw.h +new file mode 100644 +index 0000000..edffc4d --- /dev/null -+++ linux-3.4/include/linux/spinlock_types_raw.h ++++ b/include/linux/spinlock_types_raw.h @@ -0,0 +1,56 @@ +#ifndef __LINUX_SPINLOCK_TYPES_RAW_H +#define __LINUX_SPINLOCK_TYPES_RAW_H diff --git a/debian/patches/features/all/rt/rtmutex-avoid-include-hell.patch b/debian/patches/features/all/rt/0176-rtmutex-avoid-include-hell.patch.patch similarity index 60% rename from debian/patches/features/all/rt/rtmutex-avoid-include-hell.patch rename to debian/patches/features/all/rt/0176-rtmutex-avoid-include-hell.patch.patch index 6a06ee7fc..9c4fee78e 100644 --- a/debian/patches/features/all/rt/rtmutex-avoid-include-hell.patch +++ b/debian/patches/features/all/rt/0176-rtmutex-avoid-include-hell.patch.patch @@ -1,16 +1,17 @@ -Subject: rtmutex-avoid-include-hell.patch +From be6b60dc3cc89b72ae3f4b818021609c5632af06 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 29 Jun 2011 20:06:39 +0200 +Subject: [176/254] rtmutex-avoid-include-hell.patch Signed-off-by: Thomas Gleixner --- include/linux/rtmutex.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-3.4/include/linux/rtmutex.h -=================================================================== ---- linux-3.4.orig/include/linux/rtmutex.h -+++ linux-3.4/include/linux/rtmutex.h +diff --git a/include/linux/rtmutex.h b/include/linux/rtmutex.h +index 928d93e..5ebd0bb 100644 +--- a/include/linux/rtmutex.h ++++ b/include/linux/rtmutex.h @@ -14,7 +14,7 @@ #include diff --git a/debian/patches/features/all/rt/rt-add-rt-spinlock-to-headers.patch b/debian/patches/features/all/rt/0177-rt-add-rt-spinlocks.patch.patch similarity index 77% rename from debian/patches/features/all/rt/rt-add-rt-spinlock-to-headers.patch rename to debian/patches/features/all/rt/0177-rt-add-rt-spinlocks.patch.patch index b15a24440..7046ad278 100644 --- a/debian/patches/features/all/rt/rt-add-rt-spinlock-to-headers.patch +++ b/debian/patches/features/all/rt/0177-rt-add-rt-spinlocks.patch.patch @@ -1,18 +1,22 @@ -Subject: rt-add-rt-spinlocks.patch +From 9a2678a6be47f1f5de58701990c1235e8318c2c1 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 29 Jun 2011 19:43:35 +0200 +Subject: [177/254] rt-add-rt-spinlocks.patch Signed-off-by: Thomas Gleixner --- include/linux/rwlock_types_rt.h | 33 +++++++++++++++++++++++++ - include/linux/spinlock_types.h | 11 ++++++-- - include/linux/spinlock_types_rt.h | 49 ++++++++++++++++++++++++++++++++++++++ + include/linux/spinlock_types.h | 11 ++++++--- + include/linux/spinlock_types_rt.h | 49 +++++++++++++++++++++++++++++++++++++ 3 files changed, 90 insertions(+), 3 deletions(-) + create mode 100644 include/linux/rwlock_types_rt.h + create mode 100644 include/linux/spinlock_types_rt.h -Index: linux-3.4/include/linux/rwlock_types_rt.h -=================================================================== +diff --git a/include/linux/rwlock_types_rt.h b/include/linux/rwlock_types_rt.h +new file mode 100644 +index 0000000..b138321 --- /dev/null -+++ linux-3.4/include/linux/rwlock_types_rt.h ++++ b/include/linux/rwlock_types_rt.h @@ -0,0 +1,33 @@ +#ifndef __LINUX_RWLOCK_TYPES_RT_H +#define __LINUX_RWLOCK_TYPES_RT_H @@ -47,10 +51,10 @@ Index: linux-3.4/include/linux/rwlock_types_rt.h + rwlock_t name __cacheline_aligned_in_smp = __RW_LOCK_UNLOCKED(name) + +#endif -Index: linux-3.4/include/linux/spinlock_types.h -=================================================================== ---- linux-3.4.orig/include/linux/spinlock_types.h -+++ linux-3.4/include/linux/spinlock_types.h +diff --git a/include/linux/spinlock_types.h b/include/linux/spinlock_types.h +index 5c8664d..10bac71 100644 +--- a/include/linux/spinlock_types.h ++++ b/include/linux/spinlock_types.h @@ -11,8 +11,13 @@ #include @@ -68,10 +72,11 @@ Index: linux-3.4/include/linux/spinlock_types.h +#endif #endif /* __LINUX_SPINLOCK_TYPES_H */ -Index: linux-3.4/include/linux/spinlock_types_rt.h -=================================================================== +diff --git a/include/linux/spinlock_types_rt.h b/include/linux/spinlock_types_rt.h +new file mode 100644 +index 0000000..1fe8fc0 --- /dev/null -+++ linux-3.4/include/linux/spinlock_types_rt.h ++++ b/include/linux/spinlock_types_rt.h @@ -0,0 +1,49 @@ +#ifndef __LINUX_SPINLOCK_TYPES_RT_H +#define __LINUX_SPINLOCK_TYPES_RT_H diff --git a/debian/patches/features/all/rt/rt-add-rt-to-mutex-headers.patch b/debian/patches/features/all/rt/0178-rt-add-rt-to-mutex-headers.patch.patch similarity index 87% rename from debian/patches/features/all/rt/rt-add-rt-to-mutex-headers.patch rename to debian/patches/features/all/rt/0178-rt-add-rt-to-mutex-headers.patch.patch index cb0f6b822..529ea3b17 100644 --- a/debian/patches/features/all/rt/rt-add-rt-to-mutex-headers.patch +++ b/debian/patches/features/all/rt/0178-rt-add-rt-to-mutex-headers.patch.patch @@ -1,17 +1,19 @@ -Subject: rt-add-rt-to-mutex-headers.patch +From 7e50415705bde73113538b2095e3876b85f001ca Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 29 Jun 2011 20:56:22 +0200 +Subject: [178/254] rt-add-rt-to-mutex-headers.patch Signed-off-by: Thomas Gleixner --- - include/linux/mutex.h | 21 +++++++---- - include/linux/mutex_rt.h | 84 +++++++++++++++++++++++++++++++++++++++++++++++ + include/linux/mutex.h | 21 ++++++++---- + include/linux/mutex_rt.h | 84 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 98 insertions(+), 7 deletions(-) + create mode 100644 include/linux/mutex_rt.h -Index: linux-3.4/include/linux/mutex.h -=================================================================== ---- linux-3.4.orig/include/linux/mutex.h -+++ linux-3.4/include/linux/mutex.h +diff --git a/include/linux/mutex.h b/include/linux/mutex.h +index 9121595..bdf1da2 100644 +--- a/include/linux/mutex.h ++++ b/include/linux/mutex.h @@ -17,6 +17,17 @@ #include @@ -44,7 +46,7 @@ Index: linux-3.4/include/linux/mutex.h #define __MUTEX_INITIALIZER(lockname) \ { .count = ATOMIC_INIT(1) \ , .wait_lock = __SPIN_LOCK_UNLOCKED(lockname.wait_lock) \ -@@ -167,6 +171,9 @@ extern int __must_check mutex_lock_killa +@@ -167,6 +171,9 @@ extern int __must_check mutex_lock_killable(struct mutex *lock); */ extern int mutex_trylock(struct mutex *lock); extern void mutex_unlock(struct mutex *lock); @@ -54,10 +56,11 @@ Index: linux-3.4/include/linux/mutex.h extern int atomic_dec_and_mutex_lock(atomic_t *cnt, struct mutex *lock); #ifndef CONFIG_HAVE_ARCH_MUTEX_CPU_RELAX -Index: linux-3.4/include/linux/mutex_rt.h -=================================================================== +diff --git a/include/linux/mutex_rt.h b/include/linux/mutex_rt.h +new file mode 100644 +index 0000000..c38a44b --- /dev/null -+++ linux-3.4/include/linux/mutex_rt.h ++++ b/include/linux/mutex_rt.h @@ -0,0 +1,84 @@ +#ifndef __LINUX_MUTEX_RT_H +#define __LINUX_MUTEX_RT_H diff --git a/debian/patches/features/all/rt/rwsem-add-rt-variant.patch b/debian/patches/features/all/rt/0179-rwsem-add-rt-variant.patch.patch similarity index 82% rename from debian/patches/features/all/rt/rwsem-add-rt-variant.patch rename to debian/patches/features/all/rt/0179-rwsem-add-rt-variant.patch.patch index c3c44e12a..5164e7f34 100644 --- a/debian/patches/features/all/rt/rwsem-add-rt-variant.patch +++ b/debian/patches/features/all/rt/0179-rwsem-add-rt-variant.patch.patch @@ -1,18 +1,20 @@ -Subject: rwsem-add-rt-variant.patch +From cc9f1226a6e5569aadced3b2247dfa727ee2235d Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 29 Jun 2011 21:02:53 +0200 +Subject: [179/254] rwsem-add-rt-variant.patch Signed-off-by: Thomas Gleixner --- - include/linux/rwsem.h | 6 ++ - include/linux/rwsem_rt.h | 105 +++++++++++++++++++++++++++++++++++++++++++++++ - lib/Makefile | 3 + + include/linux/rwsem.h | 6 +++ + include/linux/rwsem_rt.h | 105 ++++++++++++++++++++++++++++++++++++++++++++++ + lib/Makefile | 3 ++ 3 files changed, 114 insertions(+) + create mode 100644 include/linux/rwsem_rt.h -Index: linux-3.4/include/linux/rwsem.h -=================================================================== ---- linux-3.4.orig/include/linux/rwsem.h -+++ linux-3.4/include/linux/rwsem.h +diff --git a/include/linux/rwsem.h b/include/linux/rwsem.h +index 54bd7cd..3f7df4a 100644 +--- a/include/linux/rwsem.h ++++ b/include/linux/rwsem.h @@ -16,6 +16,10 @@ #include @@ -24,17 +26,18 @@ Index: linux-3.4/include/linux/rwsem.h struct rw_semaphore; #ifdef CONFIG_RWSEM_GENERIC_SPINLOCK -@@ -130,4 +134,6 @@ extern void down_write_nested(struct rw_ +@@ -130,4 +134,6 @@ extern void down_write_nested(struct rw_semaphore *sem, int subclass); # define down_write_nested(sem, subclass) down_write(sem) #endif +#endif /* !PREEMPT_RT_FULL */ + #endif /* _LINUX_RWSEM_H */ -Index: linux-3.4/include/linux/rwsem_rt.h -=================================================================== +diff --git a/include/linux/rwsem_rt.h b/include/linux/rwsem_rt.h +new file mode 100644 +index 0000000..802c690 --- /dev/null -+++ linux-3.4/include/linux/rwsem_rt.h ++++ b/include/linux/rwsem_rt.h @@ -0,0 +1,105 @@ +#ifndef _LINUX_RWSEM_RT_H +#define _LINUX_RWSEM_RT_H @@ -141,11 +144,11 @@ Index: linux-3.4/include/linux/rwsem_rt.h +} + +#endif -Index: linux-3.4/lib/Makefile -=================================================================== ---- linux-3.4.orig/lib/Makefile -+++ linux-3.4/lib/Makefile -@@ -38,8 +38,11 @@ obj-$(CONFIG_HAS_IOMEM) += iomap_copy.o +diff --git a/lib/Makefile b/lib/Makefile +index 18515f0..a8da407 100644 +--- a/lib/Makefile ++++ b/lib/Makefile +@@ -38,8 +38,11 @@ obj-$(CONFIG_HAS_IOMEM) += iomap_copy.o devres.o obj-$(CONFIG_CHECK_SIGNATURE) += check_signature.o obj-$(CONFIG_DEBUG_LOCKING_API_SELFTESTS) += locking-selftest.o obj-$(CONFIG_DEBUG_SPINLOCK) += spinlock_debug.o diff --git a/debian/patches/features/all/rt/rt-add-rt-locks.patch b/debian/patches/features/all/rt/0180-rt-Add-the-preempt-rt-lock-replacement-APIs.patch similarity index 89% rename from debian/patches/features/all/rt/rt-add-rt-locks.patch rename to debian/patches/features/all/rt/0180-rt-Add-the-preempt-rt-lock-replacement-APIs.patch index db1a4ec1b..fa312786f 100644 --- a/debian/patches/features/all/rt/rt-add-rt-locks.patch +++ b/debian/patches/features/all/rt/0180-rt-Add-the-preempt-rt-lock-replacement-APIs.patch @@ -1,27 +1,31 @@ +From 60c1425ee1c4fedaec3ee3639a339bbd548dc249 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sun, 26 Jul 2009 19:39:56 +0200 -Subject: rt: Add the preempt-rt lock replacement APIs +Subject: [180/254] rt: Add the preempt-rt lock replacement APIs Map spinlocks, rwlocks, rw_semaphores and semaphores to the rt_mutex based locking functions for preempt-rt. Signed-off-by: Thomas Gleixner - --- - include/linux/rwlock_rt.h | 123 ++++++++++ - include/linux/spinlock.h | 12 - - include/linux/spinlock_api_smp.h | 4 - include/linux/spinlock_rt.h | 156 +++++++++++++ - kernel/Makefile | 9 - kernel/rt.c | 442 +++++++++++++++++++++++++++++++++++++++ - kernel/spinlock.c | 7 - lib/spinlock_debug.c | 5 + include/linux/rwlock_rt.h | 123 +++++++++++ + include/linux/spinlock.h | 12 +- + include/linux/spinlock_api_smp.h | 4 +- + include/linux/spinlock_rt.h | 156 ++++++++++++++ + kernel/Makefile | 9 +- + kernel/rt.c | 442 ++++++++++++++++++++++++++++++++++++++ + kernel/spinlock.c | 7 + + lib/spinlock_debug.c | 5 + 8 files changed, 754 insertions(+), 4 deletions(-) + create mode 100644 include/linux/rwlock_rt.h + create mode 100644 include/linux/spinlock_rt.h + create mode 100644 kernel/rt.c -Index: linux-3.4/include/linux/rwlock_rt.h -=================================================================== +diff --git a/include/linux/rwlock_rt.h b/include/linux/rwlock_rt.h +new file mode 100644 +index 0000000..853ee36 --- /dev/null -+++ linux-3.4/include/linux/rwlock_rt.h ++++ b/include/linux/rwlock_rt.h @@ -0,0 +1,123 @@ +#ifndef __LINUX_RWLOCK_RT_H +#define __LINUX_RWLOCK_RT_H @@ -146,11 +150,11 @@ Index: linux-3.4/include/linux/rwlock_rt.h + } while (0) + +#endif -Index: linux-3.4/include/linux/spinlock.h -=================================================================== ---- linux-3.4.orig/include/linux/spinlock.h -+++ linux-3.4/include/linux/spinlock.h -@@ -254,7 +254,11 @@ static inline void do_raw_spin_unlock(ra +diff --git a/include/linux/spinlock.h b/include/linux/spinlock.h +index 7d537ce..0c11a7c 100644 +--- a/include/linux/spinlock.h ++++ b/include/linux/spinlock.h +@@ -254,7 +254,11 @@ static inline void do_raw_spin_unlock(raw_spinlock_t *lock) __releases(lock) #define raw_spin_can_lock(lock) (!raw_spin_is_locked(lock)) /* Include rwlock functions */ @@ -163,7 +167,7 @@ Index: linux-3.4/include/linux/spinlock.h /* * Pull the _spin_*()/_read_*()/_write_*() functions/declarations: -@@ -265,6 +269,10 @@ static inline void do_raw_spin_unlock(ra +@@ -265,6 +269,10 @@ static inline void do_raw_spin_unlock(raw_spinlock_t *lock) __releases(lock) # include #endif @@ -174,18 +178,18 @@ Index: linux-3.4/include/linux/spinlock.h /* * Map the spin_lock functions to the raw variants for PREEMPT_RT=n */ -@@ -394,4 +402,6 @@ extern int _atomic_dec_and_lock(atomic_t +@@ -394,4 +402,6 @@ extern int _atomic_dec_and_lock(atomic_t *atomic, spinlock_t *lock); #define atomic_dec_and_lock(atomic, lock) \ __cond_lock(lock, _atomic_dec_and_lock(atomic, lock)) +#endif /* !PREEMPT_RT_FULL */ + #endif /* __LINUX_SPINLOCK_H */ -Index: linux-3.4/include/linux/spinlock_api_smp.h -=================================================================== ---- linux-3.4.orig/include/linux/spinlock_api_smp.h -+++ linux-3.4/include/linux/spinlock_api_smp.h -@@ -191,6 +191,8 @@ static inline int __raw_spin_trylock_bh( +diff --git a/include/linux/spinlock_api_smp.h b/include/linux/spinlock_api_smp.h +index 51df117..3f68f50 100644 +--- a/include/linux/spinlock_api_smp.h ++++ b/include/linux/spinlock_api_smp.h +@@ -191,6 +191,8 @@ static inline int __raw_spin_trylock_bh(raw_spinlock_t *lock) return 0; } @@ -195,10 +199,11 @@ Index: linux-3.4/include/linux/spinlock_api_smp.h +#endif #endif /* __LINUX_SPINLOCK_API_SMP_H */ -Index: linux-3.4/include/linux/spinlock_rt.h -=================================================================== +diff --git a/include/linux/spinlock_rt.h b/include/linux/spinlock_rt.h +new file mode 100644 +index 0000000..205ca95 --- /dev/null -+++ linux-3.4/include/linux/spinlock_rt.h ++++ b/include/linux/spinlock_rt.h @@ -0,0 +1,156 @@ +#ifndef __LINUX_SPINLOCK_RT_H +#define __LINUX_SPINLOCK_RT_H @@ -356,11 +361,11 @@ Index: linux-3.4/include/linux/spinlock_rt.h + atomic_dec_and_spin_lock(atomic, lock) + +#endif -Index: linux-3.4/kernel/Makefile -=================================================================== ---- linux-3.4.orig/kernel/Makefile -+++ linux-3.4/kernel/Makefile -@@ -7,8 +7,8 @@ obj-y = fork.o exec_domain.o panic.o +diff --git a/kernel/Makefile b/kernel/Makefile +index cb41b95..f4bf68a 100644 +--- a/kernel/Makefile ++++ b/kernel/Makefile +@@ -7,8 +7,8 @@ obj-y = fork.o exec_domain.o panic.o printk.o \ sysctl.o sysctl_binary.o capability.o ptrace.o timer.o user.o \ signal.o sys.o kmod.o workqueue.o pid.o \ rcupdate.o extable.o params.o posix-timers.o \ @@ -391,10 +396,11 @@ Index: linux-3.4/kernel/Makefile obj-$(CONFIG_GENERIC_ISA_DMA) += dma.o obj-$(CONFIG_SMP) += smp.o ifneq ($(CONFIG_SMP),y) -Index: linux-3.4/kernel/rt.c -=================================================================== +diff --git a/kernel/rt.c b/kernel/rt.c +new file mode 100644 +index 0000000..092d6b3 --- /dev/null -+++ linux-3.4/kernel/rt.c ++++ b/kernel/rt.c @@ -0,0 +1,442 @@ +/* + * kernel/rt.c @@ -838,11 +844,11 @@ Index: linux-3.4/kernel/rt.c + return 1; +} +EXPORT_SYMBOL(atomic_dec_and_mutex_lock); -Index: linux-3.4/kernel/spinlock.c -=================================================================== ---- linux-3.4.orig/kernel/spinlock.c -+++ linux-3.4/kernel/spinlock.c -@@ -110,8 +110,11 @@ void __lockfunc __raw_##op##_lock_bh(loc +diff --git a/kernel/spinlock.c b/kernel/spinlock.c +index 5cdd806..da9775b 100644 +--- a/kernel/spinlock.c ++++ b/kernel/spinlock.c +@@ -110,8 +110,11 @@ void __lockfunc __raw_##op##_lock_bh(locktype##_t *lock) \ * __[spin|read|write]_lock_bh() */ BUILD_LOCK_OPS(spin, raw_spinlock); @@ -854,7 +860,7 @@ Index: linux-3.4/kernel/spinlock.c #endif -@@ -195,6 +198,8 @@ void __lockfunc _raw_spin_unlock_bh(raw_ +@@ -195,6 +198,8 @@ void __lockfunc _raw_spin_unlock_bh(raw_spinlock_t *lock) EXPORT_SYMBOL(_raw_spin_unlock_bh); #endif @@ -863,7 +869,7 @@ Index: linux-3.4/kernel/spinlock.c #ifndef CONFIG_INLINE_READ_TRYLOCK int __lockfunc _raw_read_trylock(rwlock_t *lock) { -@@ -339,6 +344,8 @@ void __lockfunc _raw_write_unlock_bh(rwl +@@ -339,6 +344,8 @@ void __lockfunc _raw_write_unlock_bh(rwlock_t *lock) EXPORT_SYMBOL(_raw_write_unlock_bh); #endif @@ -872,11 +878,11 @@ Index: linux-3.4/kernel/spinlock.c #ifdef CONFIG_DEBUG_LOCK_ALLOC void __lockfunc _raw_spin_lock_nested(raw_spinlock_t *lock, int subclass) -Index: linux-3.4/lib/spinlock_debug.c -=================================================================== ---- linux-3.4.orig/lib/spinlock_debug.c -+++ linux-3.4/lib/spinlock_debug.c -@@ -31,6 +31,7 @@ void __raw_spin_lock_init(raw_spinlock_t +diff --git a/lib/spinlock_debug.c b/lib/spinlock_debug.c +index 525d160..5f5eae5 100644 +--- a/lib/spinlock_debug.c ++++ b/lib/spinlock_debug.c +@@ -31,6 +31,7 @@ void __raw_spin_lock_init(raw_spinlock_t *lock, const char *name, EXPORT_SYMBOL(__raw_spin_lock_init); @@ -884,7 +890,7 @@ Index: linux-3.4/lib/spinlock_debug.c void __rwlock_init(rwlock_t *lock, const char *name, struct lock_class_key *key) { -@@ -48,6 +49,7 @@ void __rwlock_init(rwlock_t *lock, const +@@ -48,6 +49,7 @@ void __rwlock_init(rwlock_t *lock, const char *name, } EXPORT_SYMBOL(__rwlock_init); @@ -892,7 +898,7 @@ Index: linux-3.4/lib/spinlock_debug.c static void spin_dump(raw_spinlock_t *lock, const char *msg) { -@@ -155,6 +157,7 @@ void do_raw_spin_unlock(raw_spinlock_t * +@@ -155,6 +157,7 @@ void do_raw_spin_unlock(raw_spinlock_t *lock) arch_spin_unlock(&lock->raw_lock); } diff --git a/debian/patches/features/all/rt/tasklist-lock-fix-section-conflict.patch b/debian/patches/features/all/rt/0181-rwlocks-Fix-section-mismatch.patch similarity index 71% rename from debian/patches/features/all/rt/tasklist-lock-fix-section-conflict.patch rename to debian/patches/features/all/rt/0181-rwlocks-Fix-section-mismatch.patch index 82be75d3e..c1379ce35 100644 --- a/debian/patches/features/all/rt/tasklist-lock-fix-section-conflict.patch +++ b/debian/patches/features/all/rt/0181-rwlocks-Fix-section-mismatch.patch @@ -1,12 +1,16 @@ -Subject: rwlocks: Fix section mismatch +From fb4c2d3b9bf21ecc1bdcffd506f85fb572dad6c9 Mon Sep 17 00:00:00 2001 From: John Kacur -Date: Mon, 19 Sep 2011 11:09:27 +0200 (CEST) +Date: Mon, 19 Sep 2011 11:09:27 +0200 +Subject: [181/254] rwlocks: Fix section mismatch +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit This fixes the following build error for the preempt-rt kernel. make kernel/fork.o CC kernel/fork.o -kernel/fork.c:90: error: section of ¡tasklist_lock¢ conflicts with previous declaration +kernel/fork.c:90: error: section of ¡tasklist_lock¢ conflicts with previous declaration make[2]: *** [kernel/fork.o] Error 1 make[1]: *** [kernel/fork.o] Error 2 @@ -33,10 +37,10 @@ Signed-off-by: Thomas Gleixner kernel/fork.c | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) -Index: linux-3.4/include/linux/rwlock_types.h -=================================================================== ---- linux-3.4.orig/include/linux/rwlock_types.h -+++ linux-3.4/include/linux/rwlock_types.h +diff --git a/include/linux/rwlock_types.h b/include/linux/rwlock_types.h +index 5317cd9..d0da966 100644 +--- a/include/linux/rwlock_types.h ++++ b/include/linux/rwlock_types.h @@ -47,6 +47,7 @@ typedef struct { RW_DEP_MAP_INIT(lockname) } #endif @@ -46,11 +50,11 @@ Index: linux-3.4/include/linux/rwlock_types.h + rwlock_t name __cacheline_aligned_in_smp = __RW_LOCK_UNLOCKED(name) #endif /* __LINUX_RWLOCK_TYPES_H */ -Index: linux-3.4/kernel/fork.c -=================================================================== ---- linux-3.4.orig/kernel/fork.c -+++ linux-3.4/kernel/fork.c -@@ -90,7 +90,7 @@ int max_threads; /* tunable limit on nr +diff --git a/kernel/fork.c b/kernel/fork.c +index e6cf9db..ec2ff23 100644 +--- a/kernel/fork.c ++++ b/kernel/fork.c +@@ -91,7 +91,7 @@ int max_threads; /* tunable limit on nr_threads */ DEFINE_PER_CPU(unsigned long, process_counts) = 0; diff --git a/debian/patches/features/all/rt/timer-handle-idle-trylock-in-get-next-timer-irq.patch b/debian/patches/features/all/rt/0182-timer-handle-idle-trylock-in-get-next-timer-irq.patc.patch similarity index 72% rename from debian/patches/features/all/rt/timer-handle-idle-trylock-in-get-next-timer-irq.patch rename to debian/patches/features/all/rt/0182-timer-handle-idle-trylock-in-get-next-timer-irq.patc.patch index 4762faed2..2bc8be28b 100644 --- a/debian/patches/features/all/rt/timer-handle-idle-trylock-in-get-next-timer-irq.patch +++ b/debian/patches/features/all/rt/0182-timer-handle-idle-trylock-in-get-next-timer-irq.patc.patch @@ -1,6 +1,7 @@ -Subject: timer-handle-idle-trylock-in-get-next-timer-irq.patch +From 477b8b05bd9b08180b3fc0059f15ff33dfde45fe Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sun, 17 Jul 2011 22:08:38 +0200 +Subject: [182/254] timer-handle-idle-trylock-in-get-next-timer-irq.patch Signed-off-by: Thomas Gleixner --- @@ -9,11 +10,11 @@ Signed-off-by: Thomas Gleixner kernel/timer.c | 7 ++++--- 3 files changed, 16 insertions(+), 10 deletions(-) -Index: linux-3.4/include/linux/spinlock_rt.h -=================================================================== ---- linux-3.4.orig/include/linux/spinlock_rt.h -+++ linux-3.4/include/linux/spinlock_rt.h -@@ -51,7 +51,17 @@ extern void __lockfunc __rt_spin_unlock( +diff --git a/include/linux/spinlock_rt.h b/include/linux/spinlock_rt.h +index 205ca95..3b555b4 100644 +--- a/include/linux/spinlock_rt.h ++++ b/include/linux/spinlock_rt.h +@@ -51,7 +51,17 @@ extern void __lockfunc __rt_spin_unlock(struct rt_mutex *lock); #define spin_lock_irq(lock) spin_lock(lock) @@ -32,10 +33,10 @@ Index: linux-3.4/include/linux/spinlock_rt.h #ifdef CONFIG_LOCKDEP # define spin_lock_nested(lock, subclass) \ -Index: linux-3.4/kernel/rtmutex.c -=================================================================== ---- linux-3.4.orig/kernel/rtmutex.c -+++ linux-3.4/kernel/rtmutex.c +diff --git a/kernel/rtmutex.c b/kernel/rtmutex.c +index f9baaae..921c90b 100644 +--- a/kernel/rtmutex.c ++++ b/kernel/rtmutex.c @@ -861,15 +861,10 @@ EXPORT_SYMBOL(rt_spin_unlock_wait); int __lockfunc rt_spin_trylock(spinlock_t *lock) @@ -53,11 +54,11 @@ Index: linux-3.4/kernel/rtmutex.c return ret; } EXPORT_SYMBOL(rt_spin_trylock); -Index: linux-3.4/kernel/timer.c -=================================================================== ---- linux-3.4.orig/kernel/timer.c -+++ linux-3.4/kernel/timer.c -@@ -1373,13 +1373,14 @@ unsigned long get_next_timer_interrupt(u +diff --git a/kernel/timer.c b/kernel/timer.c +index cc2588b..f6f2958 100644 +--- a/kernel/timer.c ++++ b/kernel/timer.c +@@ -1373,13 +1373,14 @@ unsigned long get_next_timer_interrupt(unsigned long now) /* * On PREEMPT_RT we cannot sleep here. If the trylock does not * succeed then we return the worst-case 'expires in 1 tick' diff --git a/debian/patches/features/all/rt/rcu-force-preempt-rcu-for-rt.patch b/debian/patches/features/all/rt/0183-RCU-Force-PREEMPT_RCU-for-PREEMPT-RT.patch similarity index 75% rename from debian/patches/features/all/rt/rcu-force-preempt-rcu-for-rt.patch rename to debian/patches/features/all/rt/0183-RCU-Force-PREEMPT_RCU-for-PREEMPT-RT.patch index a18cc011b..2981a8b15 100644 --- a/debian/patches/features/all/rt/rcu-force-preempt-rcu-for-rt.patch +++ b/debian/patches/features/all/rt/0183-RCU-Force-PREEMPT_RCU-for-PREEMPT-RT.patch @@ -1,6 +1,7 @@ -Subject: RCU: Force PREEMPT_RCU for PREEMPT-RT +From 36ae714789a297c6e82887ac6b06b4d4da9b27a7 Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Fri, 3 Jul 2009 08:30:30 -0500 +Subject: [183/254] RCU: Force PREEMPT_RCU for PREEMPT-RT PREEMPT_RT relies on PREEMPT_RCU - only allow RCU to be configured interactively in the !PREEMPT_RT case. @@ -14,10 +15,10 @@ Link: http://lkml.kernel.org/n/tip-j1y0phicu6s6pu8guku2vca0@git.kernel.org init/Kconfig | 1 - 1 file changed, 1 deletion(-) -Index: linux-3.4/init/Kconfig -=================================================================== ---- linux-3.4.orig/init/Kconfig -+++ linux-3.4/init/Kconfig +diff --git a/init/Kconfig b/init/Kconfig +index c06208b..7c0b369 100644 +--- a/init/Kconfig ++++ b/init/Kconfig @@ -746,7 +746,6 @@ config RT_GROUP_SCHED bool "Group scheduling for SCHED_RR/FIFO" depends on EXPERIMENTAL diff --git a/debian/patches/features/all/rt/peter_zijlstra-frob-rcu.patch b/debian/patches/features/all/rt/0184-rcu-Frob-softirq-test.patch similarity index 92% rename from debian/patches/features/all/rt/peter_zijlstra-frob-rcu.patch rename to debian/patches/features/all/rt/0184-rcu-Frob-softirq-test.patch index 4b51fb72e..fafc4eb06 100644 --- a/debian/patches/features/all/rt/peter_zijlstra-frob-rcu.patch +++ b/debian/patches/features/all/rt/0184-rcu-Frob-softirq-test.patch @@ -1,6 +1,7 @@ -Subject: rcu: Frob softirq test +From f77e26d2cfa125ea5d216fcbf9278d21c6eb092e Mon Sep 17 00:00:00 2001 From: Peter Zijlstra -Date: Sat Aug 13 00:23:17 CEST 2011 +Date: Sat, 13 Aug 2011 00:23:17 +0200 +Subject: [184/254] rcu: Frob softirq test With RT_FULL we get the below wreckage: @@ -10,15 +11,15 @@ With RT_FULL we get the below wreckage: [ 126.060490] ------------------------------------------------------- [ 126.060492] irq/24-eth0/1235 is trying to acquire lock: [ 126.060495] (&(lock)->wait_lock#2){+.+...}, at: [] rt_mutex_slowunlock+0x16/0x55 -[ 126.060503] +[ 126.060503] [ 126.060504] but task is already holding lock: [ 126.060506] (&p->pi_lock){-...-.}, at: [] try_to_wake_up+0x35/0x429 -[ 126.060511] +[ 126.060511] [ 126.060511] which lock already depends on the new lock. -[ 126.060513] -[ 126.060514] +[ 126.060513] +[ 126.060514] [ 126.060514] the existing dependency chain (in reverse order) is: -[ 126.060516] +[ 126.060516] [ 126.060516] -> #1 (&p->pi_lock){-...-.}: [ 126.060519] [] lock_acquire+0x145/0x18a [ 126.060524] [] _raw_spin_lock_irqsave+0x4b/0x85 @@ -29,7 +30,7 @@ With RT_FULL we get the below wreckage: [ 126.060541] [] rcu_boost_kthread+0x7d/0x9b [ 126.060544] [] kthread+0x99/0xa1 [ 126.060547] [] kernel_thread_helper+0x4/0x10 -[ 126.060551] +[ 126.060551] [ 126.060552] -> #0 (&(lock)->wait_lock#2){+.+...}: [ 126.060555] [] __lock_acquire+0x1157/0x1816 [ 126.060558] [] lock_acquire+0x145/0x18a @@ -49,23 +50,23 @@ With RT_FULL we get the below wreckage: [ 126.060603] [] irq_thread+0xde/0x1af [ 126.060606] [] kthread+0x99/0xa1 [ 126.060608] [] kernel_thread_helper+0x4/0x10 -[ 126.060611] +[ 126.060611] [ 126.060612] other info that might help us debug this: -[ 126.060614] +[ 126.060614] [ 126.060615] Possible unsafe locking scenario: -[ 126.060616] +[ 126.060616] [ 126.060617] CPU0 CPU1 [ 126.060619] ---- ---- [ 126.060620] lock(&p->pi_lock); [ 126.060623] lock(&(lock)->wait_lock); [ 126.060625] lock(&p->pi_lock); [ 126.060627] lock(&(lock)->wait_lock); -[ 126.060629] +[ 126.060629] [ 126.060629] *** DEADLOCK *** -[ 126.060630] +[ 126.060630] [ 126.060632] 1 lock held by irq/24-eth0/1235: [ 126.060633] #0: (&p->pi_lock){-...-.}, at: [] try_to_wake_up+0x35/0x429 -[ 126.060638] +[ 126.060638] [ 126.060638] stack backtrace: [ 126.060641] Pid: 1235, comm: irq/24-eth0 Not tainted 3.0.1-rt10+ #30 [ 126.060643] Call Trace: @@ -153,11 +154,11 @@ Signed-off-by: Peter Zijlstra kernel/rcutree_plugin.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-3.4/kernel/rcutree_plugin.h -=================================================================== ---- linux-3.4.orig/kernel/rcutree_plugin.h -+++ linux-3.4/kernel/rcutree_plugin.h -@@ -339,7 +339,7 @@ static noinline void rcu_read_unlock_spe +diff --git a/kernel/rcutree_plugin.h b/kernel/rcutree_plugin.h +index c023464..e4cc151 100644 +--- a/kernel/rcutree_plugin.h ++++ b/kernel/rcutree_plugin.h +@@ -339,7 +339,7 @@ static noinline void rcu_read_unlock_special(struct task_struct *t) } /* Hardware IRQ handlers cannot block. */ diff --git a/debian/patches/features/all/rt/rcu-merge-rcu-bh-into-rcu-preempt-for-rt.patch b/debian/patches/features/all/rt/0185-rcu-Merge-RCU-bh-into-RCU-preempt.patch similarity index 83% rename from debian/patches/features/all/rt/rcu-merge-rcu-bh-into-rcu-preempt-for-rt.patch rename to debian/patches/features/all/rt/0185-rcu-Merge-RCU-bh-into-RCU-preempt.patch index b7d1ffd90..b8ef1f884 100644 --- a/debian/patches/features/all/rt/rcu-merge-rcu-bh-into-rcu-preempt-for-rt.patch +++ b/debian/patches/features/all/rt/0185-rcu-Merge-RCU-bh-into-RCU-preempt.patch @@ -1,6 +1,7 @@ -Subject: rcu: Merge RCU-bh into RCU-preempt -Date: Wed, 5 Oct 2011 11:59:38 -0700 +From 764ae11142b44103cf5af03223202e04d66ee073 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner +Date: Wed, 5 Oct 2011 11:59:38 -0700 +Subject: [185/254] rcu: Merge RCU-bh into RCU-preempt The Linux kernel has long RCU-bh read-side critical sections that intolerably increase scheduling latency under mainline's RCU-bh rules, @@ -22,7 +23,6 @@ Signed-off-by: Thomas Gleixner Signed-off-by: Paul E. McKenney Link: http://lkml.kernel.org/r/20111005185938.GA20403@linux.vnet.ibm.com Signed-off-by: Thomas Gleixner - --- include/linux/rcupdate.h | 25 +++++++++++++++++++++++++ include/linux/rcutree.h | 18 ++++++++++++++++-- @@ -30,11 +30,11 @@ Signed-off-by: Thomas Gleixner kernel/rcutree.c | 10 ++++++++++ 4 files changed, 53 insertions(+), 2 deletions(-) -Index: linux-3.4/include/linux/rcupdate.h -=================================================================== ---- linux-3.4.orig/include/linux/rcupdate.h -+++ linux-3.4/include/linux/rcupdate.h -@@ -101,6 +101,9 @@ extern void call_rcu(struct rcu_head *he +diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h +index 23a500f..888d24a 100644 +--- a/include/linux/rcupdate.h ++++ b/include/linux/rcupdate.h +@@ -101,6 +101,9 @@ extern void call_rcu(struct rcu_head *head, #endif /* #else #ifdef CONFIG_PREEMPT_RCU */ @@ -44,7 +44,7 @@ Index: linux-3.4/include/linux/rcupdate.h /** * call_rcu_bh() - Queue an RCU for invocation after a quicker grace period. * @head: structure to be used for queueing the RCU updates. -@@ -121,6 +124,7 @@ extern void call_rcu(struct rcu_head *he +@@ -121,6 +124,7 @@ extern void call_rcu(struct rcu_head *head, */ extern void call_rcu_bh(struct rcu_head *head, void (*func)(struct rcu_head *head)); @@ -52,7 +52,7 @@ Index: linux-3.4/include/linux/rcupdate.h /** * call_rcu_sched() - Queue an RCU for invocation after sched grace period. -@@ -190,7 +194,13 @@ static inline int rcu_preempt_depth(void +@@ -190,7 +194,13 @@ static inline int rcu_preempt_depth(void) /* Internal to kernel */ extern void rcu_sched_qs(int cpu); @@ -66,7 +66,7 @@ Index: linux-3.4/include/linux/rcupdate.h extern void rcu_check_callbacks(int cpu, int user); struct notifier_block; extern void rcu_idle_enter(void); -@@ -331,7 +341,14 @@ static inline int rcu_read_lock_held(voi +@@ -331,7 +341,14 @@ static inline int rcu_read_lock_held(void) * rcu_read_lock_bh_held() is defined out of line to avoid #include-file * hell. */ @@ -96,7 +96,7 @@ Index: linux-3.4/include/linux/rcupdate.h } /* -@@ -793,10 +814,14 @@ static inline void rcu_read_lock_bh(void +@@ -793,10 +814,14 @@ static inline void rcu_read_lock_bh(void) */ static inline void rcu_read_unlock_bh(void) { @@ -111,10 +111,10 @@ Index: linux-3.4/include/linux/rcupdate.h local_bh_enable(); } -Index: linux-3.4/include/linux/rcutree.h -=================================================================== ---- linux-3.4.orig/include/linux/rcutree.h -+++ linux-3.4/include/linux/rcutree.h +diff --git a/include/linux/rcutree.h b/include/linux/rcutree.h +index e8ee5dd..5b2d03e 100644 +--- a/include/linux/rcutree.h ++++ b/include/linux/rcutree.h @@ -57,7 +57,11 @@ static inline void exit_rcu(void) #endif /* #else #ifdef CONFIG_TREE_PREEMPT_RCU */ @@ -127,7 +127,7 @@ Index: linux-3.4/include/linux/rcutree.h extern void synchronize_sched_expedited(void); extern void synchronize_rcu_expedited(void); -@@ -85,19 +89,29 @@ static inline void synchronize_rcu_bh_ex +@@ -85,19 +89,29 @@ static inline void synchronize_rcu_bh_expedited(void) } extern void rcu_barrier(void); @@ -159,10 +159,10 @@ Index: linux-3.4/include/linux/rcutree.h /* A context switch is a grace period for RCU-sched and RCU-bh. */ static inline int rcu_blocking_is_gp(void) { -Index: linux-3.4/kernel/rcupdate.c -=================================================================== ---- linux-3.4.orig/kernel/rcupdate.c -+++ linux-3.4/kernel/rcupdate.c +diff --git a/kernel/rcupdate.c b/kernel/rcupdate.c +index a86f174..63fc4b3 100644 +--- a/kernel/rcupdate.c ++++ b/kernel/rcupdate.c @@ -77,6 +77,7 @@ int debug_lockdep_rcu_enabled(void) } EXPORT_SYMBOL_GPL(debug_lockdep_rcu_enabled); @@ -179,10 +179,10 @@ Index: linux-3.4/kernel/rcupdate.c #endif /* #ifdef CONFIG_DEBUG_LOCK_ALLOC */ -Index: linux-3.4/kernel/rcutree.c -=================================================================== ---- linux-3.4.orig/kernel/rcutree.c -+++ linux-3.4/kernel/rcutree.c +diff --git a/kernel/rcutree.c b/kernel/rcutree.c +index d0c5baf..69e959e 100644 +--- a/kernel/rcutree.c ++++ b/kernel/rcutree.c @@ -172,6 +172,7 @@ void rcu_sched_qs(int cpu) rdp->passed_quiesce = 1; } @@ -215,7 +215,7 @@ Index: linux-3.4/kernel/rcutree.c /* * Record the number of times rcutorture tests have been initiated and -@@ -1884,6 +1888,7 @@ void call_rcu_sched(struct rcu_head *hea +@@ -1884,6 +1888,7 @@ void call_rcu_sched(struct rcu_head *head, void (*func)(struct rcu_head *rcu)) } EXPORT_SYMBOL_GPL(call_rcu_sched); @@ -223,7 +223,7 @@ Index: linux-3.4/kernel/rcutree.c /* * Queue an RCU callback for invocation after a quicker grace period. */ -@@ -1892,6 +1897,7 @@ void call_rcu_bh(struct rcu_head *head, +@@ -1892,6 +1897,7 @@ void call_rcu_bh(struct rcu_head *head, void (*func)(struct rcu_head *rcu)) __call_rcu(head, func, &rcu_bh_state, 0); } EXPORT_SYMBOL_GPL(call_rcu_bh); @@ -247,7 +247,7 @@ Index: linux-3.4/kernel/rcutree.c static atomic_t sync_sched_expedited_started = ATOMIC_INIT(0); static atomic_t sync_sched_expedited_done = ATOMIC_INIT(0); -@@ -2223,6 +2231,7 @@ static void _rcu_barrier(struct rcu_stat +@@ -2223,6 +2231,7 @@ static void _rcu_barrier(struct rcu_state *rsp, mutex_unlock(&rcu_barrier_mutex); } diff --git a/debian/patches/features/all/rt/rcu-fix-macro-substitution.patch b/debian/patches/features/all/rt/0186-rcu-Fix-macro-substitution-for-synchronize_rcu_bh-on.patch similarity index 75% rename from debian/patches/features/all/rt/rcu-fix-macro-substitution.patch rename to debian/patches/features/all/rt/0186-rcu-Fix-macro-substitution-for-synchronize_rcu_bh-on.patch index 0d91977e9..ba851a34d 100644 --- a/debian/patches/features/all/rt/rcu-fix-macro-substitution.patch +++ b/debian/patches/features/all/rt/0186-rcu-Fix-macro-substitution-for-synchronize_rcu_bh-on.patch @@ -1,6 +1,10 @@ -Subject: rcu: Fix macro substitution for synchronize_rcu_bh() on RT +From e61d468ef3b8685c7a0d76b64e507073f017a77f Mon Sep 17 00:00:00 2001 From: John Kacur Date: Mon, 14 Nov 2011 02:44:42 +0100 +Subject: [186/254] rcu: Fix macro substitution for synchronize_rcu_bh() on RT +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit kernel/rcutorture.c:492: error: ‘synchronize_rcu_bh’ undeclared here (not in a function) @@ -20,10 +24,10 @@ Signed-off-by: Thomas Gleixner include/linux/rcutree.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-3.4/include/linux/rcutree.h -=================================================================== ---- linux-3.4.orig/include/linux/rcutree.h -+++ linux-3.4/include/linux/rcutree.h +diff --git a/include/linux/rcutree.h b/include/linux/rcutree.h +index 5b2d03e..ba517b5 100644 +--- a/include/linux/rcutree.h ++++ b/include/linux/rcutree.h @@ -60,7 +60,7 @@ static inline void exit_rcu(void) #ifndef CONFIG_PREEMPT_RT_FULL extern void synchronize_rcu_bh(void); diff --git a/debian/patches/features/all/rt/rcu-tiny-merge-bh.patch b/debian/patches/features/all/rt/0187-rcu-more-fallout.patch.patch similarity index 51% rename from debian/patches/features/all/rt/rcu-tiny-merge-bh.patch rename to debian/patches/features/all/rt/0187-rcu-more-fallout.patch.patch index dda27f583..11afe76fd 100644 --- a/debian/patches/features/all/rt/rcu-tiny-merge-bh.patch +++ b/debian/patches/features/all/rt/0187-rcu-more-fallout.patch.patch @@ -1,17 +1,18 @@ -Subject: rcu-more-fallout.patch +From 937353c2900d41020c38fb6dd9c2017545f495c6 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Mon, 14 Nov 2011 10:57:54 +0100 +Subject: [187/254] rcu-more-fallout.patch Signed-off-by: Thomas Gleixner --- kernel/rcutiny.c | 2 ++ 1 file changed, 2 insertions(+) -Index: linux-3.4/kernel/rcutiny.c -=================================================================== ---- linux-3.4.orig/kernel/rcutiny.c -+++ linux-3.4/kernel/rcutiny.c -@@ -368,6 +368,7 @@ void call_rcu_sched(struct rcu_head *hea +diff --git a/kernel/rcutiny.c b/kernel/rcutiny.c +index 37a5444..fc581fb 100644 +--- a/kernel/rcutiny.c ++++ b/kernel/rcutiny.c +@@ -368,6 +368,7 @@ void call_rcu_sched(struct rcu_head *head, void (*func)(struct rcu_head *rcu)) } EXPORT_SYMBOL_GPL(call_rcu_sched); @@ -19,7 +20,7 @@ Index: linux-3.4/kernel/rcutiny.c /* * Post an RCU bottom-half callback to be invoked after any subsequent * quiescent state. -@@ -377,3 +378,4 @@ void call_rcu_bh(struct rcu_head *head, +@@ -377,3 +378,4 @@ void call_rcu_bh(struct rcu_head *head, void (*func)(struct rcu_head *rcu)) __call_rcu(head, func, &rcu_bh_ctrlblk); } EXPORT_SYMBOL_GPL(call_rcu_bh); diff --git a/debian/patches/features/all/rt/patch-to-introduce-rcu-bh-qs-where-safe-from-softirq.patch b/debian/patches/features/all/rt/0188-rcu-Make-ksoftirqd-do-RCU-quiescent-states.patch similarity index 79% rename from debian/patches/features/all/rt/patch-to-introduce-rcu-bh-qs-where-safe-from-softirq.patch rename to debian/patches/features/all/rt/0188-rcu-Make-ksoftirqd-do-RCU-quiescent-states.patch index f116bc739..a53a6e37f 100644 --- a/debian/patches/features/all/rt/patch-to-introduce-rcu-bh-qs-where-safe-from-softirq.patch +++ b/debian/patches/features/all/rt/0188-rcu-Make-ksoftirqd-do-RCU-quiescent-states.patch @@ -1,6 +1,7 @@ -Subject: rcu: Make ksoftirqd do RCU quiescent states +From 4a898cded4623cea83c173f928a12abc3af0731c Mon Sep 17 00:00:00 2001 From: "Paul E. McKenney" Date: Wed, 5 Oct 2011 11:45:18 -0700 +Subject: [188/254] rcu: Make ksoftirqd do RCU quiescent states Implementing RCU-bh in terms of RCU-preempt makes the system vulnerable to network-based denial-of-service attacks. This patch therefore @@ -21,7 +22,6 @@ in cases where __do_softirq() is invoked directly from ksoftirqd. Signed-off-by: Paul E. McKenney Link: http://lkml.kernel.org/r/20111005184518.GA21601@linux.vnet.ibm.com Signed-off-by: Thomas Gleixner - --- include/linux/rcupdate.h | 6 ------ kernel/rcutree.c | 7 ++++++- @@ -30,11 +30,11 @@ Signed-off-by: Thomas Gleixner kernel/softirq.c | 20 +++++++++++++------- 5 files changed, 21 insertions(+), 15 deletions(-) -Index: linux-3.4/include/linux/rcupdate.h -=================================================================== ---- linux-3.4.orig/include/linux/rcupdate.h -+++ linux-3.4/include/linux/rcupdate.h -@@ -194,13 +194,7 @@ static inline int rcu_preempt_depth(void +diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h +index 888d24a..aaf8b7d 100644 +--- a/include/linux/rcupdate.h ++++ b/include/linux/rcupdate.h +@@ -194,13 +194,7 @@ static inline int rcu_preempt_depth(void) /* Internal to kernel */ extern void rcu_sched_qs(int cpu); @@ -48,10 +48,10 @@ Index: linux-3.4/include/linux/rcupdate.h extern void rcu_check_callbacks(int cpu, int user); struct notifier_block; extern void rcu_idle_enter(void); -Index: linux-3.4/kernel/rcutree.c -=================================================================== ---- linux-3.4.orig/kernel/rcutree.c -+++ linux-3.4/kernel/rcutree.c +diff --git a/kernel/rcutree.c b/kernel/rcutree.c +index 69e959e..a9ca0e0 100644 +--- a/kernel/rcutree.c ++++ b/kernel/rcutree.c @@ -172,7 +172,12 @@ void rcu_sched_qs(int cpu) rdp->passed_quiesce = 1; } @@ -66,10 +66,10 @@ Index: linux-3.4/kernel/rcutree.c void rcu_bh_qs(int cpu) { struct rcu_data *rdp = &per_cpu(rcu_bh_data, cpu); -Index: linux-3.4/kernel/rcutree.h -=================================================================== ---- linux-3.4.orig/kernel/rcutree.h -+++ linux-3.4/kernel/rcutree.h +diff --git a/kernel/rcutree.h b/kernel/rcutree.h +index cdd1be0..6ee6525 100644 +--- a/kernel/rcutree.h ++++ b/kernel/rcutree.h @@ -423,6 +423,7 @@ DECLARE_PER_CPU(char, rcu_cpu_has_work); /* Forward declarations for rcutree_plugin.h */ static void rcu_bootup_announce(void); @@ -78,11 +78,11 @@ Index: linux-3.4/kernel/rcutree.h static void rcu_preempt_note_context_switch(int cpu); static int rcu_preempt_blocked_readers_cgp(struct rcu_node *rnp); #ifdef CONFIG_HOTPLUG_CPU -Index: linux-3.4/kernel/rcutree_plugin.h -=================================================================== ---- linux-3.4.orig/kernel/rcutree_plugin.h -+++ linux-3.4/kernel/rcutree_plugin.h -@@ -1899,7 +1899,7 @@ static void __cpuinit rcu_prepare_kthrea +diff --git a/kernel/rcutree_plugin.h b/kernel/rcutree_plugin.h +index e4cc151..14acafc 100644 +--- a/kernel/rcutree_plugin.h ++++ b/kernel/rcutree_plugin.h +@@ -1899,7 +1899,7 @@ static void __cpuinit rcu_prepare_kthreads(int cpu) #endif /* #else #ifdef CONFIG_RCU_BOOST */ @@ -91,10 +91,10 @@ Index: linux-3.4/kernel/rcutree_plugin.h /* * Check to see if any future RCU-related work will need to be done -Index: linux-3.4/kernel/softirq.c -=================================================================== ---- linux-3.4.orig/kernel/softirq.c -+++ linux-3.4/kernel/softirq.c +diff --git a/kernel/softirq.c b/kernel/softirq.c +index 35fb713..34fe1db 100644 +--- a/kernel/softirq.c ++++ b/kernel/softirq.c @@ -139,7 +139,7 @@ static void wakeup_softirqd(void) wake_up_process(tsk); } @@ -104,7 +104,7 @@ Index: linux-3.4/kernel/softirq.c { struct softirq_action *h = softirq_vec; unsigned int prev_count = preempt_count(); -@@ -162,7 +162,8 @@ static void handle_pending_softirqs(u32 +@@ -162,7 +162,8 @@ static void handle_pending_softirqs(u32 pending, int cpu) prev_count, (unsigned int) preempt_count()); preempt_count() = prev_count; } @@ -123,7 +123,7 @@ Index: linux-3.4/kernel/softirq.c pending = local_softirq_pending(); if (pending && --max_restart) -@@ -384,7 +385,12 @@ static inline void ksoftirqd_clr_sched_p +@@ -384,7 +385,12 @@ static inline void ksoftirqd_clr_sched_params(void) { } static DEFINE_LOCAL_IRQ_LOCK(local_softirq_lock); static DEFINE_PER_CPU(struct task_struct *, local_softirq_runner); diff --git a/debian/patches/features/all/rt/rcu-fix-build-break.patch b/debian/patches/features/all/rt/0189-rcu-Fix-build-break.patch similarity index 82% rename from debian/patches/features/all/rt/rcu-fix-build-break.patch rename to debian/patches/features/all/rt/0189-rcu-Fix-build-break.patch index 2b0c525d2..d3d2fa4bd 100644 --- a/debian/patches/features/all/rt/rcu-fix-build-break.patch +++ b/debian/patches/features/all/rt/0189-rcu-Fix-build-break.patch @@ -1,6 +1,10 @@ -Subject: rcu: Fix build break +From 0eca3641ccb67d5b6fcce084b338b4f3b399923e Mon Sep 17 00:00:00 2001 From: John Kacur Date: Fri, 13 Apr 2012 12:54:21 +0200 +Subject: [189/254] rcu: Fix build break +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit A build break can occur with the following config options enabled @@ -28,10 +32,10 @@ Signed-off-by: Thomas Gleixner kernel/rcutree_plugin.h | 5 +++++ 1 file changed, 5 insertions(+) -Index: linux-3.4/kernel/rcutree_plugin.h -=================================================================== ---- linux-3.4.orig/kernel/rcutree_plugin.h -+++ linux-3.4/kernel/rcutree_plugin.h +diff --git a/kernel/rcutree_plugin.h b/kernel/rcutree_plugin.h +index 14acafc..2844d7d 100644 +--- a/kernel/rcutree_plugin.h ++++ b/kernel/rcutree_plugin.h @@ -1914,6 +1914,9 @@ int rcu_needs_cpu(int cpu) { return rcu_cpu_has_callbacks(cpu); @@ -42,7 +46,7 @@ Index: linux-3.4/kernel/rcutree_plugin.h /* * Because we do not have RCU_FAST_NO_HZ, don't bother initializing for it. -@@ -1984,6 +1987,7 @@ static DEFINE_PER_CPU(struct hrtimer, rc +@@ -1984,6 +1987,7 @@ static DEFINE_PER_CPU(struct hrtimer, rcu_idle_gp_timer); static ktime_t rcu_idle_gp_wait; /* If some non-lazy callbacks. */ static ktime_t rcu_idle_lazy_gp_wait; /* If only lazy callbacks. */ diff --git a/debian/patches/features/all/rt/rt-rcutree-warn-fix.patch b/debian/patches/features/all/rt/0190-rt-rcutree-Move-misplaced-prototype.patch similarity index 67% rename from debian/patches/features/all/rt/rt-rcutree-warn-fix.patch rename to debian/patches/features/all/rt/0190-rt-rcutree-Move-misplaced-prototype.patch index 21cab1dd0..6ead33883 100644 --- a/debian/patches/features/all/rt/rt-rcutree-warn-fix.patch +++ b/debian/patches/features/all/rt/0190-rt-rcutree-Move-misplaced-prototype.patch @@ -1,6 +1,10 @@ -Subject: rt/rcutree: Move misplaced prototype +From 4f1b4f4240c151baace93b8082479aeed9dc8a55 Mon Sep 17 00:00:00 2001 From: Ingo Molnar -Date: Wed Dec 14 12:51:28 CET 2011 +Date: Wed, 14 Dec 2011 12:51:28 +0100 +Subject: [190/254] rt/rcutree: Move misplaced prototype +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit Fix this warning on x86 defconfig: @@ -11,16 +15,15 @@ usage site that needs it. Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner ---- --- kernel/rcutree.c | 2 ++ kernel/rcutree.h | 1 - 2 files changed, 2 insertions(+), 1 deletion(-) -Index: linux-3.4/kernel/rcutree.c -=================================================================== ---- linux-3.4.orig/kernel/rcutree.c -+++ linux-3.4/kernel/rcutree.c +diff --git a/kernel/rcutree.c b/kernel/rcutree.c +index a9ca0e0..0c3f4a9 100644 +--- a/kernel/rcutree.c ++++ b/kernel/rcutree.c @@ -173,6 +173,8 @@ void rcu_sched_qs(int cpu) } @@ -30,10 +33,10 @@ Index: linux-3.4/kernel/rcutree.c void rcu_bh_qs(int cpu) { rcu_preempt_qs(cpu); -Index: linux-3.4/kernel/rcutree.h -=================================================================== ---- linux-3.4.orig/kernel/rcutree.h -+++ linux-3.4/kernel/rcutree.h +diff --git a/kernel/rcutree.h b/kernel/rcutree.h +index 6ee6525..cdd1be0 100644 +--- a/kernel/rcutree.h ++++ b/kernel/rcutree.h @@ -423,7 +423,6 @@ DECLARE_PER_CPU(char, rcu_cpu_has_work); /* Forward declarations for rcutree_plugin.h */ static void rcu_bootup_announce(void); diff --git a/debian/patches/features/all/rt/lglocks-rt.patch b/debian/patches/features/all/rt/0191-lglocks-rt.patch.patch similarity index 93% rename from debian/patches/features/all/rt/lglocks-rt.patch rename to debian/patches/features/all/rt/0191-lglocks-rt.patch.patch index 47e23cdc4..12c6a0ada 100644 --- a/debian/patches/features/all/rt/lglocks-rt.patch +++ b/debian/patches/features/all/rt/0191-lglocks-rt.patch.patch @@ -1,16 +1,17 @@ -Subject: lglocks-rt.patch +From 3d6309a3f44119c11b217bdb65668ff4023d7744 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 15 Jun 2011 11:02:21 +0200 +Subject: [191/254] lglocks-rt.patch Signed-off-by: Thomas Gleixner --- - include/linux/lglock.h | 99 +++++++++++++++++++++++++++++++++++++++++++++++++ + include/linux/lglock.h | 99 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) -Index: linux-3.4/include/linux/lglock.h -=================================================================== ---- linux-3.4.orig/include/linux/lglock.h -+++ linux-3.4/include/linux/lglock.h +diff --git a/include/linux/lglock.h b/include/linux/lglock.h +index 87f402c..52b289f 100644 +--- a/include/linux/lglock.h ++++ b/include/linux/lglock.h @@ -71,6 +71,8 @@ extern void name##_global_lock_online(void); \ extern void name##_global_unlock_online(void); \ diff --git a/debian/patches/features/all/rt/drivers-serial-cleanup-locking-for-rt.patch b/debian/patches/features/all/rt/0192-serial-8250-Clean-up-the-locking-for-rt.patch similarity index 65% rename from debian/patches/features/all/rt/drivers-serial-cleanup-locking-for-rt.patch rename to debian/patches/features/all/rt/0192-serial-8250-Clean-up-the-locking-for-rt.patch index 216964943..0c64f4e97 100644 --- a/debian/patches/features/all/rt/drivers-serial-cleanup-locking-for-rt.patch +++ b/debian/patches/features/all/rt/0192-serial-8250-Clean-up-the-locking-for-rt.patch @@ -1,19 +1,19 @@ +From 8ef55a52c6ef59cffc211c32a8949aaede8e36d7 Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Fri, 3 Jul 2009 08:30:01 -0500 -Subject: serial: 8250: Clean up the locking for -rt +Subject: [192/254] serial: 8250: Clean up the locking for -rt Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner - --- drivers/tty/serial/8250/8250.c | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) -Index: linux-3.4/drivers/tty/serial/8250/8250.c -=================================================================== ---- linux-3.4.orig/drivers/tty/serial/8250/8250.c -+++ linux-3.4/drivers/tty/serial/8250/8250.c -@@ -2807,14 +2807,10 @@ serial8250_console_write(struct console +diff --git a/drivers/tty/serial/8250/8250.c b/drivers/tty/serial/8250/8250.c +index d537431..6ede5a7 100644 +--- a/drivers/tty/serial/8250/8250.c ++++ b/drivers/tty/serial/8250/8250.c +@@ -2808,14 +2808,10 @@ serial8250_console_write(struct console *co, const char *s, unsigned int count) touch_nmi_watchdog(); @@ -32,7 +32,7 @@ Index: linux-3.4/drivers/tty/serial/8250/8250.c /* * First save the IER then disable the interrupts -@@ -2846,8 +2842,7 @@ serial8250_console_write(struct console +@@ -2847,8 +2843,7 @@ serial8250_console_write(struct console *co, const char *s, unsigned int count) serial8250_modem_status(up); if (locked) diff --git a/debian/patches/features/all/rt/drivers-serial-call-flush_to_ldisc-when-the-irq-is-t.patch b/debian/patches/features/all/rt/0193-serial-8250-Call-flush_to_ldisc-when-the-irq-is-thre.patch similarity index 61% rename from debian/patches/features/all/rt/drivers-serial-call-flush_to_ldisc-when-the-irq-is-t.patch rename to debian/patches/features/all/rt/0193-serial-8250-Call-flush_to_ldisc-when-the-irq-is-thre.patch index 95e225fd5..9fc16e20f 100644 --- a/debian/patches/features/all/rt/drivers-serial-call-flush_to_ldisc-when-the-irq-is-t.patch +++ b/debian/patches/features/all/rt/0193-serial-8250-Call-flush_to_ldisc-when-the-irq-is-thre.patch @@ -1,19 +1,19 @@ +From 327233df7dcf85a5bfc57c5e4f125881916fbd5b Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Fri, 3 Jul 2009 08:30:01 -0500 -Subject: serial: 8250: Call flush_to_ldisc when the irq is threaded +Subject: [193/254] serial: 8250: Call flush_to_ldisc when the irq is threaded Signed-off-by: Ingo Molnar - --- drivers/tty/serial/8250/8250.c | 2 ++ drivers/tty/tty_buffer.c | 4 ++++ 2 files changed, 6 insertions(+) -Index: linux-3.4/drivers/tty/serial/8250/8250.c -=================================================================== ---- linux-3.4.orig/drivers/tty/serial/8250/8250.c -+++ linux-3.4/drivers/tty/serial/8250/8250.c -@@ -1584,12 +1584,14 @@ static irqreturn_t serial8250_interrupt( +diff --git a/drivers/tty/serial/8250/8250.c b/drivers/tty/serial/8250/8250.c +index 6ede5a7..ff93c70 100644 +--- a/drivers/tty/serial/8250/8250.c ++++ b/drivers/tty/serial/8250/8250.c +@@ -1584,12 +1584,14 @@ static irqreturn_t serial8250_interrupt(int irq, void *dev_id) l = l->next; @@ -28,11 +28,11 @@ Index: linux-3.4/drivers/tty/serial/8250/8250.c } while (l != end); spin_unlock(&i->lock); -Index: linux-3.4/drivers/tty/tty_buffer.c -=================================================================== ---- linux-3.4.orig/drivers/tty/tty_buffer.c -+++ linux-3.4/drivers/tty/tty_buffer.c -@@ -493,10 +493,14 @@ void tty_flip_buffer_push(struct tty_str +diff --git a/drivers/tty/tty_buffer.c b/drivers/tty/tty_buffer.c +index 6c9b7cd..a56c223 100644 +--- a/drivers/tty/tty_buffer.c ++++ b/drivers/tty/tty_buffer.c +@@ -493,10 +493,14 @@ void tty_flip_buffer_push(struct tty_struct *tty) tty->buf.tail->commit = tty->buf.tail->used; spin_unlock_irqrestore(&tty->buf.lock, flags); diff --git a/debian/patches/features/all/rt/drivers-tty-fix-omap-lock-crap.patch b/debian/patches/features/all/rt/0194-drivers-tty-fix-omap-lock-crap.patch.patch similarity index 69% rename from debian/patches/features/all/rt/drivers-tty-fix-omap-lock-crap.patch rename to debian/patches/features/all/rt/0194-drivers-tty-fix-omap-lock-crap.patch.patch index a33e39c98..a5241a5e3 100644 --- a/debian/patches/features/all/rt/drivers-tty-fix-omap-lock-crap.patch +++ b/debian/patches/features/all/rt/0194-drivers-tty-fix-omap-lock-crap.patch.patch @@ -1,17 +1,18 @@ -Subject: drivers-tty-fix-omap-lock-crap.patch +From bc33fee174de6448be6451d25115066b41a5ba77 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Thu, 28 Jul 2011 13:32:57 +0200 +Subject: [194/254] drivers-tty-fix-omap-lock-crap.patch Signed-off-by: Thomas Gleixner --- drivers/tty/serial/omap-serial.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) -Index: linux-3.4/drivers/tty/serial/omap-serial.c -=================================================================== ---- linux-3.4.orig/drivers/tty/serial/omap-serial.c -+++ linux-3.4/drivers/tty/serial/omap-serial.c -@@ -1064,13 +1064,10 @@ serial_omap_console_write(struct console +diff --git a/drivers/tty/serial/omap-serial.c b/drivers/tty/serial/omap-serial.c +index d00b38e..f697492 100644 +--- a/drivers/tty/serial/omap-serial.c ++++ b/drivers/tty/serial/omap-serial.c +@@ -1064,13 +1064,10 @@ serial_omap_console_write(struct console *co, const char *s, pm_runtime_get_sync(&up->pdev->dev); @@ -28,7 +29,7 @@ Index: linux-3.4/drivers/tty/serial/omap-serial.c /* * First save the IER then disable the interrupts -@@ -1099,8 +1096,7 @@ serial_omap_console_write(struct console +@@ -1099,8 +1096,7 @@ serial_omap_console_write(struct console *co, const char *s, pm_runtime_mark_last_busy(&up->pdev->dev); pm_runtime_put_autosuspend(&up->pdev->dev); if (locked) diff --git a/debian/patches/features/all/rt/rt-serial-warn-fix.patch b/debian/patches/features/all/rt/0195-rt-Improve-the-serial-console-PASS_LIMIT.patch similarity index 68% rename from debian/patches/features/all/rt/rt-serial-warn-fix.patch rename to debian/patches/features/all/rt/0195-rt-Improve-the-serial-console-PASS_LIMIT.patch index 66a21ff8f..6eff36d63 100644 --- a/debian/patches/features/all/rt/rt-serial-warn-fix.patch +++ b/debian/patches/features/all/rt/0195-rt-Improve-the-serial-console-PASS_LIMIT.patch @@ -1,6 +1,10 @@ -Subject: rt: Improve the serial console PASS_LIMIT +From b60f416efa14addfbb35b438df85cc9375e855d9 Mon Sep 17 00:00:00 2001 From: Ingo Molnar -Date: Wed Dec 14 13:05:54 CET 2011 +Date: Wed, 14 Dec 2011 13:05:54 +0100 +Subject: [195/254] rt: Improve the serial console PASS_LIMIT +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit Beyond the warning: @@ -15,11 +19,11 @@ Signed-off-by: Thomas Gleixner drivers/tty/serial/8250/8250.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) -Index: linux-3.4/drivers/tty/serial/8250/8250.c -=================================================================== ---- linux-3.4.orig/drivers/tty/serial/8250/8250.c -+++ linux-3.4/drivers/tty/serial/8250/8250.c -@@ -80,7 +80,16 @@ static unsigned int skip_txen_test; /* f +diff --git a/drivers/tty/serial/8250/8250.c b/drivers/tty/serial/8250/8250.c +index ff93c70..a785ec0 100644 +--- a/drivers/tty/serial/8250/8250.c ++++ b/drivers/tty/serial/8250/8250.c +@@ -80,7 +80,16 @@ static unsigned int skip_txen_test; /* force skip of txen test at init time */ #define DEBUG_INTR(fmt...) do { } while (0) #endif @@ -37,7 +41,7 @@ Index: linux-3.4/drivers/tty/serial/8250/8250.c #define BOTH_EMPTY (UART_LSR_TEMT | UART_LSR_THRE) -@@ -1584,14 +1593,12 @@ static irqreturn_t serial8250_interrupt( +@@ -1584,14 +1593,12 @@ static irqreturn_t serial8250_interrupt(int irq, void *dev_id) l = l->next; diff --git a/debian/patches/features/all/rt/fs-namespace-preemption-fix.patch b/debian/patches/features/all/rt/0196-fs-namespace-preemption-fix.patch similarity index 78% rename from debian/patches/features/all/rt/fs-namespace-preemption-fix.patch rename to debian/patches/features/all/rt/0196-fs-namespace-preemption-fix.patch index 398bebc0b..4ce705a1d 100644 --- a/debian/patches/features/all/rt/fs-namespace-preemption-fix.patch +++ b/debian/patches/features/all/rt/0196-fs-namespace-preemption-fix.patch @@ -1,6 +1,7 @@ +From d5a66108ec0e6335c4902cf4a05502185868cc87 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sun, 19 Jul 2009 08:44:27 -0500 -Subject: fs: namespace preemption fix +Subject: [196/254] fs: namespace preemption fix On RT we cannot loop with preemption disabled here as mnt_make_readonly() might have been preempted. We can safely enable @@ -8,15 +9,14 @@ preemption while waiting for MNT_WRITE_HOLD to be cleared. Safe on !RT as well. Signed-off-by: Thomas Gleixner - --- fs/namespace.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) -Index: linux-3.4/fs/namespace.c -=================================================================== ---- linux-3.4.orig/fs/namespace.c -+++ linux-3.4/fs/namespace.c +diff --git a/fs/namespace.c b/fs/namespace.c +index 4e46539..6dc617c 100644 +--- a/fs/namespace.c ++++ b/fs/namespace.c @@ -313,8 +313,11 @@ int mnt_want_write(struct vfsmount *m) * incremented count after it has set MNT_WRITE_HOLD. */ diff --git a/debian/patches/features/all/rt/mm-protect-activate-switch-mm.patch b/debian/patches/features/all/rt/0197-mm-protect-activate-switch-mm.patch.patch similarity index 64% rename from debian/patches/features/all/rt/mm-protect-activate-switch-mm.patch rename to debian/patches/features/all/rt/0197-mm-protect-activate-switch-mm.patch.patch index fa18bfa1a..0f8b17e79 100644 --- a/debian/patches/features/all/rt/mm-protect-activate-switch-mm.patch +++ b/debian/patches/features/all/rt/0197-mm-protect-activate-switch-mm.patch.patch @@ -1,6 +1,7 @@ -Subject: mm-protect-activate-switch-mm.patch +From d7a7cae95f156414db2564b4008b90149a8ac103 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner -Date: Mon, 04 Jul 2011 09:48:40 +0200 +Date: Mon, 4 Jul 2011 09:48:40 +0200 +Subject: [197/254] mm-protect-activate-switch-mm.patch Signed-off-by: Thomas Gleixner --- @@ -8,11 +9,11 @@ Signed-off-by: Thomas Gleixner mm/mmu_context.c | 2 ++ 2 files changed, 4 insertions(+) -Index: linux-3.4/fs/exec.c -=================================================================== ---- linux-3.4.orig/fs/exec.c -+++ linux-3.4/fs/exec.c -@@ -840,10 +840,12 @@ static int exec_mmap(struct mm_struct *m +diff --git a/fs/exec.c b/fs/exec.c +index b1fd202..db02d76 100644 +--- a/fs/exec.c ++++ b/fs/exec.c +@@ -840,10 +840,12 @@ static int exec_mmap(struct mm_struct *mm) } } task_lock(tsk); @@ -25,10 +26,10 @@ Index: linux-3.4/fs/exec.c task_unlock(tsk); arch_pick_mmap_layout(mm); if (old_mm) { -Index: linux-3.4/mm/mmu_context.c -=================================================================== ---- linux-3.4.orig/mm/mmu_context.c -+++ linux-3.4/mm/mmu_context.c +diff --git a/mm/mmu_context.c b/mm/mmu_context.c +index 3dcfaf4..8ca7e6b 100644 +--- a/mm/mmu_context.c ++++ b/mm/mmu_context.c @@ -26,6 +26,7 @@ void use_mm(struct mm_struct *mm) struct task_struct *tsk = current; diff --git a/debian/patches/features/all/rt/mm-protect-activate_mm-by-preempt_-disable-7cenable-_rt.patch b/debian/patches/features/all/rt/0198-mm-Protect-activate_mm-by-preempt_-disable-7Cenable-.patch similarity index 90% rename from debian/patches/features/all/rt/mm-protect-activate_mm-by-preempt_-disable-7cenable-_rt.patch rename to debian/patches/features/all/rt/0198-mm-Protect-activate_mm-by-preempt_-disable-7Cenable-.patch index 9d08ba688..35f8f373d 100644 --- a/debian/patches/features/all/rt/mm-protect-activate_mm-by-preempt_-disable-7cenable-_rt.patch +++ b/debian/patches/features/all/rt/0198-mm-Protect-activate_mm-by-preempt_-disable-7Cenable-.patch @@ -1,8 +1,8 @@ -Subject: mm: Protect activate_mm() by preempt_[disable%7Cenable]_rt() -From: Yong Zhang -Date: Tue, 15 May 2012 13:53:56 +0800 - +From 6e6112486ccbc0fe5c621127ac1b4328827bfcd1 Mon Sep 17 00:00:00 2001 From: Yong Zhang +Date: Tue, 15 May 2012 13:53:56 +0800 +Subject: [198/254] mm: Protect activate_mm() by + preempt_[disable%7Cenable]_rt() Otherwise there will be warning on ARM like below: @@ -78,12 +78,3 @@ index 8ca7e6b..1385e48 100644 task_unlock(tsk); if (active_mm != mm) --- -1.7.5.4 - --- -To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in -the body of a message to majordomo@vger.kernel.org -More majordomo info at http://vger.kernel.org/majordomo-info.html - - diff --git a/debian/patches/features/all/rt/fs-block-rt-support.patch b/debian/patches/features/all/rt/0199-fs-block-rt-support.patch.patch similarity index 68% rename from debian/patches/features/all/rt/fs-block-rt-support.patch rename to debian/patches/features/all/rt/0199-fs-block-rt-support.patch.patch index 44f531e9c..bd82250b2 100644 --- a/debian/patches/features/all/rt/fs-block-rt-support.patch +++ b/debian/patches/features/all/rt/0199-fs-block-rt-support.patch.patch @@ -1,6 +1,7 @@ -Subject: fs-block-rt-support.patch +From 0fd3a26e8aec6a1e34e45f457dc4d2f5f189870a Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Tue, 14 Jun 2011 17:05:09 +0200 +Subject: [199/254] fs-block-rt-support.patch Signed-off-by: Thomas Gleixner --- @@ -8,10 +9,10 @@ Signed-off-by: Thomas Gleixner fs/file.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) -Index: linux-3.4/block/blk-core.c -=================================================================== ---- linux-3.4.orig/block/blk-core.c -+++ linux-3.4/block/blk-core.c +diff --git a/block/blk-core.c b/block/blk-core.c +index 0d947d0..f068328 100644 +--- a/block/blk-core.c ++++ b/block/blk-core.c @@ -237,7 +237,7 @@ EXPORT_SYMBOL(blk_delay_queue); **/ void blk_start_queue(struct request_queue *q) @@ -21,11 +22,11 @@ Index: linux-3.4/block/blk-core.c queue_flag_clear(QUEUE_FLAG_STOPPED, q); __blk_run_queue(q); -Index: linux-3.4/fs/file.c -=================================================================== ---- linux-3.4.orig/fs/file.c -+++ linux-3.4/fs/file.c -@@ -105,14 +105,14 @@ void free_fdtable_rcu(struct rcu_head *r +diff --git a/fs/file.c b/fs/file.c +index 6f176f5..9f5343d 100644 +--- a/fs/file.c ++++ b/fs/file.c +@@ -105,14 +105,14 @@ void free_fdtable_rcu(struct rcu_head *rcu) kfree(fdt->open_fds); kfree(fdt); } else { diff --git a/debian/patches/features/all/rt/fs-ntfs-disable-interrupt-non-rt.patch b/debian/patches/features/all/rt/0200-fs-ntfs-disable-interrupt-only-on-RT.patch similarity index 86% rename from debian/patches/features/all/rt/fs-ntfs-disable-interrupt-non-rt.patch rename to debian/patches/features/all/rt/0200-fs-ntfs-disable-interrupt-only-on-RT.patch index ea2d51226..895123c9b 100644 --- a/debian/patches/features/all/rt/fs-ntfs-disable-interrupt-non-rt.patch +++ b/debian/patches/features/all/rt/0200-fs-ntfs-disable-interrupt-only-on-RT.patch @@ -1,6 +1,7 @@ +From a6effd6be428ea76a3a637899d0f39a4950fb44b Mon Sep 17 00:00:00 2001 From: Mike Galbraith Date: Fri, 3 Jul 2009 08:44:12 -0500 -Subject: fs: ntfs: disable interrupt only on !RT +Subject: [200/254] fs: ntfs: disable interrupt only on !RT On Sat, 2007-10-27 at 11:44 +0200, Ingo Molnar wrote: > * Nick Piggin wrote: @@ -34,16 +35,15 @@ instead? Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner - --- fs/ntfs/aops.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -Index: linux-3.4/fs/ntfs/aops.c -=================================================================== ---- linux-3.4.orig/fs/ntfs/aops.c -+++ linux-3.4/fs/ntfs/aops.c -@@ -144,13 +144,13 @@ static void ntfs_end_buffer_async_read(s +diff --git a/fs/ntfs/aops.c b/fs/ntfs/aops.c +index 4e4ca73..f5d4565 100644 +--- a/fs/ntfs/aops.c ++++ b/fs/ntfs/aops.c +@@ -144,13 +144,13 @@ static void ntfs_end_buffer_async_read(struct buffer_head *bh, int uptodate) recs = PAGE_CACHE_SIZE / rec_size; /* Should have been verified before we got here... */ BUG_ON(!recs); diff --git a/debian/patches/features/all/rt/x86-mce-timer-hrtimer.patch b/debian/patches/features/all/rt/0201-x86-Convert-mce-timer-to-hrtimer.patch similarity index 81% rename from debian/patches/features/all/rt/x86-mce-timer-hrtimer.patch rename to debian/patches/features/all/rt/0201-x86-Convert-mce-timer-to-hrtimer.patch index 9bc04d8fc..4679b1cae 100644 --- a/debian/patches/features/all/rt/x86-mce-timer-hrtimer.patch +++ b/debian/patches/features/all/rt/0201-x86-Convert-mce-timer-to-hrtimer.patch @@ -1,21 +1,21 @@ +From 0af45df474548c9733035d639d3345dd3414724e Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Mon, 13 Dec 2010 16:33:39 +0100 -Subject: x86: Convert mce timer to hrtimer +Subject: [201/254] x86: Convert mce timer to hrtimer mce_timer is started in atomic contexts of cpu bringup. This results in might_sleep() warnings on RT. Convert mce_timer to a hrtimer to avoid this. Signed-off-by: Thomas Gleixner - --- - arch/x86/kernel/cpu/mcheck/mce.c | 49 ++++++++++++++++++--------------------- + arch/x86/kernel/cpu/mcheck/mce.c | 49 ++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 26 deletions(-) -Index: linux-3.4/arch/x86/kernel/cpu/mcheck/mce.c -=================================================================== ---- linux-3.4.orig/arch/x86/kernel/cpu/mcheck/mce.c -+++ linux-3.4/arch/x86/kernel/cpu/mcheck/mce.c +diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c +index 61604ae..473e40d 100644 +--- a/arch/x86/kernel/cpu/mcheck/mce.c ++++ b/arch/x86/kernel/cpu/mcheck/mce.c @@ -38,6 +38,7 @@ #include #include @@ -24,7 +24,7 @@ Index: linux-3.4/arch/x86/kernel/cpu/mcheck/mce.c #include #include -@@ -1229,17 +1230,14 @@ void mce_log_therm_throt_event(__u64 sta +@@ -1245,17 +1246,14 @@ void mce_log_therm_throt_event(__u64 status) * poller finds an MCE, poll 2x faster. When the poller finds no more * errors, poll 2x slower (up to check_interval seconds). */ @@ -47,7 +47,7 @@ Index: linux-3.4/arch/x86/kernel/cpu/mcheck/mce.c if (mce_available(__this_cpu_ptr(&cpu_info))) { machine_check_poll(MCP_TIMESTAMP, -@@ -1252,21 +1250,22 @@ static void mce_start_timer(unsigned lon +@@ -1268,21 +1266,22 @@ static void mce_start_timer(unsigned long data) */ n = &__get_cpu_var(mce_next_interval); if (mce_notify_irq()) @@ -76,7 +76,7 @@ Index: linux-3.4/arch/x86/kernel/cpu/mcheck/mce.c } static void mce_do_trigger(struct work_struct *work) -@@ -1496,10 +1495,11 @@ static void __mcheck_cpu_init_vendor(str +@@ -1512,10 +1511,11 @@ static void __mcheck_cpu_init_vendor(struct cpuinfo_x86 *c) static void __mcheck_cpu_init_timer(void) { @@ -91,7 +91,7 @@ Index: linux-3.4/arch/x86/kernel/cpu/mcheck/mce.c if (mce_ignore_ce) return; -@@ -1507,8 +1507,9 @@ static void __mcheck_cpu_init_timer(void +@@ -1523,8 +1523,9 @@ static void __mcheck_cpu_init_timer(void) *n = check_interval * HZ; if (!*n) return; @@ -103,7 +103,7 @@ Index: linux-3.4/arch/x86/kernel/cpu/mcheck/mce.c } /* Handle unconfigured int18 (should never happen) */ -@@ -2160,6 +2161,8 @@ static void __cpuinit mce_disable_cpu(vo +@@ -2176,6 +2177,8 @@ static void __cpuinit mce_disable_cpu(void *h) if (!mce_available(__this_cpu_ptr(&cpu_info))) return; @@ -112,7 +112,7 @@ Index: linux-3.4/arch/x86/kernel/cpu/mcheck/mce.c if (!(action & CPU_TASKS_FROZEN)) cmci_clear(); for (i = 0; i < banks; i++) { -@@ -2186,6 +2189,7 @@ static void __cpuinit mce_reenable_cpu(v +@@ -2202,6 +2205,7 @@ static void __cpuinit mce_reenable_cpu(void *h) if (b->init) wrmsrl(MSR_IA32_MCx_CTL(i), b->ctl); } @@ -120,7 +120,7 @@ Index: linux-3.4/arch/x86/kernel/cpu/mcheck/mce.c } /* Get notified when a cpu comes on/off. Be hotplug friendly. */ -@@ -2193,7 +2197,6 @@ static int __cpuinit +@@ -2209,7 +2213,6 @@ static int __cpuinit mce_cpu_callback(struct notifier_block *nfb, unsigned long action, void *hcpu) { unsigned int cpu = (unsigned long)hcpu; @@ -128,7 +128,7 @@ Index: linux-3.4/arch/x86/kernel/cpu/mcheck/mce.c switch (action) { case CPU_ONLINE: -@@ -2210,16 +2213,10 @@ mce_cpu_callback(struct notifier_block * +@@ -2226,16 +2229,10 @@ mce_cpu_callback(struct notifier_block *nfb, unsigned long action, void *hcpu) break; case CPU_DOWN_PREPARE: case CPU_DOWN_PREPARE_FROZEN: diff --git a/debian/patches/features/all/rt/x86-stackprot-no-random-on-rt.patch b/debian/patches/features/all/rt/0202-x86-stackprotector-Avoid-random-pool-on-rt.patch similarity index 78% rename from debian/patches/features/all/rt/x86-stackprot-no-random-on-rt.patch rename to debian/patches/features/all/rt/0202-x86-stackprotector-Avoid-random-pool-on-rt.patch index e57cc94ca..e67485688 100644 --- a/debian/patches/features/all/rt/x86-stackprot-no-random-on-rt.patch +++ b/debian/patches/features/all/rt/0202-x86-stackprotector-Avoid-random-pool-on-rt.patch @@ -1,6 +1,7 @@ +From 5f921ae1232a789d178ccba12c0cc794c2c48cf5 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Thu, 16 Dec 2010 14:25:18 +0100 -Subject: x86: stackprotector: Avoid random pool on rt +Subject: [202/254] x86: stackprotector: Avoid random pool on rt CPU bringup calls into the random pool to initialize the stack canary. During boot that works nicely even on RT as the might sleep @@ -12,15 +13,14 @@ entropy and we rely on the TSC randomnness. Reported-by: Carsten Emde Signed-off-by: Thomas Gleixner - --- arch/x86/include/asm/stackprotector.h | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) -Index: linux-3.4/arch/x86/include/asm/stackprotector.h -=================================================================== ---- linux-3.4.orig/arch/x86/include/asm/stackprotector.h -+++ linux-3.4/arch/x86/include/asm/stackprotector.h +diff --git a/arch/x86/include/asm/stackprotector.h b/arch/x86/include/asm/stackprotector.h +index b5d9533..0f3d7b1 100644 +--- a/arch/x86/include/asm/stackprotector.h ++++ b/arch/x86/include/asm/stackprotector.h @@ -57,7 +57,7 @@ */ static __always_inline void boot_init_stack_canary(void) @@ -30,7 +30,7 @@ Index: linux-3.4/arch/x86/include/asm/stackprotector.h u64 tsc; #ifdef CONFIG_X86_64 -@@ -68,8 +68,16 @@ static __always_inline void boot_init_st +@@ -68,8 +68,16 @@ static __always_inline void boot_init_stack_canary(void) * of randomness. The TSC only matters for very early init, * there it already has some randomness on most systems. Later * on during the bootup the random pool has true entropy too. diff --git a/debian/patches/features/all/rt/x86-use-gen-rwsem-spinlocks-rt.patch b/debian/patches/features/all/rt/0203-x86-Use-generic-rwsem_spinlocks-on-rt.patch similarity index 71% rename from debian/patches/features/all/rt/x86-use-gen-rwsem-spinlocks-rt.patch rename to debian/patches/features/all/rt/0203-x86-Use-generic-rwsem_spinlocks-on-rt.patch index b40e59d91..5ab97d08e 100644 --- a/debian/patches/features/all/rt/x86-use-gen-rwsem-spinlocks-rt.patch +++ b/debian/patches/features/all/rt/0203-x86-Use-generic-rwsem_spinlocks-on-rt.patch @@ -1,20 +1,20 @@ +From f835c8e5609480abc06c2a249f76908ba09850ad Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sun, 26 Jul 2009 02:21:32 +0200 -Subject: x86: Use generic rwsem_spinlocks on -rt +Subject: [203/254] x86: Use generic rwsem_spinlocks on -rt Simplifies the separation of anon_rw_semaphores and rw_semaphores for -rt. Signed-off-by: Thomas Gleixner - --- arch/x86/Kconfig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -Index: linux-3.4/arch/x86/Kconfig -=================================================================== ---- linux-3.4.orig/arch/x86/Kconfig -+++ linux-3.4/arch/x86/Kconfig +diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig +index c9866b0..f556832 100644 +--- a/arch/x86/Kconfig ++++ b/arch/x86/Kconfig @@ -155,10 +155,10 @@ config ARCH_MAY_HAVE_PC_FDC def_bool ISA_DMA_API diff --git a/debian/patches/features/all/rt/x86-disable-debug-stack.patch b/debian/patches/features/all/rt/0204-x86-Disable-IST-stacks-for-debug-int-3-stack-fault-f.patch similarity index 80% rename from debian/patches/features/all/rt/x86-disable-debug-stack.patch rename to debian/patches/features/all/rt/0204-x86-Disable-IST-stacks-for-debug-int-3-stack-fault-f.patch index 365e55042..f6706ad5e 100644 --- a/debian/patches/features/all/rt/x86-disable-debug-stack.patch +++ b/debian/patches/features/all/rt/0204-x86-Disable-IST-stacks-for-debug-int-3-stack-fault-f.patch @@ -1,6 +1,8 @@ +From cad0d4617dd9492fa8c1dda98e7e713c3251f796 Mon Sep 17 00:00:00 2001 From: Andi Kleen Date: Fri, 3 Jul 2009 08:44:10 -0500 -Subject: x86: Disable IST stacks for debug/int 3/stack fault for PREEMPT_RT +Subject: [204/254] x86: Disable IST stacks for debug/int 3/stack fault for + PREEMPT_RT Normally the x86-64 trap handlers for debug/int 3/stack fault run on a special interrupt stack to make them more robust @@ -41,10 +43,10 @@ Signed-off-by: Thomas Gleixner arch/x86/kernel/dumpstack_64.c | 4 ++++ 3 files changed, 21 insertions(+), 6 deletions(-) -Index: linux-3.4/arch/x86/include/asm/page_64_types.h -=================================================================== ---- linux-3.4.orig/arch/x86/include/asm/page_64_types.h -+++ linux-3.4/arch/x86/include/asm/page_64_types.h +diff --git a/arch/x86/include/asm/page_64_types.h b/arch/x86/include/asm/page_64_types.h +index 7639dbf..0883ecd 100644 +--- a/arch/x86/include/asm/page_64_types.h ++++ b/arch/x86/include/asm/page_64_types.h @@ -14,12 +14,21 @@ #define IRQ_STACK_ORDER 2 #define IRQ_STACK_SIZE (PAGE_SIZE << IRQ_STACK_ORDER) @@ -73,11 +75,11 @@ Index: linux-3.4/arch/x86/include/asm/page_64_types.h #define PUD_PAGE_SIZE (_AC(1, UL) << PUD_SHIFT) #define PUD_PAGE_MASK (~(PUD_PAGE_SIZE-1)) -Index: linux-3.4/arch/x86/kernel/cpu/common.c -=================================================================== ---- linux-3.4.orig/arch/x86/kernel/cpu/common.c -+++ linux-3.4/arch/x86/kernel/cpu/common.c -@@ -1056,7 +1056,9 @@ DEFINE_PER_CPU(struct task_struct *, fpu +diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c +index cf79302..f743261 100644 +--- a/arch/x86/kernel/cpu/common.c ++++ b/arch/x86/kernel/cpu/common.c +@@ -1056,7 +1056,9 @@ DEFINE_PER_CPU(struct task_struct *, fpu_owner_task); */ static const unsigned int exception_stack_sizes[N_EXCEPTION_STACKS] = { [0 ... N_EXCEPTION_STACKS - 1] = EXCEPTION_STKSZ, @@ -87,10 +89,10 @@ Index: linux-3.4/arch/x86/kernel/cpu/common.c }; static DEFINE_PER_CPU_PAGE_ALIGNED(char, exception_stacks -Index: linux-3.4/arch/x86/kernel/dumpstack_64.c -=================================================================== ---- linux-3.4.orig/arch/x86/kernel/dumpstack_64.c -+++ linux-3.4/arch/x86/kernel/dumpstack_64.c +diff --git a/arch/x86/kernel/dumpstack_64.c b/arch/x86/kernel/dumpstack_64.c +index 17107bd..9d50b30 100644 +--- a/arch/x86/kernel/dumpstack_64.c ++++ b/arch/x86/kernel/dumpstack_64.c @@ -21,10 +21,14 @@ (N_EXCEPTION_STACKS + DEBUG_STKSZ/EXCEPTION_STKSZ - 2) diff --git a/debian/patches/features/all/rt/workqueue-use-get-cpu-light.patch b/debian/patches/features/all/rt/0205-workqueue-use-get-cpu-light.patch.patch similarity index 52% rename from debian/patches/features/all/rt/workqueue-use-get-cpu-light.patch rename to debian/patches/features/all/rt/0205-workqueue-use-get-cpu-light.patch.patch index 99d9f3221..b30d25a72 100644 --- a/debian/patches/features/all/rt/workqueue-use-get-cpu-light.patch +++ b/debian/patches/features/all/rt/0205-workqueue-use-get-cpu-light.patch.patch @@ -1,17 +1,18 @@ -Subject: workqueue-use-get-cpu-light.patch +From 0fd43389d8cb34004f3f2ac00ed7b29daad00adb Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sun, 17 Jul 2011 21:42:26 +0200 +Subject: [205/254] workqueue-use-get-cpu-light.patch Signed-off-by: Thomas Gleixner --- kernel/workqueue.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -Index: linux-3.4/kernel/workqueue.c -=================================================================== ---- linux-3.4.orig/kernel/workqueue.c -+++ linux-3.4/kernel/workqueue.c -@@ -1058,8 +1058,8 @@ int queue_work(struct workqueue_struct * +diff --git a/kernel/workqueue.c b/kernel/workqueue.c +index 3fd5280..33d1095 100644 +--- a/kernel/workqueue.c ++++ b/kernel/workqueue.c +@@ -1058,8 +1058,8 @@ int queue_work(struct workqueue_struct *wq, struct work_struct *work) { int ret; diff --git a/debian/patches/features/all/rt/epoll-use-get-cpu-light.patch b/debian/patches/features/all/rt/0206-epoll.patch.patch similarity index 59% rename from debian/patches/features/all/rt/epoll-use-get-cpu-light.patch rename to debian/patches/features/all/rt/0206-epoll.patch.patch index e706ea721..c0890ca50 100644 --- a/debian/patches/features/all/rt/epoll-use-get-cpu-light.patch +++ b/debian/patches/features/all/rt/0206-epoll.patch.patch @@ -1,17 +1,18 @@ -Subject: epoll.patch +From 53ce02ca137b15f27269d89f0b1a4440d3b62cc6 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner -Date: Fri, 08 Jul 2011 16:35:35 +0200 +Date: Fri, 8 Jul 2011 16:35:35 +0200 +Subject: [206/254] epoll.patch Signed-off-by: Thomas Gleixner --- fs/eventpoll.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -Index: linux-3.4/fs/eventpoll.c -=================================================================== ---- linux-3.4.orig/fs/eventpoll.c -+++ linux-3.4/fs/eventpoll.c -@@ -488,12 +488,12 @@ static int ep_poll_wakeup_proc(void *pri +diff --git a/fs/eventpoll.c b/fs/eventpoll.c +index c0b3c70..39a2364 100644 +--- a/fs/eventpoll.c ++++ b/fs/eventpoll.c +@@ -488,12 +488,12 @@ static int ep_poll_wakeup_proc(void *priv, void *cookie, int call_nests) */ static void ep_poll_safewake(wait_queue_head_t *wq) { diff --git a/debian/patches/features/all/rt/mm-vmalloc-use-get-cpu-light.patch b/debian/patches/features/all/rt/0207-mm-vmalloc.patch.patch similarity index 70% rename from debian/patches/features/all/rt/mm-vmalloc-use-get-cpu-light.patch rename to debian/patches/features/all/rt/0207-mm-vmalloc.patch.patch index 82c485e1d..44ebc08a4 100644 --- a/debian/patches/features/all/rt/mm-vmalloc-use-get-cpu-light.patch +++ b/debian/patches/features/all/rt/0207-mm-vmalloc.patch.patch @@ -1,17 +1,18 @@ -Subject: mm-vmalloc.patch +From cd78855a700bfd9500cae3837e74597924c023de Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Tue, 12 Jul 2011 11:39:36 +0200 +Subject: [207/254] mm-vmalloc.patch Signed-off-by: Thomas Gleixner --- mm/vmalloc.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) -Index: linux-3.4/mm/vmalloc.c -=================================================================== ---- linux-3.4.orig/mm/vmalloc.c -+++ linux-3.4/mm/vmalloc.c -@@ -782,7 +782,7 @@ static struct vmap_block *new_vmap_block +diff --git a/mm/vmalloc.c b/mm/vmalloc.c +index 1196c77..d049fbd 100644 +--- a/mm/vmalloc.c ++++ b/mm/vmalloc.c +@@ -782,7 +782,7 @@ static struct vmap_block *new_vmap_block(gfp_t gfp_mask) struct vmap_block *vb; struct vmap_area *va; unsigned long vb_idx; @@ -20,7 +21,7 @@ Index: linux-3.4/mm/vmalloc.c node = numa_node_id(); -@@ -821,12 +821,13 @@ static struct vmap_block *new_vmap_block +@@ -821,12 +821,13 @@ static struct vmap_block *new_vmap_block(gfp_t gfp_mask) BUG_ON(err); radix_tree_preload_end(); @@ -36,7 +37,7 @@ Index: linux-3.4/mm/vmalloc.c return vb; } -@@ -900,7 +901,7 @@ static void *vb_alloc(unsigned long size +@@ -900,7 +901,7 @@ static void *vb_alloc(unsigned long size, gfp_t gfp_mask) struct vmap_block *vb; unsigned long addr = 0; unsigned int order; @@ -45,7 +46,7 @@ Index: linux-3.4/mm/vmalloc.c BUG_ON(size & ~PAGE_MASK); BUG_ON(size > PAGE_SIZE*VMAP_MAX_ALLOC); -@@ -908,7 +909,8 @@ static void *vb_alloc(unsigned long size +@@ -908,7 +909,8 @@ static void *vb_alloc(unsigned long size, gfp_t gfp_mask) again: rcu_read_lock(); diff --git a/debian/patches/features/all/rt/workqueue-sanity.patch b/debian/patches/features/all/rt/0208-workqueue-Fix-cpuhotplug-trainwreck.patch similarity index 95% rename from debian/patches/features/all/rt/workqueue-sanity.patch rename to debian/patches/features/all/rt/0208-workqueue-Fix-cpuhotplug-trainwreck.patch index 7995c22b8..a718e2007 100644 --- a/debian/patches/features/all/rt/workqueue-sanity.patch +++ b/debian/patches/features/all/rt/0208-workqueue-Fix-cpuhotplug-trainwreck.patch @@ -1,6 +1,7 @@ -Subject: workqueue: Fix cpuhotplug trainwreck +From 534003d46ab0235adfff65ef152d3022c057bb6f Mon Sep 17 00:00:00 2001 From: Peter Zijlstra -Date: Fri Sep 30 11:57:58 CEST 2011 +Date: Fri, 30 Sep 2011 11:57:58 +0200 +Subject: [208/254] workqueue: Fix cpuhotplug trainwreck The current workqueue code does crazy stuff on cpu unplug, it relies on forced affine breakage, thereby violating per-cpu expectations. Worse, @@ -27,15 +28,15 @@ this and loose ~250 lines of code. Signed-off-by: Peter Zijlstra Signed-off-by: Thomas Gleixner --- - include/linux/cpu.h | 6 - include/linux/workqueue.h | 5 - kernel/workqueue.c | 560 ++++++++++++---------------------------------- - 3 files changed, 154 insertions(+), 417 deletions(-) + include/linux/cpu.h | 6 +- + include/linux/workqueue.h | 5 +- + kernel/workqueue.c | 556 ++++++++++++--------------------------------- + 3 files changed, 152 insertions(+), 415 deletions(-) -Index: linux-3.4/include/linux/cpu.h -=================================================================== ---- linux-3.4.orig/include/linux/cpu.h -+++ linux-3.4/include/linux/cpu.h +diff --git a/include/linux/cpu.h b/include/linux/cpu.h +index 00d2f6f8..a6bda1b 100644 +--- a/include/linux/cpu.h ++++ b/include/linux/cpu.h @@ -75,8 +75,10 @@ enum { /* migration should happen before other stuff but after perf */ CPU_PRI_PERF = 20, @@ -49,10 +50,10 @@ Index: linux-3.4/include/linux/cpu.h }; #define CPU_ONLINE 0x0002 /* CPU (unsigned)v is up */ -Index: linux-3.4/include/linux/workqueue.h -=================================================================== ---- linux-3.4.orig/include/linux/workqueue.h -+++ linux-3.4/include/linux/workqueue.h +diff --git a/include/linux/workqueue.h b/include/linux/workqueue.h +index af15545..9849be1 100644 +--- a/include/linux/workqueue.h ++++ b/include/linux/workqueue.h @@ -254,9 +254,10 @@ enum { WQ_MEM_RECLAIM = 1 << 3, /* may be used for memory reclaim */ WQ_HIGHPRI = 1 << 4, /* high priority */ @@ -66,10 +67,10 @@ Index: linux-3.4/include/linux/workqueue.h WQ_MAX_ACTIVE = 512, /* I like 512, better ideas? */ WQ_MAX_UNBOUND_PER_CPU = 4, /* 4 * #cpus for unbound wq */ -Index: linux-3.4/kernel/workqueue.c -=================================================================== ---- linux-3.4.orig/kernel/workqueue.c -+++ linux-3.4/kernel/workqueue.c +diff --git a/kernel/workqueue.c b/kernel/workqueue.c +index 33d1095..ba977c4 100644 +--- a/kernel/workqueue.c ++++ b/kernel/workqueue.c @@ -41,6 +41,7 @@ #include #include @@ -86,7 +87,9 @@ Index: linux-3.4/kernel/workqueue.c - WORKER_REBIND = 1 << 5, /* mom is home, come back */ - WORKER_CPU_INTENSIVE = 1 << 6, /* cpu intensive */ - WORKER_UNBOUND = 1 << 7, /* worker is unbound */ -- ++ WORKER_CPU_INTENSIVE = 1 << 4, /* cpu intensive */ ++ WORKER_UNBOUND = 1 << 5, /* worker is unbound */ + - WORKER_NOT_RUNNING = WORKER_PREP | WORKER_ROGUE | WORKER_REBIND | - WORKER_CPU_INTENSIVE | WORKER_UNBOUND, - @@ -96,9 +99,6 @@ Index: linux-3.4/kernel/workqueue.c - TRUSTEE_BUTCHER = 2, /* butcher workers */ - TRUSTEE_RELEASE = 3, /* release workers */ - TRUSTEE_DONE = 4, /* trustee is done */ -+ WORKER_CPU_INTENSIVE = 1 << 4, /* cpu intensive */ -+ WORKER_UNBOUND = 1 << 5, /* worker is unbound */ -+ + WORKER_NOT_RUNNING = WORKER_PREP | WORKER_CPU_INTENSIVE | WORKER_UNBOUND, BUSY_WORKER_HASH_ORDER = 6, /* 64 pointers */ @@ -131,7 +131,7 @@ Index: linux-3.4/kernel/workqueue.c } ____cacheline_aligned_in_smp; /* -@@ -969,13 +956,38 @@ static bool is_chained_work(struct workq +@@ -969,13 +956,38 @@ static bool is_chained_work(struct workqueue_struct *wq) return false; } @@ -173,7 +173,7 @@ Index: linux-3.4/kernel/workqueue.c unsigned long flags; debug_work_activate(work); -@@ -1021,27 +1033,32 @@ static void __queue_work(unsigned int cp +@@ -1021,27 +1033,32 @@ static void __queue_work(unsigned int cpu, struct workqueue_struct *wq, spin_lock_irqsave(&gcwq->lock, flags); } @@ -223,7 +223,7 @@ Index: linux-3.4/kernel/workqueue.c } /** -@@ -1058,34 +1075,19 @@ int queue_work(struct workqueue_struct * +@@ -1058,34 +1075,19 @@ int queue_work(struct workqueue_struct *wq, struct work_struct *work) { int ret; @@ -261,7 +261,7 @@ Index: linux-3.4/kernel/workqueue.c } EXPORT_SYMBOL_GPL(queue_work_on); -@@ -1131,6 +1133,8 @@ int queue_delayed_work_on(int cpu, struc +@@ -1131,6 +1133,8 @@ int queue_delayed_work_on(int cpu, struct workqueue_struct *wq, struct timer_list *timer = &dwork->timer; struct work_struct *work = &dwork->work; @@ -270,7 +270,7 @@ Index: linux-3.4/kernel/workqueue.c if (!test_and_set_bit(WORK_STRUCT_PENDING_BIT, work_data_bits(work))) { unsigned int lcpu; -@@ -1196,12 +1200,13 @@ static void worker_enter_idle(struct wor +@@ -1196,12 +1200,13 @@ static void worker_enter_idle(struct worker *worker) /* idle_list is LIFO */ list_add(&worker->entry, &gcwq->idle_list); @@ -322,7 +322,7 @@ Index: linux-3.4/kernel/workqueue.c /* on creation a worker is in !idle && prep state */ worker->flags = WORKER_PREP; } -@@ -1658,13 +1645,6 @@ static bool manage_workers(struct worker +@@ -1658,13 +1645,6 @@ static bool manage_workers(struct worker *worker) gcwq->flags &= ~GCWQ_MANAGING_WORKERS; @@ -537,7 +537,10 @@ Index: linux-3.4/kernel/workqueue.c - */ - gcwq->trustee_state = TRUSTEE_IN_CHARGE; - wake_up_all(&gcwq->trustee_wait); -- ++ if (wq->flags & WQ_NON_AFFINE) ++ list_move(&work->entry, &non_affine_works); ++ } + - /* - * The original cpu is in the process of dying and may go away - * anytime now. When that happens, we and all workers would @@ -551,15 +554,11 @@ Index: linux-3.4/kernel/workqueue.c - while (gcwq->nr_workers != gcwq->nr_idle || - gcwq->flags & GCWQ_FREEZING || - gcwq->trustee_state == TRUSTEE_IN_CHARGE) { -+ if (wq->flags & WQ_NON_AFFINE) -+ list_move(&work->entry, &non_affine_works); -+ } -+ + while (!list_empty(&gcwq->worklist)) { int nr_works = 0; list_for_each_entry(work, &gcwq->worklist, entry) { -@@ -3383,200 +3263,55 @@ static int __cpuinit trustee_thread(void +@@ -3383,200 +3263,55 @@ static int __cpuinit trustee_thread(void *__gcwq) wake_up_process(worker->task); } @@ -607,7 +606,9 @@ Index: linux-3.4/kernel/workqueue.c - for_each_busy_worker(worker, i, pos, gcwq) { - struct work_struct *rebind_work = &worker->rebind_work; -- ++ spin_lock_irq(&gcwq->lock); ++ } + - /* - * Rebind_work may race with future cpu hotplug - * operations. Use a separate flag to mark that @@ -615,27 +616,25 @@ Index: linux-3.4/kernel/workqueue.c - */ - worker->flags |= WORKER_REBIND; - worker->flags &= ~WORKER_ROGUE; -+ spin_lock_irq(&gcwq->lock); -+ } ++ WARN_ON(gcwq->nr_workers != gcwq->nr_idle); - /* queue rebind_work, wq doesn't matter, use the default one */ - if (test_and_set_bit(WORK_STRUCT_PENDING_BIT, - work_data_bits(rebind_work))) - continue; -+ WARN_ON(gcwq->nr_workers != gcwq->nr_idle); ++ list_for_each_entry_safe(worker, n, &gcwq->idle_list, entry) ++ destroy_worker(worker); - debug_work_activate(rebind_work); - insert_work(get_cwq(gcwq->cpu, system_wq), rebind_work, - worker->scheduled.next, - work_color_to_flags(WORK_NO_COLOR)); - } -+ list_for_each_entry_safe(worker, n, &gcwq->idle_list, entry) -+ destroy_worker(worker); ++ WARN_ON(gcwq->nr_workers || gcwq->nr_idle); - /* relinquish manager role */ - gcwq->flags &= ~GCWQ_MANAGING_WORKERS; -+ WARN_ON(gcwq->nr_workers || gcwq->nr_idle); - +- - /* notify completion */ - gcwq->trustee = NULL; - gcwq->trustee_state = TRUSTEE_DONE; diff --git a/debian/patches/features/all/rt/workqueue-fix-PF_THREAD_BOUND.patch b/debian/patches/features/all/rt/0209-workqueue-Fix-PF_THREAD_BOUND-abuse.patch similarity index 84% rename from debian/patches/features/all/rt/workqueue-fix-PF_THREAD_BOUND.patch rename to debian/patches/features/all/rt/0209-workqueue-Fix-PF_THREAD_BOUND-abuse.patch index ef12b0660..d4418a2e1 100644 --- a/debian/patches/features/all/rt/workqueue-fix-PF_THREAD_BOUND.patch +++ b/debian/patches/features/all/rt/0209-workqueue-Fix-PF_THREAD_BOUND-abuse.patch @@ -1,6 +1,7 @@ -Subject: workqueue: Fix PF_THREAD_BOUND abuse +From 3299b8a5d14d2eb4f56e5edcb49fe7462c3e68cf Mon Sep 17 00:00:00 2001 From: Peter Zijlstra -Date: Mon Oct 03 12:43:25 CEST 2011 +Date: Mon, 3 Oct 2011 12:43:25 +0200 +Subject: [209/254] workqueue: Fix PF_THREAD_BOUND abuse PF_THREAD_BOUND is set by kthread_bind() and means the thread is bound to a particular cpu for correctness. The workqueue code abuses this @@ -28,10 +29,10 @@ Signed-off-by: Thomas Gleixner kernel/workqueue.c | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) -Index: linux-3.4/kernel/workqueue.c -=================================================================== ---- linux-3.4.orig/kernel/workqueue.c -+++ linux-3.4/kernel/workqueue.c +diff --git a/kernel/workqueue.c b/kernel/workqueue.c +index ba977c4..dc50d5d 100644 +--- a/kernel/workqueue.c ++++ b/kernel/workqueue.c @@ -1283,8 +1283,14 @@ __acquires(&gcwq->lock) return false; if (task_cpu(task) == gcwq->cpu && @@ -67,7 +68,7 @@ Index: linux-3.4/kernel/workqueue.c static struct worker *alloc_worker(void) { struct worker *worker; -@@ -1360,15 +1378,9 @@ static struct worker *create_worker(stru +@@ -1360,15 +1378,9 @@ static struct worker *create_worker(struct global_cwq *gcwq, bool bind) if (IS_ERR(worker->task)) goto fail; @@ -92,7 +93,7 @@ Index: linux-3.4/kernel/workqueue.c } schedule(); -@@ -2995,7 +3007,6 @@ struct workqueue_struct *__alloc_workque +@@ -2995,7 +3007,6 @@ struct workqueue_struct *__alloc_workqueue_key(const char *fmt, if (IS_ERR(rescuer->task)) goto err; diff --git a/debian/patches/features/all/rt/workqueue-hotplug-fix.patch b/debian/patches/features/all/rt/0210-workqueue-Use-get_cpu_light-in-flush_gcwq.patch similarity index 91% rename from debian/patches/features/all/rt/workqueue-hotplug-fix.patch rename to debian/patches/features/all/rt/0210-workqueue-Use-get_cpu_light-in-flush_gcwq.patch index 804d35906..54a22333f 100644 --- a/debian/patches/features/all/rt/workqueue-hotplug-fix.patch +++ b/debian/patches/features/all/rt/0210-workqueue-Use-get_cpu_light-in-flush_gcwq.patch @@ -1,6 +1,7 @@ -Subject: workqueue: Use get_cpu_light() in flush_gcwq() +From c42cba91f18914bd631077412bb0a3f54cd77c15 Mon Sep 17 00:00:00 2001 From: Yong Zhang Date: Sun, 16 Oct 2011 18:56:46 +0800 +Subject: [210/254] workqueue: Use get_cpu_light() in flush_gcwq() BUG: sleeping function called from invalid context at kernel/rtmutex.c:645 in_atomic(): 1, irqs_disabled(): 0, pid: 1739, name: bash @@ -58,11 +59,11 @@ Signed-off-by: Thomas Gleixner kernel/workqueue.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -Index: linux-3.4/kernel/workqueue.c -=================================================================== ---- linux-3.4.orig/kernel/workqueue.c -+++ linux-3.4/kernel/workqueue.c -@@ -3297,14 +3297,14 @@ static void flush_gcwq(struct global_cwq +diff --git a/kernel/workqueue.c b/kernel/workqueue.c +index dc50d5d..d3da5a8 100644 +--- a/kernel/workqueue.c ++++ b/kernel/workqueue.c +@@ -3297,14 +3297,14 @@ static void flush_gcwq(struct global_cwq *gcwq) spin_unlock_irq(&gcwq->lock); diff --git a/debian/patches/features/all/rt/workqueue-more-hotplug-fallout.patch b/debian/patches/features/all/rt/0211-hotplug-stuff.patch.patch similarity index 56% rename from debian/patches/features/all/rt/workqueue-more-hotplug-fallout.patch rename to debian/patches/features/all/rt/0211-hotplug-stuff.patch.patch index 99b4f5c3d..f9bf89dfd 100644 --- a/debian/patches/features/all/rt/workqueue-more-hotplug-fallout.patch +++ b/debian/patches/features/all/rt/0211-hotplug-stuff.patch.patch @@ -1,6 +1,7 @@ -Subject: hotplug-stuff.patch +From b4cb3160fc7036805069d7ff881e65d7250f232a Mon Sep 17 00:00:00 2001 From: Thomas Gleixner -Date: Fri, 04 Nov 2011 18:58:24 +0100 +Date: Fri, 4 Nov 2011 18:58:24 +0100 +Subject: [211/254] hotplug-stuff.patch Do not take lock for non handled cases (might be atomic context) @@ -9,11 +10,11 @@ Signed-off-by: Thomas Gleixner kernel/workqueue.c | 5 +++++ 1 file changed, 5 insertions(+) -Index: linux-3.4/kernel/workqueue.c -=================================================================== ---- linux-3.4.orig/kernel/workqueue.c -+++ linux-3.4/kernel/workqueue.c -@@ -3215,6 +3215,11 @@ static int __devinit workqueue_cpu_up_ca +diff --git a/kernel/workqueue.c b/kernel/workqueue.c +index d3da5a8..bc867e8 100644 +--- a/kernel/workqueue.c ++++ b/kernel/workqueue.c +@@ -3215,6 +3215,11 @@ static int __devinit workqueue_cpu_up_callback(struct notifier_block *nfb, new_worker = create_worker(gcwq, false); if (!new_worker) return NOTIFY_BAD; diff --git a/debian/patches/features/all/rt/debugobjects-rt.patch b/debian/patches/features/all/rt/0212-debugobjects-rt.patch.patch similarity index 61% rename from debian/patches/features/all/rt/debugobjects-rt.patch rename to debian/patches/features/all/rt/0212-debugobjects-rt.patch.patch index cdbcddb5e..584c64f74 100644 --- a/debian/patches/features/all/rt/debugobjects-rt.patch +++ b/debian/patches/features/all/rt/0212-debugobjects-rt.patch.patch @@ -1,17 +1,18 @@ -Subject: debugobjects-rt.patch +From 09b44e2cb399bb16808ee600624f1ff9a548c8d6 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sun, 17 Jul 2011 21:41:35 +0200 +Subject: [212/254] debugobjects-rt.patch Signed-off-by: Thomas Gleixner --- lib/debugobjects.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) -Index: linux-3.4/lib/debugobjects.c -=================================================================== ---- linux-3.4.orig/lib/debugobjects.c -+++ linux-3.4/lib/debugobjects.c -@@ -310,7 +310,10 @@ __debug_object_init(void *addr, struct d +diff --git a/lib/debugobjects.c b/lib/debugobjects.c +index 0ab9ae8..84c2f50 100644 +--- a/lib/debugobjects.c ++++ b/lib/debugobjects.c +@@ -310,7 +310,10 @@ __debug_object_init(void *addr, struct debug_obj_descr *descr, int onstack) struct debug_obj *obj; unsigned long flags; @@ -23,7 +24,7 @@ Index: linux-3.4/lib/debugobjects.c db = get_bucket((unsigned long) addr); -@@ -1053,9 +1056,9 @@ static int __init debug_objects_replace_ +@@ -1053,9 +1056,9 @@ static int __init debug_objects_replace_static_objects(void) } } diff --git a/debian/patches/features/all/rt/jump-label-rt.patch b/debian/patches/features/all/rt/0213-jump-label-rt.patch.patch similarity index 64% rename from debian/patches/features/all/rt/jump-label-rt.patch rename to debian/patches/features/all/rt/0213-jump-label-rt.patch.patch index f141dc1aa..a882af783 100644 --- a/debian/patches/features/all/rt/jump-label-rt.patch +++ b/debian/patches/features/all/rt/0213-jump-label-rt.patch.patch @@ -1,16 +1,17 @@ -Subject: jump-label-rt.patch +From 6bdd6cffbc98fdf1c6e36ad7c1dda686f2a3dc53 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 13 Jul 2011 11:03:16 +0200 +Subject: [213/254] jump-label-rt.patch Signed-off-by: Thomas Gleixner --- include/linux/jump_label.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) -Index: linux-3.4/include/linux/jump_label.h -=================================================================== ---- linux-3.4.orig/include/linux/jump_label.h -+++ linux-3.4/include/linux/jump_label.h +diff --git a/include/linux/jump_label.h b/include/linux/jump_label.h +index c513a40..f47f3e0 100644 +--- a/include/linux/jump_label.h ++++ b/include/linux/jump_label.h @@ -51,7 +51,8 @@ #include #include diff --git a/debian/patches/features/all/rt/skbufhead-raw-lock.patch b/debian/patches/features/all/rt/0214-skbufhead-raw-lock.patch.patch similarity index 72% rename from debian/patches/features/all/rt/skbufhead-raw-lock.patch rename to debian/patches/features/all/rt/0214-skbufhead-raw-lock.patch.patch index b58cce7b9..17943da58 100644 --- a/debian/patches/features/all/rt/skbufhead-raw-lock.patch +++ b/debian/patches/features/all/rt/0214-skbufhead-raw-lock.patch.patch @@ -1,6 +1,7 @@ -Subject: skbufhead-raw-lock.patch +From 1579165812b92bb135ced5d20cb93ffc0e691aac Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Tue, 12 Jul 2011 15:38:34 +0200 +Subject: [214/254] skbufhead-raw-lock.patch Signed-off-by: Thomas Gleixner --- @@ -9,11 +10,11 @@ Signed-off-by: Thomas Gleixner net/core/dev.c | 26 ++++++++++++++++++++------ 3 files changed, 28 insertions(+), 6 deletions(-) -Index: linux-3.4/include/linux/netdevice.h -=================================================================== ---- linux-3.4.orig/include/linux/netdevice.h -+++ linux-3.4/include/linux/netdevice.h -@@ -1743,6 +1743,7 @@ struct softnet_data { +diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h +index 33900a5..1fcc9ba 100644 +--- a/include/linux/netdevice.h ++++ b/include/linux/netdevice.h +@@ -1734,6 +1734,7 @@ struct softnet_data { unsigned dropped; struct sk_buff_head input_pkt_queue; struct napi_struct backlog; @@ -21,10 +22,10 @@ Index: linux-3.4/include/linux/netdevice.h }; static inline void input_queue_head_incr(struct softnet_data *sd) -Index: linux-3.4/include/linux/skbuff.h -=================================================================== ---- linux-3.4.orig/include/linux/skbuff.h -+++ linux-3.4/include/linux/skbuff.h +diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h +index c168907..1a9b025 100644 +--- a/include/linux/skbuff.h ++++ b/include/linux/skbuff.h @@ -132,6 +132,7 @@ struct sk_buff_head { __u32 qlen; @@ -33,7 +34,7 @@ Index: linux-3.4/include/linux/skbuff.h }; struct sk_buff; -@@ -967,6 +968,12 @@ static inline void skb_queue_head_init(s +@@ -967,6 +968,12 @@ static inline void skb_queue_head_init(struct sk_buff_head *list) __skb_queue_head_init(list); } @@ -46,11 +47,11 @@ Index: linux-3.4/include/linux/skbuff.h static inline void skb_queue_head_init_class(struct sk_buff_head *list, struct lock_class_key *class) { -Index: linux-3.4/net/core/dev.c -=================================================================== ---- linux-3.4.orig/net/core/dev.c -+++ linux-3.4/net/core/dev.c -@@ -220,14 +220,14 @@ static inline struct hlist_head *dev_ind +diff --git a/net/core/dev.c b/net/core/dev.c +index 8b645be..4e15710 100644 +--- a/net/core/dev.c ++++ b/net/core/dev.c +@@ -220,14 +220,14 @@ static inline struct hlist_head *dev_index_hash(struct net *net, int ifindex) static inline void rps_lock(struct softnet_data *sd) { #ifdef CONFIG_RPS @@ -67,7 +68,7 @@ Index: linux-3.4/net/core/dev.c #endif } -@@ -3353,7 +3353,7 @@ static void flush_backlog(void *arg) +@@ -3327,7 +3327,7 @@ static void flush_backlog(void *arg) skb_queue_walk_safe(&sd->input_pkt_queue, skb, tmp) { if (skb->dev == dev) { __skb_unlink(skb, &sd->input_pkt_queue); @@ -76,7 +77,7 @@ Index: linux-3.4/net/core/dev.c input_queue_head_incr(sd); } } -@@ -3362,10 +3362,13 @@ static void flush_backlog(void *arg) +@@ -3336,10 +3336,13 @@ static void flush_backlog(void *arg) skb_queue_walk_safe(&sd->process_queue, skb, tmp) { if (skb->dev == dev) { __skb_unlink(skb, &sd->process_queue); @@ -91,7 +92,7 @@ Index: linux-3.4/net/core/dev.c } static int napi_gro_complete(struct sk_buff *skb) -@@ -3849,10 +3852,17 @@ static void net_rx_action(struct softirq +@@ -3823,10 +3826,17 @@ static void net_rx_action(struct softirq_action *h) struct softnet_data *sd = &__get_cpu_var(softnet_data); unsigned long time_limit = jiffies + 2; int budget = netdev_budget; @@ -109,7 +110,7 @@ Index: linux-3.4/net/core/dev.c while (!list_empty(&sd->poll_list)) { struct napi_struct *n; int work, weight; -@@ -6279,6 +6289,9 @@ static int dev_cpu_callback(struct notif +@@ -6253,6 +6263,9 @@ static int dev_cpu_callback(struct notifier_block *nfb, netif_rx(skb); input_queue_head_incr(oldsd); } @@ -119,7 +120,7 @@ Index: linux-3.4/net/core/dev.c return NOTIFY_OK; } -@@ -6542,8 +6555,9 @@ static int __init net_dev_init(void) +@@ -6516,8 +6529,9 @@ static int __init net_dev_init(void) struct softnet_data *sd = &per_cpu(softnet_data, i); memset(sd, 0, sizeof(*sd)); diff --git a/debian/patches/features/all/rt/perf-move-irq-work-to-softirq-in-rt.patch b/debian/patches/features/all/rt/0215-x86-no-perf-irq-work-rt.patch.patch similarity index 63% rename from debian/patches/features/all/rt/perf-move-irq-work-to-softirq-in-rt.patch rename to debian/patches/features/all/rt/0215-x86-no-perf-irq-work-rt.patch.patch index 982fb01d5..bda9a9920 100644 --- a/debian/patches/features/all/rt/perf-move-irq-work-to-softirq-in-rt.patch +++ b/debian/patches/features/all/rt/0215-x86-no-perf-irq-work-rt.patch.patch @@ -1,6 +1,7 @@ -Subject: x86-no-perf-irq-work-rt.patch +From 427164323f75fec529c820d5f48eb4a46cefb6c6 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 13 Jul 2011 14:05:05 +0200 +Subject: [215/254] x86-no-perf-irq-work-rt.patch Signed-off-by: Thomas Gleixner --- @@ -9,11 +10,11 @@ Signed-off-by: Thomas Gleixner kernel/timer.c | 6 +++++- 3 files changed, 9 insertions(+), 1 deletion(-) -Index: linux-3.4/arch/x86/kernel/irq_work.c -=================================================================== ---- linux-3.4.orig/arch/x86/kernel/irq_work.c -+++ linux-3.4/arch/x86/kernel/irq_work.c -@@ -18,6 +18,7 @@ void smp_irq_work_interrupt(struct pt_re +diff --git a/arch/x86/kernel/irq_work.c b/arch/x86/kernel/irq_work.c +index ca8f703..129b8bb 100644 +--- a/arch/x86/kernel/irq_work.c ++++ b/arch/x86/kernel/irq_work.c +@@ -18,6 +18,7 @@ void smp_irq_work_interrupt(struct pt_regs *regs) irq_exit(); } @@ -26,10 +27,10 @@ Index: linux-3.4/arch/x86/kernel/irq_work.c #endif } +#endif -Index: linux-3.4/kernel/irq_work.c -=================================================================== ---- linux-3.4.orig/kernel/irq_work.c -+++ linux-3.4/kernel/irq_work.c +diff --git a/kernel/irq_work.c b/kernel/irq_work.c +index 1588e3b..170c2ea 100644 +--- a/kernel/irq_work.c ++++ b/kernel/irq_work.c @@ -107,8 +107,10 @@ void irq_work_run(void) if (llist_empty(this_list)) return; @@ -41,10 +42,10 @@ Index: linux-3.4/kernel/irq_work.c llnode = llist_del_all(this_list); while (llnode != NULL) { -Index: linux-3.4/kernel/timer.c -=================================================================== ---- linux-3.4.orig/kernel/timer.c -+++ linux-3.4/kernel/timer.c +diff --git a/kernel/timer.c b/kernel/timer.c +index f6f2958..935f46d 100644 +--- a/kernel/timer.c ++++ b/kernel/timer.c @@ -1412,7 +1412,7 @@ void update_process_times(int user_tick) scheduler_tick(); run_local_timers(); @@ -54,7 +55,7 @@ Index: linux-3.4/kernel/timer.c if (in_irq()) irq_work_run(); #endif -@@ -1426,6 +1426,10 @@ static void run_timer_softirq(struct sof +@@ -1426,6 +1426,10 @@ static void run_timer_softirq(struct softirq_action *h) { struct tvec_base *base = __this_cpu_read(tvec_bases); diff --git a/debian/patches/features/all/rt/console-make-rt-friendly.patch b/debian/patches/features/all/rt/0216-console-make-rt-friendly.patch.patch similarity index 77% rename from debian/patches/features/all/rt/console-make-rt-friendly.patch rename to debian/patches/features/all/rt/0216-console-make-rt-friendly.patch.patch index 6cd247771..4a811cd55 100644 --- a/debian/patches/features/all/rt/console-make-rt-friendly.patch +++ b/debian/patches/features/all/rt/0216-console-make-rt-friendly.patch.patch @@ -1,17 +1,18 @@ -Subject: console-make-rt-friendly.patch +From 00229616325e03e182a5f2388f06de820ec78c67 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sun, 17 Jul 2011 22:43:07 +0200 +Subject: [216/254] console-make-rt-friendly.patch Signed-off-by: Thomas Gleixner --- kernel/printk.c | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) -Index: linux-3.4/kernel/printk.c -=================================================================== ---- linux-3.4.orig/kernel/printk.c -+++ linux-3.4/kernel/printk.c -@@ -507,6 +507,7 @@ static void __call_console_drivers(unsig +diff --git a/kernel/printk.c b/kernel/printk.c +index 9a27a94..28baa36 100644 +--- a/kernel/printk.c ++++ b/kernel/printk.c +@@ -507,6 +507,7 @@ static void __call_console_drivers(unsigned start, unsigned end) { struct console *con; @@ -19,7 +20,7 @@ Index: linux-3.4/kernel/printk.c for_each_console(con) { if (exclusive_console && con != exclusive_console) continue; -@@ -515,6 +516,7 @@ static void __call_console_drivers(unsig +@@ -515,6 +516,7 @@ static void __call_console_drivers(unsigned start, unsigned end) (con->flags & CON_ANYTIME))) con->write(con, &LOG_BUF(start), end - start); } @@ -27,7 +28,7 @@ Index: linux-3.4/kernel/printk.c } #ifdef CONFIG_EARLY_PRINTK -@@ -839,12 +841,18 @@ static inline int can_use_console(unsign +@@ -839,12 +841,18 @@ static inline int can_use_console(unsigned int cpu) * interrupts disabled. It should return with 'lockbuf_lock' * released but interrupts still disabled. */ @@ -48,7 +49,7 @@ Index: linux-3.4/kernel/printk.c retval = 1; /* -@@ -1021,8 +1029,15 @@ asmlinkage int vprintk(const char *fmt, +@@ -1021,8 +1029,15 @@ asmlinkage int vprintk(const char *fmt, va_list args) * will release 'logbuf_lock' regardless of whether it * actually gets the semaphore or not. */ diff --git a/debian/patches/features/all/rt/fix-printk-flush-of-messages-1.patch b/debian/patches/features/all/rt/0217-fix-printk-flush-of-messages.patch similarity index 78% rename from debian/patches/features/all/rt/fix-printk-flush-of-messages-1.patch rename to debian/patches/features/all/rt/0217-fix-printk-flush-of-messages.patch index 093be03df..b237f958c 100644 --- a/debian/patches/features/all/rt/fix-printk-flush-of-messages-1.patch +++ b/debian/patches/features/all/rt/0217-fix-printk-flush-of-messages.patch @@ -1,7 +1,7 @@ -Subject: fix printk flush of messages +From ad4bee1a590155dac83ced85b6eee727f420c522 Mon Sep 17 00:00:00 2001 From: Frank Rowand Date: Wed, 16 May 2012 18:09:36 -0700 - +Subject: [217/254] fix printk flush of messages Updates console-make-rt-friendly.patch @@ -26,11 +26,9 @@ printk() because: console_unlock() # this is where the printk() output would be flushed - On system boot some printk() output is flushed because register_console() and tty_open() call console_unlock(). - This change also fixes the problem that was previously fixed by preempt-rt-allow-immediate-magic-sysrq-output-for-preempt_rt_full.patch @@ -38,16 +36,15 @@ Signed-off-by: Frank Rowand Cc: Frank Link: http://lkml.kernel.org/r/4FB44FD0.4090800@am.sony.com Signed-off-by: Thomas Gleixner - --- - kernel/printk.c | 2 1 + 1 - 0 ! + kernel/printk.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: b/kernel/printk.c -=================================================================== +diff --git a/kernel/printk.c b/kernel/printk.c +index 28baa36..7109711 100644 --- a/kernel/printk.c +++ b/kernel/printk.c -@@ -847,7 +847,7 @@ static int console_trylock_for_printk(un +@@ -847,7 +847,7 @@ static int console_trylock_for_printk(unsigned int cpu, unsigned long flags) int retval = 0, wake = 0; #ifdef CONFIG_PREEMPT_RT_FULL int lock = !early_boot_irqs_disabled && !irqs_disabled_flags(flags) && @@ -56,10 +53,3 @@ Index: b/kernel/printk.c #else int lock = 1; #endif - --- -To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in -the body of a message to majordomo@vger.kernel.org -More majordomo info at http://vger.kernel.org/majordomo-info.html - - diff --git a/debian/patches/features/all/rt/power-use-generic-rwsem-on-rt.patch b/debian/patches/features/all/rt/0218-power-use-generic-rwsem-on-rt.patch similarity index 54% rename from debian/patches/features/all/rt/power-use-generic-rwsem-on-rt.patch rename to debian/patches/features/all/rt/0218-power-use-generic-rwsem-on-rt.patch index 847713137..6337ae579 100644 --- a/debian/patches/features/all/rt/power-use-generic-rwsem-on-rt.patch +++ b/debian/patches/features/all/rt/0218-power-use-generic-rwsem-on-rt.patch @@ -1,13 +1,16 @@ +From 369ba1aeecf55386a667a11185b72502f27c039a Mon Sep 17 00:00:00 2001 From: Thomas Gleixner +Date: Thu, 7 Jun 2012 07:47:08 -0400 +Subject: [218/254] power-use-generic-rwsem-on-rt --- arch/powerpc/Kconfig | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) -Index: linux-3.4/arch/powerpc/Kconfig -=================================================================== ---- linux-3.4.orig/arch/powerpc/Kconfig -+++ linux-3.4/arch/powerpc/Kconfig +diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig +index feab3ba..981d71f 100644 +--- a/arch/powerpc/Kconfig ++++ b/arch/powerpc/Kconfig @@ -69,10 +69,11 @@ config LOCKDEP_SUPPORT config RWSEM_GENERIC_SPINLOCK diff --git a/debian/patches/features/all/rt/power-disable-highmem-on-rt.patch b/debian/patches/features/all/rt/0219-power-disable-highmem-on-rt.patch.patch similarity index 61% rename from debian/patches/features/all/rt/power-disable-highmem-on-rt.patch rename to debian/patches/features/all/rt/0219-power-disable-highmem-on-rt.patch.patch index bca5ebbad..733129f47 100644 --- a/debian/patches/features/all/rt/power-disable-highmem-on-rt.patch +++ b/debian/patches/features/all/rt/0219-power-disable-highmem-on-rt.patch.patch @@ -1,16 +1,17 @@ -Subject: power-disable-highmem-on-rt.patch +From b291d870d619ed6dc748085f1f71ed4be5a40bc2 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Mon, 18 Jul 2011 17:08:34 +0200 +Subject: [219/254] power-disable-highmem-on-rt.patch Signed-off-by: Thomas Gleixner --- arch/powerpc/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-3.4/arch/powerpc/Kconfig -=================================================================== ---- linux-3.4.orig/arch/powerpc/Kconfig -+++ linux-3.4/arch/powerpc/Kconfig +diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig +index 981d71f..86e2322 100644 +--- a/arch/powerpc/Kconfig ++++ b/arch/powerpc/Kconfig @@ -283,7 +283,7 @@ menu "Kernel options" config HIGHMEM diff --git a/debian/patches/features/all/rt/arm-disable-highmem-on-rt.patch b/debian/patches/features/all/rt/0220-arm-disable-highmem-on-rt.patch.patch similarity index 60% rename from debian/patches/features/all/rt/arm-disable-highmem-on-rt.patch rename to debian/patches/features/all/rt/0220-arm-disable-highmem-on-rt.patch.patch index 0d0c20d49..dbf670997 100644 --- a/debian/patches/features/all/rt/arm-disable-highmem-on-rt.patch +++ b/debian/patches/features/all/rt/0220-arm-disable-highmem-on-rt.patch.patch @@ -1,17 +1,18 @@ -Subject: arm-disable-highmem-on-rt.patch +From 874aadc3b123b2a983f402f42152e072dbb63d37 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Mon, 18 Jul 2011 17:09:28 +0200 +Subject: [220/254] arm-disable-highmem-on-rt.patch Signed-off-by: Thomas Gleixner --- arch/arm/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-3.4/arch/arm/Kconfig -=================================================================== ---- linux-3.4.orig/arch/arm/Kconfig -+++ linux-3.4/arch/arm/Kconfig -@@ -1716,7 +1716,7 @@ config HAVE_ARCH_PFN_VALID +diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig +index f6fa4db..be61c6e 100644 +--- a/arch/arm/Kconfig ++++ b/arch/arm/Kconfig +@@ -1725,7 +1725,7 @@ config HAVE_ARCH_PFN_VALID config HIGHMEM bool "High Memory Support" diff --git a/debian/patches/features/all/rt/arm-at91-tclib-default-to-tclib-timer-for-rt.patch b/debian/patches/features/all/rt/0221-ARM-at91-tclib-Default-to-tclib-timer-for-RT.patch similarity index 76% rename from debian/patches/features/all/rt/arm-at91-tclib-default-to-tclib-timer-for-rt.patch rename to debian/patches/features/all/rt/0221-ARM-at91-tclib-Default-to-tclib-timer-for-RT.patch index c61e1bb30..eebf99882 100644 --- a/debian/patches/features/all/rt/arm-at91-tclib-default-to-tclib-timer-for-rt.patch +++ b/debian/patches/features/all/rt/0221-ARM-at91-tclib-Default-to-tclib-timer-for-RT.patch @@ -1,20 +1,20 @@ +From ad5cef351b72a68a24dd6cf66e98e61fb6ee24b9 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sat, 1 May 2010 18:29:35 +0200 -Subject: ARM: at91: tclib: Default to tclib timer for RT +Subject: [221/254] ARM: at91: tclib: Default to tclib timer for RT RT is not too happy about the shared timer interrupt in AT91 devices. Default to tclib timer for RT. Signed-off-by: Thomas Gleixner - --- drivers/misc/Kconfig | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) -Index: linux-3.4/drivers/misc/Kconfig -=================================================================== ---- linux-3.4.orig/drivers/misc/Kconfig -+++ linux-3.4/drivers/misc/Kconfig +diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig +index eead6ce..ecda1c4 100644 +--- a/drivers/misc/Kconfig ++++ b/drivers/misc/Kconfig @@ -72,6 +72,7 @@ config AB8500_PWM config ATMEL_TCLIB bool "Atmel AT32/AT91 Timer/Counter Library" diff --git a/debian/patches/features/all/rt/mips-disable-highmem-on-rt.patch b/debian/patches/features/all/rt/0222-mips-disable-highmem-on-rt.patch.patch similarity index 66% rename from debian/patches/features/all/rt/mips-disable-highmem-on-rt.patch rename to debian/patches/features/all/rt/0222-mips-disable-highmem-on-rt.patch.patch index 305d3c701..8b097409e 100644 --- a/debian/patches/features/all/rt/mips-disable-highmem-on-rt.patch +++ b/debian/patches/features/all/rt/0222-mips-disable-highmem-on-rt.patch.patch @@ -1,16 +1,17 @@ -Subject: mips-disable-highmem-on-rt.patch +From 7260b4f7d8660a1405328ff741b94d394591ba33 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Mon, 18 Jul 2011 17:10:12 +0200 +Subject: [222/254] mips-disable-highmem-on-rt.patch Signed-off-by: Thomas Gleixner --- arch/mips/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-3.4/arch/mips/Kconfig -=================================================================== ---- linux-3.4.orig/arch/mips/Kconfig -+++ linux-3.4/arch/mips/Kconfig +diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig +index ce30e2f..f0bc185 100644 +--- a/arch/mips/Kconfig ++++ b/arch/mips/Kconfig @@ -2081,7 +2081,7 @@ config CPU_R4400_WORKAROUNDS # config HIGHMEM diff --git a/debian/patches/features/all/rt/net-tx-action-avoid-livelock-on-rt.patch b/debian/patches/features/all/rt/0223-net-Avoid-livelock-in-net_tx_action-on-RT.patch similarity index 88% rename from debian/patches/features/all/rt/net-tx-action-avoid-livelock-on-rt.patch rename to debian/patches/features/all/rt/0223-net-Avoid-livelock-in-net_tx_action-on-RT.patch index 5219bfd13..e39e82e44 100644 --- a/debian/patches/features/all/rt/net-tx-action-avoid-livelock-on-rt.patch +++ b/debian/patches/features/all/rt/0223-net-Avoid-livelock-in-net_tx_action-on-RT.patch @@ -1,6 +1,7 @@ -Subject: net: Avoid livelock in net_tx_action() on RT +From 0d096d764bc7cf32d1163b68f7e70386ed7ea49d Mon Sep 17 00:00:00 2001 From: Steven Rostedt -Date: Thu, 06 Oct 2011 10:48:39 -0400 +Date: Thu, 6 Oct 2011 10:48:39 -0400 +Subject: [223/254] net: Avoid livelock in net_tx_action() on RT qdisc_lock is taken w/o disabling interrupts or bottom halfs. So code holding a qdisc_lock() can be interrupted and softirqs can run on the @@ -37,16 +38,15 @@ Cc: Clark Williams Cc: John Kacur Cc: Luis Claudio R. Goncalves Signed-off-by: Thomas Gleixner - --- net/core/dev.c | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) -Index: linux-3.4/net/core/dev.c -=================================================================== ---- linux-3.4.orig/net/core/dev.c -+++ linux-3.4/net/core/dev.c -@@ -2996,6 +2996,36 @@ int netif_rx_ni(struct sk_buff *skb) +diff --git a/net/core/dev.c b/net/core/dev.c +index 4e15710..252c15a 100644 +--- a/net/core/dev.c ++++ b/net/core/dev.c +@@ -2970,6 +2970,36 @@ int netif_rx_ni(struct sk_buff *skb) } EXPORT_SYMBOL(netif_rx_ni); @@ -83,7 +83,7 @@ Index: linux-3.4/net/core/dev.c static void net_tx_action(struct softirq_action *h) { struct softnet_data *sd = &__get_cpu_var(softnet_data); -@@ -3034,7 +3064,7 @@ static void net_tx_action(struct softirq +@@ -3008,7 +3038,7 @@ static void net_tx_action(struct softirq_action *h) head = head->next_sched; root_lock = qdisc_lock(q); diff --git a/debian/patches/features/all/rt/ping-sysrq.patch b/debian/patches/features/all/rt/0224-ping-sysrq.patch.patch similarity index 78% rename from debian/patches/features/all/rt/ping-sysrq.patch rename to debian/patches/features/all/rt/0224-ping-sysrq.patch.patch index 78b89226e..e42594fee 100644 --- a/debian/patches/features/all/rt/ping-sysrq.patch +++ b/debian/patches/features/all/rt/0224-ping-sysrq.patch.patch @@ -1,6 +1,7 @@ -Subject: ping-sysrq.patch +From afab44a285dbcab2a5c8e6888b7149cede0cfa3a Mon Sep 17 00:00:00 2001 From: Carsten Emde Date: Tue, 19 Jul 2011 13:51:17 +0100 +Subject: [224/254] ping-sysrq.patch There are (probably rare) situations when a system crashed and the system console becomes unresponsive but the network icmp layer still is alive. @@ -10,7 +11,6 @@ This patch provides this facility. Please consult the updated documentation Documentation/sysrq.txt for details. Signed-off-by: Carsten Emde - --- Documentation/sysrq.txt | 11 +++++++++-- include/net/netns/ipv4.h | 1 + @@ -18,11 +18,11 @@ Signed-off-by: Carsten Emde net/ipv4/sysctl_net_ipv4.c | 7 +++++++ 4 files changed, 47 insertions(+), 2 deletions(-) -Index: linux-3.4/Documentation/sysrq.txt -=================================================================== ---- linux-3.4.orig/Documentation/sysrq.txt -+++ linux-3.4/Documentation/sysrq.txt -@@ -57,10 +57,17 @@ On PowerPC - Press 'ALT - Print Screen ( +diff --git a/Documentation/sysrq.txt b/Documentation/sysrq.txt +index 642f844..bd283ed 100644 +--- a/Documentation/sysrq.txt ++++ b/Documentation/sysrq.txt +@@ -57,10 +57,17 @@ On PowerPC - Press 'ALT - Print Screen (or F13) - , On other - If you know of the key combos for other architectures, please let me know so I can add them to this section. @@ -42,10 +42,10 @@ Index: linux-3.4/Documentation/sysrq.txt * What are the 'command' keys? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 'b' - Will immediately reboot the system without syncing or unmounting -Index: linux-3.4/include/net/netns/ipv4.h -=================================================================== ---- linux-3.4.orig/include/net/netns/ipv4.h -+++ linux-3.4/include/net/netns/ipv4.h +diff --git a/include/net/netns/ipv4.h b/include/net/netns/ipv4.h +index bbd023a..643911e 100644 +--- a/include/net/netns/ipv4.h ++++ b/include/net/netns/ipv4.h @@ -47,6 +47,7 @@ struct netns_ipv4 { int sysctl_icmp_echo_ignore_all; @@ -54,10 +54,10 @@ Index: linux-3.4/include/net/netns/ipv4.h int sysctl_icmp_ignore_bogus_error_responses; int sysctl_icmp_ratelimit; int sysctl_icmp_ratemask; -Index: linux-3.4/net/ipv4/icmp.c -=================================================================== ---- linux-3.4.orig/net/ipv4/icmp.c -+++ linux-3.4/net/ipv4/icmp.c +diff --git a/net/ipv4/icmp.c b/net/ipv4/icmp.c +index 2cb2bf8..9a37732 100644 +--- a/net/ipv4/icmp.c ++++ b/net/ipv4/icmp.c @@ -69,6 +69,7 @@ #include #include @@ -97,7 +97,7 @@ Index: linux-3.4/net/ipv4/icmp.c * Handle ICMP_ECHO ("ping") requests. * * RFC 1122: 3.2.2.6 MUST have an echo server that answers ICMP echo -@@ -825,6 +850,11 @@ static void icmp_echo(struct sk_buff *sk +@@ -825,6 +850,11 @@ static void icmp_echo(struct sk_buff *skb) icmp_param.data_len = skb->len; icmp_param.head_len = sizeof(struct icmphdr); icmp_reply(&icmp_param, skb); @@ -109,11 +109,11 @@ Index: linux-3.4/net/ipv4/icmp.c } } -Index: linux-3.4/net/ipv4/sysctl_net_ipv4.c -=================================================================== ---- linux-3.4.orig/net/ipv4/sysctl_net_ipv4.c -+++ linux-3.4/net/ipv4/sysctl_net_ipv4.c -@@ -718,6 +718,13 @@ static struct ctl_table ipv4_net_table[] +diff --git a/net/ipv4/sysctl_net_ipv4.c b/net/ipv4/sysctl_net_ipv4.c +index 7a7724d..96c6109 100644 +--- a/net/ipv4/sysctl_net_ipv4.c ++++ b/net/ipv4/sysctl_net_ipv4.c +@@ -718,6 +718,13 @@ static struct ctl_table ipv4_net_table[] = { .proc_handler = proc_dointvec }, { diff --git a/debian/patches/features/all/rt/kgb-serial-hackaround.patch b/debian/patches/features/all/rt/0225-kgdb-serial-Short-term-workaround.patch similarity index 72% rename from debian/patches/features/all/rt/kgb-serial-hackaround.patch rename to debian/patches/features/all/rt/0225-kgdb-serial-Short-term-workaround.patch index c2d58678a..f65e74772 100644 --- a/debian/patches/features/all/rt/kgb-serial-hackaround.patch +++ b/debian/patches/features/all/rt/0225-kgdb-serial-Short-term-workaround.patch @@ -1,6 +1,7 @@ +From 7d9e133200b0dfb736bcf8e511c2231466063fcd Mon Sep 17 00:00:00 2001 From: Jason Wessel Date: Thu, 28 Jul 2011 12:42:23 -0500 -Subject: kgdb/serial: Short term workaround +Subject: [225/254] kgdb/serial: Short term workaround On 07/27/2011 04:37 PM, Thomas Gleixner wrote: > - KGDB (not yet disabled) is reportedly unusable on -rt right now due @@ -16,17 +17,16 @@ change separation between the console and the HW to have a polled mode Thanks, Jason. - --- drivers/tty/serial/8250/8250.c | 3 ++- include/linux/kdb.h | 2 ++ kernel/debug/kdb/kdb_io.c | 6 ++---- 3 files changed, 6 insertions(+), 5 deletions(-) -Index: linux-3.4/drivers/tty/serial/8250/8250.c -=================================================================== ---- linux-3.4.orig/drivers/tty/serial/8250/8250.c -+++ linux-3.4/drivers/tty/serial/8250/8250.c +diff --git a/drivers/tty/serial/8250/8250.c b/drivers/tty/serial/8250/8250.c +index a785ec0..0db379e 100644 +--- a/drivers/tty/serial/8250/8250.c ++++ b/drivers/tty/serial/8250/8250.c @@ -38,6 +38,7 @@ #include #include @@ -35,7 +35,7 @@ Index: linux-3.4/drivers/tty/serial/8250/8250.c #ifdef CONFIG_SPARC #include #endif -@@ -2816,7 +2817,7 @@ serial8250_console_write(struct console +@@ -2817,7 +2818,7 @@ serial8250_console_write(struct console *co, const char *s, unsigned int count) touch_nmi_watchdog(); @@ -44,11 +44,11 @@ Index: linux-3.4/drivers/tty/serial/8250/8250.c locked = spin_trylock_irqsave(&port->lock, flags); else spin_lock_irqsave(&port->lock, flags); -Index: linux-3.4/include/linux/kdb.h -=================================================================== ---- linux-3.4.orig/include/linux/kdb.h -+++ linux-3.4/include/linux/kdb.h -@@ -150,12 +150,14 @@ extern int kdb_register(char *, kdb_func +diff --git a/include/linux/kdb.h b/include/linux/kdb.h +index 0647258..0d1ebfc 100644 +--- a/include/linux/kdb.h ++++ b/include/linux/kdb.h +@@ -150,12 +150,14 @@ extern int kdb_register(char *, kdb_func_t, char *, char *, short); extern int kdb_register_repeat(char *, kdb_func_t, char *, char *, short, kdb_repeat_t); extern int kdb_unregister(char *); @@ -63,11 +63,11 @@ Index: linux-3.4/include/linux/kdb.h #endif /* CONFIG_KGDB_KDB */ enum { KDB_NOT_INITIALIZED, -Index: linux-3.4/kernel/debug/kdb/kdb_io.c -=================================================================== ---- linux-3.4.orig/kernel/debug/kdb/kdb_io.c -+++ linux-3.4/kernel/debug/kdb/kdb_io.c -@@ -553,7 +553,6 @@ int vkdb_printf(const char *fmt, va_list +diff --git a/kernel/debug/kdb/kdb_io.c b/kernel/debug/kdb/kdb_io.c +index bb9520f..eb68a9d 100644 +--- a/kernel/debug/kdb/kdb_io.c ++++ b/kernel/debug/kdb/kdb_io.c +@@ -553,7 +553,6 @@ int vkdb_printf(const char *fmt, va_list ap) int diag; int linecount; int logging, saved_loglevel = 0; @@ -75,7 +75,7 @@ Index: linux-3.4/kernel/debug/kdb/kdb_io.c int got_printf_lock = 0; int retlen = 0; int fnd, len; -@@ -564,8 +563,6 @@ int vkdb_printf(const char *fmt, va_list +@@ -564,8 +563,6 @@ int vkdb_printf(const char *fmt, va_list ap) unsigned long uninitialized_var(flags); preempt_disable(); diff --git a/debian/patches/features/all/rt/sysfs-realtime-entry.patch b/debian/patches/features/all/rt/0226-add-sys-kernel-realtime-entry.patch similarity index 76% rename from debian/patches/features/all/rt/sysfs-realtime-entry.patch rename to debian/patches/features/all/rt/0226-add-sys-kernel-realtime-entry.patch index d14cc0cf3..43790a40a 100644 --- a/debian/patches/features/all/rt/sysfs-realtime-entry.patch +++ b/debian/patches/features/all/rt/0226-add-sys-kernel-realtime-entry.patch @@ -1,6 +1,7 @@ -Subject: add /sys/kernel/realtime entry +From 0c601db820613bbf07c4b5abbfdf0499401bfb54 Mon Sep 17 00:00:00 2001 From: Clark Williams -Date: Sat Jul 30 21:55:53 2011 -0500 +Date: Sat, 30 Jul 2011 21:55:53 -0500 +Subject: [226/254] add /sys/kernel/realtime entry Add a /sys/kernel entry to indicate that the kernel is a realtime kernel. @@ -17,10 +18,10 @@ Signed-off-by: Peter Zijlstra kernel/ksysfs.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) -Index: linux-3.4/kernel/ksysfs.c -=================================================================== ---- linux-3.4.orig/kernel/ksysfs.c -+++ linux-3.4/kernel/ksysfs.c +diff --git a/kernel/ksysfs.c b/kernel/ksysfs.c +index 4e316e1..a546d33 100644 +--- a/kernel/ksysfs.c ++++ b/kernel/ksysfs.c @@ -133,6 +133,15 @@ KERNEL_ATTR_RO(vmcoreinfo); #endif /* CONFIG_KEXEC */ @@ -37,7 +38,7 @@ Index: linux-3.4/kernel/ksysfs.c /* whether file capabilities are enabled */ static ssize_t fscaps_show(struct kobject *kobj, struct kobj_attribute *attr, char *buf) -@@ -182,6 +191,9 @@ static struct attribute * kernel_attrs[] +@@ -182,6 +191,9 @@ static struct attribute * kernel_attrs[] = { &kexec_crash_size_attr.attr, &vmcoreinfo_attr.attr, #endif diff --git a/debian/patches/features/all/rt/peter_zijlstra-re-_3_0-rt4.patch b/debian/patches/features/all/rt/0227-mm-rt-kmap_atomic-scheduling.patch similarity index 81% rename from debian/patches/features/all/rt/peter_zijlstra-re-_3_0-rt4.patch rename to debian/patches/features/all/rt/0227-mm-rt-kmap_atomic-scheduling.patch index c2acc75a6..e67a2fdee 100644 --- a/debian/patches/features/all/rt/peter_zijlstra-re-_3_0-rt4.patch +++ b/debian/patches/features/all/rt/0227-mm-rt-kmap_atomic-scheduling.patch @@ -1,6 +1,7 @@ -Subject: mm, rt: kmap_atomic scheduling +From 0026ea4b7807f2424cf77f9f24a54c9dcea09e30 Mon Sep 17 00:00:00 2001 From: Peter Zijlstra Date: Thu, 28 Jul 2011 10:43:51 +0200 +Subject: [227/254] mm, rt: kmap_atomic scheduling In fact, with migrate_disable() existing one could play games with kmap_atomic. You could save/restore the kmap_atomic slots on context @@ -20,10 +21,10 @@ Link: http://lkml.kernel.org/r/1311842631.5890.208.camel@twins mm/memory.c | 2 ++ 3 files changed, 43 insertions(+) -Index: linux-3.4/arch/x86/kernel/process_32.c -=================================================================== ---- linux-3.4.orig/arch/x86/kernel/process_32.c -+++ linux-3.4/arch/x86/kernel/process_32.c +diff --git a/arch/x86/kernel/process_32.c b/arch/x86/kernel/process_32.c +index ae68473..2b0882a 100644 +--- a/arch/x86/kernel/process_32.c ++++ b/arch/x86/kernel/process_32.c @@ -36,6 +36,7 @@ #include #include @@ -32,7 +33,7 @@ Index: linux-3.4/arch/x86/kernel/process_32.c #include #include -@@ -285,6 +286,41 @@ __switch_to(struct task_struct *prev_p, +@@ -285,6 +286,41 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) task_thread_info(next_p)->flags & _TIF_WORK_CTXSW_NEXT)) __switch_to_xtra(prev_p, next_p, tss); @@ -74,10 +75,10 @@ Index: linux-3.4/arch/x86/kernel/process_32.c /* * Leave lazy mode, flushing any hypercalls made here. * This must be done before restoring TLS segments so -Index: linux-3.4/include/linux/sched.h -=================================================================== ---- linux-3.4.orig/include/linux/sched.h -+++ linux-3.4/include/linux/sched.h +diff --git a/include/linux/sched.h b/include/linux/sched.h +index 372c15d..7fc8321 100644 +--- a/include/linux/sched.h ++++ b/include/linux/sched.h @@ -63,6 +63,7 @@ struct sched_param { #include #include @@ -97,10 +98,10 @@ Index: linux-3.4/include/linux/sched.h }; #ifdef CONFIG_PREEMPT_RT_FULL -Index: linux-3.4/mm/memory.c -=================================================================== ---- linux-3.4.orig/mm/memory.c -+++ linux-3.4/mm/memory.c +diff --git a/mm/memory.c b/mm/memory.c +index 68676fd..c63016b 100644 +--- a/mm/memory.c ++++ b/mm/memory.c @@ -3470,6 +3470,7 @@ unlock: #ifdef CONFIG_PREEMPT_RT_FULL void pagefault_disable(void) diff --git a/debian/patches/features/all/rt/ipc-sem-rework-semaphore-wakeups.patch b/debian/patches/features/all/rt/0228-ipc-sem-Rework-semaphore-wakeups.patch similarity index 74% rename from debian/patches/features/all/rt/ipc-sem-rework-semaphore-wakeups.patch rename to debian/patches/features/all/rt/0228-ipc-sem-Rework-semaphore-wakeups.patch index 09849452d..323a339a3 100644 --- a/debian/patches/features/all/rt/ipc-sem-rework-semaphore-wakeups.patch +++ b/debian/patches/features/all/rt/0228-ipc-sem-Rework-semaphore-wakeups.patch @@ -1,10 +1,7 @@ -Subject: ipc/sem: Rework semaphore wakeups -From: Peter Zijlstra -Date: Wed, 14 Sep 2011 11:57:04 +0200 - -Subject: ipc/sem: Rework semaphore wakeups +From 124788c1bae7d6b89676fb7208beac1eb800a1b3 Mon Sep 17 00:00:00 2001 From: Peter Zijlstra -Date: Tue Sep 13 15:09:40 CEST 2011 +Date: Tue, 13 Sep 2011 15:09:40 +0200 +Subject: [228/254] ipc/sem: Rework semaphore wakeups Current sysv sems have a weird ass wakeup scheme that involves keeping preemption disabled over a potential O(n^2) loop and busy waiting on @@ -31,10 +28,10 @@ Signed-off-by: Thomas Gleixner ipc/sem.c | 10 ++++++++++ 1 file changed, 10 insertions(+) -Index: linux-3.4/ipc/sem.c -=================================================================== ---- linux-3.4.orig/ipc/sem.c -+++ linux-3.4/ipc/sem.c +diff --git a/ipc/sem.c b/ipc/sem.c +index 5215a81..5eaf684 100644 +--- a/ipc/sem.c ++++ b/ipc/sem.c @@ -461,6 +461,13 @@ undo: static void wake_up_sem_queue_prepare(struct list_head *pt, struct sem_queue *q, int error) @@ -49,7 +46,7 @@ Index: linux-3.4/ipc/sem.c if (list_empty(pt)) { /* * Hold preempt off so that we don't get preempted and have the -@@ -472,6 +479,7 @@ static void wake_up_sem_queue_prepare(st +@@ -472,6 +479,7 @@ static void wake_up_sem_queue_prepare(struct list_head *pt, q->pid = error; list_add_tail(&q->simple_list, pt); @@ -57,7 +54,7 @@ Index: linux-3.4/ipc/sem.c } /** -@@ -485,6 +493,7 @@ static void wake_up_sem_queue_prepare(st +@@ -485,6 +493,7 @@ static void wake_up_sem_queue_prepare(struct list_head *pt, */ static void wake_up_sem_queue_do(struct list_head *pt) { @@ -65,7 +62,7 @@ Index: linux-3.4/ipc/sem.c struct sem_queue *q, *t; int did_something; -@@ -497,6 +506,7 @@ static void wake_up_sem_queue_do(struct +@@ -497,6 +506,7 @@ static void wake_up_sem_queue_do(struct list_head *pt) } if (did_something) preempt_enable(); diff --git a/debian/patches/features/all/rt/x86-kvm-require-const-tsc-for-rt.patch b/debian/patches/features/all/rt/0229-x86-kvm-require-const-tsc-for-rt.patch.patch similarity index 61% rename from debian/patches/features/all/rt/x86-kvm-require-const-tsc-for-rt.patch rename to debian/patches/features/all/rt/0229-x86-kvm-require-const-tsc-for-rt.patch.patch index b30770e5b..42e40d721 100644 --- a/debian/patches/features/all/rt/x86-kvm-require-const-tsc-for-rt.patch +++ b/debian/patches/features/all/rt/0229-x86-kvm-require-const-tsc-for-rt.patch.patch @@ -1,16 +1,17 @@ -Subject: x86-kvm-require-const-tsc-for-rt.patch +From 5949d33fd4f32ee3274770eae0bddc67d2c6120d Mon Sep 17 00:00:00 2001 From: Thomas Gleixner -Date: Sun, 06 Nov 2011 12:26:18 +0100 +Date: Sun, 6 Nov 2011 12:26:18 +0100 +Subject: [229/254] x86-kvm-require-const-tsc-for-rt.patch Signed-off-by: Thomas Gleixner --- arch/x86/kvm/x86.c | 7 +++++++ 1 file changed, 7 insertions(+) -Index: linux-3.4/arch/x86/kvm/x86.c -=================================================================== ---- linux-3.4.orig/arch/x86/kvm/x86.c -+++ linux-3.4/arch/x86/kvm/x86.c +diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c +index 185a2b8..937bdec 100644 +--- a/arch/x86/kvm/x86.c ++++ b/arch/x86/kvm/x86.c @@ -4882,6 +4882,13 @@ int kvm_arch_init(void *opaque) goto out; } diff --git a/debian/patches/features/all/rt/scsi-fcoe-rt-aware.patch b/debian/patches/features/all/rt/0230-scsi-fcoe-rt-aware.patch.patch similarity index 68% rename from debian/patches/features/all/rt/scsi-fcoe-rt-aware.patch rename to debian/patches/features/all/rt/0230-scsi-fcoe-rt-aware.patch.patch index c362cab91..a15d4c210 100644 --- a/debian/patches/features/all/rt/scsi-fcoe-rt-aware.patch +++ b/debian/patches/features/all/rt/0230-scsi-fcoe-rt-aware.patch.patch @@ -1,6 +1,7 @@ -Subject: scsi-fcoe-rt-aware.patch +From 90ec579dad617794d1d70d98dc2672d9804519f7 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sat, 12 Nov 2011 14:00:48 +0100 +Subject: [230/254] scsi-fcoe-rt-aware.patch Signed-off-by: Thomas Gleixner --- @@ -9,11 +10,11 @@ Signed-off-by: Thomas Gleixner drivers/scsi/libfc/fc_exch.c | 4 ++-- 3 files changed, 12 insertions(+), 12 deletions(-) -Index: linux-3.4/drivers/scsi/fcoe/fcoe.c -=================================================================== ---- linux-3.4.orig/drivers/scsi/fcoe/fcoe.c -+++ linux-3.4/drivers/scsi/fcoe/fcoe.c -@@ -1222,7 +1222,7 @@ static void fcoe_percpu_thread_destroy(u +diff --git a/drivers/scsi/fcoe/fcoe.c b/drivers/scsi/fcoe/fcoe.c +index 335e851..7f791b9 100644 +--- a/drivers/scsi/fcoe/fcoe.c ++++ b/drivers/scsi/fcoe/fcoe.c +@@ -1222,7 +1222,7 @@ static void fcoe_percpu_thread_destroy(unsigned int cpu) struct sk_buff *skb; #ifdef CONFIG_SMP struct fcoe_percpu_s *p0; @@ -22,7 +23,7 @@ Index: linux-3.4/drivers/scsi/fcoe/fcoe.c #endif /* CONFIG_SMP */ FCOE_DBG("Destroying receive thread for CPU %d\n", cpu); -@@ -1278,7 +1278,7 @@ static void fcoe_percpu_thread_destroy(u +@@ -1278,7 +1278,7 @@ static void fcoe_percpu_thread_destroy(unsigned int cpu) kfree_skb(skb); spin_unlock_bh(&p->fcoe_rx_list.lock); } @@ -46,7 +47,7 @@ Index: linux-3.4/drivers/scsi/fcoe/fcoe.c return rc; } -@@ -1738,7 +1738,7 @@ static void fcoe_recv_frame(struct sk_bu +@@ -1738,7 +1738,7 @@ static void fcoe_recv_frame(struct sk_buff *skb) */ hp = (struct fcoe_hdr *) skb_network_header(skb); @@ -55,7 +56,7 @@ Index: linux-3.4/drivers/scsi/fcoe/fcoe.c if (unlikely(FC_FCOE_DECAPS_VER(hp) != FC_FCOE_VER)) { if (stats->ErrorFrames < 5) printk(KERN_WARNING "fcoe: FCoE version " -@@ -1770,13 +1770,13 @@ static void fcoe_recv_frame(struct sk_bu +@@ -1770,13 +1770,13 @@ static void fcoe_recv_frame(struct sk_buff *skb) goto drop; if (!fcoe_filter_frames(lport, fp)) { @@ -71,11 +72,11 @@ Index: linux-3.4/drivers/scsi/fcoe/fcoe.c kfree_skb(skb); } -Index: linux-3.4/drivers/scsi/fcoe/fcoe_ctlr.c -=================================================================== ---- linux-3.4.orig/drivers/scsi/fcoe/fcoe_ctlr.c -+++ linux-3.4/drivers/scsi/fcoe/fcoe_ctlr.c -@@ -719,7 +719,7 @@ static unsigned long fcoe_ctlr_age_fcfs( +diff --git a/drivers/scsi/fcoe/fcoe_ctlr.c b/drivers/scsi/fcoe/fcoe_ctlr.c +index 249a106..753fcb9 100644 +--- a/drivers/scsi/fcoe/fcoe_ctlr.c ++++ b/drivers/scsi/fcoe/fcoe_ctlr.c +@@ -719,7 +719,7 @@ static unsigned long fcoe_ctlr_age_fcfs(struct fcoe_ctlr *fip) unsigned long sel_time = 0; struct fcoe_dev_stats *stats; @@ -84,7 +85,7 @@ Index: linux-3.4/drivers/scsi/fcoe/fcoe_ctlr.c list_for_each_entry_safe(fcf, next, &fip->fcfs, list) { deadline = fcf->time + fcf->fka_period + fcf->fka_period / 2; -@@ -752,7 +752,7 @@ static unsigned long fcoe_ctlr_age_fcfs( +@@ -752,7 +752,7 @@ static unsigned long fcoe_ctlr_age_fcfs(struct fcoe_ctlr *fip) sel_time = fcf->time; } } @@ -93,11 +94,11 @@ Index: linux-3.4/drivers/scsi/fcoe/fcoe_ctlr.c if (sel_time && !fip->sel_fcf && !fip->sel_time) { sel_time += msecs_to_jiffies(FCOE_CTLR_START_DELAY); fip->sel_time = sel_time; -Index: linux-3.4/drivers/scsi/libfc/fc_exch.c -=================================================================== ---- linux-3.4.orig/drivers/scsi/libfc/fc_exch.c -+++ linux-3.4/drivers/scsi/libfc/fc_exch.c -@@ -724,10 +724,10 @@ static struct fc_exch *fc_exch_em_alloc( +diff --git a/drivers/scsi/libfc/fc_exch.c b/drivers/scsi/libfc/fc_exch.c +index aceffad..fb4e6ce 100644 +--- a/drivers/scsi/libfc/fc_exch.c ++++ b/drivers/scsi/libfc/fc_exch.c +@@ -724,10 +724,10 @@ static struct fc_exch *fc_exch_em_alloc(struct fc_lport *lport, } memset(ep, 0, sizeof(*ep)); diff --git a/debian/patches/features/all/rt/x86-crypto-reduce-preempt-disabled-regions.patch b/debian/patches/features/all/rt/0231-x86-crypto-Reduce-preempt-disabled-regions.patch similarity index 80% rename from debian/patches/features/all/rt/x86-crypto-reduce-preempt-disabled-regions.patch rename to debian/patches/features/all/rt/0231-x86-crypto-Reduce-preempt-disabled-regions.patch index 545736d9f..45b3a04f3 100644 --- a/debian/patches/features/all/rt/x86-crypto-reduce-preempt-disabled-regions.patch +++ b/debian/patches/features/all/rt/0231-x86-crypto-Reduce-preempt-disabled-regions.patch @@ -1,6 +1,7 @@ -Subject: x86: crypto: Reduce preempt disabled regions +From 57560a16d91395325e71432ece418dc8681203d0 Mon Sep 17 00:00:00 2001 From: Peter Zijlstra Date: Mon, 14 Nov 2011 18:19:27 +0100 +Subject: [231/254] x86: crypto: Reduce preempt disabled regions Restrict the preempt disabled regions to the actual floating point operations and enable preemption for the administrative actions. @@ -16,11 +17,11 @@ Signed-off-by: Thomas Gleixner arch/x86/crypto/aesni-intel_glue.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) -Index: linux-3.4/arch/x86/crypto/aesni-intel_glue.c -=================================================================== ---- linux-3.4.orig/arch/x86/crypto/aesni-intel_glue.c -+++ linux-3.4/arch/x86/crypto/aesni-intel_glue.c -@@ -290,14 +290,14 @@ static int ecb_encrypt(struct blkcipher_ +diff --git a/arch/x86/crypto/aesni-intel_glue.c b/arch/x86/crypto/aesni-intel_glue.c +index c799352..0efa514 100644 +--- a/arch/x86/crypto/aesni-intel_glue.c ++++ b/arch/x86/crypto/aesni-intel_glue.c +@@ -290,14 +290,14 @@ static int ecb_encrypt(struct blkcipher_desc *desc, err = blkcipher_walk_virt(desc, &walk); desc->flags &= ~CRYPTO_TFM_REQ_MAY_SLEEP; @@ -38,7 +39,7 @@ Index: linux-3.4/arch/x86/crypto/aesni-intel_glue.c return err; } -@@ -314,14 +314,14 @@ static int ecb_decrypt(struct blkcipher_ +@@ -314,14 +314,14 @@ static int ecb_decrypt(struct blkcipher_desc *desc, err = blkcipher_walk_virt(desc, &walk); desc->flags &= ~CRYPTO_TFM_REQ_MAY_SLEEP; @@ -55,7 +56,7 @@ Index: linux-3.4/arch/x86/crypto/aesni-intel_glue.c return err; } -@@ -360,14 +360,14 @@ static int cbc_encrypt(struct blkcipher_ +@@ -360,14 +360,14 @@ static int cbc_encrypt(struct blkcipher_desc *desc, err = blkcipher_walk_virt(desc, &walk); desc->flags &= ~CRYPTO_TFM_REQ_MAY_SLEEP; @@ -72,7 +73,7 @@ Index: linux-3.4/arch/x86/crypto/aesni-intel_glue.c return err; } -@@ -384,14 +384,14 @@ static int cbc_decrypt(struct blkcipher_ +@@ -384,14 +384,14 @@ static int cbc_decrypt(struct blkcipher_desc *desc, err = blkcipher_walk_virt(desc, &walk); desc->flags &= ~CRYPTO_TFM_REQ_MAY_SLEEP; @@ -89,7 +90,7 @@ Index: linux-3.4/arch/x86/crypto/aesni-intel_glue.c return err; } -@@ -446,18 +446,20 @@ static int ctr_crypt(struct blkcipher_de +@@ -446,18 +446,20 @@ static int ctr_crypt(struct blkcipher_desc *desc, err = blkcipher_walk_virt_block(desc, &walk, AES_BLOCK_SIZE); desc->flags &= ~CRYPTO_TFM_REQ_MAY_SLEEP; diff --git a/debian/patches/features/all/rt/dm-make-rt-aware.patch b/debian/patches/features/all/rt/0232-dm-Make-rt-aware.patch similarity index 77% rename from debian/patches/features/all/rt/dm-make-rt-aware.patch rename to debian/patches/features/all/rt/0232-dm-Make-rt-aware.patch index 216853a53..7a93f07ef 100644 --- a/debian/patches/features/all/rt/dm-make-rt-aware.patch +++ b/debian/patches/features/all/rt/0232-dm-Make-rt-aware.patch @@ -1,6 +1,7 @@ -Subject: dm: Make rt aware +From f2117befa7f09cc7b7ac58ed50d236dabb53cd77 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Mon, 14 Nov 2011 23:06:09 +0100 +Subject: [232/254] dm: Make rt aware Use the BUG_ON_NORT variant for the irq_disabled() checks. RT has interrupts legitimately enabled here as we cant deadlock against the @@ -13,11 +14,11 @@ Signed-off-by: Thomas Gleixner drivers/md/dm.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -Index: linux-3.4/drivers/md/dm.c -=================================================================== ---- linux-3.4.orig/drivers/md/dm.c -+++ linux-3.4/drivers/md/dm.c -@@ -1648,14 +1648,14 @@ static void dm_request_fn(struct request +diff --git a/drivers/md/dm.c b/drivers/md/dm.c +index e24143c..ad7d7e3 100644 +--- a/drivers/md/dm.c ++++ b/drivers/md/dm.c +@@ -1648,14 +1648,14 @@ static void dm_request_fn(struct request_queue *q) if (map_request(ti, clone, md)) goto requeued; diff --git a/debian/patches/features/all/rt/cpumask-disable-offstack-on-rt.patch b/debian/patches/features/all/rt/0233-cpumask-Disable-CONFIG_CPUMASK_OFFSTACK-for-RT.patch similarity index 72% rename from debian/patches/features/all/rt/cpumask-disable-offstack-on-rt.patch rename to debian/patches/features/all/rt/0233-cpumask-Disable-CONFIG_CPUMASK_OFFSTACK-for-RT.patch index 541a2da22..da5c07875 100644 --- a/debian/patches/features/all/rt/cpumask-disable-offstack-on-rt.patch +++ b/debian/patches/features/all/rt/0233-cpumask-Disable-CONFIG_CPUMASK_OFFSTACK-for-RT.patch @@ -1,6 +1,7 @@ -Subject: cpumask: Disable CONFIG_CPUMASK_OFFSTACK for RT +From 4eef53b85a64d3ee6d8a96e5e546f19c353577e3 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 14 Dec 2011 01:03:49 +0100 +Subject: [233/254] cpumask: Disable CONFIG_CPUMASK_OFFSTACK for RT We can't deal with the cpumask allocations which happen in atomic context (see arch/x86/kernel/apic/io_apic.c) on RT right now. @@ -11,10 +12,10 @@ Signed-off-by: Thomas Gleixner lib/Kconfig | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) -Index: linux-3.4/arch/x86/Kconfig -=================================================================== ---- linux-3.4.orig/arch/x86/Kconfig -+++ linux-3.4/arch/x86/Kconfig +diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig +index f556832..98c1a17 100644 +--- a/arch/x86/Kconfig ++++ b/arch/x86/Kconfig @@ -750,7 +750,7 @@ config IOMMU_HELPER config MAXSMP bool "Enable Maximum number of SMP Processors and NUMA Nodes" @@ -24,10 +25,10 @@ Index: linux-3.4/arch/x86/Kconfig ---help--- Enable maximum number of CPUS and NUMA Nodes for this architecture. If unsure, say N. -Index: linux-3.4/lib/Kconfig -=================================================================== ---- linux-3.4.orig/lib/Kconfig -+++ linux-3.4/lib/Kconfig +diff --git a/lib/Kconfig b/lib/Kconfig +index 4a8aba2..4c03fe3 100644 +--- a/lib/Kconfig ++++ b/lib/Kconfig @@ -303,6 +303,7 @@ config CHECK_SIGNATURE config CPUMASK_OFFSTACK diff --git a/debian/patches/features/all/rt/seqlock-prevent-rt-starvation.patch b/debian/patches/features/all/rt/0234-seqlock-Prevent-rt-starvation.patch similarity index 81% rename from debian/patches/features/all/rt/seqlock-prevent-rt-starvation.patch rename to debian/patches/features/all/rt/0234-seqlock-Prevent-rt-starvation.patch index 690490d2d..9df0d5027 100644 --- a/debian/patches/features/all/rt/seqlock-prevent-rt-starvation.patch +++ b/debian/patches/features/all/rt/0234-seqlock-Prevent-rt-starvation.patch @@ -1,6 +1,7 @@ -Subject: seqlock: Prevent rt starvation +From b764f2a93808a388ab621d4f34f12eb4bfaf257f Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 22 Feb 2012 12:03:30 +0100 +Subject: [234/254] seqlock: Prevent rt starvation If a low prio writer gets preempted while holding the seqlock write locked, a high prio reader spins forever on RT. @@ -15,17 +16,16 @@ possible. Signed-off-by: Thomas Gleixner Cc: stable-rt@vger.kernel.org - --- - include/linux/seqlock.h | 55 +++++++++++++++++++++++++++++++++++++++--------- - include/net/neighbour.h | 2 - + include/linux/seqlock.h | 55 ++++++++++++++++++++++++++++++++++++++--------- + include/net/neighbour.h | 2 +- 2 files changed, 46 insertions(+), 11 deletions(-) -Index: linux-3.4/include/linux/seqlock.h -=================================================================== ---- linux-3.4.orig/include/linux/seqlock.h -+++ linux-3.4/include/linux/seqlock.h -@@ -125,18 +125,30 @@ static inline int read_seqcount_retry(co +diff --git a/include/linux/seqlock.h b/include/linux/seqlock.h +index 1829905..c2dcae4 100644 +--- a/include/linux/seqlock.h ++++ b/include/linux/seqlock.h +@@ -146,18 +146,30 @@ static inline int read_seqcount_retry(const seqcount_t *s, unsigned start) * Sequence counter only version assumes that callers are using their * own mutexing. */ @@ -58,7 +58,7 @@ Index: linux-3.4/include/linux/seqlock.h /** * write_seqcount_barrier - invalidate in-progress read-side seq operations * @s: pointer to seqcount_t -@@ -177,10 +189,33 @@ typedef struct { +@@ -198,10 +210,33 @@ typedef struct { /* * Read side functions for starting and finalizing a read side section. */ @@ -92,7 +92,7 @@ Index: linux-3.4/include/linux/seqlock.h static inline unsigned read_seqretry(const seqlock_t *sl, unsigned start) { -@@ -195,36 +230,36 @@ static inline unsigned read_seqretry(con +@@ -216,36 +251,36 @@ static inline unsigned read_seqretry(const seqlock_t *sl, unsigned start) static inline void write_seqlock(seqlock_t *sl) { spin_lock(&sl->lock); @@ -135,7 +135,7 @@ Index: linux-3.4/include/linux/seqlock.h spin_unlock_irq(&sl->lock); } -@@ -233,7 +268,7 @@ static inline unsigned long __write_seql +@@ -254,7 +289,7 @@ static inline unsigned long __write_seqlock_irqsave(seqlock_t *sl) unsigned long flags; spin_lock_irqsave(&sl->lock, flags); @@ -144,7 +144,7 @@ Index: linux-3.4/include/linux/seqlock.h return flags; } -@@ -243,7 +278,7 @@ static inline unsigned long __write_seql +@@ -264,7 +299,7 @@ static inline unsigned long __write_seqlock_irqsave(seqlock_t *sl) static inline void write_sequnlock_irqrestore(seqlock_t *sl, unsigned long flags) { @@ -153,10 +153,10 @@ Index: linux-3.4/include/linux/seqlock.h spin_unlock_irqrestore(&sl->lock, flags); } -Index: linux-3.4/include/net/neighbour.h -=================================================================== ---- linux-3.4.orig/include/net/neighbour.h -+++ linux-3.4/include/net/neighbour.h +diff --git a/include/net/neighbour.h b/include/net/neighbour.h +index 34c996f..8e626fa 100644 +--- a/include/net/neighbour.h ++++ b/include/net/neighbour.h @@ -394,7 +394,7 @@ struct neighbour_cb { #define NEIGH_CB(skb) ((struct neighbour_cb *)(skb)->cb) diff --git a/debian/patches/features/all/rt/rfc-timer-fix-hotplug-for-rt.patch b/debian/patches/features/all/rt/0235-timer-Fix-hotplug-for-rt.patch similarity index 84% rename from debian/patches/features/all/rt/rfc-timer-fix-hotplug-for-rt.patch rename to debian/patches/features/all/rt/0235-timer-Fix-hotplug-for-rt.patch index e77d96260..96647fa36 100644 --- a/debian/patches/features/all/rt/rfc-timer-fix-hotplug-for-rt.patch +++ b/debian/patches/features/all/rt/0235-timer-Fix-hotplug-for-rt.patch @@ -1,6 +1,7 @@ -Subject: timer: Fix hotplug for -rt +From aca12531075a1411fc35e84a891a07a8736a1f7e Mon Sep 17 00:00:00 2001 From: Steven Rostedt -Date: Thu, 01 Mar 2012 13:55:28 -0500 +Date: Thu, 1 Mar 2012 13:55:28 -0500 +Subject: [235/254] timer: Fix hotplug for -rt Revert the RT patch: Author: Ingo Molnar @@ -28,11 +29,11 @@ Signed-off-by: Thomas Gleixner kernel/timer.c | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) -Index: linux-3.4/kernel/timer.c -=================================================================== ---- linux-3.4.orig/kernel/timer.c -+++ linux-3.4/kernel/timer.c -@@ -1793,21 +1793,17 @@ static void __cpuinit migrate_timers(int +diff --git a/kernel/timer.c b/kernel/timer.c +index 935f46d..5413ff6 100644 +--- a/kernel/timer.c ++++ b/kernel/timer.c +@@ -1793,21 +1793,17 @@ static void __cpuinit migrate_timers(int cpu) { struct tvec_base *old_base; struct tvec_base *new_base; @@ -57,7 +58,7 @@ Index: linux-3.4/kernel/timer.c BUG_ON(old_base->running_timer); -@@ -1821,10 +1817,8 @@ static void __cpuinit migrate_timers(int +@@ -1821,10 +1817,8 @@ static void __cpuinit migrate_timers(int cpu) } spin_unlock(&old_base->lock); diff --git a/debian/patches/features/all/rt/rfc-futex-rt-fix-possible-lockup-when-taking-pi_lock-in-proxy-handler.patch b/debian/patches/features/all/rt/0236-futex-rt-Fix-possible-lockup-when-taking-pi_lock-in-.patch similarity index 79% rename from debian/patches/features/all/rt/rfc-futex-rt-fix-possible-lockup-when-taking-pi_lock-in-proxy-handler.patch rename to debian/patches/features/all/rt/0236-futex-rt-Fix-possible-lockup-when-taking-pi_lock-in-.patch index fbb854b89..373145a16 100644 --- a/debian/patches/features/all/rt/rfc-futex-rt-fix-possible-lockup-when-taking-pi_lock-in-proxy-handler.patch +++ b/debian/patches/features/all/rt/0236-futex-rt-Fix-possible-lockup-when-taking-pi_lock-in-.patch @@ -1,6 +1,8 @@ -Subject: futex/rt: Fix possible lockup when taking pi_lock in proxy handler +From 9ed8354422ac7a57895ca7ba9e44236645f3769a Mon Sep 17 00:00:00 2001 From: Steven Rostedt -Date: Thu, 01 Mar 2012 13:55:29 -0500 +Date: Thu, 1 Mar 2012 13:55:29 -0500 +Subject: [236/254] futex/rt: Fix possible lockup when taking pi_lock in proxy + handler When taking the pi_lock, we must disable interrupts because the pi_lock can also be taken in an interrupt handler. @@ -19,11 +21,11 @@ Signed-off-by: Thomas Gleixner kernel/rtmutex.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) -Index: linux-3.4/kernel/rtmutex.c -=================================================================== ---- linux-3.4.orig/kernel/rtmutex.c -+++ linux-3.4/kernel/rtmutex.c -@@ -1365,14 +1365,14 @@ int rt_mutex_start_proxy_lock(struct rt_ +diff --git a/kernel/rtmutex.c b/kernel/rtmutex.c +index 921c90b..3bff726 100644 +--- a/kernel/rtmutex.c ++++ b/kernel/rtmutex.c +@@ -1365,14 +1365,14 @@ int rt_mutex_start_proxy_lock(struct rt_mutex *lock, * PI_REQUEUE_INPROGRESS, so that if the task is waking up * it will know that we are in the process of requeuing it. */ diff --git a/debian/patches/features/all/rt/rfc-ring-buffer-rt-check-for-irqs-disabled-before-grabbing-reader-lock.patch b/debian/patches/features/all/rt/0237-ring-buffer-rt-Check-for-irqs-disabled-before-grabbi.patch similarity index 72% rename from debian/patches/features/all/rt/rfc-ring-buffer-rt-check-for-irqs-disabled-before-grabbing-reader-lock.patch rename to debian/patches/features/all/rt/0237-ring-buffer-rt-Check-for-irqs-disabled-before-grabbi.patch index c621057b0..62975e906 100644 --- a/debian/patches/features/all/rt/rfc-ring-buffer-rt-check-for-irqs-disabled-before-grabbing-reader-lock.patch +++ b/debian/patches/features/all/rt/0237-ring-buffer-rt-Check-for-irqs-disabled-before-grabbi.patch @@ -1,6 +1,8 @@ -Subject: ring-buffer/rt: Check for irqs disabled before grabbing reader lock +From fb5428864c19dd11e1d2c13a83af9a91eebd60fe Mon Sep 17 00:00:00 2001 From: Steven Rostedt -Date: Thu, 01 Mar 2012 13:55:32 -0500 +Date: Thu, 1 Mar 2012 13:55:32 -0500 +Subject: [237/254] ring-buffer/rt: Check for irqs disabled before grabbing + reader lock In RT the reader lock is a mutex and we can not grab it when preemption is disabled. The in_atomic() check that is there does not check if irqs are @@ -18,10 +20,10 @@ Signed-off-by: Thomas Gleixner kernel/trace/ring_buffer.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-3.4/kernel/trace/ring_buffer.c -=================================================================== ---- linux-3.4.orig/kernel/trace/ring_buffer.c -+++ linux-3.4/kernel/trace/ring_buffer.c +diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c +index 24efd16..e59be41 100644 +--- a/kernel/trace/ring_buffer.c ++++ b/kernel/trace/ring_buffer.c @@ -1022,7 +1022,7 @@ static inline int ok_to_lock(void) if (in_nmi()) return 0; diff --git a/debian/patches/features/all/rt/rfc-sched-rt-fix-wait_task_interactive-to-test-rt_spin_lock-state.patch b/debian/patches/features/all/rt/0238-sched-rt-Fix-wait_task_interactive-to-test-rt_spin_l.patch similarity index 73% rename from debian/patches/features/all/rt/rfc-sched-rt-fix-wait_task_interactive-to-test-rt_spin_lock-state.patch rename to debian/patches/features/all/rt/0238-sched-rt-Fix-wait_task_interactive-to-test-rt_spin_l.patch index 51a5b3d16..acc8f6627 100644 --- a/debian/patches/features/all/rt/rfc-sched-rt-fix-wait_task_interactive-to-test-rt_spin_lock-state.patch +++ b/debian/patches/features/all/rt/0238-sched-rt-Fix-wait_task_interactive-to-test-rt_spin_l.patch @@ -1,6 +1,8 @@ -Subject: sched/rt: Fix wait_task_interactive() to test rt_spin_lock state +From fa7eddc99b7ea6af15cdc6be9a24e2abab784ed1 Mon Sep 17 00:00:00 2001 From: Steven Rostedt -Date: Thu, 01 Mar 2012 13:55:33 -0500 +Date: Thu, 1 Mar 2012 13:55:33 -0500 +Subject: [238/254] sched/rt: Fix wait_task_interactive() to test rt_spin_lock + state The wait_task_interactive() will have a task sleep waiting for another task to have a certain state. But it ignores the rt_spin_locks state @@ -22,11 +24,11 @@ Signed-off-by: Thomas Gleixner kernel/sched/core.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) -Index: linux-3.4/kernel/sched/core.c -=================================================================== ---- linux-3.4.orig/kernel/sched/core.c -+++ linux-3.4/kernel/sched/core.c -@@ -1174,7 +1174,8 @@ unsigned long wait_task_inactive(struct +diff --git a/kernel/sched/core.c b/kernel/sched/core.c +index 60e46f4..f6888c4 100644 +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -1174,7 +1174,8 @@ unsigned long wait_task_inactive(struct task_struct *p, long match_state) * is actually now running somewhere else! */ while (task_running(rq, p)) { @@ -36,7 +38,7 @@ Index: linux-3.4/kernel/sched/core.c return 0; cpu_relax(); } -@@ -1189,7 +1190,8 @@ unsigned long wait_task_inactive(struct +@@ -1189,7 +1190,8 @@ unsigned long wait_task_inactive(struct task_struct *p, long match_state) running = task_running(rq, p); on_rq = p->on_rq; ncsw = 0; diff --git a/debian/patches/features/all/rt/rfc-lglock-rt-use-non-rt-for_each_cpu-in-rt-code.patch b/debian/patches/features/all/rt/0239-lglock-rt-Use-non-rt-for_each_cpu-in-rt-code.patch similarity index 92% rename from debian/patches/features/all/rt/rfc-lglock-rt-use-non-rt-for_each_cpu-in-rt-code.patch rename to debian/patches/features/all/rt/0239-lglock-rt-Use-non-rt-for_each_cpu-in-rt-code.patch index eb19630e7..2cd254d15 100644 --- a/debian/patches/features/all/rt/rfc-lglock-rt-use-non-rt-for_each_cpu-in-rt-code.patch +++ b/debian/patches/features/all/rt/0239-lglock-rt-Use-non-rt-for_each_cpu-in-rt-code.patch @@ -1,6 +1,7 @@ -Subject: lglock/rt: Use non-rt for_each_cpu() in -rt code +From 56861a746e98bf56ed78986f8b013a8c19b702cc Mon Sep 17 00:00:00 2001 From: Steven Rostedt -Date: Thu, 01 Mar 2012 13:55:30 -0500 +Date: Thu, 1 Mar 2012 13:55:30 -0500 +Subject: [239/254] lglock/rt: Use non-rt for_each_cpu() in -rt code Currently the RT version of the lglocks() does a for_each_online_cpu() in the name##_global_lock_online() functions. Non-rt uses its own @@ -33,10 +34,10 @@ Signed-off-by: Thomas Gleixner include/linux/lglock.h | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) -Index: linux-3.4/include/linux/lglock.h -=================================================================== ---- linux-3.4.orig/include/linux/lglock.h -+++ linux-3.4/include/linux/lglock.h +diff --git a/include/linux/lglock.h b/include/linux/lglock.h +index 52b289f..cdfcef3 100644 +--- a/include/linux/lglock.h ++++ b/include/linux/lglock.h @@ -203,9 +203,31 @@ #else /* !PREEMPT_RT_FULL */ #define DEFINE_LGLOCK(name) \ diff --git a/debian/patches/features/all/rt/cpu-rt-make-hotplug-lock-a-sleeping-spinlock-on-rt.patch b/debian/patches/features/all/rt/0240-cpu-Make-hotplug.lock-a-sleeping-spinlock-on-RT.patch similarity index 92% rename from debian/patches/features/all/rt/cpu-rt-make-hotplug-lock-a-sleeping-spinlock-on-rt.patch rename to debian/patches/features/all/rt/0240-cpu-Make-hotplug.lock-a-sleeping-spinlock-on-RT.patch index 2f0c8791b..39886677f 100644 --- a/debian/patches/features/all/rt/cpu-rt-make-hotplug-lock-a-sleeping-spinlock-on-rt.patch +++ b/debian/patches/features/all/rt/0240-cpu-Make-hotplug.lock-a-sleeping-spinlock-on-RT.patch @@ -1,6 +1,7 @@ -Subject: cpu: Make hotplug.lock a "sleeping" spinlock on RT +From fd5f32887db0d4b74d47ce6806ce6376034f68d9 Mon Sep 17 00:00:00 2001 From: Steven Rostedt -Date: Fri, 02 Mar 2012 10:36:57 -0500 +Date: Fri, 2 Mar 2012 10:36:57 -0500 +Subject: [240/254] cpu: Make hotplug.lock a "sleeping" spinlock on RT Tasks can block on hotplug.lock in pin_current_cpu(), but their state might be != RUNNING. So the mutex wakeup will set the state @@ -22,10 +23,10 @@ Signed-off-by: Thomas Gleixner kernel/cpu.c | 35 ++++++++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 9 deletions(-) -Index: linux-3.4/kernel/cpu.c -=================================================================== ---- linux-3.4.orig/kernel/cpu.c -+++ linux-3.4/kernel/cpu.c +diff --git a/kernel/cpu.c b/kernel/cpu.c +index 37b2212..d79d33a 100644 +--- a/kernel/cpu.c ++++ b/kernel/cpu.c @@ -46,7 +46,12 @@ static int cpu_hotplug_disabled; static struct { diff --git a/debian/patches/features/all/rt/softirq-preempt-fix-3-re.txt b/debian/patches/features/all/rt/0241-softirq-Check-preemption-after-reenabling-interrupts.patch similarity index 69% rename from debian/patches/features/all/rt/softirq-preempt-fix-3-re.txt rename to debian/patches/features/all/rt/0241-softirq-Check-preemption-after-reenabling-interrupts.patch index 154309ec7..453728788 100644 --- a/debian/patches/features/all/rt/softirq-preempt-fix-3-re.txt +++ b/debian/patches/features/all/rt/0241-softirq-Check-preemption-after-reenabling-interrupts.patch @@ -1,6 +1,7 @@ -Subject: softirq: Check preemption after reenabling interrupts +From 779da4b7b2e266e3ddc9a9a24a8fe173b083c284 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner -Date: Sun, 13 Nov 2011 17:17:09 +0100 (CET) +Date: Sun, 13 Nov 2011 17:17:09 +0100 +Subject: [241/254] softirq: Check preemption after reenabling interrupts raise_softirq_irqoff() disables interrupts and wakes the softirq daemon, but after reenabling interrupts there is no preemption check, @@ -20,11 +21,11 @@ Cc: stable-rt@vger.kernel.org net/core/dev.c | 6 ++++++ 4 files changed, 15 insertions(+) -Index: linux-3.4/block/blk-iopoll.c -=================================================================== ---- linux-3.4.orig/block/blk-iopoll.c -+++ linux-3.4/block/blk-iopoll.c -@@ -38,6 +38,7 @@ void blk_iopoll_sched(struct blk_iopoll +diff --git a/block/blk-iopoll.c b/block/blk-iopoll.c +index 58916af..f7ca9b4 100644 +--- a/block/blk-iopoll.c ++++ b/block/blk-iopoll.c +@@ -38,6 +38,7 @@ void blk_iopoll_sched(struct blk_iopoll *iop) list_add_tail(&iop->list, &__get_cpu_var(blk_cpu_iopoll)); __raise_softirq_irqoff(BLOCK_IOPOLL_SOFTIRQ); local_irq_restore(flags); @@ -32,7 +33,7 @@ Index: linux-3.4/block/blk-iopoll.c } EXPORT_SYMBOL(blk_iopoll_sched); -@@ -135,6 +136,7 @@ static void blk_iopoll_softirq(struct so +@@ -135,6 +136,7 @@ static void blk_iopoll_softirq(struct softirq_action *h) __raise_softirq_irqoff(BLOCK_IOPOLL_SOFTIRQ); local_irq_enable(); @@ -40,7 +41,7 @@ Index: linux-3.4/block/blk-iopoll.c } /** -@@ -204,6 +206,7 @@ static int __cpuinit blk_iopoll_cpu_noti +@@ -204,6 +206,7 @@ static int __cpuinit blk_iopoll_cpu_notify(struct notifier_block *self, &__get_cpu_var(blk_cpu_iopoll)); __raise_softirq_irqoff(BLOCK_IOPOLL_SOFTIRQ); local_irq_enable(); @@ -48,10 +49,10 @@ Index: linux-3.4/block/blk-iopoll.c } return NOTIFY_OK; -Index: linux-3.4/block/blk-softirq.c -=================================================================== ---- linux-3.4.orig/block/blk-softirq.c -+++ linux-3.4/block/blk-softirq.c +diff --git a/block/blk-softirq.c b/block/blk-softirq.c +index 467c8de..3fe2368 100644 +--- a/block/blk-softirq.c ++++ b/block/blk-softirq.c @@ -51,6 +51,7 @@ static void trigger_softirq(void *data) raise_softirq_irqoff(BLOCK_SOFTIRQ); @@ -60,7 +61,7 @@ Index: linux-3.4/block/blk-softirq.c } /* -@@ -93,6 +94,7 @@ static int __cpuinit blk_cpu_notify(stru +@@ -93,6 +94,7 @@ static int __cpuinit blk_cpu_notify(struct notifier_block *self, &__get_cpu_var(blk_cpu_done)); raise_softirq_irqoff(BLOCK_SOFTIRQ); local_irq_enable(); @@ -76,10 +77,10 @@ Index: linux-3.4/block/blk-softirq.c } /** -Index: linux-3.4/include/linux/preempt.h -=================================================================== ---- linux-3.4.orig/include/linux/preempt.h -+++ linux-3.4/include/linux/preempt.h +diff --git a/include/linux/preempt.h b/include/linux/preempt.h +index 5af46d0..5e71285 100644 +--- a/include/linux/preempt.h ++++ b/include/linux/preempt.h @@ -56,8 +56,10 @@ do { \ #ifndef CONFIG_PREEMPT_RT_BASE @@ -99,11 +100,11 @@ Index: linux-3.4/include/linux/preempt.h #endif /* CONFIG_PREEMPT_COUNT */ -Index: linux-3.4/net/core/dev.c -=================================================================== ---- linux-3.4.orig/net/core/dev.c -+++ linux-3.4/net/core/dev.c -@@ -1803,6 +1803,7 @@ static inline void __netif_reschedule(st +diff --git a/net/core/dev.c b/net/core/dev.c +index 252c15a..292930b 100644 +--- a/net/core/dev.c ++++ b/net/core/dev.c +@@ -1807,6 +1807,7 @@ static inline void __netif_reschedule(struct Qdisc *q) sd->output_queue_tailp = &q->next_sched; raise_softirq_irqoff(NET_TX_SOFTIRQ); local_irq_restore(flags); @@ -111,7 +112,7 @@ Index: linux-3.4/net/core/dev.c } void __netif_schedule(struct Qdisc *q) -@@ -1824,6 +1825,7 @@ void dev_kfree_skb_irq(struct sk_buff *s +@@ -1828,6 +1829,7 @@ void dev_kfree_skb_irq(struct sk_buff *skb) sd->completion_queue = skb; raise_softirq_irqoff(NET_TX_SOFTIRQ); local_irq_restore(flags); @@ -119,7 +120,7 @@ Index: linux-3.4/net/core/dev.c } } EXPORT_SYMBOL(dev_kfree_skb_irq); -@@ -2923,6 +2925,7 @@ enqueue: +@@ -2897,6 +2899,7 @@ enqueue: rps_unlock(sd); local_irq_restore(flags); @@ -127,7 +128,7 @@ Index: linux-3.4/net/core/dev.c atomic_long_inc(&skb->dev->rx_dropped); kfree_skb(skb); -@@ -3736,6 +3739,7 @@ static void net_rps_action_and_irq_enabl +@@ -3710,6 +3713,7 @@ static void net_rps_action_and_irq_enable(struct softnet_data *sd) } else #endif local_irq_enable(); @@ -135,7 +136,7 @@ Index: linux-3.4/net/core/dev.c } static int process_backlog(struct napi_struct *napi, int quota) -@@ -3808,6 +3812,7 @@ void __napi_schedule(struct napi_struct +@@ -3782,6 +3786,7 @@ void __napi_schedule(struct napi_struct *n) local_irq_save(flags); ____napi_schedule(&__get_cpu_var(softnet_data), n); local_irq_restore(flags); @@ -143,7 +144,7 @@ Index: linux-3.4/net/core/dev.c } EXPORT_SYMBOL(__napi_schedule); -@@ -6309,6 +6314,7 @@ static int dev_cpu_callback(struct notif +@@ -6283,6 +6288,7 @@ static int dev_cpu_callback(struct notifier_block *nfb, raise_softirq_irqoff(NET_TX_SOFTIRQ); local_irq_enable(); diff --git a/debian/patches/features/all/rt/scsi-qla2xxx-fix-bug-sleeping-function-called-from-invalid-context.patch b/debian/patches/features/all/rt/0242-scsi-qla2xxx-Use-local_irq_save_nort-in-qla2x00_poll.patch similarity index 84% rename from debian/patches/features/all/rt/scsi-qla2xxx-fix-bug-sleeping-function-called-from-invalid-context.patch rename to debian/patches/features/all/rt/0242-scsi-qla2xxx-Use-local_irq_save_nort-in-qla2x00_poll.patch index eeb410698..736938c5f 100644 --- a/debian/patches/features/all/rt/scsi-qla2xxx-fix-bug-sleeping-function-called-from-invalid-context.patch +++ b/debian/patches/features/all/rt/0242-scsi-qla2xxx-Use-local_irq_save_nort-in-qla2x00_poll.patch @@ -1,6 +1,7 @@ -Subject: scsi: qla2xxx: Use local_irq_save_nort() in qla2x00_poll +From f7bbe7ec1ddddb33c5919d83f688dbdd34df04c7 Mon Sep 17 00:00:00 2001 From: John Kacur Date: Fri, 27 Apr 2012 12:48:46 +0200 +Subject: [242/254] scsi: qla2xxx: Use local_irq_save_nort() in qla2x00_poll RT triggers the following: @@ -26,7 +27,7 @@ Cc: stable-rt@vger.kernel.org Signed-off-by: Thomas Gleixner --- drivers/scsi/qla2xxx/qla_inline.h | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) + 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/scsi/qla2xxx/qla_inline.h b/drivers/scsi/qla2xxx/qla_inline.h index 6e45764..28d9a8d 100644 @@ -47,12 +48,3 @@ index 6e45764..28d9a8d 100644 } static inline uint8_t * --- -1.7.1 - --- -To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in -the body of a message to majordomo@vger.kernel.org -More majordomo info at http://vger.kernel.org/majordomo-info.html - - diff --git a/debian/patches/features/all/rt/upstream-net-rt-remove-preemption-disabling-in-netif_rx.patch b/debian/patches/features/all/rt/0243-net-RT-REmove-preemption-disabling-in-netif_rx.patch similarity index 87% rename from debian/patches/features/all/rt/upstream-net-rt-remove-preemption-disabling-in-netif_rx.patch rename to debian/patches/features/all/rt/0243-net-RT-REmove-preemption-disabling-in-netif_rx.patch index 7586d5303..925c3e471 100644 --- a/debian/patches/features/all/rt/upstream-net-rt-remove-preemption-disabling-in-netif_rx.patch +++ b/debian/patches/features/all/rt/0243-net-RT-REmove-preemption-disabling-in-netif_rx.patch @@ -1,6 +1,7 @@ -Subject: [UPSTREAM]net,RT:REmove preemption disabling in netif_rx() +From 61e805f4e24de2980824c341bb68463884ca005b Mon Sep 17 00:00:00 2001 From: Priyanka Jain Date: Thu, 17 May 2012 09:35:11 +0530 +Subject: [243/254] net,RT:REmove preemption disabling in netif_rx() 1)enqueue_to_backlog() (called from netif_rx) should be bind to a particluar CPU. This can be achieved by @@ -30,15 +31,13 @@ Link: http://lkml.kernel.org/r/1337227511-2271-1-git-send-email-Priyanka.Jain@fr Cc: stable-rt@vger.kernel.org Signed-off-by: Thomas Gleixner --- - Testing: Tested successfully on p4080ds(8-core SMP system) - net/core/dev.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) -Index: linux-3.4/net/core/dev.c -=================================================================== ---- linux-3.4.orig/net/core/dev.c -+++ linux-3.4/net/core/dev.c +diff --git a/net/core/dev.c b/net/core/dev.c +index 292930b..382a810 100644 +--- a/net/core/dev.c ++++ b/net/core/dev.c @@ -2937,7 +2937,7 @@ int netif_rx(struct sk_buff *skb) struct rps_dev_flow voidflow, *rflow = &voidflow; int cpu; diff --git a/debian/patches/features/all/rt/rt-introduce-cpu-chill.patch b/debian/patches/features/all/rt/0244-rt-Introduce-cpu_chill.patch similarity index 63% rename from debian/patches/features/all/rt/rt-introduce-cpu-chill.patch rename to debian/patches/features/all/rt/0244-rt-Introduce-cpu_chill.patch index 8f7ffe5fe..d1f209d1a 100644 --- a/debian/patches/features/all/rt/rt-introduce-cpu-chill.patch +++ b/debian/patches/features/all/rt/0244-rt-Introduce-cpu_chill.patch @@ -1,6 +1,7 @@ -Subject: rt: Introduce cpu_chill() +From ca9aa042c9e7bed2ca76d2510bf00831ef8308bf Mon Sep 17 00:00:00 2001 From: Thomas Gleixner -Date: Wed, 07 Mar 2012 20:51:03 +0100 +Date: Wed, 7 Mar 2012 20:51:03 +0100 +Subject: [244/254] rt: Introduce cpu_chill() Retry loops on RT might loop forever when the modifying side was preempted. Add cpu_chill() to replace cpu_relax(). cpu_chill() @@ -13,11 +14,11 @@ Cc: stable-rt@vger.kernel.org include/linux/delay.h | 6 ++++++ 1 file changed, 6 insertions(+) -Index: linux-3.4/include/linux/delay.h -=================================================================== ---- linux-3.4.orig/include/linux/delay.h -+++ linux-3.4/include/linux/delay.h -@@ -52,4 +52,10 @@ static inline void ssleep(unsigned int s +diff --git a/include/linux/delay.h b/include/linux/delay.h +index a6ecb34..e23a7c0 100644 +--- a/include/linux/delay.h ++++ b/include/linux/delay.h +@@ -52,4 +52,10 @@ static inline void ssleep(unsigned int seconds) msleep(seconds * 1000); } diff --git a/debian/patches/features/all/rt/fs-dcache-use-cpu-chill-in-trylock-loops.patch b/debian/patches/features/all/rt/0245-fs-dcache-Use-cpu_chill-in-trylock-loops.patch similarity index 69% rename from debian/patches/features/all/rt/fs-dcache-use-cpu-chill-in-trylock-loops.patch rename to debian/patches/features/all/rt/0245-fs-dcache-Use-cpu_chill-in-trylock-loops.patch index 9cf4eb9de..148e314b4 100644 --- a/debian/patches/features/all/rt/fs-dcache-use-cpu-chill-in-trylock-loops.patch +++ b/debian/patches/features/all/rt/0245-fs-dcache-Use-cpu_chill-in-trylock-loops.patch @@ -1,6 +1,7 @@ -Subject: fs: dcache: Use cpu_chill() in trylock loops +From b6277f4e9dafd929576df1bb6308e24ecbc5155b Mon Sep 17 00:00:00 2001 From: Thomas Gleixner -Date: Wed, 07 Mar 2012 21:00:34 +0100 +Date: Wed, 7 Mar 2012 21:00:34 +0100 +Subject: [245/254] fs: dcache: Use cpu_chill() in trylock loops Retry loops on RT might loop forever when the modifying side was preempted. Use cpu_chill() instead of cpu_relax() to let the system @@ -15,10 +16,10 @@ Cc: stable-rt@vger.kernel.org fs/namespace.c | 3 ++- 4 files changed, 8 insertions(+), 5 deletions(-) -Index: linux-3.4/fs/autofs4/autofs_i.h -=================================================================== ---- linux-3.4.orig/fs/autofs4/autofs_i.h -+++ linux-3.4/fs/autofs4/autofs_i.h +diff --git a/fs/autofs4/autofs_i.h b/fs/autofs4/autofs_i.h +index 908e184..bdd1788 100644 +--- a/fs/autofs4/autofs_i.h ++++ b/fs/autofs4/autofs_i.h @@ -34,6 +34,7 @@ #include #include @@ -27,10 +28,10 @@ Index: linux-3.4/fs/autofs4/autofs_i.h #include #include -Index: linux-3.4/fs/autofs4/expire.c -=================================================================== ---- linux-3.4.orig/fs/autofs4/expire.c -+++ linux-3.4/fs/autofs4/expire.c +diff --git a/fs/autofs4/expire.c b/fs/autofs4/expire.c +index 1feb68e..859badd 100644 +--- a/fs/autofs4/expire.c ++++ b/fs/autofs4/expire.c @@ -171,7 +171,7 @@ again: parent = p->d_parent; if (!spin_trylock(&parent->d_lock)) { @@ -40,10 +41,10 @@ Index: linux-3.4/fs/autofs4/expire.c goto relock; } spin_unlock(&p->d_lock); -Index: linux-3.4/fs/dcache.c -=================================================================== ---- linux-3.4.orig/fs/dcache.c -+++ linux-3.4/fs/dcache.c +diff --git a/fs/dcache.c b/fs/dcache.c +index b80531c..0801198 100644 +--- a/fs/dcache.c ++++ b/fs/dcache.c @@ -37,6 +37,7 @@ #include #include @@ -52,7 +53,7 @@ Index: linux-3.4/fs/dcache.c #include "internal.h" #include "mount.h" -@@ -454,7 +455,7 @@ static inline struct dentry *dentry_kill +@@ -472,7 +473,7 @@ static inline struct dentry *dentry_kill(struct dentry *dentry, int ref) if (inode && !spin_trylock(&inode->i_lock)) { relock: spin_unlock(&dentry->d_lock); @@ -61,7 +62,7 @@ Index: linux-3.4/fs/dcache.c return dentry; /* try again with same dentry */ } if (IS_ROOT(dentry)) -@@ -840,7 +841,7 @@ relock: +@@ -858,7 +859,7 @@ relock: if (!spin_trylock(&dentry->d_lock)) { spin_unlock(&dcache_lru_lock); @@ -70,7 +71,7 @@ Index: linux-3.4/fs/dcache.c goto relock; } -@@ -2022,7 +2023,7 @@ again: +@@ -2040,7 +2041,7 @@ again: if (dentry->d_count == 1) { if (inode && !spin_trylock(&inode->i_lock)) { spin_unlock(&dentry->d_lock); @@ -79,10 +80,10 @@ Index: linux-3.4/fs/dcache.c goto again; } dentry->d_flags &= ~DCACHE_CANT_MOUNT; -Index: linux-3.4/fs/namespace.c -=================================================================== ---- linux-3.4.orig/fs/namespace.c -+++ linux-3.4/fs/namespace.c +diff --git a/fs/namespace.c b/fs/namespace.c +index 6dc617c..02f02ea 100644 +--- a/fs/namespace.c ++++ b/fs/namespace.c @@ -20,6 +20,7 @@ #include /* get_fs_root et.al. */ #include /* fsnotify_vfsmount_delete */ diff --git a/debian/patches/features/all/rt/net-use-cpu-chill.patch b/debian/patches/features/all/rt/0246-net-Use-cpu_chill-instead-of-cpu_relax.patch similarity index 65% rename from debian/patches/features/all/rt/net-use-cpu-chill.patch rename to debian/patches/features/all/rt/0246-net-Use-cpu_chill-instead-of-cpu_relax.patch index f26203858..e9bb487fc 100644 --- a/debian/patches/features/all/rt/net-use-cpu-chill.patch +++ b/debian/patches/features/all/rt/0246-net-Use-cpu_chill-instead-of-cpu_relax.patch @@ -1,6 +1,7 @@ -Subject: net: Use cpu_chill() instead of cpu_relax() +From b40d7298390c7d4100dbcc43a8fb56b2c26c7072 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner -Date: Wed, 07 Mar 2012 21:10:04 +0100 +Date: Wed, 7 Mar 2012 21:10:04 +0100 +Subject: [246/254] net: Use cpu_chill() instead of cpu_relax() Retry loops on RT might loop forever when the modifying side was preempted. Use cpu_chill() instead of cpu_relax() to let the system @@ -13,10 +14,10 @@ Cc: stable-rt@vger.kernel.org net/rds/ib_rdma.c | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) -Index: linux-3.4/net/packet/af_packet.c -=================================================================== ---- linux-3.4.orig/net/packet/af_packet.c -+++ linux-3.4/net/packet/af_packet.c +diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c +index 4f2c0df..8194092 100644 +--- a/net/packet/af_packet.c ++++ b/net/packet/af_packet.c @@ -88,6 +88,7 @@ #include #include @@ -25,7 +26,7 @@ Index: linux-3.4/net/packet/af_packet.c #ifdef CONFIG_INET #include -@@ -672,7 +673,7 @@ static void prb_retire_rx_blk_timer_expi +@@ -672,7 +673,7 @@ static void prb_retire_rx_blk_timer_expired(unsigned long data) if (BLOCK_NUM_PKTS(pbd)) { while (atomic_read(&pkc->blk_fill_in_prog)) { /* Waiting for skb_copy_bits to finish... */ @@ -34,7 +35,7 @@ Index: linux-3.4/net/packet/af_packet.c } } -@@ -927,7 +928,7 @@ static void prb_retire_current_block(str +@@ -927,7 +928,7 @@ static void prb_retire_current_block(struct tpacket_kbdq_core *pkc, if (!(status & TP_STATUS_BLK_TMO)) { while (atomic_read(&pkc->blk_fill_in_prog)) { /* Waiting for skb_copy_bits to finish... */ @@ -43,10 +44,10 @@ Index: linux-3.4/net/packet/af_packet.c } } prb_close_block(pkc, pbd, po, status); -Index: linux-3.4/net/rds/ib_rdma.c -=================================================================== ---- linux-3.4.orig/net/rds/ib_rdma.c -+++ linux-3.4/net/rds/ib_rdma.c +diff --git a/net/rds/ib_rdma.c b/net/rds/ib_rdma.c +index e8fdb17..5a44c6e 100644 +--- a/net/rds/ib_rdma.c ++++ b/net/rds/ib_rdma.c @@ -34,6 +34,7 @@ #include #include @@ -55,7 +56,7 @@ Index: linux-3.4/net/rds/ib_rdma.c #include "rds.h" #include "ib.h" -@@ -286,7 +287,7 @@ static inline void wait_clean_list_grace +@@ -286,7 +287,7 @@ static inline void wait_clean_list_grace(void) for_each_online_cpu(cpu) { flag = &per_cpu(clean_list_grace, cpu); while (test_bit(CLEAN_LIST_BUSY_BIT, flag)) diff --git a/debian/patches/features/all/rt/ntp-make-ntp-lock-raw-sigh.patch b/debian/patches/features/all/rt/0247-ntp-Make-ntp_lock-raw.patch similarity index 82% rename from debian/patches/features/all/rt/ntp-make-ntp-lock-raw-sigh.patch rename to debian/patches/features/all/rt/0247-ntp-Make-ntp_lock-raw.patch index 28d3f19c3..4bf45ead1 100644 --- a/debian/patches/features/all/rt/ntp-make-ntp-lock-raw-sigh.patch +++ b/debian/patches/features/all/rt/0247-ntp-Make-ntp_lock-raw.patch @@ -1,6 +1,7 @@ -Subject: ntp: Make ntp_lock raw. +From 072dcd94e127102d7f7739fda0940c4bf9167729 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Tue, 10 Apr 2012 11:14:55 +0200 +Subject: [247/254] ntp: Make ntp_lock raw. This needs to be revisited. Not sure whether we can avoid to make this lock raw, but it'd really like to. @@ -10,10 +11,10 @@ Signed-off-by: Thomas Gleixner kernel/time/ntp.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) -Index: linux-3.4/kernel/time/ntp.c -=================================================================== ---- linux-3.4.orig/kernel/time/ntp.c -+++ linux-3.4/kernel/time/ntp.c +diff --git a/kernel/time/ntp.c b/kernel/time/ntp.c +index f03fd83..82897ea 100644 +--- a/kernel/time/ntp.c ++++ b/kernel/time/ntp.c @@ -22,7 +22,7 @@ * NTP timekeeping variables: */ @@ -89,7 +90,7 @@ Index: linux-3.4/kernel/time/ntp.c txc->time.tv_sec = ts.tv_sec; txc->time.tv_usec = ts.tv_nsec; -@@ -898,7 +898,7 @@ void hardpps(const struct timespec *phas +@@ -898,7 +898,7 @@ void hardpps(const struct timespec *phase_ts, const struct timespec *raw_ts) pts_norm = pps_normalize_ts(*phase_ts); @@ -98,7 +99,7 @@ Index: linux-3.4/kernel/time/ntp.c /* clear the error bits, they will be set again if needed */ time_status &= ~(STA_PPSJITTER | STA_PPSWANDER | STA_PPSERROR); -@@ -911,7 +911,7 @@ void hardpps(const struct timespec *phas +@@ -911,7 +911,7 @@ void hardpps(const struct timespec *phase_ts, const struct timespec *raw_ts) * just start the frequency interval */ if (unlikely(pps_fbase.tv_sec == 0)) { pps_fbase = *raw_ts; @@ -107,7 +108,7 @@ Index: linux-3.4/kernel/time/ntp.c return; } -@@ -926,7 +926,7 @@ void hardpps(const struct timespec *phas +@@ -926,7 +926,7 @@ void hardpps(const struct timespec *phase_ts, const struct timespec *raw_ts) time_status |= STA_PPSJITTER; /* restart the frequency calibration interval */ pps_fbase = *raw_ts; @@ -116,7 +117,7 @@ Index: linux-3.4/kernel/time/ntp.c pr_err("hardpps: PPSJITTER: bad pulse\n"); return; } -@@ -943,7 +943,7 @@ void hardpps(const struct timespec *phas +@@ -943,7 +943,7 @@ void hardpps(const struct timespec *phase_ts, const struct timespec *raw_ts) hardpps_update_phase(pts_norm.nsec); diff --git a/debian/patches/features/all/rt/mips-remove-smp-reserve-lock.patch b/debian/patches/features/all/rt/0248-mips-remove-smp-reserve-lock.patch.patch similarity index 74% rename from debian/patches/features/all/rt/mips-remove-smp-reserve-lock.patch rename to debian/patches/features/all/rt/0248-mips-remove-smp-reserve-lock.patch.patch index 70c0d005f..cc9aed647 100644 --- a/debian/patches/features/all/rt/mips-remove-smp-reserve-lock.patch +++ b/debian/patches/features/all/rt/0248-mips-remove-smp-reserve-lock.patch.patch @@ -1,6 +1,7 @@ -Subject: mips-remove-smp-reserve-lock.patch +From 56d8e7884b95d63805bb49e7432989a51cf234a7 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Tue, 22 May 2012 21:15:10 +0200 +Subject: [248/254] mips-remove-smp-reserve-lock.patch Instead of making the lock raw, remove it as it protects nothing. @@ -10,10 +11,10 @@ Cc: stable-rt@vger.kernel.org arch/mips/cavium-octeon/smp.c | 6 ------ 1 file changed, 6 deletions(-) -Index: linux-3.4/arch/mips/cavium-octeon/smp.c -=================================================================== ---- linux-3.4.orig/arch/mips/cavium-octeon/smp.c -+++ linux-3.4/arch/mips/cavium-octeon/smp.c +diff --git a/arch/mips/cavium-octeon/smp.c b/arch/mips/cavium-octeon/smp.c +index 97e7ce9..4b93048 100644 +--- a/arch/mips/cavium-octeon/smp.c ++++ b/arch/mips/cavium-octeon/smp.c @@ -257,8 +257,6 @@ DEFINE_PER_CPU(int, cpu_state); extern void fixup_irqs(void); diff --git a/debian/patches/features/all/rt/lockdep-selftest-convert-spinlock-to-raw-spinlock.patch b/debian/patches/features/all/rt/0249-lockdep-Selftest-convert-spinlock-to-raw-spinlock.patch similarity index 89% rename from debian/patches/features/all/rt/lockdep-selftest-convert-spinlock-to-raw-spinlock.patch rename to debian/patches/features/all/rt/0249-lockdep-Selftest-convert-spinlock-to-raw-spinlock.patch index d721a1793..f2129a7c0 100644 --- a/debian/patches/features/all/rt/lockdep-selftest-convert-spinlock-to-raw-spinlock.patch +++ b/debian/patches/features/all/rt/0249-lockdep-Selftest-convert-spinlock-to-raw-spinlock.patch @@ -1,8 +1,7 @@ -Subject: lockdep: Selftest: convert spinlock to raw spinlock -From: Yong Zhang -Date: Mon, 16 Apr 2012 15:01:55 +0800 - +From 88678ce4194e301baf41ca536d2b653f9b2181cc Mon Sep 17 00:00:00 2001 From: Yong Zhang +Date: Mon, 16 Apr 2012 15:01:55 +0800 +Subject: [249/254] lockdep: Selftest: convert spinlock to raw spinlock spinlock is sleepable on -rt and can not be used in interrupt context. @@ -13,7 +12,7 @@ Link: http://lkml.kernel.org/r/1334559716-18447-2-git-send-email-yong.zhang0@gma Signed-off-by: Thomas Gleixner --- lib/locking-selftest.c | 34 +++++++++++++++++----------------- - 1 files changed, 17 insertions(+), 17 deletions(-) + 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/lib/locking-selftest.c b/lib/locking-selftest.c index 7aae0f2..c3eb261 100644 @@ -90,12 +89,3 @@ index 7aae0f2..c3eb261 100644 rwlock_init(&rwlock_##x); \ mutex_init(&mutex_##x); \ init_rwsem(&rwsem_##x); \ --- -1.7.5.4 - --- -To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in -the body of a message to majordomo@vger.kernel.org -More majordomo info at http://vger.kernel.org/majordomo-info.html - - diff --git a/debian/patches/features/all/rt/lockdep-selftest-only-do-hardirq-context-test-for-raw-spinlock.patch b/debian/patches/features/all/rt/0250-lockdep-Selftest-Only-do-hardirq-context-test-for-ra.patch similarity index 86% rename from debian/patches/features/all/rt/lockdep-selftest-only-do-hardirq-context-test-for-raw-spinlock.patch rename to debian/patches/features/all/rt/0250-lockdep-Selftest-Only-do-hardirq-context-test-for-ra.patch index 3299fdc4b..537a2036e 100644 --- a/debian/patches/features/all/rt/lockdep-selftest-only-do-hardirq-context-test-for-raw-spinlock.patch +++ b/debian/patches/features/all/rt/0250-lockdep-Selftest-Only-do-hardirq-context-test-for-ra.patch @@ -1,8 +1,8 @@ -Subject: lockdep: Selftest: Only do hardirq context test for raw spinlock -From: Yong Zhang -Date: Mon, 16 Apr 2012 15:01:56 +0800 - +From 3fa3069cae4db15fe751e7837a0ce77876f2a1e3 Mon Sep 17 00:00:00 2001 From: Yong Zhang +Date: Mon, 16 Apr 2012 15:01:56 +0800 +Subject: [250/254] lockdep: Selftest: Only do hardirq context test for raw + spinlock On -rt there is no softirq context any more and rwlock is sleepable, disable softirq context test and rwlock+irq test. @@ -13,7 +13,7 @@ Link: http://lkml.kernel.org/r/1334559716-18447-3-git-send-email-yong.zhang0@gma Signed-off-by: Thomas Gleixner --- lib/locking-selftest.c | 23 +++++++++++++++++++++++ - 1 files changed, 23 insertions(+), 0 deletions(-) + 1 file changed, 23 insertions(+) diff --git a/lib/locking-selftest.c b/lib/locking-selftest.c index c3eb261..23b8564 100644 @@ -56,12 +56,3 @@ index c3eb261..23b8564 100644 if (unexpected_testcase_failures) { printk("-----------------------------------------------------------------\n"); --- -1.7.5.4 - --- -To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in -the body of a message to majordomo@vger.kernel.org -More majordomo info at http://vger.kernel.org/majordomo-info.html - - diff --git a/debian/patches/features/all/rt/genirq-add-default-mask-cmdline-option.patch b/debian/patches/features/all/rt/0251-genirq-Add-default-affinity-mask-command-line-option.patch similarity index 76% rename from debian/patches/features/all/rt/genirq-add-default-mask-cmdline-option.patch rename to debian/patches/features/all/rt/0251-genirq-Add-default-affinity-mask-command-line-option.patch index 505e377ef..cb0f908f6 100644 --- a/debian/patches/features/all/rt/genirq-add-default-mask-cmdline-option.patch +++ b/debian/patches/features/all/rt/0251-genirq-Add-default-affinity-mask-command-line-option.patch @@ -1,6 +1,7 @@ -Subject: genirq: Add default affinity mask command line option +From 9054a7c2f1fb566320d16ee264e34cf5ddd76622 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 25 May 2012 16:59:47 +0200 +Subject: [251/254] genirq: Add default affinity mask command line option If we isolate CPUs, then we don't want random device interrupts on them. Even w/o the user space irq balancer enabled we can end up with @@ -14,11 +15,11 @@ Signed-off-by: Thomas Gleixner kernel/irq/irqdesc.c | 21 +++++++++++++++++++-- 2 files changed, 28 insertions(+), 2 deletions(-) -Index: linux-3.4/Documentation/kernel-parameters.txt -=================================================================== ---- linux-3.4.orig/Documentation/kernel-parameters.txt -+++ linux-3.4/Documentation/kernel-parameters.txt -@@ -1126,6 +1126,15 @@ bytes respectively. Such letter suffixes +diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt +index 1e0150e..67d1350 100644 +--- a/Documentation/kernel-parameters.txt ++++ b/Documentation/kernel-parameters.txt +@@ -1126,6 +1126,15 @@ bytes respectively. Such letter suffixes can also be entirely omitted. See comment before ip2_setup() in drivers/char/ip2/ip2base.c. @@ -34,10 +35,10 @@ Index: linux-3.4/Documentation/kernel-parameters.txt irqfixup [HW] When an interrupt is not handled search all handlers for it. Intended to get systems with badly broken -Index: linux-3.4/kernel/irq/irqdesc.c -=================================================================== ---- linux-3.4.orig/kernel/irq/irqdesc.c -+++ linux-3.4/kernel/irq/irqdesc.c +diff --git a/kernel/irq/irqdesc.c b/kernel/irq/irqdesc.c +index 192a302..473b2b6 100644 +--- a/kernel/irq/irqdesc.c ++++ b/kernel/irq/irqdesc.c @@ -23,10 +23,27 @@ static struct lock_class_key irq_desc_lock_class; diff --git a/debian/patches/features/all/rt/kconfig-disable-a-few-options-rt.patch b/debian/patches/features/all/rt/0252-kconfig-disable-a-few-options-rt.patch.patch similarity index 67% rename from debian/patches/features/all/rt/kconfig-disable-a-few-options-rt.patch rename to debian/patches/features/all/rt/0252-kconfig-disable-a-few-options-rt.patch.patch index 44ebc868d..6c8a93ad7 100644 --- a/debian/patches/features/all/rt/kconfig-disable-a-few-options-rt.patch +++ b/debian/patches/features/all/rt/0252-kconfig-disable-a-few-options-rt.patch.patch @@ -1,6 +1,7 @@ -Subject: kconfig-disable-a-few-options-rt.patch +From a89fb9164d7d5d45a8e0651c479a395235e5f902 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Sun, 24 Jul 2011 12:11:43 +0200 +Subject: [252/254] kconfig-disable-a-few-options-rt.patch Disable stuff which is known to have issues on RT @@ -11,10 +12,10 @@ Signed-off-by: Thomas Gleixner mm/Kconfig | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) -Index: linux-3.4/arch/Kconfig -=================================================================== ---- linux-3.4.orig/arch/Kconfig -+++ linux-3.4/arch/Kconfig +diff --git a/arch/Kconfig b/arch/Kconfig +index 684eb5a..417ff4c 100644 +--- a/arch/Kconfig ++++ b/arch/Kconfig @@ -6,6 +6,7 @@ config OPROFILE tristate "OProfile system profiling" depends on PROFILING @@ -23,10 +24,10 @@ Index: linux-3.4/arch/Kconfig select RING_BUFFER select RING_BUFFER_ALLOW_SWAP help -Index: linux-3.4/drivers/net/Kconfig -=================================================================== ---- linux-3.4.orig/drivers/net/Kconfig -+++ linux-3.4/drivers/net/Kconfig +diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig +index b982854..8b53d92 100644 +--- a/drivers/net/Kconfig ++++ b/drivers/net/Kconfig @@ -156,6 +156,7 @@ config MACVTAP config NETCONSOLE @@ -35,10 +36,10 @@ Index: linux-3.4/drivers/net/Kconfig ---help--- If you want to log kernel messages over the network, enable this. See for details. -Index: linux-3.4/mm/Kconfig -=================================================================== ---- linux-3.4.orig/mm/Kconfig -+++ linux-3.4/mm/Kconfig +diff --git a/mm/Kconfig b/mm/Kconfig +index e338407..096f436 100644 +--- a/mm/Kconfig ++++ b/mm/Kconfig @@ -313,7 +313,7 @@ config NOMMU_INITIAL_TRIM_EXCESS config TRANSPARENT_HUGEPAGE diff --git a/debian/patches/features/all/rt/kconfig-preempt-rt-full.patch b/debian/patches/features/all/rt/0253-kconfig-preempt-rt-full.patch.patch similarity index 71% rename from debian/patches/features/all/rt/kconfig-preempt-rt-full.patch rename to debian/patches/features/all/rt/0253-kconfig-preempt-rt-full.patch.patch index cb75d7de4..e86fb444a 100644 --- a/debian/patches/features/all/rt/kconfig-preempt-rt-full.patch +++ b/debian/patches/features/all/rt/0253-kconfig-preempt-rt-full.patch.patch @@ -1,6 +1,7 @@ -Subject: kconfig-preempt-rt-full.patch +From e16655622d8825224ebb591a5eaf3fae79fa22db Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 29 Jun 2011 14:58:57 +0200 +Subject: [253/254] kconfig-preempt-rt-full.patch Signed-off-by: Thomas Gleixner --- @@ -9,20 +10,20 @@ Signed-off-by: Thomas Gleixner scripts/mkcompile_h | 4 +++- 3 files changed, 11 insertions(+), 2 deletions(-) -Index: linux-3.4/init/Makefile -=================================================================== ---- linux-3.4.orig/init/Makefile -+++ linux-3.4/init/Makefile +diff --git a/init/Makefile b/init/Makefile +index 0bf677a..6b473cd 100644 +--- a/init/Makefile ++++ b/init/Makefile @@ -29,4 +29,4 @@ silent_chk_compile.h = : include/generated/compile.h: FORCE @$($(quiet)chk_compile.h) $(Q)$(CONFIG_SHELL) $(srctree)/scripts/mkcompile_h $@ \ - "$(UTS_MACHINE)" "$(CONFIG_SMP)" "$(CONFIG_PREEMPT)" "$(CC) $(KBUILD_CFLAGS)" + "$(UTS_MACHINE)" "$(CONFIG_SMP)" "$(CONFIG_PREEMPT)" "$(CONFIG_PREEMPT_RT_FULL)" "$(CC) $(KBUILD_CFLAGS)" -Index: linux-3.4/kernel/Kconfig.preempt -=================================================================== ---- linux-3.4.orig/kernel/Kconfig.preempt -+++ linux-3.4/kernel/Kconfig.preempt +diff --git a/kernel/Kconfig.preempt b/kernel/Kconfig.preempt +index 885efbd..c9f006b 100644 +--- a/kernel/Kconfig.preempt ++++ b/kernel/Kconfig.preempt @@ -67,6 +67,13 @@ config PREEMPT_RTB enables changes which are preliminary for the full preemptiple RT kernel. @@ -37,10 +38,10 @@ Index: linux-3.4/kernel/Kconfig.preempt endchoice config PREEMPT_COUNT -Index: linux-3.4/scripts/mkcompile_h -=================================================================== ---- linux-3.4.orig/scripts/mkcompile_h -+++ linux-3.4/scripts/mkcompile_h +diff --git a/scripts/mkcompile_h b/scripts/mkcompile_h +index f221ddf..5f44009 100755 +--- a/scripts/mkcompile_h ++++ b/scripts/mkcompile_h @@ -4,7 +4,8 @@ TARGET=$1 ARCH=$2 SMP=$3 diff --git a/debian/patches/features/all/rt/0254-Linux-3.4.2-rt10-REBASE.patch b/debian/patches/features/all/rt/0254-Linux-3.4.2-rt10-REBASE.patch new file mode 100644 index 000000000..8fb51cddb --- /dev/null +++ b/debian/patches/features/all/rt/0254-Linux-3.4.2-rt10-REBASE.patch @@ -0,0 +1,16 @@ +From 0f240fcfba7161642cfdd067751b59afb2bb664b Mon Sep 17 00:00:00 2001 +From: Steven Rostedt +Date: Thu, 7 Jun 2012 09:56:33 -0400 +Subject: [254/254] Linux 3.4.2-rt10 REBASE + +--- + localversion-rt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/localversion-rt b/localversion-rt +index 700c857..d79dde6 100644 +--- a/localversion-rt ++++ b/localversion-rt +@@ -1 +1 @@ +--rt8 ++-rt10 diff --git a/debian/patches/features/all/rt/hrtimer-add-missing-debug_activate-aid-was-re-announce-3-0-6-rt17.patch b/debian/patches/features/all/rt/hrtimer-add-missing-debug_activate-aid-was-re-announce-3-0-6-rt17.patch deleted file mode 100644 index 8e20b7370..000000000 --- a/debian/patches/features/all/rt/hrtimer-add-missing-debug_activate-aid-was-re-announce-3-0-6-rt17.patch +++ /dev/null @@ -1,70 +0,0 @@ -Subject: hrtimer: Add missing debug_activate() aid [Was: Re: [ANNOUNCE] 3.0.6-rt17] -From: Yong Zhang -Date: Thu, 13 Oct 2011 15:52:30 +0800 - -On Fri, Oct 07, 2011 at 10:25:25AM -0700, Fernando Lopez-Lezcano wrote: -> On 10/06/2011 06:15 PM, Thomas Gleixner wrote: -> >Dear RT Folks, -> > -> >I'm pleased to announce the 3.0.6-rt17 release. -> -> Hi and thanks again. So far this one is not hanging which is very -> good news. But I still see the hrtimer_fixup_activate warnings I -> reported for rt16... - -Hi Fernando, - -I think below patch will smooth your concern? - -Thanks, -Yong - ---- -From: Yong Zhang -Subject: [PATCH -rt] hrtimer: Add missing debug_activate() aid - -It will fix below warning, which is also reported by Fernando: - -[ 7.616090] ------------[ cut here ]------------ -[ 7.616093] WARNING: at kernel/hrtimer.c:391 hrtimer_fixup_activate+0x27/0x50() -[ 7.616094] Hardware name: OptiPlex 755 -[ 7.616096] Modules linked in: -[ 7.616099] Pid: 0, comm: kworker/0:0 Tainted: G W 3.0.6-rt17-00284-g9d73a61 #15 -[ 7.616100] Call Trace: -[ 7.616103] [] warn_slowpath_common+0x72/0xa0 -[ 7.616106] [] ? hrtimer_fixup_activate+0x27/0x50 -[ 7.616109] [] ? hrtimer_fixup_activate+0x27/0x50 -[ 7.616112] [] warn_slowpath_null+0x22/0x30 -[ 7.616115] [] hrtimer_fixup_activate+0x27/0x50 -[ 7.616118] [] debug_object_activate+0x100/0x130 -[ 7.616121] [] ? hrtimer_start_range_ns+0x26/0x30 -[ 7.616123] [] enqueue_hrtimer+0x19/0x100 -[ 7.616126] [] ? hrtimer_start_range_ns+0x26/0x30 -[ 7.616129] [] __hrtimer_start_range_ns+0x144/0x540 -[ 7.616132] [] ? _raw_spin_unlock_irqrestore+0x3a/0x80 -[ 7.616136] [] hrtimer_start_range_ns+0x26/0x30 -[ 7.616139] [] tick_nohz_restart_sched_tick+0x185/0x1b0 -[ 7.616142] [] cpu_idle+0x98/0xc0 -[ 7.616146] [] start_secondary+0x1d3/0x1da -[ 7.616148] ---[ end trace 0000000000000003 ]--- - -Reported-by: Fernando Lopez-Lezcano -Signed-off-by: Yong Zhang -Link: http://lkml.kernel.org/r/20111013075230.GA2740@zhy -Signed-off-by: Thomas Gleixner ---- - kernel/hrtimer.c | 1 + - 1 file changed, 1 insertion(+) - -Index: linux-3.4/kernel/hrtimer.c -=================================================================== ---- linux-3.4.orig/kernel/hrtimer.c -+++ linux-3.4/kernel/hrtimer.c -@@ -1042,6 +1042,7 @@ int __hrtimer_start_range_ns(struct hrti - * remove it again and report a failure. This avoids - * stale base->first entries. - */ -+ debug_deactivate(timer); - __remove_hrtimer(timer, new_base, - timer->state & HRTIMER_STATE_CALLBACK, 0); - } diff --git a/debian/patches/features/all/rt/series b/debian/patches/features/all/rt/series index eddd67e16..5d092eb4b 100644 --- a/debian/patches/features/all/rt/series +++ b/debian/patches/features/all/rt/series @@ -1,590 +1,254 @@ -########################################################### -# DELTA against a known Linus release (3.2.5) -########################################################### - -############################################################ -# UPSTREAM changes queued for 3.3 or 3.2 -############################################################ -re-possible-slab-deadlock-while-doing-ifenslave-1.patch - -# Should go to stable 3.0.x! - -############################################################ -# UPSTREAM FIXES, patches pending -############################################################ -# rtc-deal-with-errors-correctly.patch -- 3.0.1 -# rtc-fix-hrtimer-deadlock.patch -- 3.0.1 -# rtc-limit-frequency.patch -- 3.0.1 - -# Some variant of this is in 3.1 - -############################################################ -# Stuff broken upstream, patches submitted -############################################################ -x86-kprobes-remove-bogus-preempt-enable.patch - -############################################################ -# Stuff which needs addressing upstream, but requires more -# information -############################################################ -tick-skew.patch -x86-hpet-disable-msi-on-lenovo-w510.patch - -############################################################ -# Stuff broken upstream, need to be sent -############################################################ - -############################################################ -# Submitted on LKML -############################################################ -# SCHED BLOCK/WQ -block-shorten-interrupt-disabled-regions.patch -sched-distangle-worker-accounting-from-rq-3elock.patch - -############################################################ -# Submitted to mips ML -############################################################ -mips-enable-interrupts-in-signal.patch - -############################################################ -# Submitted to ARM ML -############################################################ -arm-enable-interrupts-in-signal-code.patch - -############################################################ -# Submitted on LKML -############################################################ - -# JBD - -# SCHED - -############################################################ -# Submitted on ppc-devel -############################################################ - -############################################################ -# Submitted to net-dev -############################################################ - -############################################################ -# Pending in tip -############################################################ - -# WATCHDOG - -# CLOCKSOURCE - -# RTMUTEX CLEANUP - -# RAW SPINLOCKS - -# X86 - -############################################################ -# Pending in peterz's scheduler queue -############################################################ - - -############################################################ -# Stuff which should go upstream ASAP -############################################################ - -# Timekeeping / VDSO - -# SEQLOCK -seqlock-remove-unused-functions.patch -seqlock-use-seqcount.patch -#seqlock-provide-seq-spin-lock.patch -#fs-struct-use-seqlock.patch -#fs-dentry-use-seqlock.patch - -# VFS. Al Viro provided this so we can deal with the seqcount simpler - -# RAW SPINLOCKS -timekeeping-split-xtime-lock.patch -intel_idle-convert-i7300_idle_lock-to-raw-spinlock.patch - -# MM memcg - -# Tracing -tracing-account-for-preempt-off-in-preempt_schedule.patch - -# PTRACE/SIGNAL crap -signal-revert-ptrace-preempt-magic.patch - -# ARM IRQF_NO_TRHEAD / IRQ THREADING SUPPORT -arm-mark-pmu-interupt-no-thread.patch -arm-allow-irq-threading.patch -arm-convert-boot-lock-to-raw.patch - -# PREEMPT_ENABLE_NO_RESCHED - -# SIGNALS / POSIXTIMERS -arm-omap-make-wakeupgen_lock-raw.patch -signals-do-not-wake-self.patch -posix-timers-no-broadcast.patch -signals-allow-rt-tasks-to-cache-one-sigqueue-struct.patch -oleg-signal-rt-fix.patch - -# SCHED - -# GENERIC CMPXCHG -generic-cmpxchg-use-raw-local-irq.patch - -# SHORTEN PREEMPT DISABLED -drivers-random-reduce-preempt-disabled-region.patch - -# CLOCKSOURCE -arm-at91-pit-remove-irq-handler-when-clock-is-unused.patch -clocksource-tclib-allow-higher-clockrates.patch - -# HW LATENCY DETECTOR - this really wants a rewrite -#hw-latency-detector.patch - -# DRIVERS NET -drivers-net-tulip-add-missing-pci-disable.patch -drivers-net-8139-disable-irq-nosync.patch -drivers-net-ehea-mark-rx-irq-no-thread.patch -drivers-net-at91-make-mdio-protection-rt-safe.patch - -# PREEMPT - -# PAGEFAULT DISABLE -mm-prepare-pf-disable-discoupling.patch -arch-use-pagefault-disabled.patch -peter_zijlstra-frob-pagefault_disable.patch -peterz-raw_pagefault_disable.patch -# highmem-explicitly-disable-preemption.patch -- peterz -filemap-fix-up.patch -mm-remove-preempt-count-from-pf.patch - -# HIGHMEM -x86-highmem-warn.patch - -# PM -suspend-prevernt-might-sleep-splats.patch - -# DEVICE TREE -of-fixup-recursive-locking.patch -of-convert-devtree-lock.patch - -# MM/LISTS -list-add-list-last-entry.patch -mm-page-alloc-use-list-last-entry.patch -mm-slab-move-debug-out.patch - -# INCLUDE MESS -pid-h-include-atomic-h.patch -sysctl-include-atomic-h.patch - -# NETWORKING -net-flip-lock-dep-thingy.patch - -# SOFTIRQ -softirq-thread-do-softirq.patch -softirq-split-out-code.patch - -# X86 -x86-io-apic-migra-no-unmask.patch -fix-rt-int3-x86_32-3.2-rt.patch - -# RCU - -# LOCKING INIT FIXES -locking-various-init-fixes.patch -# rtc-tegra-lock-init.patch -- 3.0.1 - -# PCI -pci-access-use-__wake_up_all_locked.patch - -##################################################### -# Stuff which should go mainline, but wants some care -##################################################### - -# SEQLOCK - -# ANON RW SEMAPHORES - -# TRACING -latency-hist.patch - -# HW latency detector -hwlatdetect.patch - -################################################## -# REAL RT STUFF starts here -################################################## - -# Add RT to version -localversion.patch - -# PRINTK -early-printk-consolidate.patch -printk-kill.patch -printk-27force_early_printk-27-boot-param-to-help-with-debugging.patch - -# BASE RT CONFIG -rt-preempt-base-config.patch - -# WARN/BUG_ON_RT -bug-rt-dependend-variants.patch - -# LOCAL_IRQ_RT/NON_RT -local-irq-rt-depending-variants.patch - -# PREEMPT NORT -preempt-nort-rt-variants.patch - -# ANNOTATE local_irq_disable sites -ata-disable-interrupts-if-non-rt.patch -ide-use-nort-local-irq-variants.patch -infiniband-mellanox-ib-use-nort-irq.patch -inpt-gameport-use-local-irq-nort.patch -acpi-use-local-irq-nort.patch -user-use-local-irq-nort.patch -resource-counters-use-localirq-nort.patch -usb-hcd-use-local-irq-nort.patch -tty-use-local-irq-nort.patch -mm-scatterlist-dont-disable-irqs-on-RT.patch - -# Sigh -signal-fix-up-rcu-wreckage.patch - -# ANNOTATE BUG/WARNON -net-wireless-warn-nort.patch - -# BIT SPINLOCKS - SIGH -mm-cgroup-page-bit-spinlock.patch -fs-replace-bh_uptodate_lock-for-rt.patch -fs-jbd-replace-bh_state-lock.patch - -# GENIRQ -genirq-nodebug-shirq.patch -genirq-disable-random-call-on-preempt-rt.patch -genirq-disable-irqpoll-on-rt.patch -genirq-force-threading.patch - -# DRIVERS NET -drivers-net-fix-livelock-issues.patch -drivers-net-vortex-fix-locking-issues.patch -drivers-net-gianfar-make-rt-aware.patch - -# DRIVERS USB -# Revisit. Looks weird -#usb-rt-support.patch -usb-fix-mouse-problem-copying-large-data.patch - -# LOCAL_IRQ_LOCKS -local-var.patch -rt-local-irq-lock.patch -cpu-rt-variants.patch - -# MM SLAB -mm-slab-wrap-functions.patch -rt-slab-fix-__do_drain-to-use-the-right-array-cache.patch -mm-slab-more-lock-breaks.patch - -# MM PAGE_ALLOC -mm-page_alloc-rt-friendly-per-cpu-pages.patch -mm-page_alloc-reduce-lock-sections-further.patch -mm-page-alloc-fix.patch - -# MM SWAP -mm-convert-swap-to-percpu-locked.patch - -# MM vmstat -mm-make-vmstat-rt-aware.patch - -# MM memory -#mm-memory-rt.patch - ZAP... is unused -mm-shrink-the-page-frame-to-rt-size.patch -re-preempt_rt_full-arm-coredump-fails-for-cpu-3e-3d-4.patch - -# MM SLAB only -mm-allow-slab-rt.patch - -# Revisit for avr/frv/ia64/mn10300/sh/sparc ... -#mm-quicklists-percpu-locked.patch - -# RADIX TREE -radix-tree-rt-aware.patch - -# PANIC -panic-disable-random-on-rt.patch - -# IPC -ipc-make-rt-aware.patch -ipc-mqueue-add-a-critical-section-to-avoid-a-deadlock.patch - -# RELAY -relay-fix-timer-madness.patch - -# NETWORKING -net-ipv4-route-use-locks-on-up-rt.patch - -# WORKQUEUE SIGH -workqueue-avoid-the-lock-in-cpu-dying.patch - -# TIMERS -timers-prepare-for-full-preemption.patch -timers-preempt-rt-support.patch -timers-fix-timer-hotplug-on-rt.patch -timers-mov-printk_tick-to-soft-interrupt.patch -timer-delay-waking-softirqs-from-the-jiffy-tick.patch -timers-avoid-the-base-null-otptimization-on-rt.patch - -# More PRINTK -rfc-printk-don-27t-call-printk_tick-in-printk_needs_cpu.patch - -# HRTIMERS -hrtimers-prepare-full-preemption.patch -hrtimer-fixup-hrtimer-callback-changes-for-preempt-r.patch -peter_zijlstra-frob-hrtimer.patch -hrtimer-add-missing-debug_activate-aid-was-re-announce-3-0-6-rt17.patch -hrtimer-fix-reprogram-madness.patch -timer-fd-avoid-live-lock.patch - -# POSIX-CPU-TIMERS -posix-timers-thread-posix-cpu-timers-on-rt.patch -posix-timers-shorten-cpu-timers-thread.patch -posix-timers-avoid-wakeups-when-no-timers-are-active.patch - -# SCHEDULER -sched-delay-put-task.patch -sched-limit-nr-migrate.patch -sched-mmdrop-delayed.patch -sched-rt-mutex-wakeup.patch -sched-might-sleep-do-not-account-rcu-depth.patch -# CHECKME sched-load-balance-break-on-rq-contention.patch -sched-cond-resched.patch -cond-resched-softirq-rt.patch -cond-resched-lock-rt-tweak.patch -sched-disable-ttwu-queue.patch -sched-disable-rt-group-sched-on-rt.patch -sched-ttwu-ensure-success-return-is-correct.patch - -# STOP MACHINE -stop_machine-convert-stop_machine_run-to-PREEMPT_RT.patch -stomp-machine-mark-stomper-thread.patch -stomp-machine-raw-lock.patch - -# MIGRATE DISABLE AND PER CPU -hotplug-light-get-online-cpus.patch -hotplug-sync_unplug-no-27-5cn-27-in-task-name.patch -re-migrate_disable-race-with-cpu-hotplug-3f.patch -sched-migrate-disable.patch -hotplug-use-migrate-disable.patch -hotplug-call-cpu_unplug_begin-a-little-early.patch - -ftrace-migrate-disable-tracing.patch -rt-tracing-show-padding-as-unsigned-short.patch - -migrate-disable-rt-variant.patch -peter_zijlstra-frob-migrate_disable.patch -peter_zijlstra-frob-migrate_disable-2.patch -sched-rt-fix-migrate_enable-thinko.patch -sched-teach-migrate_disable-about-atomic-contexts.patch -rt-sched-postpone-actual-migration-disalbe-to-schedule.patch -rt-sched-do-not-compare-cpu-masks-in-scheduler.patch -rt-sched-have-migrate_disable-ignore-bounded-threads.patch -sched-clear-pf-thread-bound-on-fallback-rq.patch - -# FTRACE -ftrace-crap.patch -rt-ring-buffer-convert-reader_lock-from-raw_spin_lock-into-spin_lock.patch - -# NETWORKING -net-netif_rx_ni-migrate-disable.patch - -# NOHZ -softirq-sanitize-softirq-pending.patch - -# LOCKDEP -lockdep-no-softirq-accounting-on-rt.patch - -# SOFTIRQ local lock -mutex-no-spin-on-rt.patch -softirq-local-lock.patch -softirq-export-in-serving-softirq.patch -harirq-h-define-softirq_count-as-oul-to-kill-build-warning.patch -softirq-fix-unplug-deadlock.patch -softirq-disable-softirq-stacks-for-rt.patch -softirq-make-fifo.patch -tasklet-rt-prevent-tasklets-from-going-into-infinite-spin-in-rt.patch -irq-allow-disabling-of-softirq-processing-in-irq-thread-context.patch - -# LOCAL VARS and GETCPU STUFF -local-vars-migrate-disable.patch - -# RAID5 -md-raid5-percpu-handling-rt-aware.patch - -# RTMUTEX -rtmutex-lock-killable.patch - -# FUTEX/RTMUTEX -rtmutex-futex-prepare-rt.patch -futex-requeue-pi-fix.patch - -# RTMUTEX -rt-mutex-add-sleeping-spinlocks-support.patch -spinlock-types-separate-raw.patch -rtmutex-avoid-include-hell.patch -rt-add-rt-spinlock-to-headers.patch -rt-add-rt-to-mutex-headers.patch -rwsem-add-rt-variant.patch -rt-add-rt-locks.patch - -# RTMUTEX Fallout -tasklist-lock-fix-section-conflict.patch - -# NOHZ/RTMUTEX -timer-handle-idle-trylock-in-get-next-timer-irq.patch - -# RCU -rcu-force-preempt-rcu-for-rt.patch -peter_zijlstra-frob-rcu.patch -rcu-merge-rcu-bh-into-rcu-preempt-for-rt.patch -rcu-fix-macro-substitution.patch -rcu-tiny-merge-bh.patch -patch-to-introduce-rcu-bh-qs-where-safe-from-softirq.patch -rcu-fix-build-break.patch -rt-rcutree-warn-fix.patch - -# LGLOCKS - lovely -lglocks-rt.patch - -# DRIVERS SERIAL -drivers-serial-cleanup-locking-for-rt.patch -drivers-serial-call-flush_to_ldisc-when-the-irq-is-t.patch -drivers-tty-fix-omap-lock-crap.patch -rt-serial-warn-fix.patch - -# FS -fs-namespace-preemption-fix.patch -mm-protect-activate-switch-mm.patch -mm-protect-activate_mm-by-preempt_-disable-7cenable-_rt.patch -fs-block-rt-support.patch -fs-ntfs-disable-interrupt-non-rt.patch - -# X86 -x86-mce-timer-hrtimer.patch -x86-stackprot-no-random-on-rt.patch -# x86-no-highmem-with-rt.patch -- peterz -x86-use-gen-rwsem-spinlocks-rt.patch -x86-disable-debug-stack.patch - -# CPU get light -workqueue-use-get-cpu-light.patch -epoll-use-get-cpu-light.patch -mm-vmalloc-use-get-cpu-light.patch - -# WORKQUEUE more fixes -workqueue-sanity.patch -workqueue-fix-PF_THREAD_BOUND.patch -workqueue-hotplug-fix.patch -workqueue-more-hotplug-fallout.patch - -# DEBUGOBJECTS -debugobjects-rt.patch - -# JUMPLABEL -jump-label-rt.patch - -# NET -skbufhead-raw-lock.patch - -# PERF -perf-move-irq-work-to-softirq-in-rt.patch - -# CONSOLE. NEEDS more thought !!! -console-make-rt-friendly.patch -fix-printk-flush-of-messages-1.patch - -# POWERC -power-use-generic-rwsem-on-rt.patch -power-disable-highmem-on-rt.patch - -# ARM -arm-disable-highmem-on-rt.patch -arm-at91-tclib-default-to-tclib-timer-for-rt.patch - -# MIPS -mips-disable-highmem-on-rt.patch - -# NETWORK livelock fix -net-tx-action-avoid-livelock-on-rt.patch - -# NETWORK DEBUGGING AID -ping-sysrq.patch - -# KGDB -kgb-serial-hackaround.patch - -# SYSFS - RT indicator -sysfs-realtime-entry.patch - -# KMAP/HIGHMEM -peter_zijlstra-re-_3_0-rt4.patch - -# IPC -ipc-sem-rework-semaphore-wakeups.patch - -# SYSRQ - -# KVM require constant freq TSC (smp function call -> cpufreq) -x86-kvm-require-const-tsc-for-rt.patch - -# SCSI/FCOE -scsi-fcoe-rt-aware.patch - -# X86 crypto -x86-crypto-reduce-preempt-disabled-regions.patch - -# Device mapper -dm-make-rt-aware.patch - -# ACPI -# Dropped those two as they cause a scheduling in atomic failure and -# we have no clue why we made those locks raw in the first place. -# acpi-make-gbl-hardware-lock-raw.patch -# acpi-make-ec-lock-raw-as-well.patch - -# This one is just a follow up to the raw spin locks -# Simple raw spinlock based waitqueue -# wait-simple-version.patch -# acpi-gpe-use-wait-simple.patch - -# CPUMASK OFFSTACK -cpumask-disable-offstack-on-rt.patch - -# Various fixes - fold them back -seqlock-prevent-rt-starvation.patch -#fs-protect-opencoded-isize-seqcount.patch -#net-u64-stat-protect-seqcount.patch -rfc-timer-fix-hotplug-for-rt.patch -rfc-futex-rt-fix-possible-lockup-when-taking-pi_lock-in-proxy-handler.patch -rfc-ring-buffer-rt-check-for-irqs-disabled-before-grabbing-reader-lock.patch -rfc-sched-rt-fix-wait_task_interactive-to-test-rt_spin_lock-state.patch -rfc-lglock-rt-use-non-rt-for_each_cpu-in-rt-code.patch - -cpu-rt-make-hotplug-lock-a-sleeping-spinlock-on-rt.patch - -softirq-preempt-fix-3-re.txt -scsi-qla2xxx-fix-bug-sleeping-function-called-from-invalid-context.patch -upstream-net-rt-remove-preemption-disabling-in-netif_rx.patch - -rt-introduce-cpu-chill.patch -fs-dcache-use-cpu-chill-in-trylock-loops.patch -net-use-cpu-chill.patch - -ntp-make-ntp-lock-raw-sigh.patch - -# Enable full RT -mips-remove-smp-reserve-lock.patch -lockdep-selftest-convert-spinlock-to-raw-spinlock.patch -lockdep-selftest-only-do-hardirq-context-test-for-raw-spinlock.patch -genirq-add-default-mask-cmdline-option.patch -kconfig-disable-a-few-options-rt.patch -kconfig-preempt-rt-full.patch +0001-Revert-workqueue-skip-nr_running-sanity-check-in-wor.patch +0002-slab-lockdep-Annotate-all-slab-caches.patch +0003-x86-kprobes-Remove-remove-bogus-preempt_enable.patch +0004-tick-Add-tick-skew-boot-option.patch +0005-x86-hpet-Disable-MSI-on-Lenovo-W510.patch +0006-block-Shorten-interrupt-disabled-regions.patch +0007-sched-Distangle-worker-accounting-from-rq-3Elock.patch +0008-mips-enable-interrupts-in-signal.patch.patch +0009-arm-enable-interrupts-in-signal-code.patch.patch +0010-seqlock-Remove-unused-functions.patch +0011-seqlock-Use-seqcount.patch +0012-timekeeping-Split-xtime_lock.patch +0013-intel_idle-Convert-i7300_idle_lock-to-raw-spinlock.patch +0014-tracing-Account-for-preempt-off-in-preempt_schedule.patch +0015-signal-revert-ptrace-preempt-magic.patch.patch +0016-arm-Mark-pmu-interupt-IRQF_NO_THREAD.patch +0017-arm-Allow-forced-irq-threading.patch +0018-preempt-rt-Convert-arm-boot_lock-to-raw.patch +0019-arm-omap-make-wakeupgen_lock-raw.patch.patch +0020-signals-Do-not-wakeup-self.patch +0021-posix-timers-Prevent-broadcast-signals.patch +0022-signals-Allow-rt-tasks-to-cache-one-sigqueue-struct.patch +0023-signal-x86-Delay-calling-signals-in-atomic.patch +0024-generic-Use-raw-local-irq-variant-for-generic-cmpxch.patch +0025-drivers-random-Reduce-preempt-disabled-region.patch +0026-ARM-AT91-PIT-Remove-irq-handler-when-clock-event-is-.patch +0027-clocksource-TCLIB-Allow-higher-clock-rates-for-clock.patch +0028-drivers-net-tulip_remove_one-needs-to-call-pci_disab.patch +0029-drivers-net-Use-disable_irq_nosync-in-8139too.patch +0030-drivers-net-ehea-Make-rx-irq-handler-non-threaded-IR.patch +0031-drivers-net-at91_ether-Make-mdio-protection-rt-safe.patch +0032-mm-Prepare-decoupling-the-page-fault-disabling-logic.patch +0033-mm-Fixup-all-fault-handlers-to-check-current-pagefau.patch +0034-mm-pagefault_disabled.patch +0035-mm-raw_pagefault_disable.patch +0036-filemap-fix-up.patch.patch +0037-mm-Remove-preempt-count-from-pagefault-disable-enabl.patch +0038-x86-highmem-Replace-BUG_ON-by-WARN_ON.patch +0039-suspend-Prevent-might-sleep-splats.patch +0040-OF-Fixup-resursive-locking-code-paths.patch +0041-of-convert-devtree-lock.patch.patch +0042-list-add-list-last-entry.patch.patch +0043-mm-page-alloc-use-list-last-entry.patch.patch +0044-mm-slab-move-debug-out.patch.patch +0045-rwsem-inlcude-fix.patch.patch +0046-sysctl-include-fix.patch.patch +0047-net-flip-lock-dep-thingy.patch.patch +0048-softirq-thread-do-softirq.patch.patch +0049-softirq-split-out-code.patch.patch +0050-x86-Do-not-unmask-io_apic-when-interrupt-is-in-progr.patch +0051-x86-Do-not-disable-preemption-in-int3-on-32bit.patch +0052-locking-various-init-fixes.patch.patch +0053-pci-Use-__wake_up_all_locked-pci_unblock_user_cfg_ac.patch +0054-latency-hist.patch.patch +0055-hwlatdetect.patch.patch +0056-localversion.patch.patch +0057-early-printk-consolidate.patch.patch +0058-printk-kill.patch.patch +0059-printk-force_early_printk-boot-param-to-help-with-de.patch +0060-rt-preempt-base-config.patch.patch +0061-bug-BUG_ON-WARN_ON-variants-dependend-on-RT-RT.patch +0062-rt-local_irq_-variants-depending-on-RT-RT.patch +0063-preempt-Provide-preempt_-_-no-rt-variants.patch +0064-ata-Do-not-disable-interrupts-in-ide-code-for-preemp.patch +0065-ide-Do-not-disable-interrupts-for-PREEMPT-RT.patch +0066-infiniband-Mellanox-IB-driver-patch-use-_nort-primit.patch +0067-input-gameport-Do-not-disable-interrupts-on-PREEMPT_.patch +0068-acpi-Do-not-disable-interrupts-on-PREEMPT_RT.patch +0069-core-Do-not-disable-interrupts-on-RT-in-kernel-users.patch +0070-core-Do-not-disable-interrupts-on-RT-in-res_counter..patch +0071-usb-Use-local_irq_-_nort-variants.patch +0072-tty-Do-not-disable-interrupts-in-put_ldisc-on-rt.patch +0073-mm-scatterlist-dont-disable-irqs-on-RT.patch +0074-signal-fix-up-rcu-wreckage.patch.patch +0075-net-wireless-warn-nort.patch.patch +0076-mm-Replace-cgroup_page-bit-spinlock.patch +0077-buffer_head-Replace-bh_uptodate_lock-for-rt.patch +0078-fs-jbd-jbd2-Make-state-lock-and-journal-head-lock-rt.patch +0079-genirq-Disable-DEBUG_SHIRQ-for-rt.patch +0080-genirq-Disable-random-call-on-preempt-rt.patch +0081-genirq-disable-irqpoll-on-rt.patch +0082-genirq-force-threading.patch.patch +0083-drivers-net-fix-livelock-issues.patch +0084-drivers-net-vortex-fix-locking-issues.patch +0085-drivers-net-gianfar-Make-RT-aware.patch +0086-USB-Fix-the-mouse-problem-when-copying-large-amounts.patch +0087-local-var.patch.patch +0088-rt-local-irq-lock.patch.patch +0089-cpu-rt-variants.patch.patch +0090-mm-slab-wrap-functions.patch.patch +0091-slab-Fix-__do_drain-to-use-the-right-array-cache.patch +0092-mm-More-lock-breaks-in-slab.c.patch +0093-mm-page_alloc-rt-friendly-per-cpu-pages.patch +0094-mm-page_alloc-reduce-lock-sections-further.patch +0095-mm-page-alloc-fix.patch.patch +0096-mm-convert-swap-to-percpu-locked.patch +0097-mm-make-vmstat-rt-aware.patch +0098-mm-shrink-the-page-frame-to-rt-size.patch +0099-ARM-Initialize-ptl-lock-for-vector-page.patch +0100-mm-Allow-only-slab-on-RT.patch +0101-radix-tree-rt-aware.patch.patch +0102-panic-disable-random-on-rt.patch +0103-ipc-Make-the-ipc-code-rt-aware.patch +0104-ipc-mqueue-Add-a-critical-section-to-avoid-a-deadloc.patch +0105-relay-fix-timer-madness.patch +0106-net-ipv4-route-use-locks-on-up-rt.patch.patch +0107-workqueue-avoid-the-lock-in-cpu-dying.patch.patch +0108-timers-prepare-for-full-preemption.patch +0109-timers-preempt-rt-support.patch +0110-timers-fix-timer-hotplug-on-rt.patch +0111-timers-mov-printk_tick-to-soft-interrupt.patch +0112-timer-delay-waking-softirqs-from-the-jiffy-tick.patch +0113-timers-Avoid-the-switch-timers-base-set-to-NULL-tric.patch +0114-printk-Don-t-call-printk_tick-in-printk_needs_cpu-on.patch +0115-hrtimers-prepare-full-preemption.patch +0116-hrtimer-fixup-hrtimer-callback-changes-for-preempt-r.patch +0117-hrtimer-Don-t-call-the-timer-handler-from-hrtimer_st.patch +0118-hrtimer-Add-missing-debug_activate-aid-Was-Re-ANNOUN.patch +0119-hrtimer-fix-reprogram-madness.patch.patch +0120-timer-fd-Prevent-live-lock.patch +0121-posix-timers-thread-posix-cpu-timers-on-rt.patch +0122-posix-timers-Shorten-posix_cpu_timers-CPU-kernel-thr.patch +0123-posix-timers-Avoid-wakeups-when-no-timers-are-active.patch +0124-sched-delay-put-task.patch.patch +0125-sched-limit-nr-migrate.patch.patch +0126-sched-mmdrop-delayed.patch.patch +0127-sched-rt-mutex-wakeup.patch.patch +0128-sched-might-sleep-do-not-account-rcu-depth.patch.patch +0129-sched-cond-resched.patch.patch +0130-cond-resched-softirq-fix.patch.patch +0131-cond-resched-lock-rt-tweak.patch.patch +0132-sched-disable-ttwu-queue.patch.patch +0133-sched-Disable-CONFIG_RT_GROUP_SCHED-on-RT.patch +0134-sched-ttwu-Return-success-when-only-changing-the-sav.patch +0135-stop_machine-convert-stop_machine_run-to-PREEMPT_RT.patch +0136-stomp-machine-mark-stomper-thread.patch.patch +0137-stomp-machine-raw-lock.patch.patch +0138-hotplug-Lightweight-get-online-cpus.patch +0139-hotplug-sync_unplug-No.patch +0140-hotplug-Reread-hotplug_pcp-on-pin_current_cpu-retry.patch +0141-sched-migrate-disable.patch.patch +0142-hotplug-use-migrate-disable.patch.patch +0143-hotplug-Call-cpu_unplug_begin-before-DOWN_PREPARE.patch +0144-ftrace-migrate-disable-tracing.patch.patch +0145-tracing-Show-padding-as-unsigned-short.patch +0146-migrate-disable-rt-variant.patch.patch +0147-sched-Optimize-migrate_disable.patch +0148-sched-Generic-migrate_disable.patch +0149-sched-rt-Fix-migrate_enable-thinko.patch +0150-sched-teach-migrate_disable-about-atomic-contexts.patch +0151-sched-Postpone-actual-migration-disalbe-to-schedule.patch +0152-sched-Do-not-compare-cpu-masks-in-scheduler.patch +0153-sched-Have-migrate_disable-ignore-bounded-threads.patch +0154-sched-clear-pf-thread-bound-on-fallback-rq.patch.patch +0155-ftrace-crap.patch.patch +0156-ring-buffer-Convert-reader_lock-from-raw_spin_lock-i.patch +0157-net-netif_rx_ni-migrate-disable.patch.patch +0158-softirq-Sanitize-softirq-pending-for-NOHZ-RT.patch +0159-lockdep-rt.patch.patch +0160-mutex-no-spin-on-rt.patch.patch +0161-softirq-local-lock.patch.patch +0162-softirq-Export-in_serving_softirq.patch +0163-hardirq.h-Define-softirq_count-as-OUL-to-kill-build-.patch +0164-softirq-Fix-unplug-deadlock.patch +0165-softirq-disable-softirq-stacks-for-rt.patch.patch +0166-softirq-make-fifo.patch.patch +0167-tasklet-Prevent-tasklets-from-going-into-infinite-sp.patch +0168-genirq-Allow-disabling-of-softirq-processing-in-irq-.patch +0169-local-vars-migrate-disable.patch.patch +0170-md-raid5-Make-raid5_percpu-handling-RT-aware.patch +0171-rtmutex-lock-killable.patch.patch +0172-rtmutex-futex-prepare-rt.patch.patch +0173-futex-Fix-bug-on-when-a-requeued-RT-task-times-out.patch +0174-rt-mutex-add-sleeping-spinlocks-support.patch.patch +0175-spinlock-types-separate-raw.patch.patch +0176-rtmutex-avoid-include-hell.patch.patch +0177-rt-add-rt-spinlocks.patch.patch +0178-rt-add-rt-to-mutex-headers.patch.patch +0179-rwsem-add-rt-variant.patch.patch +0180-rt-Add-the-preempt-rt-lock-replacement-APIs.patch +0181-rwlocks-Fix-section-mismatch.patch +0182-timer-handle-idle-trylock-in-get-next-timer-irq.patc.patch +0183-RCU-Force-PREEMPT_RCU-for-PREEMPT-RT.patch +0184-rcu-Frob-softirq-test.patch +0185-rcu-Merge-RCU-bh-into-RCU-preempt.patch +0186-rcu-Fix-macro-substitution-for-synchronize_rcu_bh-on.patch +0187-rcu-more-fallout.patch.patch +0188-rcu-Make-ksoftirqd-do-RCU-quiescent-states.patch +0189-rcu-Fix-build-break.patch +0190-rt-rcutree-Move-misplaced-prototype.patch +0191-lglocks-rt.patch.patch +0192-serial-8250-Clean-up-the-locking-for-rt.patch +0193-serial-8250-Call-flush_to_ldisc-when-the-irq-is-thre.patch +0194-drivers-tty-fix-omap-lock-crap.patch.patch +0195-rt-Improve-the-serial-console-PASS_LIMIT.patch +0196-fs-namespace-preemption-fix.patch +0197-mm-protect-activate-switch-mm.patch.patch +0198-mm-Protect-activate_mm-by-preempt_-disable-7Cenable-.patch +0199-fs-block-rt-support.patch.patch +0200-fs-ntfs-disable-interrupt-only-on-RT.patch +0201-x86-Convert-mce-timer-to-hrtimer.patch +0202-x86-stackprotector-Avoid-random-pool-on-rt.patch +0203-x86-Use-generic-rwsem_spinlocks-on-rt.patch +0204-x86-Disable-IST-stacks-for-debug-int-3-stack-fault-f.patch +0205-workqueue-use-get-cpu-light.patch.patch +0206-epoll.patch.patch +0207-mm-vmalloc.patch.patch +0208-workqueue-Fix-cpuhotplug-trainwreck.patch +0209-workqueue-Fix-PF_THREAD_BOUND-abuse.patch +0210-workqueue-Use-get_cpu_light-in-flush_gcwq.patch +0211-hotplug-stuff.patch.patch +0212-debugobjects-rt.patch.patch +0213-jump-label-rt.patch.patch +0214-skbufhead-raw-lock.patch.patch +0215-x86-no-perf-irq-work-rt.patch.patch +0216-console-make-rt-friendly.patch.patch +0217-fix-printk-flush-of-messages.patch +0218-power-use-generic-rwsem-on-rt.patch +0219-power-disable-highmem-on-rt.patch.patch +0220-arm-disable-highmem-on-rt.patch.patch +0221-ARM-at91-tclib-Default-to-tclib-timer-for-RT.patch +0222-mips-disable-highmem-on-rt.patch.patch +0223-net-Avoid-livelock-in-net_tx_action-on-RT.patch +0224-ping-sysrq.patch.patch +0225-kgdb-serial-Short-term-workaround.patch +0226-add-sys-kernel-realtime-entry.patch +0227-mm-rt-kmap_atomic-scheduling.patch +0228-ipc-sem-Rework-semaphore-wakeups.patch +0229-x86-kvm-require-const-tsc-for-rt.patch.patch +0230-scsi-fcoe-rt-aware.patch.patch +0231-x86-crypto-Reduce-preempt-disabled-regions.patch +0232-dm-Make-rt-aware.patch +0233-cpumask-Disable-CONFIG_CPUMASK_OFFSTACK-for-RT.patch +0234-seqlock-Prevent-rt-starvation.patch +0235-timer-Fix-hotplug-for-rt.patch +0236-futex-rt-Fix-possible-lockup-when-taking-pi_lock-in-.patch +0237-ring-buffer-rt-Check-for-irqs-disabled-before-grabbi.patch +0238-sched-rt-Fix-wait_task_interactive-to-test-rt_spin_l.patch +0239-lglock-rt-Use-non-rt-for_each_cpu-in-rt-code.patch +0240-cpu-Make-hotplug.lock-a-sleeping-spinlock-on-RT.patch +0241-softirq-Check-preemption-after-reenabling-interrupts.patch +0242-scsi-qla2xxx-Use-local_irq_save_nort-in-qla2x00_poll.patch +0243-net-RT-REmove-preemption-disabling-in-netif_rx.patch +0244-rt-Introduce-cpu_chill.patch +0245-fs-dcache-Use-cpu_chill-in-trylock-loops.patch +0246-net-Use-cpu_chill-instead-of-cpu_relax.patch +0247-ntp-Make-ntp_lock-raw.patch +0248-mips-remove-smp-reserve-lock.patch.patch +0249-lockdep-Selftest-convert-spinlock-to-raw-spinlock.patch +0250-lockdep-Selftest-Only-do-hardirq-context-test-for-ra.patch +0251-genirq-Add-default-affinity-mask-command-line-option.patch +0252-kconfig-disable-a-few-options-rt.patch.patch +0253-kconfig-preempt-rt-full.patch.patch +0254-Linux-3.4.2-rt10-REBASE.patch diff --git a/debian/patches/series-rt b/debian/patches/series-rt index 8196308aa..5f75bf305 100644 --- a/debian/patches/series-rt +++ b/debian/patches/series-rt @@ -1,253 +1,252 @@ -features/all/rt/re-possible-slab-deadlock-while-doing-ifenslave-1.patch -features/all/rt/x86-kprobes-remove-bogus-preempt-enable.patch -features/all/rt/tick-skew.patch -features/all/rt/x86-hpet-disable-msi-on-lenovo-w510.patch -features/all/rt/block-shorten-interrupt-disabled-regions.patch -features/all/rt/sched-distangle-worker-accounting-from-rq-3elock.patch -features/all/rt/mips-enable-interrupts-in-signal.patch -features/all/rt/arm-enable-interrupts-in-signal-code.patch -features/all/rt/seqlock-remove-unused-functions.patch -features/all/rt/seqlock-use-seqcount.patch -features/all/rt/timekeeping-split-xtime-lock.patch -features/all/rt/intel_idle-convert-i7300_idle_lock-to-raw-spinlock.patch -features/all/rt/tracing-account-for-preempt-off-in-preempt_schedule.patch -features/all/rt/signal-revert-ptrace-preempt-magic.patch -features/all/rt/arm-mark-pmu-interupt-no-thread.patch -features/all/rt/arm-allow-irq-threading.patch -features/all/rt/arm-convert-boot-lock-to-raw.patch -features/all/rt/arm-omap-make-wakeupgen_lock-raw.patch -features/all/rt/signals-do-not-wake-self.patch -features/all/rt/posix-timers-no-broadcast.patch -features/all/rt/signals-allow-rt-tasks-to-cache-one-sigqueue-struct.patch -features/all/rt/oleg-signal-rt-fix.patch -features/all/rt/generic-cmpxchg-use-raw-local-irq.patch -features/all/rt/drivers-random-reduce-preempt-disabled-region.patch -features/all/rt/arm-at91-pit-remove-irq-handler-when-clock-is-unused.patch -features/all/rt/clocksource-tclib-allow-higher-clockrates.patch -features/all/rt/drivers-net-tulip-add-missing-pci-disable.patch -features/all/rt/drivers-net-8139-disable-irq-nosync.patch -features/all/rt/drivers-net-ehea-mark-rx-irq-no-thread.patch -features/all/rt/drivers-net-at91-make-mdio-protection-rt-safe.patch -features/all/rt/mm-prepare-pf-disable-discoupling.patch -features/all/rt/arch-use-pagefault-disabled.patch -features/all/rt/peter_zijlstra-frob-pagefault_disable.patch -features/all/rt/peterz-raw_pagefault_disable.patch -features/all/rt/filemap-fix-up.patch -features/all/rt/mm-remove-preempt-count-from-pf.patch -features/all/rt/x86-highmem-warn.patch -features/all/rt/suspend-prevernt-might-sleep-splats.patch -features/all/rt/of-fixup-recursive-locking.patch -features/all/rt/of-convert-devtree-lock.patch -features/all/rt/list-add-list-last-entry.patch -features/all/rt/mm-page-alloc-use-list-last-entry.patch -features/all/rt/mm-slab-move-debug-out.patch -features/all/rt/pid-h-include-atomic-h.patch -features/all/rt/sysctl-include-atomic-h.patch -features/all/rt/net-flip-lock-dep-thingy.patch -features/all/rt/softirq-thread-do-softirq.patch -features/all/rt/softirq-split-out-code.patch -features/all/rt/x86-io-apic-migra-no-unmask.patch -features/all/rt/fix-rt-int3-x86_32-3.2-rt.patch -features/all/rt/locking-various-init-fixes.patch -features/all/rt/pci-access-use-__wake_up_all_locked.patch -features/all/rt/latency-hist.patch -features/all/rt/hwlatdetect.patch -features/all/rt/localversion.patch -features/all/rt/early-printk-consolidate.patch -features/all/rt/printk-kill.patch -features/all/rt/printk-27force_early_printk-27-boot-param-to-help-with-debugging.patch -features/all/rt/rt-preempt-base-config.patch -features/all/rt/bug-rt-dependend-variants.patch -features/all/rt/local-irq-rt-depending-variants.patch -features/all/rt/preempt-nort-rt-variants.patch -features/all/rt/ata-disable-interrupts-if-non-rt.patch -features/all/rt/ide-use-nort-local-irq-variants.patch -features/all/rt/infiniband-mellanox-ib-use-nort-irq.patch -features/all/rt/inpt-gameport-use-local-irq-nort.patch -features/all/rt/acpi-use-local-irq-nort.patch -features/all/rt/user-use-local-irq-nort.patch -features/all/rt/resource-counters-use-localirq-nort.patch -features/all/rt/usb-hcd-use-local-irq-nort.patch -features/all/rt/tty-use-local-irq-nort.patch -features/all/rt/mm-scatterlist-dont-disable-irqs-on-RT.patch -features/all/rt/signal-fix-up-rcu-wreckage.patch -features/all/rt/net-wireless-warn-nort.patch -features/all/rt/mm-cgroup-page-bit-spinlock.patch -features/all/rt/fs-replace-bh_uptodate_lock-for-rt.patch -features/all/rt/fs-jbd-replace-bh_state-lock.patch -features/all/rt/genirq-nodebug-shirq.patch -features/all/rt/genirq-disable-random-call-on-preempt-rt.patch -features/all/rt/genirq-disable-irqpoll-on-rt.patch -features/all/rt/genirq-force-threading.patch -features/all/rt/drivers-net-fix-livelock-issues.patch -features/all/rt/drivers-net-vortex-fix-locking-issues.patch -features/all/rt/drivers-net-gianfar-make-rt-aware.patch -features/all/rt/usb-fix-mouse-problem-copying-large-data.patch -features/all/rt/local-var.patch -features/all/rt/rt-local-irq-lock.patch -features/all/rt/cpu-rt-variants.patch -features/all/rt/mm-slab-wrap-functions.patch -features/all/rt/rt-slab-fix-__do_drain-to-use-the-right-array-cache.patch -features/all/rt/mm-slab-more-lock-breaks.patch -features/all/rt/mm-page_alloc-rt-friendly-per-cpu-pages.patch -features/all/rt/mm-page_alloc-reduce-lock-sections-further.patch -features/all/rt/mm-page-alloc-fix.patch -features/all/rt/mm-convert-swap-to-percpu-locked.patch -features/all/rt/mm-make-vmstat-rt-aware.patch -features/all/rt/mm-shrink-the-page-frame-to-rt-size.patch -features/all/rt/re-preempt_rt_full-arm-coredump-fails-for-cpu-3e-3d-4.patch -features/all/rt/mm-allow-slab-rt.patch -features/all/rt/radix-tree-rt-aware.patch -features/all/rt/panic-disable-random-on-rt.patch -features/all/rt/ipc-make-rt-aware.patch -features/all/rt/ipc-mqueue-add-a-critical-section-to-avoid-a-deadlock.patch -features/all/rt/relay-fix-timer-madness.patch -features/all/rt/net-ipv4-route-use-locks-on-up-rt.patch -features/all/rt/workqueue-avoid-the-lock-in-cpu-dying.patch -features/all/rt/timers-prepare-for-full-preemption.patch -features/all/rt/timers-preempt-rt-support.patch -features/all/rt/timers-fix-timer-hotplug-on-rt.patch -features/all/rt/timers-mov-printk_tick-to-soft-interrupt.patch -features/all/rt/timer-delay-waking-softirqs-from-the-jiffy-tick.patch -features/all/rt/timers-avoid-the-base-null-otptimization-on-rt.patch -features/all/rt/rfc-printk-don-27t-call-printk_tick-in-printk_needs_cpu.patch -features/all/rt/hrtimers-prepare-full-preemption.patch -features/all/rt/hrtimer-fixup-hrtimer-callback-changes-for-preempt-r.patch -features/all/rt/peter_zijlstra-frob-hrtimer.patch -features/all/rt/hrtimer-add-missing-debug_activate-aid-was-re-announce-3-0-6-rt17.patch -features/all/rt/hrtimer-fix-reprogram-madness.patch -features/all/rt/timer-fd-avoid-live-lock.patch -features/all/rt/posix-timers-thread-posix-cpu-timers-on-rt.patch -features/all/rt/posix-timers-shorten-cpu-timers-thread.patch -features/all/rt/posix-timers-avoid-wakeups-when-no-timers-are-active.patch -features/all/rt/sched-delay-put-task.patch -features/all/rt/sched-limit-nr-migrate.patch -features/all/rt/sched-mmdrop-delayed.patch -features/all/rt/sched-rt-mutex-wakeup.patch -features/all/rt/sched-might-sleep-do-not-account-rcu-depth.patch -features/all/rt/sched-cond-resched.patch -features/all/rt/cond-resched-softirq-rt.patch -features/all/rt/cond-resched-lock-rt-tweak.patch -features/all/rt/sched-disable-ttwu-queue.patch -features/all/rt/sched-disable-rt-group-sched-on-rt.patch -features/all/rt/sched-ttwu-ensure-success-return-is-correct.patch -features/all/rt/stop_machine-convert-stop_machine_run-to-PREEMPT_RT.patch -features/all/rt/stomp-machine-mark-stomper-thread.patch -features/all/rt/stomp-machine-raw-lock.patch -features/all/rt/hotplug-light-get-online-cpus.patch -features/all/rt/hotplug-sync_unplug-no-27-5cn-27-in-task-name.patch -features/all/rt/re-migrate_disable-race-with-cpu-hotplug-3f.patch -features/all/rt/sched-migrate-disable.patch -features/all/rt/hotplug-use-migrate-disable.patch -features/all/rt/hotplug-call-cpu_unplug_begin-a-little-early.patch -features/all/rt/ftrace-migrate-disable-tracing.patch -features/all/rt/rt-tracing-show-padding-as-unsigned-short.patch -features/all/rt/migrate-disable-rt-variant.patch -features/all/rt/peter_zijlstra-frob-migrate_disable.patch -features/all/rt/peter_zijlstra-frob-migrate_disable-2.patch -features/all/rt/sched-rt-fix-migrate_enable-thinko.patch -features/all/rt/sched-teach-migrate_disable-about-atomic-contexts.patch -features/all/rt/rt-sched-postpone-actual-migration-disalbe-to-schedule.patch -features/all/rt/rt-sched-do-not-compare-cpu-masks-in-scheduler.patch -features/all/rt/rt-sched-have-migrate_disable-ignore-bounded-threads.patch -features/all/rt/sched-clear-pf-thread-bound-on-fallback-rq.patch -features/all/rt/ftrace-crap.patch -features/all/rt/rt-ring-buffer-convert-reader_lock-from-raw_spin_lock-into-spin_lock.patch -features/all/rt/net-netif_rx_ni-migrate-disable.patch -features/all/rt/softirq-sanitize-softirq-pending.patch -features/all/rt/lockdep-no-softirq-accounting-on-rt.patch -features/all/rt/mutex-no-spin-on-rt.patch -features/all/rt/softirq-local-lock.patch -features/all/rt/softirq-export-in-serving-softirq.patch -features/all/rt/harirq-h-define-softirq_count-as-oul-to-kill-build-warning.patch -features/all/rt/softirq-fix-unplug-deadlock.patch -features/all/rt/softirq-disable-softirq-stacks-for-rt.patch -features/all/rt/softirq-make-fifo.patch -features/all/rt/tasklet-rt-prevent-tasklets-from-going-into-infinite-spin-in-rt.patch -features/all/rt/irq-allow-disabling-of-softirq-processing-in-irq-thread-context.patch -features/all/rt/local-vars-migrate-disable.patch -features/all/rt/md-raid5-percpu-handling-rt-aware.patch -features/all/rt/rtmutex-lock-killable.patch -features/all/rt/rtmutex-futex-prepare-rt.patch -features/all/rt/futex-requeue-pi-fix.patch -features/all/rt/rt-mutex-add-sleeping-spinlocks-support.patch -features/all/rt/spinlock-types-separate-raw.patch -features/all/rt/rtmutex-avoid-include-hell.patch -features/all/rt/rt-add-rt-spinlock-to-headers.patch -features/all/rt/rt-add-rt-to-mutex-headers.patch -features/all/rt/rwsem-add-rt-variant.patch -features/all/rt/rt-add-rt-locks.patch -features/all/rt/tasklist-lock-fix-section-conflict.patch -features/all/rt/timer-handle-idle-trylock-in-get-next-timer-irq.patch -features/all/rt/rcu-force-preempt-rcu-for-rt.patch -features/all/rt/peter_zijlstra-frob-rcu.patch -features/all/rt/rcu-merge-rcu-bh-into-rcu-preempt-for-rt.patch -features/all/rt/rcu-fix-macro-substitution.patch -features/all/rt/rcu-tiny-merge-bh.patch -features/all/rt/patch-to-introduce-rcu-bh-qs-where-safe-from-softirq.patch -features/all/rt/rcu-fix-build-break.patch -features/all/rt/rt-rcutree-warn-fix.patch -features/all/rt/lglocks-rt.patch -features/all/rt/drivers-serial-cleanup-locking-for-rt.patch -features/all/rt/drivers-serial-call-flush_to_ldisc-when-the-irq-is-t.patch -features/all/rt/drivers-tty-fix-omap-lock-crap.patch -features/all/rt/rt-serial-warn-fix.patch -features/all/rt/fs-namespace-preemption-fix.patch -features/all/rt/mm-protect-activate-switch-mm.patch -features/all/rt/mm-protect-activate_mm-by-preempt_-disable-7cenable-_rt.patch -features/all/rt/fs-block-rt-support.patch -features/all/rt/fs-ntfs-disable-interrupt-non-rt.patch -features/all/rt/x86-mce-timer-hrtimer.patch -features/all/rt/x86-stackprot-no-random-on-rt.patch -features/all/rt/x86-use-gen-rwsem-spinlocks-rt.patch -features/all/rt/x86-disable-debug-stack.patch -features/all/rt/workqueue-use-get-cpu-light.patch -features/all/rt/epoll-use-get-cpu-light.patch -features/all/rt/mm-vmalloc-use-get-cpu-light.patch -features/all/rt/revert-workqueue-skip-nr_running-sanity-check-in-wor.patch -features/all/rt/workqueue-sanity.patch -features/all/rt/workqueue-fix-PF_THREAD_BOUND.patch -features/all/rt/workqueue-hotplug-fix.patch -features/all/rt/workqueue-more-hotplug-fallout.patch -features/all/rt/debugobjects-rt.patch -features/all/rt/jump-label-rt.patch -features/all/rt/skbufhead-raw-lock.patch -features/all/rt/perf-move-irq-work-to-softirq-in-rt.patch -features/all/rt/console-make-rt-friendly.patch -features/all/rt/fix-printk-flush-of-messages-1.patch -features/all/rt/power-use-generic-rwsem-on-rt.patch -features/all/rt/power-disable-highmem-on-rt.patch -features/all/rt/arm-disable-highmem-on-rt.patch -features/all/rt/arm-at91-tclib-default-to-tclib-timer-for-rt.patch -features/all/rt/mips-disable-highmem-on-rt.patch -features/all/rt/net-tx-action-avoid-livelock-on-rt.patch -features/all/rt/ping-sysrq.patch -features/all/rt/kgb-serial-hackaround.patch -features/all/rt/sysfs-realtime-entry.patch -features/all/rt/peter_zijlstra-re-_3_0-rt4.patch -features/all/rt/ipc-sem-rework-semaphore-wakeups.patch -features/all/rt/x86-kvm-require-const-tsc-for-rt.patch -features/all/rt/scsi-fcoe-rt-aware.patch -features/all/rt/x86-crypto-reduce-preempt-disabled-regions.patch -features/all/rt/dm-make-rt-aware.patch -features/all/rt/cpumask-disable-offstack-on-rt.patch -features/all/rt/seqlock-prevent-rt-starvation.patch -features/all/rt/rfc-timer-fix-hotplug-for-rt.patch -features/all/rt/rfc-futex-rt-fix-possible-lockup-when-taking-pi_lock-in-proxy-handler.patch -features/all/rt/rfc-ring-buffer-rt-check-for-irqs-disabled-before-grabbing-reader-lock.patch -features/all/rt/rfc-sched-rt-fix-wait_task_interactive-to-test-rt_spin_lock-state.patch -features/all/rt/rfc-lglock-rt-use-non-rt-for_each_cpu-in-rt-code.patch -features/all/rt/cpu-rt-make-hotplug-lock-a-sleeping-spinlock-on-rt.patch -features/all/rt/softirq-preempt-fix-3-re.txt -features/all/rt/scsi-qla2xxx-fix-bug-sleeping-function-called-from-invalid-context.patch -features/all/rt/upstream-net-rt-remove-preemption-disabling-in-netif_rx.patch -features/all/rt/rt-introduce-cpu-chill.patch -features/all/rt/fs-dcache-use-cpu-chill-in-trylock-loops.patch -features/all/rt/net-use-cpu-chill.patch -features/all/rt/ntp-make-ntp-lock-raw-sigh.patch -features/all/rt/mips-remove-smp-reserve-lock.patch -features/all/rt/lockdep-selftest-convert-spinlock-to-raw-spinlock.patch -features/all/rt/lockdep-selftest-only-do-hardirq-context-test-for-raw-spinlock.patch -features/all/rt/genirq-add-default-mask-cmdline-option.patch -features/all/rt/kconfig-disable-a-few-options-rt.patch -features/all/rt/kconfig-preempt-rt-full.patch +features/all/rt/0001-Revert-workqueue-skip-nr_running-sanity-check-in-wor.patch +features/all/rt/0002-slab-lockdep-Annotate-all-slab-caches.patch +features/all/rt/0003-x86-kprobes-Remove-remove-bogus-preempt_enable.patch +features/all/rt/0004-tick-Add-tick-skew-boot-option.patch +features/all/rt/0005-x86-hpet-Disable-MSI-on-Lenovo-W510.patch +features/all/rt/0006-block-Shorten-interrupt-disabled-regions.patch +features/all/rt/0007-sched-Distangle-worker-accounting-from-rq-3Elock.patch +features/all/rt/0008-mips-enable-interrupts-in-signal.patch.patch +features/all/rt/0009-arm-enable-interrupts-in-signal-code.patch.patch +features/all/rt/0010-seqlock-Remove-unused-functions.patch +features/all/rt/0011-seqlock-Use-seqcount.patch +features/all/rt/0012-timekeeping-Split-xtime_lock.patch +features/all/rt/0013-intel_idle-Convert-i7300_idle_lock-to-raw-spinlock.patch +features/all/rt/0014-tracing-Account-for-preempt-off-in-preempt_schedule.patch +features/all/rt/0015-signal-revert-ptrace-preempt-magic.patch.patch +features/all/rt/0016-arm-Mark-pmu-interupt-IRQF_NO_THREAD.patch +features/all/rt/0017-arm-Allow-forced-irq-threading.patch +features/all/rt/0018-preempt-rt-Convert-arm-boot_lock-to-raw.patch +features/all/rt/0019-arm-omap-make-wakeupgen_lock-raw.patch.patch +features/all/rt/0020-signals-Do-not-wakeup-self.patch +features/all/rt/0021-posix-timers-Prevent-broadcast-signals.patch +features/all/rt/0022-signals-Allow-rt-tasks-to-cache-one-sigqueue-struct.patch +features/all/rt/0023-signal-x86-Delay-calling-signals-in-atomic.patch +features/all/rt/0024-generic-Use-raw-local-irq-variant-for-generic-cmpxch.patch +features/all/rt/0025-drivers-random-Reduce-preempt-disabled-region.patch +features/all/rt/0026-ARM-AT91-PIT-Remove-irq-handler-when-clock-event-is-.patch +features/all/rt/0027-clocksource-TCLIB-Allow-higher-clock-rates-for-clock.patch +features/all/rt/0028-drivers-net-tulip_remove_one-needs-to-call-pci_disab.patch +features/all/rt/0029-drivers-net-Use-disable_irq_nosync-in-8139too.patch +features/all/rt/0030-drivers-net-ehea-Make-rx-irq-handler-non-threaded-IR.patch +features/all/rt/0031-drivers-net-at91_ether-Make-mdio-protection-rt-safe.patch +features/all/rt/0032-mm-Prepare-decoupling-the-page-fault-disabling-logic.patch +features/all/rt/0033-mm-Fixup-all-fault-handlers-to-check-current-pagefau.patch +features/all/rt/0034-mm-pagefault_disabled.patch +features/all/rt/0035-mm-raw_pagefault_disable.patch +features/all/rt/0036-filemap-fix-up.patch.patch +features/all/rt/0037-mm-Remove-preempt-count-from-pagefault-disable-enabl.patch +features/all/rt/0038-x86-highmem-Replace-BUG_ON-by-WARN_ON.patch +features/all/rt/0039-suspend-Prevent-might-sleep-splats.patch +features/all/rt/0040-OF-Fixup-resursive-locking-code-paths.patch +features/all/rt/0041-of-convert-devtree-lock.patch.patch +features/all/rt/0042-list-add-list-last-entry.patch.patch +features/all/rt/0043-mm-page-alloc-use-list-last-entry.patch.patch +features/all/rt/0044-mm-slab-move-debug-out.patch.patch +features/all/rt/0045-rwsem-inlcude-fix.patch.patch +features/all/rt/0046-sysctl-include-fix.patch.patch +features/all/rt/0047-net-flip-lock-dep-thingy.patch.patch +features/all/rt/0048-softirq-thread-do-softirq.patch.patch +features/all/rt/0049-softirq-split-out-code.patch.patch +features/all/rt/0050-x86-Do-not-unmask-io_apic-when-interrupt-is-in-progr.patch +features/all/rt/0051-x86-Do-not-disable-preemption-in-int3-on-32bit.patch +features/all/rt/0052-locking-various-init-fixes.patch.patch +features/all/rt/0053-pci-Use-__wake_up_all_locked-pci_unblock_user_cfg_ac.patch +features/all/rt/0054-latency-hist.patch.patch +features/all/rt/0055-hwlatdetect.patch.patch +features/all/rt/0057-early-printk-consolidate.patch.patch +features/all/rt/0058-printk-kill.patch.patch +features/all/rt/0059-printk-force_early_printk-boot-param-to-help-with-de.patch +features/all/rt/0060-rt-preempt-base-config.patch.patch +features/all/rt/0061-bug-BUG_ON-WARN_ON-variants-dependend-on-RT-RT.patch +features/all/rt/0062-rt-local_irq_-variants-depending-on-RT-RT.patch +features/all/rt/0063-preempt-Provide-preempt_-_-no-rt-variants.patch +features/all/rt/0064-ata-Do-not-disable-interrupts-in-ide-code-for-preemp.patch +features/all/rt/0065-ide-Do-not-disable-interrupts-for-PREEMPT-RT.patch +features/all/rt/0066-infiniband-Mellanox-IB-driver-patch-use-_nort-primit.patch +features/all/rt/0067-input-gameport-Do-not-disable-interrupts-on-PREEMPT_.patch +features/all/rt/0068-acpi-Do-not-disable-interrupts-on-PREEMPT_RT.patch +features/all/rt/0069-core-Do-not-disable-interrupts-on-RT-in-kernel-users.patch +features/all/rt/0070-core-Do-not-disable-interrupts-on-RT-in-res_counter..patch +features/all/rt/0071-usb-Use-local_irq_-_nort-variants.patch +features/all/rt/0072-tty-Do-not-disable-interrupts-in-put_ldisc-on-rt.patch +features/all/rt/0073-mm-scatterlist-dont-disable-irqs-on-RT.patch +features/all/rt/0074-signal-fix-up-rcu-wreckage.patch.patch +features/all/rt/0075-net-wireless-warn-nort.patch.patch +features/all/rt/0076-mm-Replace-cgroup_page-bit-spinlock.patch +features/all/rt/0077-buffer_head-Replace-bh_uptodate_lock-for-rt.patch +features/all/rt/0078-fs-jbd-jbd2-Make-state-lock-and-journal-head-lock-rt.patch +features/all/rt/0079-genirq-Disable-DEBUG_SHIRQ-for-rt.patch +features/all/rt/0080-genirq-Disable-random-call-on-preempt-rt.patch +features/all/rt/0081-genirq-disable-irqpoll-on-rt.patch +features/all/rt/0082-genirq-force-threading.patch.patch +features/all/rt/0083-drivers-net-fix-livelock-issues.patch +features/all/rt/0084-drivers-net-vortex-fix-locking-issues.patch +features/all/rt/0085-drivers-net-gianfar-Make-RT-aware.patch +features/all/rt/0086-USB-Fix-the-mouse-problem-when-copying-large-amounts.patch +features/all/rt/0087-local-var.patch.patch +features/all/rt/0088-rt-local-irq-lock.patch.patch +features/all/rt/0089-cpu-rt-variants.patch.patch +features/all/rt/0090-mm-slab-wrap-functions.patch.patch +features/all/rt/0091-slab-Fix-__do_drain-to-use-the-right-array-cache.patch +features/all/rt/0092-mm-More-lock-breaks-in-slab.c.patch +features/all/rt/0093-mm-page_alloc-rt-friendly-per-cpu-pages.patch +features/all/rt/0094-mm-page_alloc-reduce-lock-sections-further.patch +features/all/rt/0095-mm-page-alloc-fix.patch.patch +features/all/rt/0096-mm-convert-swap-to-percpu-locked.patch +features/all/rt/0097-mm-make-vmstat-rt-aware.patch +features/all/rt/0098-mm-shrink-the-page-frame-to-rt-size.patch +features/all/rt/0099-ARM-Initialize-ptl-lock-for-vector-page.patch +features/all/rt/0100-mm-Allow-only-slab-on-RT.patch +features/all/rt/0101-radix-tree-rt-aware.patch.patch +features/all/rt/0102-panic-disable-random-on-rt.patch +features/all/rt/0103-ipc-Make-the-ipc-code-rt-aware.patch +features/all/rt/0104-ipc-mqueue-Add-a-critical-section-to-avoid-a-deadloc.patch +features/all/rt/0105-relay-fix-timer-madness.patch +features/all/rt/0106-net-ipv4-route-use-locks-on-up-rt.patch.patch +features/all/rt/0107-workqueue-avoid-the-lock-in-cpu-dying.patch.patch +features/all/rt/0108-timers-prepare-for-full-preemption.patch +features/all/rt/0109-timers-preempt-rt-support.patch +features/all/rt/0110-timers-fix-timer-hotplug-on-rt.patch +features/all/rt/0111-timers-mov-printk_tick-to-soft-interrupt.patch +features/all/rt/0112-timer-delay-waking-softirqs-from-the-jiffy-tick.patch +features/all/rt/0113-timers-Avoid-the-switch-timers-base-set-to-NULL-tric.patch +features/all/rt/0114-printk-Don-t-call-printk_tick-in-printk_needs_cpu-on.patch +features/all/rt/0115-hrtimers-prepare-full-preemption.patch +features/all/rt/0116-hrtimer-fixup-hrtimer-callback-changes-for-preempt-r.patch +features/all/rt/0117-hrtimer-Don-t-call-the-timer-handler-from-hrtimer_st.patch +features/all/rt/0118-hrtimer-Add-missing-debug_activate-aid-Was-Re-ANNOUN.patch +features/all/rt/0119-hrtimer-fix-reprogram-madness.patch.patch +features/all/rt/0120-timer-fd-Prevent-live-lock.patch +features/all/rt/0121-posix-timers-thread-posix-cpu-timers-on-rt.patch +features/all/rt/0122-posix-timers-Shorten-posix_cpu_timers-CPU-kernel-thr.patch +features/all/rt/0123-posix-timers-Avoid-wakeups-when-no-timers-are-active.patch +features/all/rt/0124-sched-delay-put-task.patch.patch +features/all/rt/0125-sched-limit-nr-migrate.patch.patch +features/all/rt/0126-sched-mmdrop-delayed.patch.patch +features/all/rt/0127-sched-rt-mutex-wakeup.patch.patch +features/all/rt/0128-sched-might-sleep-do-not-account-rcu-depth.patch.patch +features/all/rt/0129-sched-cond-resched.patch.patch +features/all/rt/0130-cond-resched-softirq-fix.patch.patch +features/all/rt/0131-cond-resched-lock-rt-tweak.patch.patch +features/all/rt/0132-sched-disable-ttwu-queue.patch.patch +features/all/rt/0133-sched-Disable-CONFIG_RT_GROUP_SCHED-on-RT.patch +features/all/rt/0134-sched-ttwu-Return-success-when-only-changing-the-sav.patch +features/all/rt/0135-stop_machine-convert-stop_machine_run-to-PREEMPT_RT.patch +features/all/rt/0136-stomp-machine-mark-stomper-thread.patch.patch +features/all/rt/0137-stomp-machine-raw-lock.patch.patch +features/all/rt/0138-hotplug-Lightweight-get-online-cpus.patch +features/all/rt/0139-hotplug-sync_unplug-No.patch +features/all/rt/0140-hotplug-Reread-hotplug_pcp-on-pin_current_cpu-retry.patch +features/all/rt/0141-sched-migrate-disable.patch.patch +features/all/rt/0142-hotplug-use-migrate-disable.patch.patch +features/all/rt/0143-hotplug-Call-cpu_unplug_begin-before-DOWN_PREPARE.patch +features/all/rt/0144-ftrace-migrate-disable-tracing.patch.patch +features/all/rt/0145-tracing-Show-padding-as-unsigned-short.patch +features/all/rt/0146-migrate-disable-rt-variant.patch.patch +features/all/rt/0147-sched-Optimize-migrate_disable.patch +features/all/rt/0148-sched-Generic-migrate_disable.patch +features/all/rt/0149-sched-rt-Fix-migrate_enable-thinko.patch +features/all/rt/0150-sched-teach-migrate_disable-about-atomic-contexts.patch +features/all/rt/0151-sched-Postpone-actual-migration-disalbe-to-schedule.patch +features/all/rt/0152-sched-Do-not-compare-cpu-masks-in-scheduler.patch +features/all/rt/0153-sched-Have-migrate_disable-ignore-bounded-threads.patch +features/all/rt/0154-sched-clear-pf-thread-bound-on-fallback-rq.patch.patch +features/all/rt/0155-ftrace-crap.patch.patch +features/all/rt/0156-ring-buffer-Convert-reader_lock-from-raw_spin_lock-i.patch +features/all/rt/0157-net-netif_rx_ni-migrate-disable.patch.patch +features/all/rt/0158-softirq-Sanitize-softirq-pending-for-NOHZ-RT.patch +features/all/rt/0159-lockdep-rt.patch.patch +features/all/rt/0160-mutex-no-spin-on-rt.patch.patch +features/all/rt/0161-softirq-local-lock.patch.patch +features/all/rt/0162-softirq-Export-in_serving_softirq.patch +features/all/rt/0163-hardirq.h-Define-softirq_count-as-OUL-to-kill-build-.patch +features/all/rt/0164-softirq-Fix-unplug-deadlock.patch +features/all/rt/0165-softirq-disable-softirq-stacks-for-rt.patch.patch +features/all/rt/0166-softirq-make-fifo.patch.patch +features/all/rt/0167-tasklet-Prevent-tasklets-from-going-into-infinite-sp.patch +features/all/rt/0168-genirq-Allow-disabling-of-softirq-processing-in-irq-.patch +features/all/rt/0169-local-vars-migrate-disable.patch.patch +features/all/rt/0170-md-raid5-Make-raid5_percpu-handling-RT-aware.patch +features/all/rt/0171-rtmutex-lock-killable.patch.patch +features/all/rt/0172-rtmutex-futex-prepare-rt.patch.patch +features/all/rt/0173-futex-Fix-bug-on-when-a-requeued-RT-task-times-out.patch +features/all/rt/0174-rt-mutex-add-sleeping-spinlocks-support.patch.patch +features/all/rt/0175-spinlock-types-separate-raw.patch.patch +features/all/rt/0176-rtmutex-avoid-include-hell.patch.patch +features/all/rt/0177-rt-add-rt-spinlocks.patch.patch +features/all/rt/0178-rt-add-rt-to-mutex-headers.patch.patch +features/all/rt/0179-rwsem-add-rt-variant.patch.patch +features/all/rt/0180-rt-Add-the-preempt-rt-lock-replacement-APIs.patch +features/all/rt/0181-rwlocks-Fix-section-mismatch.patch +features/all/rt/0182-timer-handle-idle-trylock-in-get-next-timer-irq.patc.patch +features/all/rt/0183-RCU-Force-PREEMPT_RCU-for-PREEMPT-RT.patch +features/all/rt/0184-rcu-Frob-softirq-test.patch +features/all/rt/0185-rcu-Merge-RCU-bh-into-RCU-preempt.patch +features/all/rt/0186-rcu-Fix-macro-substitution-for-synchronize_rcu_bh-on.patch +features/all/rt/0187-rcu-more-fallout.patch.patch +features/all/rt/0188-rcu-Make-ksoftirqd-do-RCU-quiescent-states.patch +features/all/rt/0189-rcu-Fix-build-break.patch +features/all/rt/0190-rt-rcutree-Move-misplaced-prototype.patch +features/all/rt/0191-lglocks-rt.patch.patch +features/all/rt/0192-serial-8250-Clean-up-the-locking-for-rt.patch +features/all/rt/0193-serial-8250-Call-flush_to_ldisc-when-the-irq-is-thre.patch +features/all/rt/0194-drivers-tty-fix-omap-lock-crap.patch.patch +features/all/rt/0195-rt-Improve-the-serial-console-PASS_LIMIT.patch +features/all/rt/0196-fs-namespace-preemption-fix.patch +features/all/rt/0197-mm-protect-activate-switch-mm.patch.patch +features/all/rt/0198-mm-Protect-activate_mm-by-preempt_-disable-7Cenable-.patch +features/all/rt/0199-fs-block-rt-support.patch.patch +features/all/rt/0200-fs-ntfs-disable-interrupt-only-on-RT.patch +features/all/rt/0201-x86-Convert-mce-timer-to-hrtimer.patch +features/all/rt/0202-x86-stackprotector-Avoid-random-pool-on-rt.patch +features/all/rt/0203-x86-Use-generic-rwsem_spinlocks-on-rt.patch +features/all/rt/0204-x86-Disable-IST-stacks-for-debug-int-3-stack-fault-f.patch +features/all/rt/0205-workqueue-use-get-cpu-light.patch.patch +features/all/rt/0206-epoll.patch.patch +features/all/rt/0207-mm-vmalloc.patch.patch +features/all/rt/0208-workqueue-Fix-cpuhotplug-trainwreck.patch +features/all/rt/0209-workqueue-Fix-PF_THREAD_BOUND-abuse.patch +features/all/rt/0210-workqueue-Use-get_cpu_light-in-flush_gcwq.patch +features/all/rt/0211-hotplug-stuff.patch.patch +features/all/rt/0212-debugobjects-rt.patch.patch +features/all/rt/0213-jump-label-rt.patch.patch +features/all/rt/0214-skbufhead-raw-lock.patch.patch +features/all/rt/0215-x86-no-perf-irq-work-rt.patch.patch +features/all/rt/0216-console-make-rt-friendly.patch.patch +features/all/rt/0217-fix-printk-flush-of-messages.patch +features/all/rt/0218-power-use-generic-rwsem-on-rt.patch +features/all/rt/0219-power-disable-highmem-on-rt.patch.patch +features/all/rt/0220-arm-disable-highmem-on-rt.patch.patch +features/all/rt/0221-ARM-at91-tclib-Default-to-tclib-timer-for-RT.patch +features/all/rt/0222-mips-disable-highmem-on-rt.patch.patch +features/all/rt/0223-net-Avoid-livelock-in-net_tx_action-on-RT.patch +features/all/rt/0224-ping-sysrq.patch.patch +features/all/rt/0225-kgdb-serial-Short-term-workaround.patch +features/all/rt/0226-add-sys-kernel-realtime-entry.patch +features/all/rt/0227-mm-rt-kmap_atomic-scheduling.patch +features/all/rt/0228-ipc-sem-Rework-semaphore-wakeups.patch +features/all/rt/0229-x86-kvm-require-const-tsc-for-rt.patch.patch +features/all/rt/0230-scsi-fcoe-rt-aware.patch.patch +features/all/rt/0231-x86-crypto-Reduce-preempt-disabled-regions.patch +features/all/rt/0232-dm-Make-rt-aware.patch +features/all/rt/0233-cpumask-Disable-CONFIG_CPUMASK_OFFSTACK-for-RT.patch +features/all/rt/0234-seqlock-Prevent-rt-starvation.patch +features/all/rt/0235-timer-Fix-hotplug-for-rt.patch +features/all/rt/0236-futex-rt-Fix-possible-lockup-when-taking-pi_lock-in-.patch +features/all/rt/0237-ring-buffer-rt-Check-for-irqs-disabled-before-grabbi.patch +features/all/rt/0238-sched-rt-Fix-wait_task_interactive-to-test-rt_spin_l.patch +features/all/rt/0239-lglock-rt-Use-non-rt-for_each_cpu-in-rt-code.patch +features/all/rt/0240-cpu-Make-hotplug.lock-a-sleeping-spinlock-on-RT.patch +features/all/rt/0241-softirq-Check-preemption-after-reenabling-interrupts.patch +features/all/rt/0242-scsi-qla2xxx-Use-local_irq_save_nort-in-qla2x00_poll.patch +features/all/rt/0243-net-RT-REmove-preemption-disabling-in-netif_rx.patch +features/all/rt/0244-rt-Introduce-cpu_chill.patch +features/all/rt/0245-fs-dcache-Use-cpu_chill-in-trylock-loops.patch +features/all/rt/0246-net-Use-cpu_chill-instead-of-cpu_relax.patch +features/all/rt/0247-ntp-Make-ntp_lock-raw.patch +features/all/rt/0248-mips-remove-smp-reserve-lock.patch.patch +features/all/rt/0249-lockdep-Selftest-convert-spinlock-to-raw-spinlock.patch +features/all/rt/0250-lockdep-Selftest-Only-do-hardirq-context-test-for-ra.patch +features/all/rt/0251-genirq-Add-default-affinity-mask-command-line-option.patch +features/all/rt/0252-kconfig-disable-a-few-options-rt.patch.patch +features/all/rt/0253-kconfig-preempt-rt-full.patch.patch