[rt] bump version to 3.2.16-rt27

svn path=/dists/sid/linux-2.6/; revision=18999
This commit is contained in:
Ben Hutchings 2012-05-12 14:20:55 +00:00
parent 88590a0642
commit e39ab1b001
274 changed files with 5329 additions and 4600 deletions

1
debian/changelog vendored
View File

@ -35,6 +35,7 @@ linux-2.6 (3.2.17-1) UNRELEASED; urgency=low
* KVM: Ensure all vcpus are consistent with in-kernel irqchip settings * KVM: Ensure all vcpus are consistent with in-kernel irqchip settings
(CVE-2012-1601) (CVE-2012-1601)
* KVM: lock slots_lock around device assignment (CVE-2012-2121) * KVM: lock slots_lock around device assignment (CVE-2012-2121)
* [rt] bump version to 3.2.16-rt27
[ Bastian Blank ] [ Bastian Blank ]
* [s390] Enable IUCV special message support. (closes: #671238) * [s390] Enable IUCV special message support. (closes: #671238)

View File

@ -1,13 +1,14 @@
From 76f41af7cc93591a2723d2c59918df003f90cb09 Mon Sep 17 00:00:00 2001
From: Frederic Weisbecker <fweisbec@gmail.com> From: Frederic Weisbecker <fweisbec@gmail.com>
Date: Mon Sep 26 12:19:11 2011 +0200 Date: Mon, 26 Sep 2011 12:19:11 +0200
Subject: x86: Call idle notifier after irq_enter() Subject: [PATCH 001/267] x86: Call idle notifier after irq_enter()
Interrupts notify the idle exit state before calling irq_enter(). But Interrupts notify the idle exit state before calling irq_enter(). But
the notifier code calls rcu_read_lock() and this is not allowed while the notifier code calls rcu_read_lock() and this is not allowed while
rcu is in an extended quiescent state. We need to wait for rcu is in an extended quiescent state. We need to wait for
rcu_irq_enter() to be called before doing so otherwise this results in rcu_irq_enter() to be called before doing so otherwise this results in
a grumpy RCU: a grumpy RCU:
[ 0.099991] WARNING: at include/linux/rcupdate.h:194 __atomic_notifier_call_chain+0xd2/0x110() [ 0.099991] WARNING: at include/linux/rcupdate.h:194 __atomic_notifier_call_chain+0xd2/0x110()
[ 0.099991] Hardware name: AMD690VM-FMH [ 0.099991] Hardware name: AMD690VM-FMH
[ 0.099991] Modules linked in: [ 0.099991] Modules linked in:
@ -30,7 +31,7 @@ a grumpy RCU:
[ 0.099991] [<ffffffff81cc5ca3>] start_kernel+0x3d1/0x3dc [ 0.099991] [<ffffffff81cc5ca3>] start_kernel+0x3d1/0x3dc
[ 0.099991] [<ffffffff81cc5321>] x86_64_start_reservations+0x131/0x135 [ 0.099991] [<ffffffff81cc5321>] x86_64_start_reservations+0x131/0x135
[ 0.099991] [<ffffffff81cc5412>] x86_64_start_kernel+0xed/0xf4 [ 0.099991] [<ffffffff81cc5412>] x86_64_start_kernel+0xed/0xf4
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com> Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Link: http://lkml.kernel.org/r/20110929194047.GA10247@linux.vnet.ibm.com Link: http://lkml.kernel.org/r/20110929194047.GA10247@linux.vnet.ibm.com
Cc: Ingo Molnar <mingo@redhat.com> Cc: Ingo Molnar <mingo@redhat.com>
@ -38,7 +39,6 @@ Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Andy Henroid <andrew.d.henroid@intel.com> Cc: Andy Henroid <andrew.d.henroid@intel.com>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
arch/x86/kernel/apic/apic.c | 6 +++--- arch/x86/kernel/apic/apic.c | 6 +++---
arch/x86/kernel/apic/io_apic.c | 2 +- arch/x86/kernel/apic/io_apic.c | 2 +-
@ -47,11 +47,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
arch/x86/kernel/irq.c | 6 +++--- arch/x86/kernel/irq.c | 6 +++---
5 files changed, 9 insertions(+), 9 deletions(-) 5 files changed, 9 insertions(+), 9 deletions(-)
Index: linux-3.2/arch/x86/kernel/apic/apic.c diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c
=================================================================== index f98d84c..2cd2d93 100644
--- linux-3.2.orig/arch/x86/kernel/apic/apic.c --- a/arch/x86/kernel/apic/apic.c
+++ linux-3.2/arch/x86/kernel/apic/apic.c +++ b/arch/x86/kernel/apic/apic.c
@@ -876,8 +876,8 @@ void __irq_entry smp_apic_timer_interrup @@ -876,8 +876,8 @@ void __irq_entry smp_apic_timer_interrupt(struct pt_regs *regs)
* Besides, if we don't timer interrupts ignore the global * Besides, if we don't timer interrupts ignore the global
* interrupt lock, which is the WrongThing (tm) to do. * interrupt lock, which is the WrongThing (tm) to do.
*/ */
@ -61,7 +61,7 @@ Index: linux-3.2/arch/x86/kernel/apic/apic.c
local_apic_timer_interrupt(); local_apic_timer_interrupt();
irq_exit(); irq_exit();
@@ -1809,8 +1809,8 @@ void smp_spurious_interrupt(struct pt_re @@ -1809,8 +1809,8 @@ void smp_spurious_interrupt(struct pt_regs *regs)
{ {
u32 v; u32 v;
@ -71,7 +71,7 @@ Index: linux-3.2/arch/x86/kernel/apic/apic.c
/* /*
* Check if this really is a spurious interrupt and ACK it * Check if this really is a spurious interrupt and ACK it
* if it is a vectored one. Just in case... * if it is a vectored one. Just in case...
@@ -1846,8 +1846,8 @@ void smp_error_interrupt(struct pt_regs @@ -1846,8 +1846,8 @@ void smp_error_interrupt(struct pt_regs *regs)
"Illegal register address", /* APIC Error Bit 7 */ "Illegal register address", /* APIC Error Bit 7 */
}; };
@ -81,11 +81,11 @@ Index: linux-3.2/arch/x86/kernel/apic/apic.c
/* First tickle the hardware, only then report what went on. -- REW */ /* First tickle the hardware, only then report what went on. -- REW */
v0 = apic_read(APIC_ESR); v0 = apic_read(APIC_ESR);
apic_write(APIC_ESR, 0); apic_write(APIC_ESR, 0);
Index: linux-3.2/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 6d939d7..8980555 100644
--- linux-3.2.orig/arch/x86/kernel/apic/io_apic.c --- a/arch/x86/kernel/apic/io_apic.c
+++ linux-3.2/arch/x86/kernel/apic/io_apic.c +++ b/arch/x86/kernel/apic/io_apic.c
@@ -2421,8 +2421,8 @@ asmlinkage void smp_irq_move_cleanup_int @@ -2421,8 +2421,8 @@ asmlinkage void smp_irq_move_cleanup_interrupt(void)
unsigned vector, me; unsigned vector, me;
ack_APIC_irq(); ack_APIC_irq();
@ -95,11 +95,11 @@ Index: linux-3.2/arch/x86/kernel/apic/io_apic.c
me = smp_processor_id(); me = smp_processor_id();
for (vector = FIRST_EXTERNAL_VECTOR; vector < NR_VECTORS; vector++) { for (vector = FIRST_EXTERNAL_VECTOR; vector < NR_VECTORS; vector++) {
Index: linux-3.2/arch/x86/kernel/cpu/mcheck/therm_throt.c diff --git a/arch/x86/kernel/cpu/mcheck/therm_throt.c b/arch/x86/kernel/cpu/mcheck/therm_throt.c
=================================================================== index 787e06c..ce21561 100644
--- linux-3.2.orig/arch/x86/kernel/cpu/mcheck/therm_throt.c --- a/arch/x86/kernel/cpu/mcheck/therm_throt.c
+++ linux-3.2/arch/x86/kernel/cpu/mcheck/therm_throt.c +++ b/arch/x86/kernel/cpu/mcheck/therm_throt.c
@@ -397,8 +397,8 @@ static void (*smp_thermal_vector)(void) @@ -397,8 +397,8 @@ static void (*smp_thermal_vector)(void) = unexpected_thermal_interrupt;
asmlinkage void smp_thermal_interrupt(struct pt_regs *regs) asmlinkage void smp_thermal_interrupt(struct pt_regs *regs)
{ {
@ -109,11 +109,11 @@ Index: linux-3.2/arch/x86/kernel/cpu/mcheck/therm_throt.c
inc_irq_stat(irq_thermal_count); inc_irq_stat(irq_thermal_count);
smp_thermal_vector(); smp_thermal_vector();
irq_exit(); irq_exit();
Index: linux-3.2/arch/x86/kernel/cpu/mcheck/threshold.c diff --git a/arch/x86/kernel/cpu/mcheck/threshold.c b/arch/x86/kernel/cpu/mcheck/threshold.c
=================================================================== index d746df2..aa578ca 100644
--- linux-3.2.orig/arch/x86/kernel/cpu/mcheck/threshold.c --- a/arch/x86/kernel/cpu/mcheck/threshold.c
+++ linux-3.2/arch/x86/kernel/cpu/mcheck/threshold.c +++ b/arch/x86/kernel/cpu/mcheck/threshold.c
@@ -19,8 +19,8 @@ void (*mce_threshold_vector)(void) = def @@ -19,8 +19,8 @@ void (*mce_threshold_vector)(void) = default_threshold_interrupt;
asmlinkage void smp_threshold_interrupt(void) asmlinkage void smp_threshold_interrupt(void)
{ {
@ -123,11 +123,11 @@ Index: linux-3.2/arch/x86/kernel/cpu/mcheck/threshold.c
inc_irq_stat(irq_threshold_count); inc_irq_stat(irq_threshold_count);
mce_threshold_vector(); mce_threshold_vector();
irq_exit(); irq_exit();
Index: linux-3.2/arch/x86/kernel/irq.c diff --git a/arch/x86/kernel/irq.c b/arch/x86/kernel/irq.c
=================================================================== index 429e0c9..5d31e5b 100644
--- linux-3.2.orig/arch/x86/kernel/irq.c --- a/arch/x86/kernel/irq.c
+++ linux-3.2/arch/x86/kernel/irq.c +++ b/arch/x86/kernel/irq.c
@@ -181,8 +181,8 @@ unsigned int __irq_entry do_IRQ(struct p @@ -181,8 +181,8 @@ unsigned int __irq_entry do_IRQ(struct pt_regs *regs)
unsigned vector = ~regs->orig_ax; unsigned vector = ~regs->orig_ax;
unsigned irq; unsigned irq;
@ -137,7 +137,7 @@ Index: linux-3.2/arch/x86/kernel/irq.c
irq = __this_cpu_read(vector_irq[vector]); irq = __this_cpu_read(vector_irq[vector]);
@@ -209,10 +209,10 @@ void smp_x86_platform_ipi(struct pt_regs @@ -209,10 +209,10 @@ void smp_x86_platform_ipi(struct pt_regs *regs)
ack_APIC_irq(); ack_APIC_irq();
@ -150,3 +150,6 @@ Index: linux-3.2/arch/x86/kernel/irq.c
inc_irq_stat(x86_platform_ipis); inc_irq_stat(x86_platform_ipis);
if (x86_platform_ipi_callback) if (x86_platform_ipi_callback)
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: slab, lockdep: Annotate all slab caches From 788ce6c0f8d2db7e6e5bdf6568a80a52a016e000 Mon Sep 17 00:00:00 2001
From: Peter Zijlstra <a.p.zijlstra@chello.nl> From: Peter Zijlstra <a.p.zijlstra@chello.nl>
Date: Mon Nov 28 19:51:51 CET 2011 Date: Mon, 28 Nov 2011 19:51:51 +0100
Subject: [PATCH 002/267] slab, lockdep: Annotate all slab caches
Currently we only annotate the kmalloc caches, annotate all of them. 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 ++++++++++++++++++++++++++++------------------------ mm/slab.c | 52 ++++++++++++++++++++++++++++------------------------
1 file changed, 28 insertions(+), 24 deletions(-) 1 file changed, 28 insertions(+), 24 deletions(-)
Index: linux-3.2/mm/slab.c
=================================================================== diff --git a/mm/slab.c b/mm/slab.c
--- linux-3.2.orig/mm/slab.c index 83311c9a..b76905e 100644
+++ linux-3.2/mm/slab.c --- a/mm/slab.c
+++ b/mm/slab.c
@@ -607,6 +607,12 @@ int slab_is_available(void) @@ -607,6 +607,12 @@ int slab_is_available(void)
return g_cpucache_up >= EARLY; return g_cpucache_up >= EARLY;
} }
@ -34,7 +36,7 @@ Index: linux-3.2/mm/slab.c
#ifdef CONFIG_LOCKDEP #ifdef CONFIG_LOCKDEP
/* /*
@@ -668,38 +674,41 @@ static void slab_set_debugobj_lock_class @@ -668,38 +674,41 @@ static void slab_set_debugobj_lock_classes(struct kmem_cache *cachep)
slab_set_debugobj_lock_classes_node(cachep, node); slab_set_debugobj_lock_classes_node(cachep, node);
} }
@ -90,7 +92,7 @@ Index: linux-3.2/mm/slab.c
{ {
} }
@@ -712,12 +721,6 @@ static void slab_set_debugobj_lock_class @@ -712,12 +721,6 @@ static void slab_set_debugobj_lock_classes(struct kmem_cache *cachep)
} }
#endif #endif
@ -121,7 +123,7 @@ Index: linux-3.2/mm/slab.c
mutex_unlock(&cache_chain_mutex); mutex_unlock(&cache_chain_mutex);
/* Done! */ /* Done! */
@@ -2479,6 +2481,8 @@ kmem_cache_create (const char *name, siz @@ -2479,6 +2481,8 @@ kmem_cache_create (const char *name, size_t size, size_t align,
slab_set_debugobj_lock_classes(cachep); slab_set_debugobj_lock_classes(cachep);
} }
@ -130,3 +132,6 @@ Index: linux-3.2/mm/slab.c
/* cache setup completed, link it into the list */ /* cache setup completed, link it into the list */
list_add(&cachep->next, &cache_chain); list_add(&cachep->next, &cache_chain);
oops: oops:
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: x86: kprobes: Remove remove bogus preempt_enable From 2c5f1cf75561b0a3137ec2bc5eb77c29d00af512 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Thu, 17 Mar 2011 11:02:15 +0100 Date: Thu, 17 Mar 2011 11:02:15 +0100
Subject: [PATCH 003/267] x86: kprobes: Remove remove bogus preempt_enable
The CONFIG_PREEMPT=n section of setup_singlestep() contains: The CONFIG_PREEMPT=n section of setup_singlestep() contains:
@ -15,11 +16,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
arch/x86/kernel/kprobes.c | 1 - arch/x86/kernel/kprobes.c | 1 -
1 file changed, 1 deletion(-) 1 file changed, 1 deletion(-)
Index: linux-3.2/arch/x86/kernel/kprobes.c diff --git a/arch/x86/kernel/kprobes.c b/arch/x86/kernel/kprobes.c
=================================================================== index 7da647d..5604455 100644
--- linux-3.2.orig/arch/x86/kernel/kprobes.c --- a/arch/x86/kernel/kprobes.c
+++ linux-3.2/arch/x86/kernel/kprobes.c +++ b/arch/x86/kernel/kprobes.c
@@ -478,7 +478,6 @@ static void __kprobes setup_singlestep(s @@ -478,7 +478,6 @@ static void __kprobes setup_singlestep(struct kprobe *p, struct pt_regs *regs,
* stepping. * stepping.
*/ */
regs->ip = (unsigned long)p->ainsn.insn; regs->ip = (unsigned long)p->ainsn.insn;
@ -27,3 +28,6 @@ Index: linux-3.2/arch/x86/kernel/kprobes.c
return; return;
} }
#endif #endif
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: x86: hpet: Disable MSI on Lenovo W510 From e13909c551bb27d491ac83994ca27ec691f070b5 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Fri, 30 Sep 2011 20:03:37 +0200 Date: Fri, 30 Sep 2011 20:03:37 +0200
Subject: [PATCH 004/267] x86: hpet: Disable MSI on Lenovo W510
MSI based per cpu timers lose interrupts when intel_idle() is enabled MSI based per cpu timers lose interrupts when intel_idle() is enabled
- independent of the c-state. With idle=poll the problem cannot be - independent of the c-state. With idle=poll the problem cannot be
@ -12,10 +13,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
arch/x86/kernel/hpet.c | 27 +++++++++++++++++++++++++++ arch/x86/kernel/hpet.c | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+) 1 file changed, 27 insertions(+)
Index: linux-3.2/arch/x86/kernel/hpet.c diff --git a/arch/x86/kernel/hpet.c b/arch/x86/kernel/hpet.c
=================================================================== index 1bb0bf4..d86b821 100644
--- linux-3.2.orig/arch/x86/kernel/hpet.c --- a/arch/x86/kernel/hpet.c
+++ linux-3.2/arch/x86/kernel/hpet.c +++ b/arch/x86/kernel/hpet.c
@@ -9,6 +9,7 @@ @@ -9,6 +9,7 @@
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/hpet.h> #include <linux/hpet.h>
@ -24,7 +25,7 @@ Index: linux-3.2/arch/x86/kernel/hpet.c
#include <linux/cpu.h> #include <linux/cpu.h>
#include <linux/pm.h> #include <linux/pm.h>
#include <linux/io.h> #include <linux/io.h>
@@ -568,6 +569,30 @@ static void init_one_hpet_msi_clockevent @@ -568,6 +569,30 @@ static void init_one_hpet_msi_clockevent(struct hpet_dev *hdev, int cpu)
#define RESERVE_TIMERS 0 #define RESERVE_TIMERS 0
#endif #endif
@ -55,7 +56,7 @@ Index: linux-3.2/arch/x86/kernel/hpet.c
static void hpet_msi_capability_lookup(unsigned int start_timer) static void hpet_msi_capability_lookup(unsigned int start_timer)
{ {
unsigned int id; unsigned int id;
@@ -575,6 +600,8 @@ static void hpet_msi_capability_lookup(u @@ -575,6 +600,8 @@ static void hpet_msi_capability_lookup(unsigned int start_timer)
unsigned int num_timers_used = 0; unsigned int num_timers_used = 0;
int i; int i;
@ -64,3 +65,6 @@ Index: linux-3.2/arch/x86/kernel/hpet.c
if (hpet_msi_disable) if (hpet_msi_disable)
return; return;
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: block: Shorten interrupt disabled regions From e2c97e4d5da80e66340ea752cb33bf8802feaa53 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Wed, 22 Jun 2011 19:47:02 +0200 Date: Wed, 22 Jun 2011 19:47:02 +0200
Subject: [PATCH 005/267] block: Shorten interrupt disabled regions
Moving the blk_sched_flush_plug() call out of the interrupt/preempt Moving the blk_sched_flush_plug() call out of the interrupt/preempt
disabled region in the scheduler allows us to replace disabled region in the scheduler allows us to replace
@ -46,11 +47,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
block/blk-core.c | 20 ++++++++------------ block/blk-core.c | 20 ++++++++------------
1 file changed, 8 insertions(+), 12 deletions(-) 1 file changed, 8 insertions(+), 12 deletions(-)
Index: linux-3.2/block/blk-core.c diff --git a/block/blk-core.c b/block/blk-core.c
=================================================================== index 15de223..7366ad4 100644
--- linux-3.2.orig/block/blk-core.c --- a/block/blk-core.c
+++ linux-3.2/block/blk-core.c +++ b/block/blk-core.c
@@ -300,7 +300,11 @@ void __blk_run_queue(struct request_queu @@ -300,7 +300,11 @@ void __blk_run_queue(struct request_queue *q)
{ {
if (unlikely(blk_queue_stopped(q))) if (unlikely(blk_queue_stopped(q)))
return; return;
@ -63,7 +64,7 @@ Index: linux-3.2/block/blk-core.c
q->request_fn(q); q->request_fn(q);
} }
EXPORT_SYMBOL(__blk_run_queue); EXPORT_SYMBOL(__blk_run_queue);
@@ -2745,11 +2749,11 @@ static void queue_unplugged(struct reque @@ -2745,11 +2749,11 @@ static void queue_unplugged(struct request_queue *q, unsigned int depth,
* this lock). * this lock).
*/ */
if (from_schedule) { if (from_schedule) {
@ -77,7 +78,7 @@ Index: linux-3.2/block/blk-core.c
} }
} }
@@ -2775,7 +2779,6 @@ static void flush_plug_callbacks(struct @@ -2775,7 +2779,6 @@ static void flush_plug_callbacks(struct blk_plug *plug)
void blk_flush_plug_list(struct blk_plug *plug, bool from_schedule) void blk_flush_plug_list(struct blk_plug *plug, bool from_schedule)
{ {
struct request_queue *q; struct request_queue *q;
@ -85,7 +86,7 @@ Index: linux-3.2/block/blk-core.c
struct request *rq; struct request *rq;
LIST_HEAD(list); LIST_HEAD(list);
unsigned int depth; unsigned int depth;
@@ -2796,11 +2799,6 @@ void blk_flush_plug_list(struct blk_plug @@ -2796,11 +2799,6 @@ void blk_flush_plug_list(struct blk_plug *plug, bool from_schedule)
q = NULL; q = NULL;
depth = 0; depth = 0;
@ -97,7 +98,7 @@ Index: linux-3.2/block/blk-core.c
while (!list_empty(&list)) { while (!list_empty(&list)) {
rq = list_entry_rq(list.next); rq = list_entry_rq(list.next);
list_del_init(&rq->queuelist); list_del_init(&rq->queuelist);
@@ -2813,7 +2811,7 @@ void blk_flush_plug_list(struct blk_plug @@ -2813,7 +2811,7 @@ void blk_flush_plug_list(struct blk_plug *plug, bool from_schedule)
queue_unplugged(q, depth, from_schedule); queue_unplugged(q, depth, from_schedule);
q = rq->q; q = rq->q;
depth = 0; depth = 0;
@ -106,7 +107,7 @@ Index: linux-3.2/block/blk-core.c
} }
/* /*
* rq is already accounted, so use raw insert * rq is already accounted, so use raw insert
@@ -2831,8 +2829,6 @@ void blk_flush_plug_list(struct blk_plug @@ -2831,8 +2829,6 @@ void blk_flush_plug_list(struct blk_plug *plug, bool from_schedule)
*/ */
if (q) if (q)
queue_unplugged(q, depth, from_schedule); queue_unplugged(q, depth, from_schedule);
@ -115,3 +116,6 @@ Index: linux-3.2/block/blk-core.c
} }
void blk_finish_plug(struct blk_plug *plug) void blk_finish_plug(struct blk_plug *plug)
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: sched: Distangle worker accounting from rq-%3Elock From f88ad17a5ee292086822942fee103f09abb93bc4 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Wed, 22 Jun 2011 19:47:03 +0200 Date: Wed, 22 Jun 2011 19:47:03 +0200
Subject: [PATCH 006/267] sched: Distangle worker accounting from rq-%3Elock
The worker accounting for cpu bound workers is plugged into the core 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 scheduler code and the wakeup code. This is not a hard requirement and
@ -23,16 +24,16 @@ Cc: Linus Torvalds <torvalds@linux-foundation.org>
Link: http://lkml.kernel.org/r/20110622174919.135236139@linutronix.de Link: http://lkml.kernel.org/r/20110622174919.135236139@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
kernel/sched.c | 66 ++++++++++---------------------------------- kernel/sched.c | 66 +++++++++++----------------------------------
kernel/workqueue.c | 69 +++++++++++++++++++++-------------------------- kernel/workqueue.c | 67 +++++++++++++++++++++-------------------------
kernel/workqueue_sched.h | 5 +-- kernel/workqueue_sched.h | 5 ++--
3 files changed, 48 insertions(+), 92 deletions(-) 3 files changed, 47 insertions(+), 91 deletions(-)
Index: linux-3.2/kernel/sched.c diff --git a/kernel/sched.c b/kernel/sched.c
=================================================================== index d6b149c..a39494e 100644
--- linux-3.2.orig/kernel/sched.c --- a/kernel/sched.c
+++ linux-3.2/kernel/sched.c +++ b/kernel/sched.c
@@ -2644,10 +2644,6 @@ static void ttwu_activate(struct rq *rq, @@ -2644,10 +2644,6 @@ static void ttwu_activate(struct rq *rq, struct task_struct *p, int en_flags)
{ {
activate_task(rq, p, en_flags); activate_task(rq, p, en_flags);
p->on_rq = 1; p->on_rq = 1;
@ -104,7 +105,7 @@ Index: linux-3.2/kernel/sched.c
} }
switch_count = &prev->nvcsw; switch_count = &prev->nvcsw;
} }
@@ -4475,6 +4424,14 @@ static inline void sched_submit_work(str @@ -4475,6 +4424,14 @@ static inline void sched_submit_work(struct task_struct *tsk)
{ {
if (!tsk->state) if (!tsk->state)
return; return;
@ -119,7 +120,7 @@ Index: linux-3.2/kernel/sched.c
/* /*
* If we are going to sleep and we have plugged IO queued, * If we are going to sleep and we have plugged IO queued,
* make sure to submit it to avoid deadlocks. * make sure to submit it to avoid deadlocks.
@@ -4483,12 +4440,19 @@ static inline void sched_submit_work(str @@ -4483,12 +4440,19 @@ static inline void sched_submit_work(struct task_struct *tsk)
blk_schedule_flush_plug(tsk); blk_schedule_flush_plug(tsk);
} }
@ -139,10 +140,10 @@ Index: linux-3.2/kernel/sched.c
} }
EXPORT_SYMBOL(schedule); EXPORT_SYMBOL(schedule);
Index: linux-3.2/kernel/workqueue.c diff --git a/kernel/workqueue.c b/kernel/workqueue.c
=================================================================== index bb425b1..4b4421d 100644
--- linux-3.2.orig/kernel/workqueue.c --- a/kernel/workqueue.c
+++ linux-3.2/kernel/workqueue.c +++ b/kernel/workqueue.c
@@ -137,6 +137,7 @@ struct worker { @@ -137,6 +137,7 @@ struct worker {
unsigned int flags; /* X: flags */ unsigned int flags; /* X: flags */
int id; /* I: worker id */ int id; /* I: worker id */
@ -151,7 +152,7 @@ Index: linux-3.2/kernel/workqueue.c
}; };
/* /*
@@ -658,66 +659,58 @@ static void wake_up_worker(struct global @@ -660,66 +661,58 @@ static void wake_up_worker(struct global_cwq *gcwq)
} }
/** /**
@ -212,14 +213,14 @@ Index: linux-3.2/kernel/workqueue.c
if (worker->flags & WORKER_NOT_RUNNING) if (worker->flags & WORKER_NOT_RUNNING)
- return NULL; - return NULL;
+ return; + return;
+
- /* this can only happen on the local cpu */
- BUG_ON(cpu != raw_smp_processor_id());
+ if (WARN_ON_ONCE(worker->sleeping)) + if (WARN_ON_ONCE(worker->sleeping))
+ return; + return;
- /* this can only happen on the local cpu */
- BUG_ON(cpu != raw_smp_processor_id());
+ worker->sleeping = 1; + worker->sleeping = 1;
+
+ cpu = smp_processor_id(); + cpu = smp_processor_id();
+ gcwq = get_gcwq(cpu); + gcwq = get_gcwq(cpu);
+ spin_lock_irq(&gcwq->lock); + spin_lock_irq(&gcwq->lock);
@ -233,11 +234,10 @@ Index: linux-3.2/kernel/workqueue.c
- * and preemption disabled, which in turn means that none else - * and preemption disabled, which in turn means that none else
- * could be manipulating idle_list, so dereferencing idle_list - * could be manipulating idle_list, so dereferencing idle_list
- * without gcwq lock is safe. - * without gcwq lock is safe.
- */ */
- if (atomic_dec_and_test(nr_running) && !list_empty(&gcwq->worklist)) - if (atomic_dec_and_test(nr_running) && !list_empty(&gcwq->worklist))
- to_wakeup = first_worker(gcwq); - to_wakeup = first_worker(gcwq);
- return to_wakeup ? to_wakeup->task : NULL; - return to_wakeup ? to_wakeup->task : NULL;
+ */
+ if (atomic_dec_and_test(get_gcwq_nr_running(cpu)) && + if (atomic_dec_and_test(get_gcwq_nr_running(cpu)) &&
+ !list_empty(&gcwq->worklist)) { + !list_empty(&gcwq->worklist)) {
+ worker = first_worker(gcwq); + worker = first_worker(gcwq);
@ -248,10 +248,10 @@ Index: linux-3.2/kernel/workqueue.c
} }
/** /**
Index: linux-3.2/kernel/workqueue_sched.h diff --git a/kernel/workqueue_sched.h b/kernel/workqueue_sched.h
=================================================================== index 2d10fc9..3bf73e2 100644
--- linux-3.2.orig/kernel/workqueue_sched.h --- a/kernel/workqueue_sched.h
+++ linux-3.2/kernel/workqueue_sched.h +++ b/kernel/workqueue_sched.h
@@ -4,6 +4,5 @@ @@ -4,6 +4,5 @@
* Scheduler hooks for concurrency managed workqueue. Only to be * Scheduler hooks for concurrency managed workqueue. Only to be
* included from sched.c and workqueue.c. * included from sched.c and workqueue.c.
@ -261,3 +261,6 @@ Index: linux-3.2/kernel/workqueue_sched.h
- unsigned int cpu); - unsigned int cpu);
+void wq_worker_running(struct task_struct *task); +void wq_worker_running(struct task_struct *task);
+void wq_worker_sleeping(struct task_struct *task); +void wq_worker_sleeping(struct task_struct *task);
--
1.7.10

View File

@ -1,17 +1,18 @@
Subject: mips-enable-interrupts-in-signal.patch From 7a4fa0630cdf29e9fd81872ae02888121ffe3564 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Mon, 18 Jul 2011 21:32:10 +0200 Date: Mon, 18 Jul 2011 21:32:10 +0200
Subject: [PATCH 007/267] mips-enable-interrupts-in-signal.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
arch/mips/kernel/signal.c | 3 +++ arch/mips/kernel/signal.c | 3 +++
1 file changed, 3 insertions(+) 1 file changed, 3 insertions(+)
Index: linux-3.2/arch/mips/kernel/signal.c diff --git a/arch/mips/kernel/signal.c b/arch/mips/kernel/signal.c
=================================================================== index f852400..1c8f34c 100644
--- linux-3.2.orig/arch/mips/kernel/signal.c --- a/arch/mips/kernel/signal.c
+++ linux-3.2/arch/mips/kernel/signal.c +++ b/arch/mips/kernel/signal.c
@@ -604,6 +604,9 @@ static void do_signal(struct pt_regs *re @@ -604,6 +604,9 @@ static void do_signal(struct pt_regs *regs)
if (!user_mode(regs)) if (!user_mode(regs))
return; return;
@ -21,3 +22,6 @@ Index: linux-3.2/arch/mips/kernel/signal.c
if (test_thread_flag(TIF_RESTORE_SIGMASK)) if (test_thread_flag(TIF_RESTORE_SIGMASK))
oldset = &current->saved_sigmask; oldset = &current->saved_sigmask;
else else
--
1.7.10

View File

@ -0,0 +1,27 @@
From 415c7e81f6b54e5f8e8cddf0f2ff1c1855eeade3 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Sat, 16 Jul 2011 16:27:13 +0200
Subject: [PATCH 008/267] arm-enable-interrupts-in-signal-code.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
arch/arm/kernel/signal.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/arch/arm/kernel/signal.c b/arch/arm/kernel/signal.c
index 9e617bd..c7001bc 100644
--- a/arch/arm/kernel/signal.c
+++ b/arch/arm/kernel/signal.c
@@ -672,6 +672,9 @@ static void do_signal(struct pt_regs *regs, int syscall)
if (!user_mode(regs))
return;
+ local_irq_enable();
+ preempt_check_resched();
+
/*
* If we were from a system call, check for system call restarting...
*/
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: powerpc: 85xx: Mark cascade irq IRQF_NO_THREAD From 490faa4e4541df017386a562e4e9ad7011f49562 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Sat, 16 Jul 2011 12:09:54 +0200 Date: Sat, 16 Jul 2011 12:09:54 +0200
Subject: [PATCH 009/267] powerpc: 85xx: Mark cascade irq IRQF_NO_THREAD
Cascade interrupt must run in hard interrupt context. Cascade interrupt must run in hard interrupt context.
@ -9,11 +10,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
arch/powerpc/platforms/85xx/mpc85xx_cds.c | 2 +- arch/powerpc/platforms/85xx/mpc85xx_cds.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-) 1 file changed, 1 insertion(+), 1 deletion(-)
Index: linux-3.2/arch/powerpc/platforms/85xx/mpc85xx_cds.c diff --git a/arch/powerpc/platforms/85xx/mpc85xx_cds.c b/arch/powerpc/platforms/85xx/mpc85xx_cds.c
=================================================================== index 66cb8d6..7e2a4d2 100644
--- linux-3.2.orig/arch/powerpc/platforms/85xx/mpc85xx_cds.c --- a/arch/powerpc/platforms/85xx/mpc85xx_cds.c
+++ linux-3.2/arch/powerpc/platforms/85xx/mpc85xx_cds.c +++ b/arch/powerpc/platforms/85xx/mpc85xx_cds.c
@@ -177,7 +177,7 @@ static irqreturn_t mpc85xx_8259_cascade_ @@ -177,7 +177,7 @@ static irqreturn_t mpc85xx_8259_cascade_action(int irq, void *dev_id)
static struct irqaction mpc85xxcds_8259_irqaction = { static struct irqaction mpc85xxcds_8259_irqaction = {
.handler = mpc85xx_8259_cascade_action, .handler = mpc85xx_8259_cascade_action,
@ -22,3 +23,6 @@ Index: linux-3.2/arch/powerpc/platforms/85xx/mpc85xx_cds.c
.name = "8259 cascade", .name = "8259 cascade",
}; };
#endif /* PPC_I8259 */ #endif /* PPC_I8259 */
--
1.7.10

View File

@ -1,6 +1,8 @@
Subject: powerpc: wsp: Mark opb cascade handler IRQF_NO_THREAD From 05a48c448ba9085941f020ea02a7c880e80d683c Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Wed, 05 Oct 2011 14:11:24 +0200 Date: Wed, 5 Oct 2011 14:11:24 +0200
Subject: [PATCH 010/267] powerpc: wsp: Mark opb cascade handler
IRQF_NO_THREAD
Cascade handlers must run in hard interrupt context. Cascade handlers must run in hard interrupt context.
@ -9,10 +11,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
arch/powerpc/platforms/wsp/opb_pic.c | 3 ++- arch/powerpc/platforms/wsp/opb_pic.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-) 1 file changed, 2 insertions(+), 1 deletion(-)
Index: linux-3.2/arch/powerpc/platforms/wsp/opb_pic.c diff --git a/arch/powerpc/platforms/wsp/opb_pic.c b/arch/powerpc/platforms/wsp/opb_pic.c
=================================================================== index be05631..19f353d 100644
--- linux-3.2.orig/arch/powerpc/platforms/wsp/opb_pic.c --- a/arch/powerpc/platforms/wsp/opb_pic.c
+++ linux-3.2/arch/powerpc/platforms/wsp/opb_pic.c +++ b/arch/powerpc/platforms/wsp/opb_pic.c
@@ -320,7 +320,8 @@ void __init opb_pic_init(void) @@ -320,7 +320,8 @@ void __init opb_pic_init(void)
} }
@ -23,3 +25,6 @@ Index: linux-3.2/arch/powerpc/platforms/wsp/opb_pic.c
if (rc) { if (rc) {
printk("opb: request_irq failed: %d\n", rc); printk("opb: request_irq failed: %d\n", rc);
continue; continue;
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: powerpc: Mark IPI interrupts IRQF_NO_THREAD From c5f5de2dcb79c63ab914f69b8d1a59ba211f8b15 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Wed, 05 Oct 2011 14:00:26 +0200 Date: Wed, 5 Oct 2011 14:00:26 +0200
Subject: [PATCH 011/267] powerpc: Mark IPI interrupts IRQF_NO_THREAD
IPI handlers cannot be threaded. Remove the obsolete IRQF_DISABLED IPI handlers cannot be threaded. Remove the obsolete IRQF_DISABLED
flag (see commit e58aa3d2) while at it. flag (see commit e58aa3d2) while at it.
@ -12,11 +13,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
arch/powerpc/sysdev/xics/xics-common.c | 5 +++-- arch/powerpc/sysdev/xics/xics-common.c | 5 +++--
3 files changed, 7 insertions(+), 6 deletions(-) 3 files changed, 7 insertions(+), 6 deletions(-)
Index: linux-3.2/arch/powerpc/kernel/smp.c diff --git a/arch/powerpc/kernel/smp.c b/arch/powerpc/kernel/smp.c
=================================================================== index 6df7090..abdedd3 100644
--- linux-3.2.orig/arch/powerpc/kernel/smp.c --- a/arch/powerpc/kernel/smp.c
+++ linux-3.2/arch/powerpc/kernel/smp.c +++ b/arch/powerpc/kernel/smp.c
@@ -187,8 +187,8 @@ int smp_request_message_ipi(int virq, in @@ -187,8 +187,8 @@ int smp_request_message_ipi(int virq, int msg)
return 1; return 1;
} }
#endif #endif
@ -27,11 +28,11 @@ Index: linux-3.2/arch/powerpc/kernel/smp.c
WARN(err < 0, "unable to request_irq %d for %s (rc %d)\n", WARN(err < 0, "unable to request_irq %d for %s (rc %d)\n",
virq, smp_ipi_name[msg], err); virq, smp_ipi_name[msg], err);
Index: linux-3.2/arch/powerpc/platforms/powermac/smp.c diff --git a/arch/powerpc/platforms/powermac/smp.c b/arch/powerpc/platforms/powermac/smp.c
=================================================================== index 3394254..8d75ac8 100644
--- linux-3.2.orig/arch/powerpc/platforms/powermac/smp.c --- a/arch/powerpc/platforms/powermac/smp.c
+++ linux-3.2/arch/powerpc/platforms/powermac/smp.c +++ b/arch/powerpc/platforms/powermac/smp.c
@@ -200,7 +200,7 @@ static int psurge_secondary_ipi_init(voi @@ -200,7 +200,7 @@ static int psurge_secondary_ipi_init(void)
if (psurge_secondary_virq) if (psurge_secondary_virq)
rc = request_irq(psurge_secondary_virq, psurge_ipi_intr, rc = request_irq(psurge_secondary_virq, psurge_ipi_intr,
@ -40,7 +41,7 @@ Index: linux-3.2/arch/powerpc/platforms/powermac/smp.c
if (rc) if (rc)
pr_err("Failed to setup secondary cpu IPI\n"); pr_err("Failed to setup secondary cpu IPI\n");
@@ -408,7 +408,7 @@ static int __init smp_psurge_kick_cpu(in @@ -408,7 +408,7 @@ static int __init smp_psurge_kick_cpu(int nr)
static struct irqaction psurge_irqaction = { static struct irqaction psurge_irqaction = {
.handler = psurge_ipi_intr, .handler = psurge_ipi_intr,
@ -49,10 +50,10 @@ Index: linux-3.2/arch/powerpc/platforms/powermac/smp.c
.name = "primary IPI", .name = "primary IPI",
}; };
Index: linux-3.2/arch/powerpc/sysdev/xics/xics-common.c diff --git a/arch/powerpc/sysdev/xics/xics-common.c b/arch/powerpc/sysdev/xics/xics-common.c
=================================================================== index 63762c6..4ba6194 100644
--- linux-3.2.orig/arch/powerpc/sysdev/xics/xics-common.c --- a/arch/powerpc/sysdev/xics/xics-common.c
+++ linux-3.2/arch/powerpc/sysdev/xics/xics-common.c +++ b/arch/powerpc/sysdev/xics/xics-common.c
@@ -134,10 +134,11 @@ static void xics_request_ipi(void) @@ -134,10 +134,11 @@ static void xics_request_ipi(void)
BUG_ON(ipi == NO_IRQ); BUG_ON(ipi == NO_IRQ);
@ -67,3 +68,6 @@ Index: linux-3.2/arch/powerpc/sysdev/xics/xics-common.c
} }
int __init xics_smp_probe(void) int __init xics_smp_probe(void)
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: powerpc: Allow irq threading From 2e574f68fff54d8c7398b3984f183fb80ec8ce3e Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Sat, 16 Jul 2011 13:16:24 +0200 Date: Sat, 16 Jul 2011 13:16:24 +0200
Subject: [PATCH 012/267] powerpc: Allow irq threading
All interrupts which must be non threaded are marked All interrupts which must be non threaded are marked
IRQF_NO_THREAD. So it's safe to allow force threaded handlers. IRQF_NO_THREAD. So it's safe to allow force threaded handlers.
@ -10,10 +11,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
arch/powerpc/Kconfig | 1 + arch/powerpc/Kconfig | 1 +
1 file changed, 1 insertion(+) 1 file changed, 1 insertion(+)
Index: linux-3.2/arch/powerpc/Kconfig diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
=================================================================== index 951e18f..7c93c7e 100644
--- linux-3.2.orig/arch/powerpc/Kconfig --- a/arch/powerpc/Kconfig
+++ linux-3.2/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig
@@ -132,6 +132,7 @@ config PPC @@ -132,6 +132,7 @@ config PPC
select IRQ_PER_CPU select IRQ_PER_CPU
select GENERIC_IRQ_SHOW select GENERIC_IRQ_SHOW
@ -22,3 +23,6 @@ Index: linux-3.2/arch/powerpc/Kconfig
select HAVE_RCU_TABLE_FREE if SMP select HAVE_RCU_TABLE_FREE if SMP
select HAVE_SYSCALL_TRACEPOINTS select HAVE_SYSCALL_TRACEPOINTS
select HAVE_BPF_JIT if (PPC64 && NET) select HAVE_BPF_JIT if (PPC64 && NET)
--
1.7.10

View File

@ -1,6 +1,8 @@
From 9e1c03d11fdc2426a5d53a1d0e0b63b412924287 Mon Sep 17 00:00:00 2001
From: Peter Zijlstra <peterz@infradead.org> From: Peter Zijlstra <peterz@infradead.org>
Date: Tue, 18 Oct 2011 22:03:48 +0200 Date: Tue, 18 Oct 2011 22:03:48 +0200
Subject: sched: Keep period timer ticking when throttling active Subject: [PATCH 013/267] sched: Keep period timer ticking when throttling
active
When a runqueue is throttled we cannot disable the period timer When a runqueue is throttled we cannot disable the period timer
because that timer is the only way to undo the throttling. because that timer is the only way to undo the throttling.
@ -15,11 +17,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/sched_rt.c | 13 ++++++++----- kernel/sched_rt.c | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-) 1 file changed, 8 insertions(+), 5 deletions(-)
Index: linux-3.2/kernel/sched_rt.c diff --git a/kernel/sched_rt.c b/kernel/sched_rt.c
=================================================================== index 78fcacf..40d97e1 100644
--- linux-3.2.orig/kernel/sched_rt.c --- a/kernel/sched_rt.c
+++ linux-3.2/kernel/sched_rt.c +++ b/kernel/sched_rt.c
@@ -580,12 +580,9 @@ static inline int balance_runtime(struct @@ -580,12 +580,9 @@ static inline int balance_runtime(struct rt_rq *rt_rq)
static int do_sched_rt_period_timer(struct rt_bandwidth *rt_b, int overrun) static int do_sched_rt_period_timer(struct rt_bandwidth *rt_b, int overrun)
{ {
@ -33,7 +35,7 @@ Index: linux-3.2/kernel/sched_rt.c
span = sched_rt_period_mask(); span = sched_rt_period_mask();
for_each_cpu(i, span) { for_each_cpu(i, span) {
int enqueue = 0; int enqueue = 0;
@@ -620,12 +617,17 @@ static int do_sched_rt_period_timer(stru @@ -620,12 +617,17 @@ static int do_sched_rt_period_timer(struct rt_bandwidth *rt_b, int overrun)
if (!rt_rq_throttled(rt_rq)) if (!rt_rq_throttled(rt_rq))
enqueue = 1; enqueue = 1;
} }
@ -51,7 +53,7 @@ Index: linux-3.2/kernel/sched_rt.c
return idle; return idle;
} }
@@ -686,7 +688,8 @@ static void update_curr_rt(struct rq *rq @@ -686,7 +688,8 @@ static void update_curr_rt(struct rq *rq)
if (unlikely((s64)delta_exec < 0)) if (unlikely((s64)delta_exec < 0))
delta_exec = 0; delta_exec = 0;
@ -61,3 +63,6 @@ Index: linux-3.2/kernel/sched_rt.c
curr->se.sum_exec_runtime += delta_exec; curr->se.sum_exec_runtime += delta_exec;
account_group_exec_runtime(curr, delta_exec); account_group_exec_runtime(curr, delta_exec);
--
1.7.10

View File

@ -1,6 +1,7 @@
From ce43773df1fea5d063ac8d1aca4ff806bf899b5b Mon Sep 17 00:00:00 2001
From: Peter Zijlstra <peterz@infradead.org> From: Peter Zijlstra <peterz@infradead.org>
Date: Tue, 18 Oct 2011 22:03:48 +0200 Date: Tue, 18 Oct 2011 22:03:48 +0200
Subject: sched: Do not throttle due to PI boosting Subject: [PATCH 014/267] sched: Do not throttle due to PI boosting
When a runqueue has rt_runtime_us = 0 then the only way it can When a runqueue has rt_runtime_us = 0 then the only way it can
accumulate rt_time is via PI boosting. Though that causes the runqueue accumulate rt_time is via PI boosting. Though that causes the runqueue
@ -15,11 +16,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/sched_rt.c | 20 ++++++++++++++++++-- kernel/sched_rt.c | 20 ++++++++++++++++++--
1 file changed, 18 insertions(+), 2 deletions(-) 1 file changed, 18 insertions(+), 2 deletions(-)
Index: linux-3.2/kernel/sched_rt.c diff --git a/kernel/sched_rt.c b/kernel/sched_rt.c
=================================================================== index 40d97e1..c108b9c 100644
--- linux-3.2.orig/kernel/sched_rt.c --- a/kernel/sched_rt.c
+++ linux-3.2/kernel/sched_rt.c +++ b/kernel/sched_rt.c
@@ -659,8 +659,24 @@ static int sched_rt_runtime_exceeded(str @@ -659,8 +659,24 @@ static int sched_rt_runtime_exceeded(struct rt_rq *rt_rq)
return 0; return 0;
if (rt_rq->rt_time > runtime) { if (rt_rq->rt_time > runtime) {
@ -46,3 +47,6 @@ Index: linux-3.2/kernel/sched_rt.c
if (rt_rq_throttled(rt_rq)) { if (rt_rq_throttled(rt_rq)) {
sched_rt_rq_dequeue(rt_rq); sched_rt_rq_dequeue(rt_rq);
return 1; return 1;
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: time: Remove bogus comments From f427d80501aa7fcdf695288aa8eb507dbd5c9369 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Tue, 28 Feb 2012 19:06:50 +0100 Date: Tue, 28 Feb 2012 19:06:50 +0100
Subject: [PATCH 015/267] time: Remove bogus comments
There is no global irq lock which makes a syscall magically SMP There is no global irq lock which makes a syscall magically SMP
safe. Remove the outdated comment concerning do_settimeofday() as safe. Remove the outdated comment concerning do_settimeofday() as
@ -11,11 +12,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/time.c | 6 ------ kernel/time.c | 6 ------
1 file changed, 6 deletions(-) 1 file changed, 6 deletions(-)
Index: linux-3.2/kernel/time.c diff --git a/kernel/time.c b/kernel/time.c
=================================================================== index 73e416d..ba744cf 100644
--- linux-3.2.orig/kernel/time.c --- a/kernel/time.c
+++ linux-3.2/kernel/time.c +++ b/kernel/time.c
@@ -163,7 +163,6 @@ int do_sys_settimeofday(const struct tim @@ -163,7 +163,6 @@ int do_sys_settimeofday(const struct timespec *tv, const struct timezone *tz)
return error; return error;
if (tz) { if (tz) {
@ -23,7 +24,7 @@ Index: linux-3.2/kernel/time.c
sys_tz = *tz; sys_tz = *tz;
update_vsyscall_tz(); update_vsyscall_tz();
if (firsttime) { if (firsttime) {
@@ -173,12 +172,7 @@ int do_sys_settimeofday(const struct tim @@ -173,12 +172,7 @@ int do_sys_settimeofday(const struct timespec *tv, const struct timezone *tz)
} }
} }
if (tv) if (tv)
@ -36,3 +37,6 @@ Index: linux-3.2/kernel/time.c
return 0; return 0;
} }
--
1.7.10

View File

@ -1,9 +1,11 @@
Subject: x86: vdso: Remove bogus locking in update_vsyscall_tz() From 76f63af187b74e8d533678278b247292340ccc10 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Tue, 28 Feb 2012 19:10:46 +0100 Date: Tue, 28 Feb 2012 19:10:46 +0100
Subject: [PATCH 016/267] x86: vdso: Remove bogus locking in
update_vsyscall_tz()
Changing the sequence count in update_vsyscall_tz() is completely Changing the sequence count in update_vsyscall_tz() is completely
pointless. pointless.
The vdso code copies the data unprotected. There is no point to change The vdso code copies the data unprotected. There is no point to change
this as sys_tz is nowhere protected at all. See sys_gettimeofday(). this as sys_tz is nowhere protected at all. See sys_gettimeofday().
@ -13,10 +15,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
arch/x86/kernel/vsyscall_64.c | 5 ----- arch/x86/kernel/vsyscall_64.c | 5 -----
1 file changed, 5 deletions(-) 1 file changed, 5 deletions(-)
Index: linux-2.6/arch/x86/kernel/vsyscall_64.c diff --git a/arch/x86/kernel/vsyscall_64.c b/arch/x86/kernel/vsyscall_64.c
=================================================================== index e4d4a22..f04adbd 100644
--- linux-2.6.orig/arch/x86/kernel/vsyscall_64.c --- a/arch/x86/kernel/vsyscall_64.c
+++ linux-2.6/arch/x86/kernel/vsyscall_64.c +++ b/arch/x86/kernel/vsyscall_64.c
@@ -80,12 +80,7 @@ early_param("vsyscall", vsyscall_setup); @@ -80,12 +80,7 @@ early_param("vsyscall", vsyscall_setup);
void update_vsyscall_tz(void) void update_vsyscall_tz(void)
@ -30,3 +32,6 @@ Index: linux-2.6/arch/x86/kernel/vsyscall_64.c
} }
void update_vsyscall(struct timespec *wall_time, struct timespec *wtm, void update_vsyscall(struct timespec *wall_time, struct timespec *wtm,
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: x86: vdso: Use seqcount instead of seqlock From 11f9d4b70b2592b57dda3c33bdcd726ee98c9a71 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Tue, 28 Feb 2012 18:24:07 +0100 Date: Tue, 28 Feb 2012 18:24:07 +0100
Subject: [PATCH 017/267] x86: vdso: Use seqcount instead of seqlock
The update of the vdso data happens under xtime_lock, so adding a The update of the vdso data happens under xtime_lock, so adding a
nested lock is pointless. Just use a seqcount to sync the readers. nested lock is pointless. Just use a seqcount to sync the readers.
@ -12,10 +13,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
arch/x86/vdso/vclock_gettime.c | 16 ++++++++-------- arch/x86/vdso/vclock_gettime.c | 16 ++++++++--------
3 files changed, 12 insertions(+), 17 deletions(-) 3 files changed, 12 insertions(+), 17 deletions(-)
Index: linux-3.2/arch/x86/include/asm/vgtod.h diff --git a/arch/x86/include/asm/vgtod.h b/arch/x86/include/asm/vgtod.h
=================================================================== index 815285b..1f00717 100644
--- linux-3.2.orig/arch/x86/include/asm/vgtod.h --- a/arch/x86/include/asm/vgtod.h
+++ linux-3.2/arch/x86/include/asm/vgtod.h +++ b/arch/x86/include/asm/vgtod.h
@@ -5,7 +5,7 @@ @@ -5,7 +5,7 @@
#include <linux/clocksource.h> #include <linux/clocksource.h>
@ -25,10 +26,10 @@ Index: linux-3.2/arch/x86/include/asm/vgtod.h
/* open coded 'struct timespec' */ /* open coded 'struct timespec' */
time_t wall_time_sec; time_t wall_time_sec;
Index: linux-3.2/arch/x86/kernel/vsyscall_64.c diff --git a/arch/x86/kernel/vsyscall_64.c b/arch/x86/kernel/vsyscall_64.c
=================================================================== index f04adbd..50392ee 100644
--- linux-3.2.orig/arch/x86/kernel/vsyscall_64.c --- a/arch/x86/kernel/vsyscall_64.c
+++ linux-3.2/arch/x86/kernel/vsyscall_64.c +++ b/arch/x86/kernel/vsyscall_64.c
@@ -52,10 +52,7 @@ @@ -52,10 +52,7 @@
#include "vsyscall_trace.h" #include "vsyscall_trace.h"
@ -52,7 +53,7 @@ Index: linux-3.2/arch/x86/kernel/vsyscall_64.c
/* copy vsyscall data */ /* copy vsyscall data */
vsyscall_gtod_data.clock.vclock_mode = clock->archdata.vclock_mode; vsyscall_gtod_data.clock.vclock_mode = clock->archdata.vclock_mode;
@@ -101,7 +96,7 @@ void update_vsyscall(struct timespec *wa @@ -101,7 +96,7 @@ void update_vsyscall(struct timespec *wall_time, struct timespec *wtm,
vsyscall_gtod_data.wall_to_monotonic = *wtm; vsyscall_gtod_data.wall_to_monotonic = *wtm;
vsyscall_gtod_data.wall_time_coarse = __current_kernel_time(); vsyscall_gtod_data.wall_time_coarse = __current_kernel_time();
@ -61,11 +62,11 @@ Index: linux-3.2/arch/x86/kernel/vsyscall_64.c
} }
static void warn_bad_vsyscall(const char *level, struct pt_regs *regs, static void warn_bad_vsyscall(const char *level, struct pt_regs *regs,
Index: linux-3.2/arch/x86/vdso/vclock_gettime.c diff --git a/arch/x86/vdso/vclock_gettime.c b/arch/x86/vdso/vclock_gettime.c
=================================================================== index 6bc0e72..d8511fb 100644
--- linux-3.2.orig/arch/x86/vdso/vclock_gettime.c --- a/arch/x86/vdso/vclock_gettime.c
+++ linux-3.2/arch/x86/vdso/vclock_gettime.c +++ b/arch/x86/vdso/vclock_gettime.c
@@ -86,11 +86,11 @@ notrace static noinline int do_realtime( @@ -86,11 +86,11 @@ notrace static noinline int do_realtime(struct timespec *ts)
{ {
unsigned long seq, ns; unsigned long seq, ns;
do { do {
@ -79,7 +80,7 @@ Index: linux-3.2/arch/x86/vdso/vclock_gettime.c
timespec_add_ns(ts, ns); timespec_add_ns(ts, ns);
return 0; return 0;
} }
@@ -99,12 +99,12 @@ notrace static noinline int do_monotonic @@ -99,12 +99,12 @@ notrace static noinline int do_monotonic(struct timespec *ts)
{ {
unsigned long seq, ns, secs; unsigned long seq, ns, secs;
do { do {
@ -94,7 +95,7 @@ Index: linux-3.2/arch/x86/vdso/vclock_gettime.c
/* wall_time_nsec, vgetns(), and wall_to_monotonic.tv_nsec /* wall_time_nsec, vgetns(), and wall_to_monotonic.tv_nsec
* are all guaranteed to be nonnegative. * are all guaranteed to be nonnegative.
@@ -123,10 +123,10 @@ notrace static noinline int do_realtime_ @@ -123,10 +123,10 @@ notrace static noinline int do_realtime_coarse(struct timespec *ts)
{ {
unsigned long seq; unsigned long seq;
do { do {
@ -107,7 +108,7 @@ Index: linux-3.2/arch/x86/vdso/vclock_gettime.c
return 0; return 0;
} }
@@ -134,12 +134,12 @@ notrace static noinline int do_monotonic @@ -134,12 +134,12 @@ notrace static noinline int do_monotonic_coarse(struct timespec *ts)
{ {
unsigned long seq, ns, secs; unsigned long seq, ns, secs;
do { do {
@ -122,3 +123,6 @@ Index: linux-3.2/arch/x86/vdso/vclock_gettime.c
/* wall_time_nsec and wall_to_monotonic.tv_nsec are /* wall_time_nsec and wall_to_monotonic.tv_nsec are
* guaranteed to be between 0 and NSEC_PER_SEC. * guaranteed to be between 0 and NSEC_PER_SEC.
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: ia64: vsyscall: Use seqcount instead of seqlock From 0ad3596103ef2c8ecb6145c8a98ed7e38a9bc6ce Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Tue, 28 Feb 2012 18:33:08 +0100 Date: Tue, 28 Feb 2012 18:33:08 +0100
Subject: [PATCH 018/267] ia64: vsyscall: Use seqcount instead of seqlock
The update of the vdso data happens under xtime_lock, so adding a The update of the vdso data happens under xtime_lock, so adding a
nested lock is pointless. Just use a seqcount to sync the readers. nested lock is pointless. Just use a seqcount to sync the readers.
@ -14,10 +15,10 @@ Cc: Tony Luck <tony.luck@intel.com>
arch/ia64/kernel/time.c | 10 +++------- arch/ia64/kernel/time.c | 10 +++-------
4 files changed, 7 insertions(+), 11 deletions(-) 4 files changed, 7 insertions(+), 11 deletions(-)
Index: linux-2.6/arch/ia64/kernel/asm-offsets.c diff --git a/arch/ia64/kernel/asm-offsets.c b/arch/ia64/kernel/asm-offsets.c
=================================================================== index af56501..106aeb6 100644
--- linux-2.6.orig/arch/ia64/kernel/asm-offsets.c --- a/arch/ia64/kernel/asm-offsets.c
+++ linux-2.6/arch/ia64/kernel/asm-offsets.c +++ b/arch/ia64/kernel/asm-offsets.c
@@ -269,8 +269,8 @@ void foo(void) @@ -269,8 +269,8 @@ void foo(void)
BLANK(); BLANK();
@ -29,10 +30,10 @@ Index: linux-2.6/arch/ia64/kernel/asm-offsets.c
DEFINE(IA64_GTOD_WALL_TIME_OFFSET, DEFINE(IA64_GTOD_WALL_TIME_OFFSET,
offsetof (struct fsyscall_gtod_data_t, wall_time)); offsetof (struct fsyscall_gtod_data_t, wall_time));
DEFINE(IA64_GTOD_MONO_TIME_OFFSET, DEFINE(IA64_GTOD_MONO_TIME_OFFSET,
Index: linux-2.6/arch/ia64/kernel/fsys.S diff --git a/arch/ia64/kernel/fsys.S b/arch/ia64/kernel/fsys.S
=================================================================== index 331d42b..fa77de7 100644
--- linux-2.6.orig/arch/ia64/kernel/fsys.S --- a/arch/ia64/kernel/fsys.S
+++ linux-2.6/arch/ia64/kernel/fsys.S +++ b/arch/ia64/kernel/fsys.S
@@ -174,7 +174,7 @@ ENTRY(fsys_set_tid_address) @@ -174,7 +174,7 @@ ENTRY(fsys_set_tid_address)
FSYS_RETURN FSYS_RETURN
END(fsys_set_tid_address) END(fsys_set_tid_address)
@ -42,10 +43,10 @@ Index: linux-2.6/arch/ia64/kernel/fsys.S
#error fsys_gettimeofday incompatible with changes to struct fsyscall_gtod_data_t #error fsys_gettimeofday incompatible with changes to struct fsyscall_gtod_data_t
#endif #endif
#if IA64_ITC_JITTER_OFFSET !=0 #if IA64_ITC_JITTER_OFFSET !=0
Index: linux-2.6/arch/ia64/kernel/fsyscall_gtod_data.h diff --git a/arch/ia64/kernel/fsyscall_gtod_data.h b/arch/ia64/kernel/fsyscall_gtod_data.h
=================================================================== index 57d2ee6..146b15b 100644
--- linux-2.6.orig/arch/ia64/kernel/fsyscall_gtod_data.h --- a/arch/ia64/kernel/fsyscall_gtod_data.h
+++ linux-2.6/arch/ia64/kernel/fsyscall_gtod_data.h +++ b/arch/ia64/kernel/fsyscall_gtod_data.h
@@ -6,7 +6,7 @@ @@ -6,7 +6,7 @@
*/ */
@ -55,10 +56,10 @@ Index: linux-2.6/arch/ia64/kernel/fsyscall_gtod_data.h
struct timespec wall_time; struct timespec wall_time;
struct timespec monotonic_time; struct timespec monotonic_time;
cycle_t clk_mask; cycle_t clk_mask;
Index: linux-2.6/arch/ia64/kernel/time.c diff --git a/arch/ia64/kernel/time.c b/arch/ia64/kernel/time.c
=================================================================== index 43920de..8e991a0 100644
--- linux-2.6.orig/arch/ia64/kernel/time.c --- a/arch/ia64/kernel/time.c
+++ linux-2.6/arch/ia64/kernel/time.c +++ b/arch/ia64/kernel/time.c
@@ -35,9 +35,7 @@ @@ -35,9 +35,7 @@
static cycle_t itc_get_cycles(struct clocksource *cs); static cycle_t itc_get_cycles(struct clocksource *cs);
@ -81,7 +82,7 @@ Index: linux-2.6/arch/ia64/kernel/time.c
/* copy fsyscall clock data */ /* copy fsyscall clock data */
fsyscall_gtod_data.clk_mask = c->mask; fsyscall_gtod_data.clk_mask = c->mask;
@@ -485,6 +481,6 @@ void update_vsyscall(struct timespec *wa @@ -485,6 +481,6 @@ void update_vsyscall(struct timespec *wall, struct timespec *wtm,
fsyscall_gtod_data.monotonic_time.tv_sec++; fsyscall_gtod_data.monotonic_time.tv_sec++;
} }
@ -89,3 +90,6 @@ Index: linux-2.6/arch/ia64/kernel/time.c
+ write_seqcount_end(&fsyscall_gtod_data.seq); + write_seqcount_end(&fsyscall_gtod_data.seq);
} }
--
1.7.10

View File

@ -1,17 +1,18 @@
Subject: seqlock: Remove unused functions From 5e0436d075a54bc63fa9e48a160ca9df12ff9b77 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Sat, 16 Jul 2011 18:38:22 +0200 Date: Sat, 16 Jul 2011 18:38:22 +0200
Subject: [PATCH 019/267] seqlock: Remove unused functions
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
include/linux/seqlock.h | 21 --------------------- include/linux/seqlock.h | 21 ---------------------
1 file changed, 21 deletions(-) 1 file changed, 21 deletions(-)
Index: linux-3.2/include/linux/seqlock.h diff --git a/include/linux/seqlock.h b/include/linux/seqlock.h
=================================================================== index c6db9fb..b990f6e 100644
--- linux-3.2.orig/include/linux/seqlock.h --- a/include/linux/seqlock.h
+++ linux-3.2/include/linux/seqlock.h +++ b/include/linux/seqlock.h
@@ -69,17 +69,6 @@ static inline void write_sequnlock(seqlo @@ -69,17 +69,6 @@ static inline void write_sequnlock(seqlock_t *sl)
spin_unlock(&sl->lock); spin_unlock(&sl->lock);
} }
@ -29,7 +30,7 @@ Index: linux-3.2/include/linux/seqlock.h
/* Start of read calculation -- fetch last complete writer token */ /* Start of read calculation -- fetch last complete writer token */
static __always_inline unsigned read_seqbegin(const seqlock_t *sl) static __always_inline unsigned read_seqbegin(const seqlock_t *sl)
{ {
@@ -248,14 +237,4 @@ static inline void write_seqcount_barrie @@ -248,14 +237,4 @@ static inline void write_seqcount_barrier(seqcount_t *s)
#define write_sequnlock_bh(lock) \ #define write_sequnlock_bh(lock) \
do { write_sequnlock(lock); local_bh_enable(); } while(0) do { write_sequnlock(lock); local_bh_enable(); } while(0)
@ -44,3 +45,6 @@ Index: linux-3.2/include/linux/seqlock.h
- }) - })
- -
#endif /* __LINUX_SEQLOCK_H */ #endif /* __LINUX_SEQLOCK_H */
--
1.7.10

View File

@ -1,18 +1,19 @@
Subject: seqlock: Use seqcount From cc961dbd2fbdd830c4ba4162c7116d354dfcb13f Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Sat, 16 Jul 2011 18:40:26 +0200 Date: Sat, 16 Jul 2011 18:40:26 +0200
Subject: [PATCH 020/267] seqlock: Use seqcount
No point in having different implementations for the same thing. No point in having different implementations for the same thing.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
include/linux/seqlock.h | 176 +++++++++++++++++++++++++----------------------- include/linux/seqlock.h | 176 +++++++++++++++++++++++++----------------------
1 file changed, 93 insertions(+), 83 deletions(-) 1 file changed, 93 insertions(+), 83 deletions(-)
Index: rt/include/linux/seqlock.h diff --git a/include/linux/seqlock.h b/include/linux/seqlock.h
=================================================================== index b990f6e..3e1f3f9 100644
--- rt.orig/include/linux/seqlock.h --- a/include/linux/seqlock.h
+++ rt/include/linux/seqlock.h +++ b/include/linux/seqlock.h
@@ -30,81 +30,12 @@ @@ -30,81 +30,12 @@
#include <linux/preempt.h> #include <linux/preempt.h>
#include <asm/processor.h> #include <asm/processor.h>
@ -95,7 +96,7 @@ Index: rt/include/linux/seqlock.h
typedef struct seqcount { typedef struct seqcount {
unsigned sequence; unsigned sequence;
} seqcount_t; } seqcount_t;
@@ -186,7 +117,6 @@ static inline int __read_seqcount_retry( @@ -186,7 +117,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) static inline int read_seqcount_retry(const seqcount_t *s, unsigned start)
{ {
smp_rmb(); smp_rmb();
@ -103,7 +104,7 @@ Index: rt/include/linux/seqlock.h
return __read_seqcount_retry(s, start); return __read_seqcount_retry(s, start);
} }
@@ -220,21 +150,101 @@ static inline void write_seqcount_barrie @@ -220,21 +150,101 @@ static inline void write_seqcount_barrier(seqcount_t *s)
s->sequence+=2; s->sequence+=2;
} }
@ -218,3 +219,6 @@ Index: rt/include/linux/seqlock.h
+} +}
#endif /* __LINUX_SEQLOCK_H */ #endif /* __LINUX_SEQLOCK_H */
--
1.7.10

View File

@ -1,6 +1,8 @@
Subject: vfs: fs_struct: Move code out of seqcount write sections From 00f0fcf98b55531834e45b94ad6f8b03737e2ce0 Mon Sep 17 00:00:00 2001
From: Al Viro <viro@ZenIV.linux.org.uk> From: Al Viro <viro@ZenIV.linux.org.uk>
Date: Thu, 15 Mar 2012 18:39:40 +0000 Date: Thu, 15 Mar 2012 18:39:40 +0000
Subject: [PATCH 021/267] vfs: fs_struct: Move code out of seqcount write
sections
RT cannot disable preemption in the seqcount write sections due to RT cannot disable preemption in the seqcount write sections due to
functions called which take "sleeping" spinlocks. functions called which take "sleeping" spinlocks.
@ -8,6 +10,9 @@ functions called which take "sleeping" spinlocks.
Move the code out of those sections. It does not need to be there. Move the code out of those sections. It does not need to be there.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
fs/fs_struct.c | 27 +++++++++++++++------------
1 file changed, 15 insertions(+), 12 deletions(-)
diff --git a/fs/fs_struct.c b/fs/fs_struct.c diff --git a/fs/fs_struct.c b/fs/fs_struct.c
index 78b519c..f5818c4 100644 index 78b519c..f5818c4 100644
@ -81,5 +86,6 @@ index 78b519c..f5818c4 100644
spin_unlock(&fs->lock); spin_unlock(&fs->lock);
} }
task_unlock(p); task_unlock(p);
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: timekeeping: Split xtime_lock From 575bc99dec3a6b5121859ec0dc56a400313c500b Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Thu, 01 Mar 2012 15:14:06 +0100 Date: Thu, 1 Mar 2012 15:14:06 +0100
Subject: [PATCH 022/267] timekeeping: Split xtime_lock
xtime_lock is going to be split apart in mainline, so we can shorten xtime_lock is going to be split apart in mainline, so we can shorten
the seqcount protected regions and avoid updating seqcount in some the seqcount protected regions and avoid updating seqcount in some
@ -9,18 +10,18 @@ whole mess with raw seqlocks for RT.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
kernel/time/jiffies.c | 4 - kernel/time/jiffies.c | 4 +-
kernel/time/ntp.c | 24 +++++++---- kernel/time/ntp.c | 24 ++++++++----
kernel/time/tick-common.c | 10 ++-- kernel/time/tick-common.c | 10 +++--
kernel/time/tick-internal.h | 3 - kernel/time/tick-internal.h | 3 +-
kernel/time/tick-sched.c | 16 ++++--- kernel/time/tick-sched.c | 16 +++++---
kernel/time/timekeeping.c | 90 +++++++++++++++++++++++++------------------- kernel/time/timekeeping.c | 90 +++++++++++++++++++++++++------------------
6 files changed, 88 insertions(+), 59 deletions(-) 6 files changed, 88 insertions(+), 59 deletions(-)
Index: linux-3.2/kernel/time/jiffies.c diff --git a/kernel/time/jiffies.c b/kernel/time/jiffies.c
=================================================================== index a470154..21940eb 100644
--- linux-3.2.orig/kernel/time/jiffies.c --- a/kernel/time/jiffies.c
+++ linux-3.2/kernel/time/jiffies.c +++ b/kernel/time/jiffies.c
@@ -74,9 +74,9 @@ u64 get_jiffies_64(void) @@ -74,9 +74,9 @@ u64 get_jiffies_64(void)
u64 ret; u64 ret;
@ -33,11 +34,11 @@ Index: linux-3.2/kernel/time/jiffies.c
return ret; return ret;
} }
EXPORT_SYMBOL(get_jiffies_64); EXPORT_SYMBOL(get_jiffies_64);
Index: linux-3.2/kernel/time/ntp.c diff --git a/kernel/time/ntp.c b/kernel/time/ntp.c
=================================================================== index 4b85a7a..419cbaa 100644
--- linux-3.2.orig/kernel/time/ntp.c --- a/kernel/time/ntp.c
+++ linux-3.2/kernel/time/ntp.c +++ b/kernel/time/ntp.c
@@ -358,7 +358,8 @@ static enum hrtimer_restart ntp_leap_sec @@ -358,7 +358,8 @@ static enum hrtimer_restart ntp_leap_second(struct hrtimer *timer)
{ {
enum hrtimer_restart res = HRTIMER_NORESTART; enum hrtimer_restart res = HRTIMER_NORESTART;
@ -47,7 +48,7 @@ Index: linux-3.2/kernel/time/ntp.c
switch (time_state) { switch (time_state) {
case TIME_OK: case TIME_OK:
@@ -388,7 +389,8 @@ static enum hrtimer_restart ntp_leap_sec @@ -388,7 +389,8 @@ static enum hrtimer_restart ntp_leap_second(struct hrtimer *timer)
break; break;
} }
@ -77,7 +78,7 @@ Index: linux-3.2/kernel/time/ntp.c
txc->time.tv_sec = ts.tv_sec; txc->time.tv_sec = ts.tv_sec;
txc->time.tv_usec = ts.tv_nsec; txc->time.tv_usec = ts.tv_nsec;
@@ -903,7 +907,8 @@ void hardpps(const struct timespec *phas @@ -903,7 +907,8 @@ void hardpps(const struct timespec *phase_ts, const struct timespec *raw_ts)
pts_norm = pps_normalize_ts(*phase_ts); pts_norm = pps_normalize_ts(*phase_ts);
@ -87,7 +88,7 @@ Index: linux-3.2/kernel/time/ntp.c
/* clear the error bits, they will be set again if needed */ /* clear the error bits, they will be set again if needed */
time_status &= ~(STA_PPSJITTER | STA_PPSWANDER | STA_PPSERROR); time_status &= ~(STA_PPSJITTER | STA_PPSWANDER | STA_PPSERROR);
@@ -916,7 +921,8 @@ void hardpps(const struct timespec *phas @@ -916,7 +921,8 @@ void hardpps(const struct timespec *phase_ts, const struct timespec *raw_ts)
* just start the frequency interval */ * just start the frequency interval */
if (unlikely(pps_fbase.tv_sec == 0)) { if (unlikely(pps_fbase.tv_sec == 0)) {
pps_fbase = *raw_ts; pps_fbase = *raw_ts;
@ -97,7 +98,7 @@ Index: linux-3.2/kernel/time/ntp.c
return; return;
} }
@@ -931,7 +937,8 @@ void hardpps(const struct timespec *phas @@ -931,7 +937,8 @@ void hardpps(const struct timespec *phase_ts, const struct timespec *raw_ts)
time_status |= STA_PPSJITTER; time_status |= STA_PPSJITTER;
/* restart the frequency calibration interval */ /* restart the frequency calibration interval */
pps_fbase = *raw_ts; pps_fbase = *raw_ts;
@ -107,7 +108,7 @@ Index: linux-3.2/kernel/time/ntp.c
pr_err("hardpps: PPSJITTER: bad pulse\n"); pr_err("hardpps: PPSJITTER: bad pulse\n");
return; return;
} }
@@ -948,7 +955,8 @@ void hardpps(const struct timespec *phas @@ -948,7 +955,8 @@ void hardpps(const struct timespec *phase_ts, const struct timespec *raw_ts)
hardpps_update_phase(pts_norm.nsec); hardpps_update_phase(pts_norm.nsec);
@ -117,10 +118,10 @@ Index: linux-3.2/kernel/time/ntp.c
} }
EXPORT_SYMBOL(hardpps); EXPORT_SYMBOL(hardpps);
Index: linux-3.2/kernel/time/tick-common.c diff --git a/kernel/time/tick-common.c b/kernel/time/tick-common.c
=================================================================== index da6c9ec..39de540 100644
--- linux-3.2.orig/kernel/time/tick-common.c --- a/kernel/time/tick-common.c
+++ linux-3.2/kernel/time/tick-common.c +++ b/kernel/time/tick-common.c
@@ -63,13 +63,15 @@ int tick_is_oneshot_available(void) @@ -63,13 +63,15 @@ int tick_is_oneshot_available(void)
static void tick_periodic(int cpu) static void tick_periodic(int cpu)
{ {
@ -139,7 +140,7 @@ Index: linux-3.2/kernel/time/tick-common.c
} }
update_process_times(user_mode(get_irq_regs())); 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; ktime_t next;
do { do {
@ -151,22 +152,22 @@ Index: linux-3.2/kernel/time/tick-common.c
clockevents_set_mode(dev, CLOCK_EVT_MODE_ONESHOT); clockevents_set_mode(dev, CLOCK_EVT_MODE_ONESHOT);
Index: linux-3.2/kernel/time/tick-internal.h diff --git a/kernel/time/tick-internal.h b/kernel/time/tick-internal.h
=================================================================== index 4e265b9..c91100d 100644
--- linux-3.2.orig/kernel/time/tick-internal.h --- a/kernel/time/tick-internal.h
+++ linux-3.2/kernel/time/tick-internal.h +++ b/kernel/time/tick-internal.h
@@ -141,4 +141,5 @@ static inline int tick_device_is_functio @@ -141,4 +141,5 @@ static inline int tick_device_is_functional(struct clock_event_device *dev)
#endif #endif
extern void do_timer(unsigned long ticks); extern void do_timer(unsigned long ticks);
-extern seqlock_t xtime_lock; -extern seqlock_t xtime_lock;
+extern raw_spinlock_t xtime_lock; +extern raw_spinlock_t xtime_lock;
+extern seqcount_t xtime_seq; +extern seqcount_t xtime_seq;
Index: linux-3.2/kernel/time/tick-sched.c diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c
=================================================================== index c923640..d7abd2f 100644
--- linux-3.2.orig/kernel/time/tick-sched.c --- a/kernel/time/tick-sched.c
+++ linux-3.2/kernel/time/tick-sched.c +++ b/kernel/time/tick-sched.c
@@ -56,7 +56,8 @@ static void tick_do_update_jiffies64(kti @@ -56,7 +56,8 @@ static void tick_do_update_jiffies64(ktime_t now)
return; return;
/* Reevalute with xtime_lock held */ /* Reevalute with xtime_lock held */
@ -176,7 +177,7 @@ Index: linux-3.2/kernel/time/tick-sched.c
delta = ktime_sub(now, last_jiffies_update); delta = ktime_sub(now, last_jiffies_update);
if (delta.tv64 >= tick_period.tv64) { 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 */ /* Keep the tick_next_period variable up to date */
tick_next_period = ktime_add(last_jiffies_update, tick_period); tick_next_period = ktime_add(last_jiffies_update, tick_period);
} }
@ -186,7 +187,7 @@ Index: linux-3.2/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; ktime_t period;
@ -203,7 +204,7 @@ Index: linux-3.2/kernel/time/tick-sched.c
return period; return period;
} }
@@ -345,11 +349,11 @@ void tick_nohz_stop_sched_tick(int inidl @@ -345,11 +349,11 @@ void tick_nohz_stop_sched_tick(int inidle)
ts->idle_calls++; ts->idle_calls++;
/* Read jiffies and the time when jiffies were updated last */ /* Read jiffies and the time when jiffies were updated last */
do { do {
@ -217,11 +218,11 @@ Index: linux-3.2/kernel/time/tick-sched.c
if (rcu_needs_cpu(cpu) || printk_needs_cpu(cpu) || if (rcu_needs_cpu(cpu) || printk_needs_cpu(cpu) ||
arch_needs_cpu(cpu)) { arch_needs_cpu(cpu)) {
Index: linux-3.2/kernel/time/timekeeping.c diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c
=================================================================== index 2378413..da9e1f9 100644
--- linux-3.2.orig/kernel/time/timekeeping.c --- a/kernel/time/timekeeping.c
+++ linux-3.2/kernel/time/timekeeping.c +++ b/kernel/time/timekeeping.c
@@ -139,8 +139,8 @@ static inline s64 timekeeping_get_ns_raw @@ -139,8 +139,8 @@ static inline s64 timekeeping_get_ns_raw(void)
* This read-write spinlock protects us from races in SMP while * This read-write spinlock protects us from races in SMP while
* playing with xtime. * playing with xtime.
*/ */
@ -284,7 +285,7 @@ Index: linux-3.2/kernel/time/timekeeping.c
set_normalized_timespec(ts, ts->tv_sec + tomono.tv_sec, set_normalized_timespec(ts, ts->tv_sec + tomono.tv_sec,
ts->tv_nsec + tomono.tv_nsec + nsecs); ts->tv_nsec + tomono.tv_nsec + nsecs);
@@ -313,7 +313,7 @@ void getnstime_raw_and_real(struct times @@ -313,7 +313,7 @@ void getnstime_raw_and_real(struct timespec *ts_raw, struct timespec *ts_real)
do { do {
u32 arch_offset; u32 arch_offset;
@ -293,7 +294,7 @@ Index: linux-3.2/kernel/time/timekeeping.c
*ts_raw = raw_time; *ts_raw = raw_time;
*ts_real = xtime; *ts_real = xtime;
@@ -326,7 +326,7 @@ void getnstime_raw_and_real(struct times @@ -326,7 +326,7 @@ void getnstime_raw_and_real(struct timespec *ts_raw, struct timespec *ts_real)
nsecs_raw += arch_offset; nsecs_raw += arch_offset;
nsecs_real += arch_offset; nsecs_real += arch_offset;
@ -302,7 +303,7 @@ Index: linux-3.2/kernel/time/timekeeping.c
timespec_add_ns(ts_raw, nsecs_raw); timespec_add_ns(ts_raw, nsecs_raw);
timespec_add_ns(ts_real, nsecs_real); timespec_add_ns(ts_real, nsecs_real);
@@ -365,7 +365,8 @@ int do_settimeofday(const struct timespe @@ -365,7 +365,8 @@ int do_settimeofday(const struct timespec *tv)
if ((unsigned long)tv->tv_nsec >= NSEC_PER_SEC) if ((unsigned long)tv->tv_nsec >= NSEC_PER_SEC)
return -EINVAL; return -EINVAL;
@ -312,7 +313,7 @@ Index: linux-3.2/kernel/time/timekeeping.c
timekeeping_forward_now(); timekeeping_forward_now();
@@ -381,7 +382,8 @@ int do_settimeofday(const struct timespe @@ -381,7 +382,8 @@ int do_settimeofday(const struct timespec *tv)
update_vsyscall(&xtime, &wall_to_monotonic, timekeeper.clock, update_vsyscall(&xtime, &wall_to_monotonic, timekeeper.clock,
timekeeper.mult); timekeeper.mult);
@ -322,7 +323,7 @@ Index: linux-3.2/kernel/time/timekeeping.c
/* signal hrtimers about time change */ /* signal hrtimers about time change */
clock_was_set(); clock_was_set();
@@ -405,7 +407,8 @@ int timekeeping_inject_offset(struct tim @@ -405,7 +407,8 @@ int timekeeping_inject_offset(struct timespec *ts)
if ((unsigned long)ts->tv_nsec >= NSEC_PER_SEC) if ((unsigned long)ts->tv_nsec >= NSEC_PER_SEC)
return -EINVAL; return -EINVAL;
@ -332,7 +333,7 @@ Index: linux-3.2/kernel/time/timekeeping.c
timekeeping_forward_now(); timekeeping_forward_now();
@@ -418,7 +421,8 @@ int timekeeping_inject_offset(struct tim @@ -418,7 +421,8 @@ int timekeeping_inject_offset(struct timespec *ts)
update_vsyscall(&xtime, &wall_to_monotonic, timekeeper.clock, update_vsyscall(&xtime, &wall_to_monotonic, timekeeper.clock,
timekeeper.mult); timekeeper.mult);
@ -342,7 +343,7 @@ Index: linux-3.2/kernel/time/timekeeping.c
/* signal hrtimers about time change */ /* signal hrtimers about time change */
clock_was_set(); clock_was_set();
@@ -490,11 +494,11 @@ void getrawmonotonic(struct timespec *ts @@ -490,11 +494,11 @@ void getrawmonotonic(struct timespec *ts)
s64 nsecs; s64 nsecs;
do { do {
@ -390,7 +391,7 @@ Index: linux-3.2/kernel/time/timekeeping.c
} }
/* time in seconds when suspend began */ /* time in seconds when suspend began */
@@ -640,7 +646,8 @@ void timekeeping_inject_sleeptime(struct @@ -640,7 +646,8 @@ void timekeeping_inject_sleeptime(struct timespec *delta)
if (!(ts.tv_sec == 0 && ts.tv_nsec == 0)) if (!(ts.tv_sec == 0 && ts.tv_nsec == 0))
return; return;
@ -400,7 +401,7 @@ Index: linux-3.2/kernel/time/timekeeping.c
timekeeping_forward_now(); timekeeping_forward_now();
__timekeeping_inject_sleeptime(delta); __timekeeping_inject_sleeptime(delta);
@@ -650,7 +657,8 @@ void timekeeping_inject_sleeptime(struct @@ -650,7 +657,8 @@ void timekeeping_inject_sleeptime(struct timespec *delta)
update_vsyscall(&xtime, &wall_to_monotonic, timekeeper.clock, update_vsyscall(&xtime, &wall_to_monotonic, timekeeper.clock,
timekeeper.mult); timekeeper.mult);
@ -450,7 +451,7 @@ Index: linux-3.2/kernel/time/timekeeping.c
clockevents_notify(CLOCK_EVT_NOTIFY_SUSPEND, NULL); clockevents_notify(CLOCK_EVT_NOTIFY_SUSPEND, NULL);
clocksource_suspend(); clocksource_suspend();
@@ -1101,13 +1113,13 @@ void get_monotonic_boottime(struct times @@ -1101,13 +1113,13 @@ void get_monotonic_boottime(struct timespec *ts)
WARN_ON(timekeeping_suspended); WARN_ON(timekeeping_suspended);
do { do {
@ -466,7 +467,7 @@ Index: linux-3.2/kernel/time/timekeeping.c
set_normalized_timespec(ts, ts->tv_sec + tomono.tv_sec + sleep.tv_sec, set_normalized_timespec(ts, ts->tv_sec + tomono.tv_sec + sleep.tv_sec,
ts->tv_nsec + tomono.tv_nsec + sleep.tv_nsec + nsecs); ts->tv_nsec + tomono.tv_nsec + sleep.tv_nsec + nsecs);
@@ -1158,10 +1170,10 @@ struct timespec current_kernel_time(void @@ -1158,10 +1170,10 @@ struct timespec current_kernel_time(void)
unsigned long seq; unsigned long seq;
do { do {
@ -479,7 +480,7 @@ Index: linux-3.2/kernel/time/timekeeping.c
return now; return now;
} }
@@ -1173,11 +1185,11 @@ struct timespec get_monotonic_coarse(voi @@ -1173,11 +1185,11 @@ struct timespec get_monotonic_coarse(void)
unsigned long seq; unsigned long seq;
do { do {
@ -493,7 +494,7 @@ Index: linux-3.2/kernel/time/timekeeping.c
set_normalized_timespec(&now, now.tv_sec + mono.tv_sec, set_normalized_timespec(&now, now.tv_sec + mono.tv_sec,
now.tv_nsec + mono.tv_nsec); now.tv_nsec + mono.tv_nsec);
@@ -1209,11 +1221,11 @@ void get_xtime_and_monotonic_and_sleep_o @@ -1209,11 +1221,11 @@ void get_xtime_and_monotonic_and_sleep_offset(struct timespec *xtim,
unsigned long seq; unsigned long seq;
do { do {
@ -531,3 +532,6 @@ Index: linux-3.2/kernel/time/timekeeping.c
+ write_seqcount_end(&xtime_seq); + write_seqcount_end(&xtime_seq);
+ raw_spin_unlock(&xtime_lock); + raw_spin_unlock(&xtime_lock);
} }
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: intel_idle: Convert i7300_idle_lock to raw spinlock From 7e4c6f7de42bc1567381698fc906cc2ad9c2e593 Mon Sep 17 00:00:00 2001
From: Mike Galbraith <efault@gmx.de> From: Mike Galbraith <efault@gmx.de>
Date: Wed, 07 Dec 2011 12:48:42 +0100 Date: Wed, 7 Dec 2011 12:48:42 +0100
Subject: [PATCH 023/267] 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. 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 <efault@gmx.de>
Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Steven Rostedt <rostedt@goodmis.org>
Link: http://lkml.kernel.org/r/1323258522.5057.73.camel@marge.simson.net Link: http://lkml.kernel.org/r/1323258522.5057.73.camel@marge.simson.net
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
drivers/idle/i7300_idle.c | 8 ++++---- drivers/idle/i7300_idle.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-) 1 file changed, 4 insertions(+), 4 deletions(-)
Index: linux-3.2/drivers/idle/i7300_idle.c diff --git a/drivers/idle/i7300_idle.c b/drivers/idle/i7300_idle.c
=================================================================== index c976285..5537d7c 100644
--- linux-3.2.orig/drivers/idle/i7300_idle.c --- a/drivers/idle/i7300_idle.c
+++ linux-3.2/drivers/idle/i7300_idle.c +++ b/drivers/idle/i7300_idle.c
@@ -75,7 +75,7 @@ static unsigned long past_skip; @@ -75,7 +75,7 @@ static unsigned long past_skip;
static struct pci_dev *fbd_dev; static struct pci_dev *fbd_dev;
@ -40,7 +40,7 @@ Index: linux-3.2/drivers/idle/i7300_idle.c
static int i7300_idle_active; static int i7300_idle_active;
static u8 i7300_idle_thrtctl_saved; 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(); idle_begin_time = ktime_get();
} }
@ -49,7 +49,7 @@ Index: linux-3.2/drivers/idle/i7300_idle.c
if (val == IDLE_START) { if (val == IDLE_START) {
cpumask_set_cpu(smp_processor_id(), idle_cpumask); 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: end:
@ -67,3 +67,6 @@ Index: linux-3.2/drivers/idle/i7300_idle.c
total_us = 0; total_us = 0;
if (i7300_idle_platform_probe(&fbd_dev, &ioat_dev, forceload)) if (i7300_idle_platform_probe(&fbd_dev, &ioat_dev, forceload))
--
1.7.10

View File

@ -1,6 +1,8 @@
Subject: mm: memcg: shorten preempt-disabled section around event checks From 2d38d140493b8b52deebbe11692a71e4513b7605 Mon Sep 17 00:00:00 2001
From: Johannes Weiner <hannes@cmpxchg.org> From: Johannes Weiner <hannes@cmpxchg.org>
Date: Thu, 17 Nov 2011 07:49:25 +0100 Date: Thu, 17 Nov 2011 07:49:25 +0100
Subject: [PATCH 024/267] mm: memcg: shorten preempt-disabled section around
event checks
Only the ratelimit checks themselves have to run with preemption Only the ratelimit checks themselves have to run with preemption
disabled, the resulting actions - checking for usage thresholds, disabled, the resulting actions - checking for usage thresholds,
@ -12,18 +14,14 @@ Tested-by: Luis Henriques <henrix@camandro.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
mm/memcontrol.c | 73 ++++++++++++++++++++++++++------------------------------ mm/memcontrol.c | 73 ++++++++++++++++++++++++++-----------------------------
1 file changed, 35 insertions(+), 38 deletions(-) 1 file changed, 35 insertions(+), 38 deletions(-)
Thomas, HTH and it is probably interesting for upstream as well. diff --git a/mm/memcontrol.c b/mm/memcontrol.c
Unfortunately, I'm in the middle of moving right now, so this is index 778554f..abf5497 100644
untested except for compiling. --- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
Index: linux-3.2/mm/memcontrol.c @@ -683,37 +683,32 @@ static unsigned long mem_cgroup_nr_lru_pages(struct mem_cgroup *memcg,
===================================================================
--- linux-3.2.orig/mm/memcontrol.c
+++ linux-3.2/mm/memcontrol.c
@@ -683,37 +683,32 @@ static unsigned long mem_cgroup_nr_lru_p
return total; return total;
} }
@ -80,7 +78,7 @@ Index: linux-3.2/mm/memcontrol.c
} }
/* /*
@@ -724,25 +719,27 @@ static void memcg_check_events(struct me @@ -724,25 +719,27 @@ static void memcg_check_events(struct mem_cgroup *memcg, struct page *page)
{ {
preempt_disable(); preempt_disable();
/* threshold event is triggered in finer grain than soft limit */ /* threshold event is triggered in finer grain than soft limit */
@ -122,3 +120,6 @@ Index: linux-3.2/mm/memcontrol.c
} }
static struct mem_cgroup *mem_cgroup_from_cont(struct cgroup *cont) static struct mem_cgroup *mem_cgroup_from_cont(struct cgroup *cont)
--
1.7.10

View File

@ -1,6 +1,8 @@
From ee9d814d8872fc578eb31771307b2b6a8f5822f8 Mon Sep 17 00:00:00 2001
From: Steven Rostedt <rostedt@goodmis.org> From: Steven Rostedt <rostedt@goodmis.org>
Date: Thu, 29 Sep 2011 12:24:30 -0500 Date: Thu, 29 Sep 2011 12:24:30 -0500
Subject: tracing: Account for preempt off in preempt_schedule() Subject: [PATCH 025/267] tracing: Account for preempt off in
preempt_schedule()
The preempt_schedule() uses the preempt_disable_notrace() version The preempt_schedule() uses the preempt_disable_notrace() version
because it can cause infinite recursion by the function tracer as because it can cause infinite recursion by the function tracer as
@ -25,11 +27,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/sched.c | 9 +++++++++ kernel/sched.c | 9 +++++++++
1 file changed, 9 insertions(+) 1 file changed, 9 insertions(+)
Index: linux-3.2/kernel/sched.c diff --git a/kernel/sched.c b/kernel/sched.c
=================================================================== index a39494e..6b32395 100644
--- linux-3.2.orig/kernel/sched.c --- a/kernel/sched.c
+++ linux-3.2/kernel/sched.c +++ b/kernel/sched.c
@@ -4520,7 +4520,16 @@ asmlinkage void __sched notrace preempt_ @@ -4520,7 +4520,16 @@ asmlinkage void __sched notrace preempt_schedule(void)
do { do {
add_preempt_count_notrace(PREEMPT_ACTIVE); add_preempt_count_notrace(PREEMPT_ACTIVE);
@ -46,3 +48,6 @@ Index: linux-3.2/kernel/sched.c
sub_preempt_count_notrace(PREEMPT_ACTIVE); sub_preempt_count_notrace(PREEMPT_ACTIVE);
/* /*
--
1.7.10

View File

@ -1,17 +1,18 @@
Subject: signal-revert-ptrace-preempt-magic.patch From f5252418489d88d27411fb576294a1e55dbb03b4 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Wed, 21 Sep 2011 19:57:12 +0200 Date: Wed, 21 Sep 2011 19:57:12 +0200
Subject: [PATCH 026/267] signal-revert-ptrace-preempt-magic.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
kernel/signal.c | 8 -------- kernel/signal.c | 8 --------
1 file changed, 8 deletions(-) 1 file changed, 8 deletions(-)
Index: linux-3.2/kernel/signal.c diff --git a/kernel/signal.c b/kernel/signal.c
=================================================================== index 2065515..d8b0b21 100644
--- linux-3.2.orig/kernel/signal.c --- a/kernel/signal.c
+++ linux-3.2/kernel/signal.c +++ b/kernel/signal.c
@@ -1857,15 +1857,7 @@ static void ptrace_stop(int exit_code, i @@ -1857,15 +1857,7 @@ static void ptrace_stop(int exit_code, int why, int clear_code, siginfo_t *info)
if (gstop_done && ptrace_reparented(current)) if (gstop_done && ptrace_reparented(current))
do_notify_parent_cldstop(current, false, why); do_notify_parent_cldstop(current, false, why);
@ -27,3 +28,6 @@ Index: linux-3.2/kernel/signal.c
schedule(); schedule();
} else { } else {
/* /*
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: arm: Mark pmu interupt IRQF_NO_THREAD From 8aa76e7290f80f472b9aebdaf8ae7d627d579359 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Wed, 16 Mar 2011 14:45:31 +0100 Date: Wed, 16 Mar 2011 14:45:31 +0100
Subject: [PATCH 027/267] arm: Mark pmu interupt IRQF_NO_THREAD
PMU interrupt must not be threaded. Remove IRQF_DISABLED while at it PMU interrupt must not be threaded. Remove IRQF_DISABLED while at it
as we run all handlers with interrupts disabled anyway. as we run all handlers with interrupts disabled anyway.
@ -10,11 +11,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
arch/arm/kernel/perf_event.c | 2 +- arch/arm/kernel/perf_event.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-) 1 file changed, 1 insertion(+), 1 deletion(-)
Index: linux-3.2/arch/arm/kernel/perf_event.c diff --git a/arch/arm/kernel/perf_event.c b/arch/arm/kernel/perf_event.c
=================================================================== index ecebb89..e1286fb 100644
--- linux-3.2.orig/arch/arm/kernel/perf_event.c --- a/arch/arm/kernel/perf_event.c
+++ linux-3.2/arch/arm/kernel/perf_event.c +++ b/arch/arm/kernel/perf_event.c
@@ -441,7 +441,7 @@ armpmu_reserve_hardware(struct arm_pmu * @@ -435,7 +435,7 @@ armpmu_reserve_hardware(struct arm_pmu *armpmu)
} }
err = request_irq(irq, handle_irq, err = request_irq(irq, handle_irq,
@ -23,3 +24,6 @@ Index: linux-3.2/arch/arm/kernel/perf_event.c
"arm-pmu", armpmu); "arm-pmu", armpmu);
if (err) { if (err) {
pr_err("unable to request IRQ%d for ARM PMU counters\n", pr_err("unable to request IRQ%d for ARM PMU counters\n",
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: arm: Allow forced irq threading From d24eb79d3953d59e4a232bb66d6182d00007c02d Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Sat, 16 Jul 2011 13:15:20 +0200 Date: Sat, 16 Jul 2011 13:15:20 +0200
Subject: [PATCH 028/267] arm: Allow forced irq threading
All timer interrupts and the perf interrupt are marked NO_THREAD, so All timer interrupts and the perf interrupt are marked NO_THREAD, so
its safe to allow forced interrupt threading. its safe to allow forced interrupt threading.
@ -10,10 +11,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
arch/arm/Kconfig | 1 + arch/arm/Kconfig | 1 +
1 file changed, 1 insertion(+) 1 file changed, 1 insertion(+)
Index: linux-3.2/arch/arm/Kconfig diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
=================================================================== index ab3740e..fc327b8 100644
--- linux-3.2.orig/arch/arm/Kconfig --- a/arch/arm/Kconfig
+++ linux-3.2/arch/arm/Kconfig +++ b/arch/arm/Kconfig
@@ -29,6 +29,7 @@ config ARM @@ -29,6 +29,7 @@ config ARM
select HAVE_GENERIC_HARDIRQS select HAVE_GENERIC_HARDIRQS
select HAVE_SPARSE_IRQ select HAVE_SPARSE_IRQ
@ -22,3 +23,6 @@ Index: linux-3.2/arch/arm/Kconfig
select CPU_PM if (SUSPEND || CPU_IDLE) select CPU_PM if (SUSPEND || CPU_IDLE)
help help
The ARM series is a line of low-power-consumption RISC chip designs The ARM series is a line of low-power-consumption RISC chip designs
--
1.7.10

View File

@ -1,7 +1,7 @@
Subject: preempt-rt: Convert arm boot_lock to raw From b4413229a63e7c48b6f26a03eb74e418dce27d49 Mon Sep 17 00:00:00 2001
From: Frank Rowand <frank.rowand@am.sony.com> From: Frank Rowand <frank.rowand@am.sony.com>
Date: Mon, 19 Sep 2011 14:51:14 -0700 Date: Mon, 19 Sep 2011 14:51:14 -0700
Subject: [PATCH 029/267] preempt-rt: Convert arm boot_lock to raw
The arm boot_lock is used by the secondary processor startup code. The locking 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. task is the idle thread, which has idle->sched_class == &idle_sched_class.
@ -28,10 +28,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
arch/arm/plat-versatile/platsmp.c | 10 +++++----- arch/arm/plat-versatile/platsmp.c | 10 +++++-----
6 files changed, 31 insertions(+), 31 deletions(-) 6 files changed, 31 insertions(+), 31 deletions(-)
Index: linux-3.2/arch/arm/mach-exynos/platsmp.c diff --git a/arch/arm/mach-exynos/platsmp.c b/arch/arm/mach-exynos/platsmp.c
=================================================================== index 69ffb2f..fe321b0 100644
--- linux-3.2.orig/arch/arm/mach-exynos/platsmp.c --- a/arch/arm/mach-exynos/platsmp.c
+++ linux-3.2/arch/arm/mach-exynos/platsmp.c +++ b/arch/arm/mach-exynos/platsmp.c
@@ -63,7 +63,7 @@ static void __iomem *scu_base_addr(void) @@ -63,7 +63,7 @@ static void __iomem *scu_base_addr(void)
return (void __iomem *)(S5P_VA_SCU); return (void __iomem *)(S5P_VA_SCU);
} }
@ -41,7 +41,7 @@ Index: linux-3.2/arch/arm/mach-exynos/platsmp.c
static void __cpuinit exynos4_gic_secondary_init(void) static void __cpuinit exynos4_gic_secondary_init(void)
{ {
@@ -108,8 +108,8 @@ void __cpuinit platform_secondary_init(u @@ -108,8 +108,8 @@ void __cpuinit platform_secondary_init(unsigned int cpu)
/* /*
* Synchronise with the boot thread. * Synchronise with the boot thread.
*/ */
@ -52,7 +52,7 @@ Index: linux-3.2/arch/arm/mach-exynos/platsmp.c
} }
int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle) int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
@@ -120,7 +120,7 @@ int __cpuinit boot_secondary(unsigned in @@ -120,7 +120,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
* Set synchronisation state between this boot processor * Set synchronisation state between this boot processor
* and the secondary one * and the secondary one
*/ */
@ -61,7 +61,7 @@ Index: linux-3.2/arch/arm/mach-exynos/platsmp.c
/* /*
* The secondary processor is waiting to be released from * The secondary processor is waiting to be released from
@@ -149,7 +149,7 @@ int __cpuinit boot_secondary(unsigned in @@ -149,7 +149,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
if (timeout == 0) { if (timeout == 0) {
printk(KERN_ERR "cpu1 power enable failed"); printk(KERN_ERR "cpu1 power enable failed");
@ -70,7 +70,7 @@ Index: linux-3.2/arch/arm/mach-exynos/platsmp.c
return -ETIMEDOUT; return -ETIMEDOUT;
} }
} }
@@ -177,7 +177,7 @@ int __cpuinit boot_secondary(unsigned in @@ -177,7 +177,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
* now the secondary core is starting up let it run its * now the secondary core is starting up let it run its
* calibrations, then wait for it to finish * calibrations, then wait for it to finish
*/ */
@ -79,10 +79,10 @@ Index: linux-3.2/arch/arm/mach-exynos/platsmp.c
return pen_release != -1 ? -ENOSYS : 0; return pen_release != -1 ? -ENOSYS : 0;
} }
Index: linux-3.2/arch/arm/mach-msm/platsmp.c diff --git a/arch/arm/mach-msm/platsmp.c b/arch/arm/mach-msm/platsmp.c
=================================================================== index fdec58a..cad6b81 100644
--- linux-3.2.orig/arch/arm/mach-msm/platsmp.c --- a/arch/arm/mach-msm/platsmp.c
+++ linux-3.2/arch/arm/mach-msm/platsmp.c +++ b/arch/arm/mach-msm/platsmp.c
@@ -39,7 +39,7 @@ extern void msm_secondary_startup(void); @@ -39,7 +39,7 @@ extern void msm_secondary_startup(void);
*/ */
volatile int pen_release = -1; volatile int pen_release = -1;
@ -92,7 +92,7 @@ Index: linux-3.2/arch/arm/mach-msm/platsmp.c
static inline int get_core_count(void) static inline int get_core_count(void)
{ {
@@ -69,8 +69,8 @@ void __cpuinit platform_secondary_init(u @@ -69,8 +69,8 @@ void __cpuinit platform_secondary_init(unsigned int cpu)
/* /*
* Synchronise with the boot thread. * Synchronise with the boot thread.
*/ */
@ -103,7 +103,7 @@ Index: linux-3.2/arch/arm/mach-msm/platsmp.c
} }
static __cpuinit void prepare_cold_cpu(unsigned int cpu) static __cpuinit void prepare_cold_cpu(unsigned int cpu)
@@ -107,7 +107,7 @@ int __cpuinit boot_secondary(unsigned in @@ -107,7 +107,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
* set synchronisation state between this boot processor * set synchronisation state between this boot processor
* and the secondary one * and the secondary one
*/ */
@ -112,7 +112,7 @@ Index: linux-3.2/arch/arm/mach-msm/platsmp.c
/* /*
* The secondary processor is waiting to be released from * The secondary processor is waiting to be released from
@@ -141,7 +141,7 @@ int __cpuinit boot_secondary(unsigned in @@ -141,7 +141,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
* now the secondary core is starting up let it run its * now the secondary core is starting up let it run its
* calibrations, then wait for it to finish * calibrations, then wait for it to finish
*/ */
@ -121,10 +121,10 @@ Index: linux-3.2/arch/arm/mach-msm/platsmp.c
return pen_release != -1 ? -ENOSYS : 0; return pen_release != -1 ? -ENOSYS : 0;
} }
Index: linux-3.2/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 4412ddb..490de9c 100644
--- linux-3.2.orig/arch/arm/mach-omap2/omap-smp.c --- a/arch/arm/mach-omap2/omap-smp.c
+++ linux-3.2/arch/arm/mach-omap2/omap-smp.c +++ b/arch/arm/mach-omap2/omap-smp.c
@@ -29,7 +29,7 @@ @@ -29,7 +29,7 @@
/* SCU base address */ /* SCU base address */
static void __iomem *scu_base; static void __iomem *scu_base;
@ -134,7 +134,7 @@ Index: linux-3.2/arch/arm/mach-omap2/omap-smp.c
void __cpuinit platform_secondary_init(unsigned int cpu) void __cpuinit platform_secondary_init(unsigned int cpu)
{ {
@@ -43,8 +43,8 @@ void __cpuinit platform_secondary_init(u @@ -43,8 +43,8 @@ void __cpuinit platform_secondary_init(unsigned int cpu)
/* /*
* Synchronise with the boot thread. * Synchronise with the boot thread.
*/ */
@ -145,7 +145,7 @@ Index: linux-3.2/arch/arm/mach-omap2/omap-smp.c
} }
int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle) int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
@@ -53,7 +53,7 @@ int __cpuinit boot_secondary(unsigned in @@ -53,7 +53,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
* Set synchronisation state between this boot processor * Set synchronisation state between this boot processor
* and the secondary one * and the secondary one
*/ */
@ -154,7 +154,7 @@ Index: linux-3.2/arch/arm/mach-omap2/omap-smp.c
/* /*
* Update the AuxCoreBoot0 with boot state for secondary core. * Update the AuxCoreBoot0 with boot state for secondary core.
@@ -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)
* Now the secondary core is starting up let it run its * Now the secondary core is starting up let it run its
* calibrations, then wait for it to finish * calibrations, then wait for it to finish
*/ */
@ -163,10 +163,10 @@ Index: linux-3.2/arch/arm/mach-omap2/omap-smp.c
return 0; return 0;
} }
Index: linux-3.2/arch/arm/mach-tegra/platsmp.c diff --git a/arch/arm/mach-tegra/platsmp.c b/arch/arm/mach-tegra/platsmp.c
=================================================================== index 7d2b5d0..571f61a 100644
--- linux-3.2.orig/arch/arm/mach-tegra/platsmp.c --- a/arch/arm/mach-tegra/platsmp.c
+++ linux-3.2/arch/arm/mach-tegra/platsmp.c +++ b/arch/arm/mach-tegra/platsmp.c
@@ -28,7 +28,7 @@ @@ -28,7 +28,7 @@
extern void tegra_secondary_startup(void); extern void tegra_secondary_startup(void);
@ -176,7 +176,7 @@ Index: linux-3.2/arch/arm/mach-tegra/platsmp.c
static void __iomem *scu_base = IO_ADDRESS(TEGRA_ARM_PERIF_BASE); static void __iomem *scu_base = IO_ADDRESS(TEGRA_ARM_PERIF_BASE);
#define EVP_CPU_RESET_VECTOR \ #define EVP_CPU_RESET_VECTOR \
@@ -50,8 +50,8 @@ void __cpuinit platform_secondary_init(u @@ -50,8 +50,8 @@ void __cpuinit platform_secondary_init(unsigned int cpu)
/* /*
* Synchronise with the boot thread. * Synchronise with the boot thread.
*/ */
@ -187,7 +187,7 @@ Index: linux-3.2/arch/arm/mach-tegra/platsmp.c
} }
int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle) int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
@@ -65,7 +65,7 @@ int __cpuinit boot_secondary(unsigned in @@ -65,7 +65,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
* set synchronisation state between this boot processor * set synchronisation state between this boot processor
* and the secondary one * and the secondary one
*/ */
@ -196,7 +196,7 @@ Index: linux-3.2/arch/arm/mach-tegra/platsmp.c
/* set the reset vector to point to the secondary_startup routine */ /* set the reset vector to point to the secondary_startup routine */
@@ -101,7 +101,7 @@ int __cpuinit boot_secondary(unsigned in @@ -101,7 +101,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
* now the secondary core is starting up let it run its * now the secondary core is starting up let it run its
* calibrations, then wait for it to finish * calibrations, then wait for it to finish
*/ */
@ -205,10 +205,10 @@ Index: linux-3.2/arch/arm/mach-tegra/platsmp.c
return 0; return 0;
} }
Index: linux-3.2/arch/arm/mach-ux500/platsmp.c diff --git a/arch/arm/mach-ux500/platsmp.c b/arch/arm/mach-ux500/platsmp.c
=================================================================== index a19e398..9e92c6c 100644
--- linux-3.2.orig/arch/arm/mach-ux500/platsmp.c --- a/arch/arm/mach-ux500/platsmp.c
+++ linux-3.2/arch/arm/mach-ux500/platsmp.c +++ b/arch/arm/mach-ux500/platsmp.c
@@ -57,7 +57,7 @@ static void __iomem *scu_base_addr(void) @@ -57,7 +57,7 @@ static void __iomem *scu_base_addr(void)
return NULL; return NULL;
} }
@ -218,7 +218,7 @@ Index: linux-3.2/arch/arm/mach-ux500/platsmp.c
void __cpuinit platform_secondary_init(unsigned int cpu) void __cpuinit platform_secondary_init(unsigned int cpu)
{ {
@@ -77,8 +77,8 @@ void __cpuinit platform_secondary_init(u @@ -77,8 +77,8 @@ void __cpuinit platform_secondary_init(unsigned int cpu)
/* /*
* Synchronise with the boot thread. * Synchronise with the boot thread.
*/ */
@ -229,7 +229,7 @@ Index: linux-3.2/arch/arm/mach-ux500/platsmp.c
} }
int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle) int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
@@ -89,7 +89,7 @@ int __cpuinit boot_secondary(unsigned in @@ -89,7 +89,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
* set synchronisation state between this boot processor * set synchronisation state between this boot processor
* and the secondary one * and the secondary one
*/ */
@ -238,7 +238,7 @@ Index: linux-3.2/arch/arm/mach-ux500/platsmp.c
/* /*
* The secondary processor is waiting to be released from * The secondary processor is waiting to be released from
@@ -110,7 +110,7 @@ int __cpuinit boot_secondary(unsigned in @@ -110,7 +110,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
* now the secondary core is starting up let it run its * now the secondary core is starting up let it run its
* calibrations, then wait for it to finish * calibrations, then wait for it to finish
*/ */
@ -247,11 +247,11 @@ Index: linux-3.2/arch/arm/mach-ux500/platsmp.c
return pen_release != -1 ? -ENOSYS : 0; return pen_release != -1 ? -ENOSYS : 0;
} }
Index: linux-3.2/arch/arm/plat-versatile/platsmp.c diff --git a/arch/arm/plat-versatile/platsmp.c b/arch/arm/plat-versatile/platsmp.c
=================================================================== index 92f18d3..287bbb5 100644
--- linux-3.2.orig/arch/arm/plat-versatile/platsmp.c --- a/arch/arm/plat-versatile/platsmp.c
+++ linux-3.2/arch/arm/plat-versatile/platsmp.c +++ b/arch/arm/plat-versatile/platsmp.c
@@ -37,7 +37,7 @@ static void __cpuinit write_pen_release( @@ -37,7 +37,7 @@ static void __cpuinit write_pen_release(int val)
outer_clean_range(__pa(&pen_release), __pa(&pen_release + 1)); outer_clean_range(__pa(&pen_release), __pa(&pen_release + 1));
} }
@ -260,7 +260,7 @@ Index: linux-3.2/arch/arm/plat-versatile/platsmp.c
void __cpuinit platform_secondary_init(unsigned int cpu) void __cpuinit platform_secondary_init(unsigned int cpu)
{ {
@@ -57,8 +57,8 @@ void __cpuinit platform_secondary_init(u @@ -57,8 +57,8 @@ void __cpuinit platform_secondary_init(unsigned int cpu)
/* /*
* Synchronise with the boot thread. * Synchronise with the boot thread.
*/ */
@ -271,7 +271,7 @@ Index: linux-3.2/arch/arm/plat-versatile/platsmp.c
} }
int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle) int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
@@ -69,7 +69,7 @@ int __cpuinit boot_secondary(unsigned in @@ -69,7 +69,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
* Set synchronisation state between this boot processor * Set synchronisation state between this boot processor
* and the secondary one * and the secondary one
*/ */
@ -280,7 +280,7 @@ Index: linux-3.2/arch/arm/plat-versatile/platsmp.c
/* /*
* This is really belt and braces; we hold unintended secondary * This is really belt and braces; we hold unintended secondary
@@ -99,7 +99,7 @@ int __cpuinit boot_secondary(unsigned in @@ -99,7 +99,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
* now the secondary core is starting up let it run its * now the secondary core is starting up let it run its
* calibrations, then wait for it to finish * calibrations, then wait for it to finish
*/ */
@ -289,3 +289,6 @@ Index: linux-3.2/arch/arm/plat-versatile/platsmp.c
return pen_release != -1 ? -ENOSYS : 0; return pen_release != -1 ? -ENOSYS : 0;
} }
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: sched: Create schedule_preempt_disabled() From 64b759067a99f8482feb0c2f75f6ce0fde842166 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Mon, 21 Mar 2011 12:09:35 +0100 Date: Mon, 21 Mar 2011 12:09:35 +0100
Subject: [PATCH 030/267] sched: Create schedule_preempt_disabled()
Get rid of the ever repeating: Get rid of the ever repeating:
@ -14,11 +15,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/sched.c | 12 ++++++++++++ kernel/sched.c | 12 ++++++++++++
2 files changed, 13 insertions(+) 2 files changed, 13 insertions(+)
Index: linux-3.2/include/linux/sched.h diff --git a/include/linux/sched.h b/include/linux/sched.h
=================================================================== index 1c4f3e9..9897fe6 100644
--- linux-3.2.orig/include/linux/sched.h --- a/include/linux/sched.h
+++ linux-3.2/include/linux/sched.h +++ b/include/linux/sched.h
@@ -359,6 +359,7 @@ extern signed long schedule_timeout_inte @@ -359,6 +359,7 @@ extern signed long schedule_timeout_interruptible(signed long timeout);
extern signed long schedule_timeout_killable(signed long timeout); extern signed long schedule_timeout_killable(signed long timeout);
extern signed long schedule_timeout_uninterruptible(signed long timeout); extern signed long schedule_timeout_uninterruptible(signed long timeout);
asmlinkage void schedule(void); asmlinkage void schedule(void);
@ -26,10 +27,10 @@ Index: linux-3.2/include/linux/sched.h
extern int mutex_spin_on_owner(struct mutex *lock, struct task_struct *owner); extern int mutex_spin_on_owner(struct mutex *lock, struct task_struct *owner);
struct nsproxy; struct nsproxy;
Index: linux-3.2/kernel/sched.c diff --git a/kernel/sched.c b/kernel/sched.c
=================================================================== index 6b32395..465fd11 100644
--- linux-3.2.orig/kernel/sched.c --- a/kernel/sched.c
+++ linux-3.2/kernel/sched.c +++ b/kernel/sched.c
@@ -4456,6 +4456,18 @@ asmlinkage void __sched schedule(void) @@ -4456,6 +4456,18 @@ asmlinkage void __sched schedule(void)
} }
EXPORT_SYMBOL(schedule); EXPORT_SYMBOL(schedule);
@ -49,3 +50,6 @@ Index: linux-3.2/kernel/sched.c
#ifdef CONFIG_MUTEX_SPIN_ON_OWNER #ifdef CONFIG_MUTEX_SPIN_ON_OWNER
static inline bool owner_running(struct mutex *lock, struct task_struct *owner) static inline bool owner_running(struct mutex *lock, struct task_struct *owner)
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: sched: Use schedule_preempt_disabled() From 662df03fb70d4e277547eaa2adfd7e0d520bb35f Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Mon, 21 Mar 2011 12:33:18 +0100 Date: Mon, 21 Mar 2011 12:33:18 +0100
Subject: [PATCH 031/267] sched: Use schedule_preempt_disabled()
Coccinelle based conversion. Coccinelle based conversion.
@ -36,10 +37,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/softirq.c | 4 +--- kernel/softirq.c | 4 +---
28 files changed, 36 insertions(+), 95 deletions(-) 28 files changed, 36 insertions(+), 95 deletions(-)
Index: linux-3.2/arch/arm/kernel/process.c diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c
=================================================================== index 3d0c6fb..54833ff 100644
--- linux-3.2.orig/arch/arm/kernel/process.c --- a/arch/arm/kernel/process.c
+++ linux-3.2/arch/arm/kernel/process.c +++ b/arch/arm/kernel/process.c
@@ -214,9 +214,7 @@ void cpu_idle(void) @@ -214,9 +214,7 @@ void cpu_idle(void)
} }
leds_event(led_idle_end); leds_event(led_idle_end);
@ -51,10 +52,10 @@ Index: linux-3.2/arch/arm/kernel/process.c
} }
} }
Index: linux-3.2/arch/avr32/kernel/process.c diff --git a/arch/avr32/kernel/process.c b/arch/avr32/kernel/process.c
=================================================================== index ef5a2a0..c8724c9 100644
--- linux-3.2.orig/arch/avr32/kernel/process.c --- a/arch/avr32/kernel/process.c
+++ linux-3.2/arch/avr32/kernel/process.c +++ b/arch/avr32/kernel/process.c
@@ -38,9 +38,7 @@ void cpu_idle(void) @@ -38,9 +38,7 @@ void cpu_idle(void)
while (!need_resched()) while (!need_resched())
cpu_idle_sleep(); cpu_idle_sleep();
@ -66,10 +67,10 @@ Index: linux-3.2/arch/avr32/kernel/process.c
} }
} }
Index: linux-3.2/arch/blackfin/kernel/process.c diff --git a/arch/blackfin/kernel/process.c b/arch/blackfin/kernel/process.c
=================================================================== index 6a80a9e..11acc10 100644
--- linux-3.2.orig/arch/blackfin/kernel/process.c --- a/arch/blackfin/kernel/process.c
+++ linux-3.2/arch/blackfin/kernel/process.c +++ b/arch/blackfin/kernel/process.c
@@ -92,9 +92,7 @@ void cpu_idle(void) @@ -92,9 +92,7 @@ void cpu_idle(void)
while (!need_resched()) while (!need_resched())
idle(); idle();
@ -81,10 +82,10 @@ Index: linux-3.2/arch/blackfin/kernel/process.c
} }
} }
Index: linux-3.2/arch/cris/kernel/process.c diff --git a/arch/cris/kernel/process.c b/arch/cris/kernel/process.c
=================================================================== index aa585e4..d8f50ff 100644
--- linux-3.2.orig/arch/cris/kernel/process.c --- a/arch/cris/kernel/process.c
+++ linux-3.2/arch/cris/kernel/process.c +++ b/arch/cris/kernel/process.c
@@ -115,9 +115,7 @@ void cpu_idle (void) @@ -115,9 +115,7 @@ void cpu_idle (void)
idle = default_idle; idle = default_idle;
idle(); idle();
@ -96,10 +97,10 @@ Index: linux-3.2/arch/cris/kernel/process.c
} }
} }
Index: linux-3.2/arch/frv/kernel/process.c diff --git a/arch/frv/kernel/process.c b/arch/frv/kernel/process.c
=================================================================== index 3901df1..29cc497 100644
--- linux-3.2.orig/arch/frv/kernel/process.c --- a/arch/frv/kernel/process.c
+++ linux-3.2/arch/frv/kernel/process.c +++ b/arch/frv/kernel/process.c
@@ -92,9 +92,7 @@ void cpu_idle(void) @@ -92,9 +92,7 @@ void cpu_idle(void)
idle(); idle();
} }
@ -111,10 +112,10 @@ Index: linux-3.2/arch/frv/kernel/process.c
} }
} }
Index: linux-3.2/arch/h8300/kernel/process.c diff --git a/arch/h8300/kernel/process.c b/arch/h8300/kernel/process.c
=================================================================== index 933bd38..1a173b3 100644
--- linux-3.2.orig/arch/h8300/kernel/process.c --- a/arch/h8300/kernel/process.c
+++ linux-3.2/arch/h8300/kernel/process.c +++ b/arch/h8300/kernel/process.c
@@ -81,9 +81,7 @@ void cpu_idle(void) @@ -81,9 +81,7 @@ void cpu_idle(void)
while (1) { while (1) {
while (!need_resched()) while (!need_resched())
@ -126,10 +127,10 @@ Index: linux-3.2/arch/h8300/kernel/process.c
} }
} }
Index: linux-3.2/arch/ia64/kernel/process.c diff --git a/arch/ia64/kernel/process.c b/arch/ia64/kernel/process.c
=================================================================== index 6d33c5c..9dc52b6 100644
--- linux-3.2.orig/arch/ia64/kernel/process.c --- a/arch/ia64/kernel/process.c
+++ linux-3.2/arch/ia64/kernel/process.c +++ b/arch/ia64/kernel/process.c
@@ -330,9 +330,7 @@ cpu_idle (void) @@ -330,9 +330,7 @@ cpu_idle (void)
normal_xtp(); normal_xtp();
#endif #endif
@ -141,10 +142,10 @@ Index: linux-3.2/arch/ia64/kernel/process.c
check_pgt_cache(); check_pgt_cache();
if (cpu_is_offline(cpu)) if (cpu_is_offline(cpu))
play_dead(); play_dead();
Index: linux-3.2/arch/m32r/kernel/process.c diff --git a/arch/m32r/kernel/process.c b/arch/m32r/kernel/process.c
=================================================================== index 422bea9..3a4a32b 100644
--- linux-3.2.orig/arch/m32r/kernel/process.c --- a/arch/m32r/kernel/process.c
+++ linux-3.2/arch/m32r/kernel/process.c +++ b/arch/m32r/kernel/process.c
@@ -90,9 +90,7 @@ void cpu_idle (void) @@ -90,9 +90,7 @@ void cpu_idle (void)
idle(); idle();
@ -156,10 +157,10 @@ Index: linux-3.2/arch/m32r/kernel/process.c
} }
} }
Index: linux-3.2/arch/m68k/kernel/process_mm.c diff --git a/arch/m68k/kernel/process_mm.c b/arch/m68k/kernel/process_mm.c
=================================================================== index aa4ffb8..c413aa0 100644
--- linux-3.2.orig/arch/m68k/kernel/process_mm.c --- a/arch/m68k/kernel/process_mm.c
+++ linux-3.2/arch/m68k/kernel/process_mm.c +++ b/arch/m68k/kernel/process_mm.c
@@ -94,9 +94,7 @@ void cpu_idle(void) @@ -94,9 +94,7 @@ void cpu_idle(void)
while (1) { while (1) {
while (!need_resched()) while (!need_resched())
@ -171,10 +172,10 @@ Index: linux-3.2/arch/m68k/kernel/process_mm.c
} }
} }
Index: linux-3.2/arch/m68k/kernel/process_no.c diff --git a/arch/m68k/kernel/process_no.c b/arch/m68k/kernel/process_no.c
=================================================================== index 5e1078c..f7fe6c3 100644
--- linux-3.2.orig/arch/m68k/kernel/process_no.c --- a/arch/m68k/kernel/process_no.c
+++ linux-3.2/arch/m68k/kernel/process_no.c +++ b/arch/m68k/kernel/process_no.c
@@ -73,9 +73,7 @@ void cpu_idle(void) @@ -73,9 +73,7 @@ void cpu_idle(void)
/* endless idle loop with no priority at all */ /* endless idle loop with no priority at all */
while (1) { while (1) {
@ -186,10 +187,10 @@ Index: linux-3.2/arch/m68k/kernel/process_no.c
} }
} }
Index: linux-3.2/arch/microblaze/kernel/process.c diff --git a/arch/microblaze/kernel/process.c b/arch/microblaze/kernel/process.c
=================================================================== index 95cc295..d3b2b42 100644
--- linux-3.2.orig/arch/microblaze/kernel/process.c --- a/arch/microblaze/kernel/process.c
+++ linux-3.2/arch/microblaze/kernel/process.c +++ b/arch/microblaze/kernel/process.c
@@ -108,9 +108,7 @@ void cpu_idle(void) @@ -108,9 +108,7 @@ void cpu_idle(void)
idle(); idle();
tick_nohz_restart_sched_tick(); tick_nohz_restart_sched_tick();
@ -201,10 +202,10 @@ Index: linux-3.2/arch/microblaze/kernel/process.c
check_pgt_cache(); check_pgt_cache();
} }
} }
Index: linux-3.2/arch/mips/kernel/process.c diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c
=================================================================== index c47f96e..4dbf66d 100644
--- linux-3.2.orig/arch/mips/kernel/process.c --- a/arch/mips/kernel/process.c
+++ linux-3.2/arch/mips/kernel/process.c +++ b/arch/mips/kernel/process.c
@@ -78,9 +78,7 @@ void __noreturn cpu_idle(void) @@ -78,9 +78,7 @@ void __noreturn cpu_idle(void)
play_dead(); play_dead();
#endif #endif
@ -216,10 +217,10 @@ Index: linux-3.2/arch/mips/kernel/process.c
} }
} }
Index: linux-3.2/arch/mn10300/kernel/process.c diff --git a/arch/mn10300/kernel/process.c b/arch/mn10300/kernel/process.c
=================================================================== index 28eec31..cac401d 100644
--- linux-3.2.orig/arch/mn10300/kernel/process.c --- a/arch/mn10300/kernel/process.c
+++ linux-3.2/arch/mn10300/kernel/process.c +++ b/arch/mn10300/kernel/process.c
@@ -123,9 +123,7 @@ void cpu_idle(void) @@ -123,9 +123,7 @@ void cpu_idle(void)
idle(); idle();
} }
@ -231,10 +232,10 @@ Index: linux-3.2/arch/mn10300/kernel/process.c
} }
} }
Index: linux-3.2/arch/parisc/kernel/process.c diff --git a/arch/parisc/kernel/process.c b/arch/parisc/kernel/process.c
=================================================================== index 4b4b918..f6eb367 100644
--- linux-3.2.orig/arch/parisc/kernel/process.c --- a/arch/parisc/kernel/process.c
+++ linux-3.2/arch/parisc/kernel/process.c +++ b/arch/parisc/kernel/process.c
@@ -71,9 +71,7 @@ void cpu_idle(void) @@ -71,9 +71,7 @@ void cpu_idle(void)
while (1) { while (1) {
while (!need_resched()) while (!need_resched())
@ -246,10 +247,10 @@ Index: linux-3.2/arch/parisc/kernel/process.c
check_pgt_cache(); check_pgt_cache();
} }
} }
Index: linux-3.2/arch/powerpc/kernel/idle.c diff --git a/arch/powerpc/kernel/idle.c b/arch/powerpc/kernel/idle.c
=================================================================== index 39a2baa..f46dae5 100644
--- linux-3.2.orig/arch/powerpc/kernel/idle.c --- a/arch/powerpc/kernel/idle.c
+++ linux-3.2/arch/powerpc/kernel/idle.c +++ b/arch/powerpc/kernel/idle.c
@@ -94,11 +94,11 @@ void cpu_idle(void) @@ -94,11 +94,11 @@ void cpu_idle(void)
HMT_medium(); HMT_medium();
ppc64_runlatch_on(); ppc64_runlatch_on();
@ -266,10 +267,10 @@ Index: linux-3.2/arch/powerpc/kernel/idle.c
} }
} }
Index: linux-3.2/arch/powerpc/platforms/iseries/setup.c diff --git a/arch/powerpc/platforms/iseries/setup.c b/arch/powerpc/platforms/iseries/setup.c
=================================================================== index ea0acbd..e0c5b49 100644
--- linux-3.2.orig/arch/powerpc/platforms/iseries/setup.c --- a/arch/powerpc/platforms/iseries/setup.c
+++ linux-3.2/arch/powerpc/platforms/iseries/setup.c +++ b/arch/powerpc/platforms/iseries/setup.c
@@ -582,9 +582,7 @@ static void iseries_shared_idle(void) @@ -582,9 +582,7 @@ static void iseries_shared_idle(void)
if (hvlpevent_is_pending()) if (hvlpevent_is_pending())
process_iSeries_events(); process_iSeries_events();
@ -292,11 +293,11 @@ Index: linux-3.2/arch/powerpc/platforms/iseries/setup.c
} }
} }
Index: linux-3.2/arch/s390/kernel/process.c diff --git a/arch/s390/kernel/process.c b/arch/s390/kernel/process.c
=================================================================== index 53088e2..fa093f7 100644
--- linux-3.2.orig/arch/s390/kernel/process.c --- a/arch/s390/kernel/process.c
+++ linux-3.2/arch/s390/kernel/process.c +++ b/arch/s390/kernel/process.c
@@ -95,9 +95,7 @@ void cpu_idle(void) @@ -94,9 +94,7 @@ void cpu_idle(void)
while (!need_resched()) while (!need_resched())
default_idle(); default_idle();
tick_nohz_restart_sched_tick(); tick_nohz_restart_sched_tick();
@ -307,10 +308,10 @@ Index: linux-3.2/arch/s390/kernel/process.c
} }
} }
Index: linux-3.2/arch/score/kernel/process.c diff --git a/arch/score/kernel/process.c b/arch/score/kernel/process.c
=================================================================== index 25d0803..2707023 100644
--- linux-3.2.orig/arch/score/kernel/process.c --- a/arch/score/kernel/process.c
+++ linux-3.2/arch/score/kernel/process.c +++ b/arch/score/kernel/process.c
@@ -53,9 +53,7 @@ void __noreturn cpu_idle(void) @@ -53,9 +53,7 @@ void __noreturn cpu_idle(void)
while (!need_resched()) while (!need_resched())
barrier(); barrier();
@ -322,10 +323,10 @@ Index: linux-3.2/arch/score/kernel/process.c
} }
} }
Index: linux-3.2/arch/sh/kernel/idle.c diff --git a/arch/sh/kernel/idle.c b/arch/sh/kernel/idle.c
=================================================================== index db4ecd7..b7c18f0 100644
--- linux-3.2.orig/arch/sh/kernel/idle.c --- a/arch/sh/kernel/idle.c
+++ linux-3.2/arch/sh/kernel/idle.c +++ b/arch/sh/kernel/idle.c
@@ -112,9 +112,7 @@ void cpu_idle(void) @@ -112,9 +112,7 @@ void cpu_idle(void)
} }
@ -337,10 +338,10 @@ Index: linux-3.2/arch/sh/kernel/idle.c
} }
} }
Index: linux-3.2/arch/sparc/kernel/process_32.c diff --git a/arch/sparc/kernel/process_32.c b/arch/sparc/kernel/process_32.c
=================================================================== index f793742..935fdbc 100644
--- linux-3.2.orig/arch/sparc/kernel/process_32.c --- a/arch/sparc/kernel/process_32.c
+++ linux-3.2/arch/sparc/kernel/process_32.c +++ b/arch/sparc/kernel/process_32.c
@@ -113,9 +113,7 @@ void cpu_idle(void) @@ -113,9 +113,7 @@ void cpu_idle(void)
while (!need_resched()) while (!need_resched())
cpu_relax(); cpu_relax();
@ -363,10 +364,10 @@ Index: linux-3.2/arch/sparc/kernel/process_32.c
check_pgt_cache(); check_pgt_cache();
} }
} }
Index: linux-3.2/arch/sparc/kernel/process_64.c diff --git a/arch/sparc/kernel/process_64.c b/arch/sparc/kernel/process_64.c
=================================================================== index 3739a06..8ba0dbe 100644
--- linux-3.2.orig/arch/sparc/kernel/process_64.c --- a/arch/sparc/kernel/process_64.c
+++ linux-3.2/arch/sparc/kernel/process_64.c +++ b/arch/sparc/kernel/process_64.c
@@ -102,15 +102,13 @@ void cpu_idle(void) @@ -102,15 +102,13 @@ void cpu_idle(void)
tick_nohz_restart_sched_tick(); tick_nohz_restart_sched_tick();
@ -387,10 +388,10 @@ Index: linux-3.2/arch/sparc/kernel/process_64.c
} }
} }
Index: linux-3.2/arch/tile/kernel/process.c diff --git a/arch/tile/kernel/process.c b/arch/tile/kernel/process.c
=================================================================== index 9c45d8b..5a8b631 100644
--- linux-3.2.orig/arch/tile/kernel/process.c --- a/arch/tile/kernel/process.c
+++ linux-3.2/arch/tile/kernel/process.c +++ b/arch/tile/kernel/process.c
@@ -106,9 +106,7 @@ void cpu_idle(void) @@ -106,9 +106,7 @@ void cpu_idle(void)
current_thread_info()->status |= TS_POLLING; current_thread_info()->status |= TS_POLLING;
} }
@ -402,10 +403,10 @@ Index: linux-3.2/arch/tile/kernel/process.c
} }
} }
Index: linux-3.2/arch/x86/kernel/process_32.c diff --git a/arch/x86/kernel/process_32.c b/arch/x86/kernel/process_32.c
=================================================================== index 8598296..ada175e3 100644
--- linux-3.2.orig/arch/x86/kernel/process_32.c --- a/arch/x86/kernel/process_32.c
+++ linux-3.2/arch/x86/kernel/process_32.c +++ b/arch/x86/kernel/process_32.c
@@ -117,9 +117,7 @@ void cpu_idle(void) @@ -117,9 +117,7 @@ void cpu_idle(void)
start_critical_timings(); start_critical_timings();
} }
@ -417,10 +418,10 @@ Index: linux-3.2/arch/x86/kernel/process_32.c
} }
} }
Index: linux-3.2/arch/x86/kernel/process_64.c diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c
=================================================================== index 6a364a6..08840ab 100644
--- linux-3.2.orig/arch/x86/kernel/process_64.c --- a/arch/x86/kernel/process_64.c
+++ linux-3.2/arch/x86/kernel/process_64.c +++ b/arch/x86/kernel/process_64.c
@@ -150,9 +150,7 @@ void cpu_idle(void) @@ -150,9 +150,7 @@ void cpu_idle(void)
} }
@ -432,10 +433,10 @@ Index: linux-3.2/arch/x86/kernel/process_64.c
} }
} }
Index: linux-3.2/arch/xtensa/kernel/process.c diff --git a/arch/xtensa/kernel/process.c b/arch/xtensa/kernel/process.c
=================================================================== index 47041e7..2c90047 100644
--- linux-3.2.orig/arch/xtensa/kernel/process.c --- a/arch/xtensa/kernel/process.c
+++ linux-3.2/arch/xtensa/kernel/process.c +++ b/arch/xtensa/kernel/process.c
@@ -113,9 +113,7 @@ void cpu_idle(void) @@ -113,9 +113,7 @@ void cpu_idle(void)
while (1) { while (1) {
while (!need_resched()) while (!need_resched())
@ -447,11 +448,11 @@ Index: linux-3.2/arch/xtensa/kernel/process.c
} }
} }
Index: linux-3.2/init/main.c diff --git a/init/main.c b/init/main.c
=================================================================== index 217ed23..0e274f9 100644
--- linux-3.2.orig/init/main.c --- a/init/main.c
+++ linux-3.2/init/main.c +++ b/init/main.c
@@ -378,11 +378,8 @@ static noinline void __init_refok rest_i @@ -378,11 +378,8 @@ static noinline void __init_refok rest_init(void)
* at least once to get things moving: * at least once to get things moving:
*/ */
init_idle_bootup_task(current); init_idle_bootup_task(current);
@ -464,11 +465,11 @@ Index: linux-3.2/init/main.c
cpu_idle(); cpu_idle();
} }
Index: linux-3.2/kernel/mutex.c diff --git a/kernel/mutex.c b/kernel/mutex.c
=================================================================== index 89096dd..a307cc9 100644
--- linux-3.2.orig/kernel/mutex.c --- a/kernel/mutex.c
+++ linux-3.2/kernel/mutex.c +++ b/kernel/mutex.c
@@ -240,9 +240,7 @@ __mutex_lock_common(struct mutex *lock, @@ -240,9 +240,7 @@ __mutex_lock_common(struct mutex *lock, long state, unsigned int subclass,
/* didn't get the lock, go to sleep: */ /* didn't get the lock, go to sleep: */
spin_unlock_mutex(&lock->wait_lock, flags); spin_unlock_mutex(&lock->wait_lock, flags);
@ -479,11 +480,11 @@ Index: linux-3.2/kernel/mutex.c
spin_lock_mutex(&lock->wait_lock, flags); spin_lock_mutex(&lock->wait_lock, flags);
} }
Index: linux-3.2/kernel/softirq.c diff --git a/kernel/softirq.c b/kernel/softirq.c
=================================================================== index 2c71d91..c9da2c8 100644
--- linux-3.2.orig/kernel/softirq.c --- a/kernel/softirq.c
+++ linux-3.2/kernel/softirq.c +++ b/kernel/softirq.c
@@ -744,9 +744,7 @@ static int run_ksoftirqd(void * __bind_c @@ -744,9 +744,7 @@ static int run_ksoftirqd(void * __bind_cpu)
while (!kthread_should_stop()) { while (!kthread_should_stop()) {
preempt_disable(); preempt_disable();
if (!local_softirq_pending()) { if (!local_softirq_pending()) {
@ -494,3 +495,6 @@ Index: linux-3.2/kernel/softirq.c
} }
__set_current_state(TASK_RUNNING); __set_current_state(TASK_RUNNING);
--
1.7.10

View File

@ -1,21 +1,21 @@
From 244867f1bbbcc44274b4bf053f82e6de83b5e32d Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Fri, 3 Jul 2009 08:44:44 -0500 Date: Fri, 3 Jul 2009 08:44:44 -0500
Subject: signals: Do not wakeup self Subject: [PATCH 032/267] signals: Do not wakeup self
Signals which are delivered by current to current can do without Signals which are delivered by current to current can do without
waking up current :) waking up current :)
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
kernel/signal.c | 3 +++ kernel/signal.c | 3 +++
1 file changed, 3 insertions(+) 1 file changed, 3 insertions(+)
Index: linux-3.2/kernel/signal.c diff --git a/kernel/signal.c b/kernel/signal.c
=================================================================== index d8b0b21..8ad4755 100644
--- linux-3.2.orig/kernel/signal.c --- a/kernel/signal.c
+++ linux-3.2/kernel/signal.c +++ b/kernel/signal.c
@@ -682,6 +682,9 @@ void signal_wake_up(struct task_struct * @@ -682,6 +682,9 @@ void signal_wake_up(struct task_struct *t, int resume)
set_tsk_thread_flag(t, TIF_SIGPENDING); set_tsk_thread_flag(t, TIF_SIGPENDING);
@ -25,3 +25,6 @@ Index: linux-3.2/kernel/signal.c
/* /*
* For SIGKILL, we want to wake it up in the stopped/traced/killable * For SIGKILL, we want to wake it up in the stopped/traced/killable
* case. We don't check t->state here because there is a race with it * case. We don't check t->state here because there is a race with it
--
1.7.10

View File

@ -1,21 +1,21 @@
From 224b94ef7444a37fa715a10779f3a758722c7598 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Fri, 3 Jul 2009 08:29:20 -0500 Date: Fri, 3 Jul 2009 08:29:20 -0500
Subject: posix-timers: Prevent broadcast signals Subject: [PATCH 033/267] posix-timers: Prevent broadcast signals
Posix timers should not send broadcast signals and kernel only Posix timers should not send broadcast signals and kernel only
signals. Prevent it. signals. Prevent it.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
kernel/posix-timers.c | 4 +++- kernel/posix-timers.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-) 1 file changed, 3 insertions(+), 1 deletion(-)
Index: linux-3.2/kernel/posix-timers.c diff --git a/kernel/posix-timers.c b/kernel/posix-timers.c
=================================================================== index 69185ae..7b73c34 100644
--- linux-3.2.orig/kernel/posix-timers.c --- a/kernel/posix-timers.c
+++ linux-3.2/kernel/posix-timers.c +++ b/kernel/posix-timers.c
@@ -439,6 +439,7 @@ static enum hrtimer_restart posix_timer_ @@ -439,6 +439,7 @@ static enum hrtimer_restart posix_timer_fn(struct hrtimer *timer)
static struct pid *good_sigevent(sigevent_t * event) static struct pid *good_sigevent(sigevent_t * event)
{ {
struct task_struct *rtn = current->group_leader; struct task_struct *rtn = current->group_leader;
@ -23,7 +23,7 @@ Index: linux-3.2/kernel/posix-timers.c
if ((event->sigev_notify & SIGEV_THREAD_ID ) && if ((event->sigev_notify & SIGEV_THREAD_ID ) &&
(!(rtn = find_task_by_vpid(event->sigev_notify_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; return NULL;
if (((event->sigev_notify & ~SIGEV_THREAD_ID) != SIGEV_NONE) && if (((event->sigev_notify & ~SIGEV_THREAD_ID) != SIGEV_NONE) &&
@ -33,3 +33,6 @@ Index: linux-3.2/kernel/posix-timers.c
return NULL; return NULL;
return task_pid(rtn); return task_pid(rtn);
--
1.7.10

View File

@ -1,24 +1,24 @@
From 4f199fd1218f10cf419d1c9f9a7ed6c57969320c Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Fri, 3 Jul 2009 08:44:56 -0500 Date: Fri, 3 Jul 2009 08:44:56 -0500
Subject: signals: Allow rt tasks to cache one sigqueue struct Subject: [PATCH 034/267] signals: Allow rt tasks to cache one sigqueue struct
To avoid allocation allow rt tasks to cache one sigqueue struct in To avoid allocation allow rt tasks to cache one sigqueue struct in
task struct. task struct.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
include/linux/sched.h | 1 include/linux/sched.h | 1 +
include/linux/signal.h | 1 include/linux/signal.h | 1 +
kernel/exit.c | 2 - kernel/exit.c | 2 +-
kernel/fork.c | 1 kernel/fork.c | 1 +
kernel/signal.c | 83 ++++++++++++++++++++++++++++++++++++++++++++++--- kernel/signal.c | 83 +++++++++++++++++++++++++++++++++++++++++++++---
5 files changed, 83 insertions(+), 5 deletions(-) 5 files changed, 83 insertions(+), 5 deletions(-)
Index: linux-3.2/include/linux/sched.h diff --git a/include/linux/sched.h b/include/linux/sched.h
=================================================================== index 9897fe6..7268acf 100644
--- linux-3.2.orig/include/linux/sched.h --- a/include/linux/sched.h
+++ linux-3.2/include/linux/sched.h +++ b/include/linux/sched.h
@@ -1387,6 +1387,7 @@ struct task_struct { @@ -1387,6 +1387,7 @@ struct task_struct {
/* signal handlers */ /* signal handlers */
struct signal_struct *signal; struct signal_struct *signal;
@ -27,11 +27,11 @@ Index: linux-3.2/include/linux/sched.h
sigset_t blocked, real_blocked; sigset_t blocked, real_blocked;
sigset_t saved_sigmask; /* restored if set_restore_sigmask() was used */ sigset_t saved_sigmask; /* restored if set_restore_sigmask() was used */
Index: linux-3.2/include/linux/signal.h diff --git a/include/linux/signal.h b/include/linux/signal.h
=================================================================== index a822300..a448900 100644
--- linux-3.2.orig/include/linux/signal.h --- a/include/linux/signal.h
+++ linux-3.2/include/linux/signal.h +++ b/include/linux/signal.h
@@ -229,6 +229,7 @@ static inline void init_sigpending(struc @@ -229,6 +229,7 @@ static inline void init_sigpending(struct sigpending *sig)
} }
extern void flush_sigqueue(struct sigpending *queue); extern void flush_sigqueue(struct sigpending *queue);
@ -39,11 +39,11 @@ Index: linux-3.2/include/linux/signal.h
/* Test if 'sig' is valid signal. Use this instead of testing _NSIG directly */ /* Test if 'sig' is valid signal. Use this instead of testing _NSIG directly */
static inline int valid_signal(unsigned long sig) static inline int valid_signal(unsigned long sig)
Index: linux-3.2/kernel/exit.c diff --git a/kernel/exit.c b/kernel/exit.c
=================================================================== index e6e01b9..9075780 100644
--- linux-3.2.orig/kernel/exit.c --- a/kernel/exit.c
+++ linux-3.2/kernel/exit.c +++ b/kernel/exit.c
@@ -141,7 +141,7 @@ static void __exit_signal(struct task_st @@ -141,7 +141,7 @@ static void __exit_signal(struct task_struct *tsk)
* Do this under ->siglock, we can race with another thread * Do this under ->siglock, we can race with another thread
* doing sigqueue_free() if we have SIGQUEUE_PREALLOC signals. * doing sigqueue_free() if we have SIGQUEUE_PREALLOC signals.
*/ */
@ -52,11 +52,11 @@ Index: linux-3.2/kernel/exit.c
tsk->sighand = NULL; tsk->sighand = NULL;
spin_unlock(&sighand->siglock); spin_unlock(&sighand->siglock);
Index: linux-3.2/kernel/fork.c diff --git a/kernel/fork.c b/kernel/fork.c
=================================================================== index 0acf42c0..d8aa0c7 100644
--- linux-3.2.orig/kernel/fork.c --- a/kernel/fork.c
+++ linux-3.2/kernel/fork.c +++ b/kernel/fork.c
@@ -1131,6 +1131,7 @@ static struct task_struct *copy_process( @@ -1134,6 +1134,7 @@ static struct task_struct *copy_process(unsigned long clone_flags,
spin_lock_init(&p->alloc_lock); spin_lock_init(&p->alloc_lock);
init_sigpending(&p->pending); init_sigpending(&p->pending);
@ -64,11 +64,11 @@ Index: linux-3.2/kernel/fork.c
p->utime = cputime_zero; p->utime = cputime_zero;
p->stime = cputime_zero; p->stime = cputime_zero;
Index: linux-3.2/kernel/signal.c diff --git a/kernel/signal.c b/kernel/signal.c
=================================================================== index 8ad4755..fc1a67a 100644
--- linux-3.2.orig/kernel/signal.c --- a/kernel/signal.c
+++ linux-3.2/kernel/signal.c +++ b/kernel/signal.c
@@ -344,13 +344,45 @@ static bool task_participate_group_stop( @@ -344,13 +344,45 @@ static bool task_participate_group_stop(struct task_struct *task)
return false; return false;
} }
@ -115,7 +115,7 @@ Index: linux-3.2/kernel/signal.c
{ {
struct sigqueue *q = NULL; struct sigqueue *q = NULL;
struct user_struct *user; struct user_struct *user;
@@ -367,7 +399,10 @@ __sigqueue_alloc(int sig, struct task_st @@ -367,7 +399,10 @@ __sigqueue_alloc(int sig, struct task_struct *t, gfp_t flags, int override_rlimi
if (override_rlimit || if (override_rlimit ||
atomic_read(&user->sigpending) <= atomic_read(&user->sigpending) <=
task_rlimit(t, RLIMIT_SIGPENDING)) { task_rlimit(t, RLIMIT_SIGPENDING)) {
@ -127,7 +127,7 @@ Index: linux-3.2/kernel/signal.c
} else { } else {
print_dropped_signal(sig); print_dropped_signal(sig);
} }
@@ -384,6 +419,13 @@ __sigqueue_alloc(int sig, struct task_st @@ -384,6 +419,13 @@ __sigqueue_alloc(int sig, struct task_struct *t, gfp_t flags, int override_rlimi
return q; return q;
} }
@ -141,7 +141,7 @@ Index: linux-3.2/kernel/signal.c
static void __sigqueue_free(struct sigqueue *q) static void __sigqueue_free(struct sigqueue *q)
{ {
if (q->flags & SIGQUEUE_PREALLOC) if (q->flags & SIGQUEUE_PREALLOC)
@@ -393,6 +435,21 @@ static void __sigqueue_free(struct sigqu @@ -393,6 +435,21 @@ static void __sigqueue_free(struct sigqueue *q)
kmem_cache_free(sigqueue_cachep, q); kmem_cache_free(sigqueue_cachep, q);
} }
@ -163,7 +163,7 @@ Index: linux-3.2/kernel/signal.c
void flush_sigqueue(struct sigpending *queue) void flush_sigqueue(struct sigpending *queue)
{ {
struct sigqueue *q; struct sigqueue *q;
@@ -406,6 +463,21 @@ void flush_sigqueue(struct sigpending *q @@ -406,6 +463,21 @@ void flush_sigqueue(struct sigpending *queue)
} }
/* /*
@ -185,7 +185,7 @@ Index: linux-3.2/kernel/signal.c
* Flush all pending signals for a task. * Flush all pending signals for a task.
*/ */
void __flush_signals(struct task_struct *t) void __flush_signals(struct task_struct *t)
@@ -554,7 +626,7 @@ static void collect_signal(int sig, stru @@ -554,7 +626,7 @@ static void collect_signal(int sig, struct sigpending *list, siginfo_t *info)
still_pending: still_pending:
list_del_init(&first->list); list_del_init(&first->list);
copy_siginfo(info, &first->info); copy_siginfo(info, &first->info);
@ -194,7 +194,7 @@ Index: linux-3.2/kernel/signal.c
} else { } else {
/* /*
* Ok, it wasn't in the queue. This must be * Ok, it wasn't in the queue. This must be
@@ -600,6 +672,8 @@ int dequeue_signal(struct task_struct *t @@ -600,6 +672,8 @@ int dequeue_signal(struct task_struct *tsk, sigset_t *mask, siginfo_t *info)
{ {
int signr; int signr;
@ -213,3 +213,6 @@ Index: linux-3.2/kernel/signal.c
if (q) if (q)
q->flags |= SIGQUEUE_PREALLOC; q->flags |= SIGQUEUE_PREALLOC;
--
1.7.10

View File

@ -1,5 +1,7 @@
Subject: signal/x86: Delay calling signals in atomic From 1c54a96e16e5e6f3e9978d231c9db374a68f968e Mon Sep 17 00:00:00 2001
From: Oleg Nesterov <oleg@redhat.com> From: Oleg Nesterov <oleg@redhat.com>
Date: Tue, 10 Apr 2012 14:33:53 -0400
Subject: [PATCH 035/267] signal/x86: Delay calling signals in atomic
On x86_64 we must disable preemption before we enable interrupts On x86_64 we must disable preemption before we enable interrupts
for stack faults, int3 and debugging, because the current task is using for stack faults, int3 and debugging, because the current task is using
@ -28,17 +30,16 @@ Signed-off-by: Oleg Nesterov <oleg@redhat.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
arch/x86/include/asm/signal.h | 13 +++++++++++++ arch/x86/include/asm/signal.h | 13 +++++++++++++
arch/x86/kernel/signal.c | 9 +++++++++ arch/x86/kernel/signal.c | 9 +++++++++
include/linux/sched.h | 4 ++++ include/linux/sched.h | 4 ++++
kernel/signal.c | 37 +++++++++++++++++++++++++++++++++++-- kernel/signal.c | 37 +++++++++++++++++++++++++++++++++++--
4 files changed, 61 insertions(+), 2 deletions(-) 4 files changed, 61 insertions(+), 2 deletions(-)
Index: linux-3.2/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
--- linux-3.2.orig/arch/x86/include/asm/signal.h --- a/arch/x86/include/asm/signal.h
+++ linux-3.2/arch/x86/include/asm/signal.h +++ b/arch/x86/include/asm/signal.h
@@ -31,6 +31,19 @@ typedef struct { @@ -31,6 +31,19 @@ typedef struct {
unsigned long sig[_NSIG_WORDS]; unsigned long sig[_NSIG_WORDS];
} sigset_t; } sigset_t;
@ -59,11 +60,11 @@ Index: linux-3.2/arch/x86/include/asm/signal.h
#else #else
/* Here we must cater to libcs that poke about in kernel headers. */ /* Here we must cater to libcs that poke about in kernel headers. */
Index: linux-3.2/arch/x86/kernel/signal.c diff --git a/arch/x86/kernel/signal.c b/arch/x86/kernel/signal.c
=================================================================== index 54ddaeb2..12c4d53 100644
--- linux-3.2.orig/arch/x86/kernel/signal.c --- a/arch/x86/kernel/signal.c
+++ linux-3.2/arch/x86/kernel/signal.c +++ b/arch/x86/kernel/signal.c
@@ -820,6 +820,15 @@ do_notify_resume(struct pt_regs *regs, v @@ -820,6 +820,15 @@ do_notify_resume(struct pt_regs *regs, void *unused, __u32 thread_info_flags)
mce_notify_process(); mce_notify_process();
#endif /* CONFIG_X86_64 && CONFIG_X86_MCE */ #endif /* CONFIG_X86_64 && CONFIG_X86_MCE */
@ -79,10 +80,10 @@ Index: linux-3.2/arch/x86/kernel/signal.c
/* deal with pending signal delivery */ /* deal with pending signal delivery */
if (thread_info_flags & _TIF_SIGPENDING) if (thread_info_flags & _TIF_SIGPENDING)
do_signal(regs); do_signal(regs);
Index: linux-3.2/include/linux/sched.h diff --git a/include/linux/sched.h b/include/linux/sched.h
=================================================================== index 7268acf..ed2b9f9 100644
--- linux-3.2.orig/include/linux/sched.h --- a/include/linux/sched.h
+++ linux-3.2/include/linux/sched.h +++ b/include/linux/sched.h
@@ -1392,6 +1392,10 @@ struct task_struct { @@ -1392,6 +1392,10 @@ struct task_struct {
sigset_t blocked, real_blocked; sigset_t blocked, real_blocked;
sigset_t saved_sigmask; /* restored if set_restore_sigmask() was used */ sigset_t saved_sigmask; /* restored if set_restore_sigmask() was used */
@ -94,11 +95,11 @@ Index: linux-3.2/include/linux/sched.h
unsigned long sas_ss_sp; unsigned long sas_ss_sp;
size_t sas_ss_size; size_t sas_ss_size;
Index: linux-3.2/kernel/signal.c diff --git a/kernel/signal.c b/kernel/signal.c
=================================================================== index fc1a67a..c8b1bc1 100644
--- linux-3.2.orig/kernel/signal.c --- a/kernel/signal.c
+++ linux-3.2/kernel/signal.c +++ b/kernel/signal.c
@@ -1273,8 +1273,8 @@ int do_send_sig_info(int sig, struct sig @@ -1273,8 +1273,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, * We don't want to have recursive SIGSEGV's etc, for example,
* that is why we also clear SIGNAL_UNKILLABLE. * that is why we also clear SIGNAL_UNKILLABLE.
*/ */
@ -109,7 +110,7 @@ Index: linux-3.2/kernel/signal.c
{ {
unsigned long int flags; unsigned long int flags;
int ret, blocked, ignored; int ret, blocked, ignored;
@@ -1299,6 +1299,39 @@ force_sig_info(int sig, struct siginfo * @@ -1299,6 +1299,39 @@ force_sig_info(int sig, struct siginfo *info, struct task_struct *t)
return ret; return ret;
} }
@ -149,3 +150,6 @@ Index: linux-3.2/kernel/signal.c
/* /*
* Nuke all other threads in the group. * Nuke all other threads in the group.
*/ */
--
1.7.10

View File

@ -1,21 +1,22 @@
From f105d10b4701b0b44c781bc0c37379f3468521a3 Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu> From: Ingo Molnar <mingo@elte.hu>
Date: Fri, 3 Jul 2009 08:29:30 -0500 Date: Fri, 3 Jul 2009 08:29:30 -0500
Subject: generic: Use raw local irq variant for generic cmpxchg Subject: [PATCH 036/267] generic: Use raw local irq variant for generic
cmpxchg
No point in tracing those. No point in tracing those.
Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
include/asm-generic/cmpxchg-local.h | 8 ++++---- include/asm-generic/cmpxchg-local.h | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-) 1 file changed, 4 insertions(+), 4 deletions(-)
Index: linux-3.2/include/asm-generic/cmpxchg-local.h diff --git a/include/asm-generic/cmpxchg-local.h b/include/asm-generic/cmpxchg-local.h
=================================================================== index 2533fdd..d8d4c89 100644
--- linux-3.2.orig/include/asm-generic/cmpxchg-local.h --- a/include/asm-generic/cmpxchg-local.h
+++ linux-3.2/include/asm-generic/cmpxchg-local.h +++ b/include/asm-generic/cmpxchg-local.h
@@ -21,7 +21,7 @@ static inline unsigned long __cmpxchg_lo @@ -21,7 +21,7 @@ static inline unsigned long __cmpxchg_local_generic(volatile void *ptr,
if (size == 8 && sizeof(unsigned long) != 8) if (size == 8 && sizeof(unsigned long) != 8)
wrong_size_cmpxchg(ptr); wrong_size_cmpxchg(ptr);
@ -24,7 +25,7 @@ Index: linux-3.2/include/asm-generic/cmpxchg-local.h
switch (size) { switch (size) {
case 1: prev = *(u8 *)ptr; case 1: prev = *(u8 *)ptr;
if (prev == old) 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: default:
wrong_size_cmpxchg(ptr); wrong_size_cmpxchg(ptr);
} }
@ -33,7 +34,7 @@ Index: linux-3.2/include/asm-generic/cmpxchg-local.h
return prev; 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; u64 prev;
unsigned long flags; unsigned long flags;
@ -47,3 +48,6 @@ Index: linux-3.2/include/asm-generic/cmpxchg-local.h
return prev; return prev;
} }
--
1.7.10

View File

@ -1,21 +1,21 @@
From a908abba18460e32b36e6b183e77b6c7c1cceb94 Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu> From: Ingo Molnar <mingo@elte.hu>
Date: Fri, 3 Jul 2009 08:29:30 -0500 Date: Fri, 3 Jul 2009 08:29:30 -0500
Subject: drivers: random: Reduce preempt disabled region Subject: [PATCH 037/267] drivers: random: Reduce preempt disabled region
No need to keep preemption disabled across the whole function. No need to keep preemption disabled across the whole function.
Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
drivers/char/random.c | 9 +++++---- drivers/char/random.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-) 1 file changed, 5 insertions(+), 4 deletions(-)
Index: linux-3.2/drivers/char/random.c diff --git a/drivers/char/random.c b/drivers/char/random.c
=================================================================== index 6035ab8..786a856 100644
--- linux-3.2.orig/drivers/char/random.c --- a/drivers/char/random.c
+++ linux-3.2/drivers/char/random.c +++ b/drivers/char/random.c
@@ -633,8 +633,11 @@ static void add_timer_randomness(struct @@ -633,8 +633,11 @@ static void add_timer_randomness(struct timer_rand_state *state, unsigned num)
preempt_disable(); preempt_disable();
/* if over the trickle threshold, use only 1 in 4096 samples */ /* if over the trickle threshold, use only 1 in 4096 samples */
if (input_pool.entropy_count > trickle_thresh && if (input_pool.entropy_count > trickle_thresh &&
@ -29,7 +29,7 @@ Index: linux-3.2/drivers/char/random.c
sample.jiffies = jiffies; sample.jiffies = jiffies;
sample.cycles = get_cycles(); sample.cycles = get_cycles();
@@ -676,8 +679,6 @@ static void add_timer_randomness(struct @@ -676,8 +679,6 @@ static void add_timer_randomness(struct timer_rand_state *state, unsigned num)
credit_entropy_bits(&input_pool, credit_entropy_bits(&input_pool,
min_t(int, fls(delta>>1), 11)); min_t(int, fls(delta>>1), 11));
} }
@ -38,3 +38,6 @@ Index: linux-3.2/drivers/char/random.c
} }
void add_input_randomness(unsigned int type, unsigned int code, void add_input_randomness(unsigned int type, unsigned int code,
--
1.7.10

View File

@ -1,6 +1,8 @@
From 31e34bf84003d53073f3fa91d53cd6ac31bfbe58 Mon Sep 17 00:00:00 2001
From: Benedikt Spranger <b.spranger@linutronix.de> From: Benedikt Spranger <b.spranger@linutronix.de>
Date: Sat, 6 Mar 2010 17:47:10 +0100 Date: Sat, 6 Mar 2010 17:47:10 +0100
Subject: ARM: AT91: PIT: Remove irq handler when clock event is unused Subject: [PATCH 038/267] ARM: AT91: PIT: Remove irq handler when clock event
is unused
Setup and remove the interrupt handler in clock event mode selection. Setup and remove the interrupt handler in clock event mode selection.
This avoids calling the (shared) interrupt handler when the device is This avoids calling the (shared) interrupt handler when the device is
@ -8,17 +10,16 @@ not used.
Signed-off-by: Benedikt Spranger <b.spranger@linutronix.de> Signed-off-by: Benedikt Spranger <b.spranger@linutronix.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
arch/arm/mach-at91/at91rm9200_time.c | 2 ++ arch/arm/mach-at91/at91rm9200_time.c | 2 ++
arch/arm/mach-at91/at91sam926x_time.c | 6 +++++- arch/arm/mach-at91/at91sam926x_time.c | 6 +++++-
2 files changed, 7 insertions(+), 1 deletion(-) 2 files changed, 7 insertions(+), 1 deletion(-)
Index: linux-3.2/arch/arm/mach-at91/at91rm9200_time.c diff --git a/arch/arm/mach-at91/at91rm9200_time.c b/arch/arm/mach-at91/at91rm9200_time.c
=================================================================== index 1dd69c8..0666570 100644
--- linux-3.2.orig/arch/arm/mach-at91/at91rm9200_time.c --- a/arch/arm/mach-at91/at91rm9200_time.c
+++ linux-3.2/arch/arm/mach-at91/at91rm9200_time.c +++ b/arch/arm/mach-at91/at91rm9200_time.c
@@ -114,6 +114,7 @@ clkevt32k_mode(enum clock_event_mode mod @@ -114,6 +114,7 @@ clkevt32k_mode(enum clock_event_mode mode, struct clock_event_device *dev)
last_crtr = read_CRTR(); last_crtr = read_CRTR();
switch (mode) { switch (mode) {
case CLOCK_EVT_MODE_PERIODIC: case CLOCK_EVT_MODE_PERIODIC:
@ -26,7 +27,7 @@ Index: linux-3.2/arch/arm/mach-at91/at91rm9200_time.c
/* PIT for periodic irqs; fixed rate of 1/HZ */ /* PIT for periodic irqs; fixed rate of 1/HZ */
irqmask = AT91_ST_PITS; irqmask = AT91_ST_PITS;
at91_sys_write(AT91_ST_PIMR, LATCH); at91_sys_write(AT91_ST_PIMR, LATCH);
@@ -127,6 +128,7 @@ clkevt32k_mode(enum clock_event_mode mod @@ -127,6 +128,7 @@ clkevt32k_mode(enum clock_event_mode mode, struct clock_event_device *dev)
break; break;
case CLOCK_EVT_MODE_SHUTDOWN: case CLOCK_EVT_MODE_SHUTDOWN:
case CLOCK_EVT_MODE_UNUSED: case CLOCK_EVT_MODE_UNUSED:
@ -34,10 +35,10 @@ Index: linux-3.2/arch/arm/mach-at91/at91rm9200_time.c
case CLOCK_EVT_MODE_RESUME: case CLOCK_EVT_MODE_RESUME:
irqmask = 0; irqmask = 0;
break; break;
Index: linux-3.2/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 4ba8549..97d1e14 100644
--- linux-3.2.orig/arch/arm/mach-at91/at91sam926x_time.c --- a/arch/arm/mach-at91/at91sam926x_time.c
+++ linux-3.2/arch/arm/mach-at91/at91sam926x_time.c +++ b/arch/arm/mach-at91/at91sam926x_time.c
@@ -54,7 +54,7 @@ static struct clocksource pit_clk = { @@ -54,7 +54,7 @@ static struct clocksource pit_clk = {
.flags = CLOCK_SOURCE_IS_CONTINUOUS, .flags = CLOCK_SOURCE_IS_CONTINUOUS,
}; };
@ -47,7 +48,7 @@ Index: linux-3.2/arch/arm/mach-at91/at91sam926x_time.c
/* /*
* Clockevent device: interrupts every 1/HZ (== pit_cycles * MCK/16) * Clockevent device: interrupts every 1/HZ (== pit_cycles * MCK/16)
*/ */
@@ -63,6 +63,9 @@ pit_clkevt_mode(enum clock_event_mode mo @@ -63,6 +63,9 @@ pit_clkevt_mode(enum clock_event_mode mode, struct clock_event_device *dev)
{ {
switch (mode) { switch (mode) {
case CLOCK_EVT_MODE_PERIODIC: case CLOCK_EVT_MODE_PERIODIC:
@ -57,7 +58,7 @@ Index: linux-3.2/arch/arm/mach-at91/at91sam926x_time.c
/* update clocksource counter */ /* update clocksource counter */
pit_cnt += pit_cycle * PIT_PICNT(at91_sys_read(AT91_PIT_PIVR)); pit_cnt += pit_cycle * PIT_PICNT(at91_sys_read(AT91_PIT_PIVR));
at91_sys_write(AT91_PIT_MR, (pit_cycle - 1) | AT91_PIT_PITEN at91_sys_write(AT91_PIT_MR, (pit_cycle - 1) | AT91_PIT_PITEN
@@ -75,6 +78,7 @@ pit_clkevt_mode(enum clock_event_mode mo @@ -75,6 +78,7 @@ pit_clkevt_mode(enum clock_event_mode mode, struct clock_event_device *dev)
case CLOCK_EVT_MODE_UNUSED: case CLOCK_EVT_MODE_UNUSED:
/* disable irq, leaving the clocksource active */ /* disable irq, leaving the clocksource active */
at91_sys_write(AT91_PIT_MR, (pit_cycle - 1) | AT91_PIT_PITEN); at91_sys_write(AT91_PIT_MR, (pit_cycle - 1) | AT91_PIT_PITEN);
@ -65,3 +66,6 @@ Index: linux-3.2/arch/arm/mach-at91/at91sam926x_time.c
break; break;
case CLOCK_EVT_MODE_RESUME: case CLOCK_EVT_MODE_RESUME:
break; break;
--
1.7.10

View File

@ -1,22 +1,23 @@
From b4217e96b0c71c84b8edbca7b99813b5f0f72033 Mon Sep 17 00:00:00 2001
From: Benedikt Spranger <b.spranger@linutronix.de> From: Benedikt Spranger <b.spranger@linutronix.de>
Date: Mon, 8 Mar 2010 18:57:04 +0100 Date: Mon, 8 Mar 2010 18:57:04 +0100
Subject: clocksource: TCLIB: Allow higher clock rates for clock events Subject: [PATCH 039/267] clocksource: TCLIB: Allow higher clock rates for
clock events
As default the TCLIB uses the 32KiHz base clock rate 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. Add a compile time selection to allow higher clock resulution.
Signed-off-by: Benedikt Spranger <b.spranger@linutronix.de> Signed-off-by: Benedikt Spranger <b.spranger@linutronix.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
drivers/clocksource/tcb_clksrc.c | 44 +++++++++++++++++++++++---------------- drivers/clocksource/tcb_clksrc.c | 44 ++++++++++++++++++++++----------------
drivers/misc/Kconfig | 11 +++++++-- drivers/misc/Kconfig | 11 ++++++++--
2 files changed, 35 insertions(+), 20 deletions(-) 2 files changed, 35 insertions(+), 20 deletions(-)
Index: linux-3.2/drivers/clocksource/tcb_clksrc.c diff --git a/drivers/clocksource/tcb_clksrc.c b/drivers/clocksource/tcb_clksrc.c
=================================================================== index 79c47e8..8976b3d 100644
--- linux-3.2.orig/drivers/clocksource/tcb_clksrc.c --- a/drivers/clocksource/tcb_clksrc.c
+++ linux-3.2/drivers/clocksource/tcb_clksrc.c +++ b/drivers/clocksource/tcb_clksrc.c
@@ -21,8 +21,7 @@ @@ -21,8 +21,7 @@
* resolution better than 200 nsec). * resolution better than 200 nsec).
* *
@ -35,7 +36,7 @@ Index: linux-3.2/drivers/clocksource/tcb_clksrc.c
void __iomem *regs; void __iomem *regs;
}; };
@@ -76,13 +76,6 @@ static struct tc_clkevt_device *to_tc_cl @@ -76,13 +76,6 @@ static struct tc_clkevt_device *to_tc_clkevt(struct clock_event_device *clkevt)
return container_of(clkevt, struct tc_clkevt_device, clkevt); return container_of(clkevt, struct tc_clkevt_device, clkevt);
} }
@ -49,7 +50,7 @@ Index: linux-3.2/drivers/clocksource/tcb_clksrc.c
static u32 timer_clock; static u32 timer_clock;
static void tc_mode(enum clock_event_mode m, struct clock_event_device *d) static void tc_mode(enum clock_event_mode m, struct clock_event_device *d)
@@ -105,11 +98,12 @@ static void tc_mode(enum clock_event_mod @@ -105,11 +98,12 @@ static void tc_mode(enum clock_event_mode m, struct clock_event_device *d)
case CLOCK_EVT_MODE_PERIODIC: case CLOCK_EVT_MODE_PERIODIC:
clk_enable(tcd->clk); clk_enable(tcd->clk);
@ -64,7 +65,7 @@ Index: linux-3.2/drivers/clocksource/tcb_clksrc.c
/* Enable clock and interrupts on RC compare */ /* Enable clock and interrupts on RC compare */
__raw_writel(ATMEL_TC_CPCS, regs + ATMEL_TC_REG(2, IER)); __raw_writel(ATMEL_TC_CPCS, regs + ATMEL_TC_REG(2, IER));
@@ -122,7 +116,7 @@ static void tc_mode(enum clock_event_mod @@ -122,7 +116,7 @@ static void tc_mode(enum clock_event_mode m, struct clock_event_device *d)
case CLOCK_EVT_MODE_ONESHOT: case CLOCK_EVT_MODE_ONESHOT:
clk_enable(tcd->clk); clk_enable(tcd->clk);
@ -73,7 +74,7 @@ Index: linux-3.2/drivers/clocksource/tcb_clksrc.c
__raw_writel(timer_clock | ATMEL_TC_CPCSTOP __raw_writel(timer_clock | ATMEL_TC_CPCSTOP
| ATMEL_TC_WAVE | ATMEL_TC_WAVESEL_UP_AUTO, | ATMEL_TC_WAVE | ATMEL_TC_WAVESEL_UP_AUTO,
regs + ATMEL_TC_REG(2, CMR)); regs + ATMEL_TC_REG(2, CMR));
@@ -152,8 +146,12 @@ static struct tc_clkevt_device clkevt = @@ -152,8 +146,12 @@ static struct tc_clkevt_device clkevt = {
.features = CLOCK_EVT_FEAT_PERIODIC .features = CLOCK_EVT_FEAT_PERIODIC
| CLOCK_EVT_FEAT_ONESHOT, | CLOCK_EVT_FEAT_ONESHOT,
.shift = 32, .shift = 32,
@ -97,7 +98,7 @@ Index: linux-3.2/drivers/clocksource/tcb_clksrc.c
struct clk *t2_clk = tc->clk[2]; struct clk *t2_clk = tc->clk[2];
int irq = tc->irq[2]; int irq = tc->irq[2];
@@ -188,11 +187,17 @@ static void __init setup_clkevents(struc @@ -188,11 +187,17 @@ static void __init setup_clkevents(struct atmel_tc *tc, int clk32k_divisor_idx)
clkevt.clk = t2_clk; clkevt.clk = t2_clk;
tc_irqaction.dev_id = &clkevt; tc_irqaction.dev_id = &clkevt;
@ -132,10 +133,10 @@ Index: linux-3.2/drivers/clocksource/tcb_clksrc.c
return 0; return 0;
} }
arch_initcall(tcb_clksrc_init); arch_initcall(tcb_clksrc_init);
Index: linux-3.2/drivers/misc/Kconfig diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig
=================================================================== index 5664696..f3031a4 100644
--- linux-3.2.orig/drivers/misc/Kconfig --- a/drivers/misc/Kconfig
+++ linux-3.2/drivers/misc/Kconfig +++ b/drivers/misc/Kconfig
@@ -97,8 +97,7 @@ config ATMEL_TCB_CLKSRC @@ -97,8 +97,7 @@ config ATMEL_TCB_CLKSRC
are combined to make a single 32-bit timer. are combined to make a single 32-bit timer.
@ -161,3 +162,6 @@ Index: linux-3.2/drivers/misc/Kconfig
config IBM_ASM config IBM_ASM
tristate "Device driver for IBM RSA service processor" tristate "Device driver for IBM RSA service processor"
depends on X86 && PCI && INPUT && EXPERIMENTAL depends on X86 && PCI && INPUT && EXPERIMENTAL
--
1.7.10

View File

@ -1,21 +1,22 @@
From 32a59ec7007ad587e8523ea3628b364c434d4c54 Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu> From: Ingo Molnar <mingo@elte.hu>
Date: Fri, 3 Jul 2009 08:30:18 -0500 Date: Fri, 3 Jul 2009 08:30:18 -0500
Subject: drivers/net: tulip_remove_one needs to call pci_disable_device() Subject: [PATCH 040/267] drivers/net: tulip_remove_one needs to call
pci_disable_device()
Otherwise the device is not completely shut down. Otherwise the device is not completely shut down.
Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
drivers/net/ethernet/dec/tulip/tulip_core.c | 1 + drivers/net/ethernet/dec/tulip/tulip_core.c | 1 +
1 file changed, 1 insertion(+) 1 file changed, 1 insertion(+)
Index: linux-3.2/drivers/net/ethernet/dec/tulip/tulip_core.c diff --git a/drivers/net/ethernet/dec/tulip/tulip_core.c b/drivers/net/ethernet/dec/tulip/tulip_core.c
=================================================================== index 9656dd0..ef7df09 100644
--- linux-3.2.orig/drivers/net/ethernet/dec/tulip/tulip_core.c --- a/drivers/net/ethernet/dec/tulip/tulip_core.c
+++ linux-3.2/drivers/net/ethernet/dec/tulip/tulip_core.c +++ b/drivers/net/ethernet/dec/tulip/tulip_core.c
@@ -1949,6 +1949,7 @@ static void __devexit tulip_remove_one ( @@ -1949,6 +1949,7 @@ static void __devexit tulip_remove_one (struct pci_dev *pdev)
pci_iounmap(pdev, tp->base_addr); pci_iounmap(pdev, tp->base_addr);
free_netdev (dev); free_netdev (dev);
pci_release_regions (pdev); pci_release_regions (pdev);
@ -23,3 +24,6 @@ Index: linux-3.2/drivers/net/ethernet/dec/tulip/tulip_core.c
pci_set_drvdata (pdev, NULL); pci_set_drvdata (pdev, NULL);
/* pci_power_off (pdev, -1); */ /* pci_power_off (pdev, -1); */
--
1.7.10

View File

@ -1,22 +1,22 @@
From 4d7e0a71990ab73749dfde4f4cd201cf1bdb0f45 Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu> From: Ingo Molnar <mingo@elte.hu>
Date: Fri, 3 Jul 2009 08:29:24 -0500 Date: Fri, 3 Jul 2009 08:29:24 -0500
Subject: drivers/net: Use disable_irq_nosync() in 8139too Subject: [PATCH 041/267] drivers/net: Use disable_irq_nosync() in 8139too
Use disable_irq_nosync() instead of disable_irq() as this might be Use disable_irq_nosync() instead of disable_irq() as this might be
called in atomic context with netpoll. called in atomic context with netpoll.
Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
drivers/net/ethernet/realtek/8139too.c | 2 +- drivers/net/ethernet/realtek/8139too.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-) 1 file changed, 1 insertion(+), 1 deletion(-)
Index: linux-3.2/drivers/net/ethernet/realtek/8139too.c diff --git a/drivers/net/ethernet/realtek/8139too.c b/drivers/net/ethernet/realtek/8139too.c
=================================================================== index 4d6b254..004c054 100644
--- linux-3.2.orig/drivers/net/ethernet/realtek/8139too.c --- a/drivers/net/ethernet/realtek/8139too.c
+++ linux-3.2/drivers/net/ethernet/realtek/8139too.c +++ b/drivers/net/ethernet/realtek/8139too.c
@@ -2174,7 +2174,7 @@ static irqreturn_t rtl8139_interrupt (in @@ -2174,7 +2174,7 @@ static irqreturn_t rtl8139_interrupt (int irq, void *dev_instance)
*/ */
static void rtl8139_poll_controller(struct net_device *dev) static void rtl8139_poll_controller(struct net_device *dev)
{ {
@ -25,3 +25,6 @@ Index: linux-3.2/drivers/net/ethernet/realtek/8139too.c
rtl8139_interrupt(dev->irq, dev); rtl8139_interrupt(dev->irq, dev);
enable_irq(dev->irq); enable_irq(dev->irq);
} }
--
1.7.10

View File

@ -1,6 +1,8 @@
From 1c36d3306722a2042bd4dc26baf20393c42c5b22 Mon Sep 17 00:00:00 2001
From: Darren Hart <dvhltc@us.ibm.com> From: Darren Hart <dvhltc@us.ibm.com>
Date: Tue, 18 May 2010 14:33:07 -0700 Date: Tue, 18 May 2010 14:33:07 -0700
Subject: drivers: net: ehea: Make rx irq handler non-threaded (IRQF_NO_THREAD) Subject: [PATCH 042/267] drivers: net: ehea: Make rx irq handler non-threaded
(IRQF_NO_THREAD)
The underlying hardware is edge triggered but presented by XICS as level The underlying hardware is edge triggered but presented by XICS as level
triggered. The edge triggered interrupts are not reissued after masking. This triggered. The edge triggered interrupts are not reissued after masking. This
@ -33,16 +35,15 @@ Cc: Michael Ellerman <ellerman@au1.ibm.com>
Cc: Doug Maxey <doug.maxey@us.ibm.com> Cc: Doug Maxey <doug.maxey@us.ibm.com>
LKML-Reference: <4BF30793.5070300@us.ibm.com> LKML-Reference: <4BF30793.5070300@us.ibm.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
drivers/net/ethernet/ibm/ehea/ehea_main.c | 2 +- drivers/net/ethernet/ibm/ehea/ehea_main.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-) 1 file changed, 1 insertion(+), 1 deletion(-)
Index: linux-3.2/drivers/net/ethernet/ibm/ehea/ehea_main.c diff --git a/drivers/net/ethernet/ibm/ehea/ehea_main.c b/drivers/net/ethernet/ibm/ehea/ehea_main.c
=================================================================== index bfeccbf..fddfaf1 100644
--- linux-3.2.orig/drivers/net/ethernet/ibm/ehea/ehea_main.c --- a/drivers/net/ethernet/ibm/ehea/ehea_main.c
+++ linux-3.2/drivers/net/ethernet/ibm/ehea/ehea_main.c +++ b/drivers/net/ethernet/ibm/ehea/ehea_main.c
@@ -1304,7 +1304,7 @@ static int ehea_reg_interrupts(struct ne @@ -1304,7 +1304,7 @@ static int ehea_reg_interrupts(struct net_device *dev)
"%s-queue%d", dev->name, i); "%s-queue%d", dev->name, i);
ret = ibmebus_request_irq(pr->eq->attr.ist1, ret = ibmebus_request_irq(pr->eq->attr.ist1,
ehea_recv_irq_handler, ehea_recv_irq_handler,
@ -51,3 +52,6 @@ Index: linux-3.2/drivers/net/ethernet/ibm/ehea/ehea_main.c
pr); pr);
if (ret) { if (ret) {
netdev_err(dev, "failed registering irq for ehea_queue port_res_nr:%d, ist=%X\n", netdev_err(dev, "failed registering irq for ehea_queue port_res_nr:%d, ist=%X\n",
--
1.7.10

View File

@ -1,6 +1,8 @@
From 2989477b9c1c1f9aa82a8db158ab3a03a4b7b2f5 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Tue, 17 Nov 2009 12:02:43 +0100 Date: Tue, 17 Nov 2009 12:02:43 +0100
Subject: drivers: net: at91_ether: Make mdio protection -rt safe Subject: [PATCH 043/267] drivers: net: at91_ether: Make mdio protection -rt
safe
Neither the phy interrupt nor the timer callback which updates the Neither the phy interrupt nor the timer callback which updates the
link status in absense of a phy interrupt are taking lp->lock which link status in absense of a phy interrupt are taking lp->lock which
@ -13,16 +15,15 @@ Fix this by adding proper locking to at91ether_phy_interrupt() and
at91_check_ether() which serializes the access on -rt. at91_check_ether() which serializes the access on -rt.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
drivers/net/ethernet/cadence/at91_ether.c | 5 +++++ drivers/net/ethernet/cadence/at91_ether.c | 5 +++++
1 file changed, 5 insertions(+) 1 file changed, 5 insertions(+)
Index: linux-3.2/drivers/net/ethernet/cadence/at91_ether.c diff --git a/drivers/net/ethernet/cadence/at91_ether.c b/drivers/net/ethernet/cadence/at91_ether.c
=================================================================== index 56624d3..ad4dbea 100644
--- linux-3.2.orig/drivers/net/ethernet/cadence/at91_ether.c --- a/drivers/net/ethernet/cadence/at91_ether.c
+++ linux-3.2/drivers/net/ethernet/cadence/at91_ether.c +++ b/drivers/net/ethernet/cadence/at91_ether.c
@@ -200,7 +200,9 @@ static irqreturn_t at91ether_phy_interru @@ -200,7 +200,9 @@ static irqreturn_t at91ether_phy_interrupt(int irq, void *dev_id)
struct net_device *dev = (struct net_device *) dev_id; struct net_device *dev = (struct net_device *) dev_id;
struct at91_private *lp = netdev_priv(dev); struct at91_private *lp = netdev_priv(dev);
unsigned int phy; unsigned int phy;
@ -32,7 +33,7 @@ Index: linux-3.2/drivers/net/ethernet/cadence/at91_ether.c
/* /*
* This hander is triggered on both edges, but the PHY chips expect * This hander is triggered on both edges, but the PHY chips expect
* level-triggering. We therefore have to check if the PHY actually has * level-triggering. We therefore have to check if the PHY actually has
@@ -242,6 +244,7 @@ static irqreturn_t at91ether_phy_interru @@ -242,6 +244,7 @@ static irqreturn_t at91ether_phy_interrupt(int irq, void *dev_id)
done: done:
disable_mdi(); disable_mdi();
@ -40,7 +41,7 @@ Index: linux-3.2/drivers/net/ethernet/cadence/at91_ether.c
return IRQ_HANDLED; return IRQ_HANDLED;
} }
@@ -398,9 +401,11 @@ static void at91ether_check_link(unsigne @@ -398,9 +401,11 @@ static void at91ether_check_link(unsigned long dev_id)
struct net_device *dev = (struct net_device *) dev_id; struct net_device *dev = (struct net_device *) dev_id;
struct at91_private *lp = netdev_priv(dev); struct at91_private *lp = netdev_priv(dev);
@ -52,3 +53,6 @@ Index: linux-3.2/drivers/net/ethernet/cadence/at91_ether.c
mod_timer(&lp->check_timer, jiffies + LINK_POLL_INTERVAL); mod_timer(&lp->check_timer, jiffies + LINK_POLL_INTERVAL);
} }
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: preempt-mark-legitimated-no-resched-sites.patch From a5f63f3c98dcea7b51fda0df14ecc187fb329eee Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Mon, 21 Mar 2011 13:32:17 +0100 Date: Mon, 21 Mar 2011 13:32:17 +0100
Subject: [PATCH 044/267] preempt-mark-legitimated-no-resched-sites.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
@ -11,10 +12,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/softirq.c | 4 ++-- kernel/softirq.c | 4 ++--
5 files changed, 11 insertions(+), 8 deletions(-) 5 files changed, 11 insertions(+), 8 deletions(-)
Index: linux-3.2/arch/powerpc/kernel/idle.c diff --git a/arch/powerpc/kernel/idle.c b/arch/powerpc/kernel/idle.c
=================================================================== index f46dae5..5d70d10 100644
--- linux-3.2.orig/arch/powerpc/kernel/idle.c --- a/arch/powerpc/kernel/idle.c
+++ linux-3.2/arch/powerpc/kernel/idle.c +++ b/arch/powerpc/kernel/idle.c
@@ -95,7 +95,7 @@ void cpu_idle(void) @@ -95,7 +95,7 @@ void cpu_idle(void)
ppc64_runlatch_on(); ppc64_runlatch_on();
tick_nohz_restart_sched_tick(); tick_nohz_restart_sched_tick();
@ -24,10 +25,10 @@ Index: linux-3.2/arch/powerpc/kernel/idle.c
cpu_die(); cpu_die();
} }
schedule_preempt_disabled(); schedule_preempt_disabled();
Index: linux-3.2/arch/sparc/kernel/process_64.c diff --git a/arch/sparc/kernel/process_64.c b/arch/sparc/kernel/process_64.c
=================================================================== index 8ba0dbe..86fe09a 100644
--- linux-3.2.orig/arch/sparc/kernel/process_64.c --- a/arch/sparc/kernel/process_64.c
+++ linux-3.2/arch/sparc/kernel/process_64.c +++ b/arch/sparc/kernel/process_64.c
@@ -104,7 +104,7 @@ void cpu_idle(void) @@ -104,7 +104,7 @@ void cpu_idle(void)
#ifdef CONFIG_HOTPLUG_CPU #ifdef CONFIG_HOTPLUG_CPU
@ -37,10 +38,10 @@ Index: linux-3.2/arch/sparc/kernel/process_64.c
cpu_play_dead(); cpu_play_dead();
} }
#endif #endif
Index: linux-3.2/include/linux/preempt.h diff --git a/include/linux/preempt.h b/include/linux/preempt.h
=================================================================== index 58969b2..227b0f5 100644
--- linux-3.2.orig/include/linux/preempt.h --- a/include/linux/preempt.h
+++ linux-3.2/include/linux/preempt.h +++ b/include/linux/preempt.h
@@ -48,12 +48,14 @@ do { \ @@ -48,12 +48,14 @@ do { \
barrier(); \ barrier(); \
} while (0) } while (0)
@ -65,10 +66,10 @@ Index: linux-3.2/include/linux/preempt.h
#define preempt_enable_no_resched() do { } while (0) #define preempt_enable_no_resched() do { } while (0)
#define preempt_enable() do { } while (0) #define preempt_enable() do { } while (0)
Index: linux-3.2/kernel/sched.c diff --git a/kernel/sched.c b/kernel/sched.c
=================================================================== index 465fd11..e35f01c 100644
--- linux-3.2.orig/kernel/sched.c --- a/kernel/sched.c
+++ linux-3.2/kernel/sched.c +++ b/kernel/sched.c
@@ -4415,7 +4415,7 @@ need_resched: @@ -4415,7 +4415,7 @@ need_resched:
post_schedule(rq); post_schedule(rq);
@ -96,10 +97,10 @@ Index: linux-3.2/kernel/sched.c
schedule(); schedule();
Index: linux-3.2/kernel/softirq.c diff --git a/kernel/softirq.c b/kernel/softirq.c
=================================================================== index c9da2c8..a8becbf 100644
--- linux-3.2.orig/kernel/softirq.c --- a/kernel/softirq.c
+++ linux-3.2/kernel/softirq.c +++ b/kernel/softirq.c
@@ -353,7 +353,7 @@ void irq_exit(void) @@ -353,7 +353,7 @@ void irq_exit(void)
if (idle_cpu(smp_processor_id()) && !in_interrupt() && !need_resched()) if (idle_cpu(smp_processor_id()) && !in_interrupt() && !need_resched())
tick_nohz_stop_sched_tick(0); tick_nohz_stop_sched_tick(0);
@ -109,7 +110,7 @@ Index: linux-3.2/kernel/softirq.c
} }
/* /*
@@ -759,7 +759,7 @@ static int run_ksoftirqd(void * __bind_c @@ -759,7 +759,7 @@ static int run_ksoftirqd(void * __bind_cpu)
if (local_softirq_pending()) if (local_softirq_pending())
__do_softirq(); __do_softirq();
local_irq_enable(); local_irq_enable();
@ -118,3 +119,6 @@ Index: linux-3.2/kernel/softirq.c
cond_resched(); cond_resched();
preempt_disable(); preempt_disable();
rcu_note_context_switch((long)__bind_cpu); rcu_note_context_switch((long)__bind_cpu);
--
1.7.10

View File

@ -1,13 +1,14 @@
From 53e45a133e1f67b90e680878517ce10dc5c0d04b Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu> From: Ingo Molnar <mingo@elte.hu>
Date: Fri, 3 Jul 2009 08:30:37 -0500 Date: Fri, 3 Jul 2009 08:30:37 -0500
Subject: mm: Prepare decoupling the page fault disabling logic Subject: [PATCH 045/267] mm: Prepare decoupling the page fault disabling
logic
Add a pagefault_disabled variable to task_struct to allow decoupling Add a pagefault_disabled variable to task_struct to allow decoupling
the pagefault-disabled logic from the preempt count. the pagefault-disabled logic from the preempt count.
Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
include/linux/sched.h | 1 + include/linux/sched.h | 1 +
include/linux/uaccess.h | 33 +++------------------------------ include/linux/uaccess.h | 33 +++------------------------------
@ -15,10 +16,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
mm/memory.c | 29 +++++++++++++++++++++++++++++ mm/memory.c | 29 +++++++++++++++++++++++++++++
4 files changed, 34 insertions(+), 30 deletions(-) 4 files changed, 34 insertions(+), 30 deletions(-)
Index: linux-3.2/include/linux/sched.h diff --git a/include/linux/sched.h b/include/linux/sched.h
=================================================================== index ed2b9f9..bce86f9 100644
--- linux-3.2.orig/include/linux/sched.h --- a/include/linux/sched.h
+++ linux-3.2/include/linux/sched.h +++ b/include/linux/sched.h
@@ -1435,6 +1435,7 @@ struct task_struct { @@ -1435,6 +1435,7 @@ struct task_struct {
/* mutex deadlock detection */ /* mutex deadlock detection */
struct mutex_waiter *blocked_on; struct mutex_waiter *blocked_on;
@ -27,10 +28,10 @@ Index: linux-3.2/include/linux/sched.h
#ifdef CONFIG_TRACE_IRQFLAGS #ifdef CONFIG_TRACE_IRQFLAGS
unsigned int irq_events; unsigned int irq_events;
unsigned long hardirq_enable_ip; unsigned long hardirq_enable_ip;
Index: linux-3.2/include/linux/uaccess.h diff --git a/include/linux/uaccess.h b/include/linux/uaccess.h
=================================================================== index 5ca0951..9414a1b 100644
--- linux-3.2.orig/include/linux/uaccess.h --- a/include/linux/uaccess.h
+++ linux-3.2/include/linux/uaccess.h +++ b/include/linux/uaccess.h
@@ -6,37 +6,10 @@ @@ -6,37 +6,10 @@
/* /*
@ -72,11 +73,11 @@ Index: linux-3.2/include/linux/uaccess.h
#ifndef ARCH_HAS_NOCACHE_UACCESS #ifndef ARCH_HAS_NOCACHE_UACCESS
Index: linux-3.2/kernel/fork.c diff --git a/kernel/fork.c b/kernel/fork.c
=================================================================== index d8aa0c7..a17bc75 100644
--- linux-3.2.orig/kernel/fork.c --- a/kernel/fork.c
+++ linux-3.2/kernel/fork.c +++ b/kernel/fork.c
@@ -1193,6 +1193,7 @@ static struct task_struct *copy_process( @@ -1196,6 +1196,7 @@ static struct task_struct *copy_process(unsigned long clone_flags,
p->hardirq_context = 0; p->hardirq_context = 0;
p->softirq_context = 0; p->softirq_context = 0;
#endif #endif
@ -84,11 +85,11 @@ Index: linux-3.2/kernel/fork.c
#ifdef CONFIG_LOCKDEP #ifdef CONFIG_LOCKDEP
p->lockdep_depth = 0; /* no locks held yet */ p->lockdep_depth = 0; /* no locks held yet */
p->curr_chain_key = 0; p->curr_chain_key = 0;
Index: linux-3.2/mm/memory.c diff --git a/mm/memory.c b/mm/memory.c
=================================================================== index 1b1ca17..454ad3f 100644
--- linux-3.2.orig/mm/memory.c --- a/mm/memory.c
+++ linux-3.2/mm/memory.c +++ b/mm/memory.c
@@ -3436,6 +3436,35 @@ unlock: @@ -3444,6 +3444,35 @@ unlock:
return 0; return 0;
} }
@ -124,3 +125,6 @@ Index: linux-3.2/mm/memory.c
/* /*
* By the time we get here, we already hold the mm semaphore * By the time we get here, we already hold the mm semaphore
*/ */
--
1.7.10

View File

@ -1,6 +1,8 @@
Subject: mm: Fixup all fault handlers to check current->pagefault_disable From ce05fde6b2b86bc5569433eef6869bdb1adcb32c Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Thu, 17 Mar 2011 11:32:28 +0100 Date: Thu, 17 Mar 2011 11:32:28 +0100
Subject: [PATCH 046/267] mm: Fixup all fault handlers to check
current->pagefault_disable
Necessary for decoupling pagefault disable from preempt count. Necessary for decoupling pagefault disable from preempt count.
@ -30,11 +32,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
arch/xtensa/mm/fault.c | 2 +- arch/xtensa/mm/fault.c | 2 +-
22 files changed, 27 insertions(+), 24 deletions(-) 22 files changed, 27 insertions(+), 24 deletions(-)
Index: linux-3.2/arch/alpha/mm/fault.c diff --git a/arch/alpha/mm/fault.c b/arch/alpha/mm/fault.c
=================================================================== index fadd5f8..6d73e1b 100644
--- linux-3.2.orig/arch/alpha/mm/fault.c --- a/arch/alpha/mm/fault.c
+++ linux-3.2/arch/alpha/mm/fault.c +++ b/arch/alpha/mm/fault.c
@@ -107,7 +107,7 @@ do_page_fault(unsigned long address, uns @@ -107,7 +107,7 @@ do_page_fault(unsigned long address, unsigned long mmcsr,
/* If we're in an interrupt context, or have no user context, /* If we're in an interrupt context, or have no user context,
we must not take the fault. */ we must not take the fault. */
@ -43,11 +45,11 @@ Index: linux-3.2/arch/alpha/mm/fault.c
goto no_context; goto no_context;
#ifdef CONFIG_ALPHA_LARGE_VMALLOC #ifdef CONFIG_ALPHA_LARGE_VMALLOC
Index: linux-3.2/arch/arm/mm/fault.c diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c
=================================================================== index aa33949..c8dd303 100644
--- linux-3.2.orig/arch/arm/mm/fault.c --- a/arch/arm/mm/fault.c
+++ linux-3.2/arch/arm/mm/fault.c +++ b/arch/arm/mm/fault.c
@@ -294,7 +294,7 @@ do_page_fault(unsigned long addr, unsign @@ -294,7 +294,7 @@ do_page_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
* If we're in an interrupt or have no user * If we're in an interrupt or have no user
* context, we must not take the fault.. * context, we must not take the fault..
*/ */
@ -56,11 +58,11 @@ Index: linux-3.2/arch/arm/mm/fault.c
goto no_context; goto no_context;
/* /*
Index: linux-3.2/arch/avr32/mm/fault.c diff --git a/arch/avr32/mm/fault.c b/arch/avr32/mm/fault.c
=================================================================== index f7040a1..623a027 100644
--- linux-3.2.orig/arch/avr32/mm/fault.c --- a/arch/avr32/mm/fault.c
+++ linux-3.2/arch/avr32/mm/fault.c +++ b/arch/avr32/mm/fault.c
@@ -81,7 +81,8 @@ asmlinkage void do_page_fault(unsigned l @@ -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 * If we're in an interrupt or have no user context, we must
* not take the fault... * not take the fault...
*/ */
@ -70,11 +72,11 @@ Index: linux-3.2/arch/avr32/mm/fault.c
goto no_context; goto no_context;
local_irq_enable(); local_irq_enable();
Index: linux-3.2/arch/cris/mm/fault.c diff --git a/arch/cris/mm/fault.c b/arch/cris/mm/fault.c
=================================================================== index 9dcac8e..2b2c292 100644
--- linux-3.2.orig/arch/cris/mm/fault.c --- a/arch/cris/mm/fault.c
+++ linux-3.2/arch/cris/mm/fault.c +++ b/arch/cris/mm/fault.c
@@ -111,7 +111,7 @@ do_page_fault(unsigned long address, str @@ -111,7 +111,7 @@ do_page_fault(unsigned long address, struct pt_regs *regs,
* user context, we must not take the fault. * user context, we must not take the fault.
*/ */
@ -83,11 +85,11 @@ Index: linux-3.2/arch/cris/mm/fault.c
goto no_context; goto no_context;
down_read(&mm->mmap_sem); down_read(&mm->mmap_sem);
Index: linux-3.2/arch/frv/mm/fault.c diff --git a/arch/frv/mm/fault.c b/arch/frv/mm/fault.c
=================================================================== index a325d57..3da8ec7 100644
--- linux-3.2.orig/arch/frv/mm/fault.c --- a/arch/frv/mm/fault.c
+++ linux-3.2/arch/frv/mm/fault.c +++ b/arch/frv/mm/fault.c
@@ -79,7 +79,7 @@ asmlinkage void do_page_fault(int datamm @@ -79,7 +79,7 @@ asmlinkage void do_page_fault(int datammu, unsigned long esr0, unsigned long ear
* If we're in an interrupt or have no user * If we're in an interrupt or have no user
* context, we must not take the fault.. * context, we must not take the fault..
*/ */
@ -96,11 +98,11 @@ Index: linux-3.2/arch/frv/mm/fault.c
goto no_context; goto no_context;
down_read(&mm->mmap_sem); down_read(&mm->mmap_sem);
Index: linux-3.2/arch/ia64/mm/fault.c diff --git a/arch/ia64/mm/fault.c b/arch/ia64/mm/fault.c
=================================================================== index 20b3593..2a4e44f 100644
--- linux-3.2.orig/arch/ia64/mm/fault.c --- a/arch/ia64/mm/fault.c
+++ linux-3.2/arch/ia64/mm/fault.c +++ b/arch/ia64/mm/fault.c
@@ -89,7 +89,7 @@ ia64_do_page_fault (unsigned long addres @@ -89,7 +89,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.. * If we're in an interrupt or have no user context, we must not take the fault..
*/ */
@ -109,11 +111,11 @@ Index: linux-3.2/arch/ia64/mm/fault.c
goto no_context; goto no_context;
#ifdef CONFIG_VIRTUAL_MEM_MAP #ifdef CONFIG_VIRTUAL_MEM_MAP
Index: linux-3.2/arch/m32r/mm/fault.c diff --git a/arch/m32r/mm/fault.c b/arch/m32r/mm/fault.c
=================================================================== index 2c9aeb4..16fa2c7 100644
--- linux-3.2.orig/arch/m32r/mm/fault.c --- a/arch/m32r/mm/fault.c
+++ linux-3.2/arch/m32r/mm/fault.c +++ b/arch/m32r/mm/fault.c
@@ -115,7 +115,7 @@ asmlinkage void do_page_fault(struct pt_ @@ -115,7 +115,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 * 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.. * atomic region then we must not take the fault..
*/ */
@ -122,11 +124,11 @@ Index: linux-3.2/arch/m32r/mm/fault.c
goto bad_area_nosemaphore; goto bad_area_nosemaphore;
/* When running in the kernel we expect faults to occur only to /* When running in the kernel we expect faults to occur only to
Index: linux-3.2/arch/m68k/mm/fault.c diff --git a/arch/m68k/mm/fault.c b/arch/m68k/mm/fault.c
=================================================================== index 2db6099..238ffc0 100644
--- linux-3.2.orig/arch/m68k/mm/fault.c --- a/arch/m68k/mm/fault.c
+++ linux-3.2/arch/m68k/mm/fault.c +++ b/arch/m68k/mm/fault.c
@@ -85,7 +85,7 @@ int do_page_fault(struct pt_regs *regs, @@ -85,7 +85,7 @@ int do_page_fault(struct pt_regs *regs, unsigned long address,
* If we're in an interrupt or have no user * If we're in an interrupt or have no user
* context, we must not take the fault.. * context, we must not take the fault..
*/ */
@ -135,11 +137,11 @@ Index: linux-3.2/arch/m68k/mm/fault.c
goto no_context; goto no_context;
down_read(&mm->mmap_sem); down_read(&mm->mmap_sem);
Index: linux-3.2/arch/microblaze/mm/fault.c diff --git a/arch/microblaze/mm/fault.c b/arch/microblaze/mm/fault.c
=================================================================== index ae97d2c..c3f219c 100644
--- linux-3.2.orig/arch/microblaze/mm/fault.c --- a/arch/microblaze/mm/fault.c
+++ linux-3.2/arch/microblaze/mm/fault.c +++ b/arch/microblaze/mm/fault.c
@@ -107,7 +107,7 @@ void do_page_fault(struct pt_regs *regs, @@ -107,7 +107,7 @@ void do_page_fault(struct pt_regs *regs, unsigned long address,
if ((error_code & 0x13) == 0x13 || (error_code & 0x11) == 0x11) if ((error_code & 0x13) == 0x13 || (error_code & 0x11) == 0x11)
is_write = 0; is_write = 0;
@ -148,11 +150,11 @@ Index: linux-3.2/arch/microblaze/mm/fault.c
if (kernel_mode(regs)) if (kernel_mode(regs))
goto bad_area_nosemaphore; goto bad_area_nosemaphore;
Index: linux-3.2/arch/mips/mm/fault.c diff --git a/arch/mips/mm/fault.c b/arch/mips/mm/fault.c
=================================================================== index 937cf33..ce7e75e 100644
--- linux-3.2.orig/arch/mips/mm/fault.c --- a/arch/mips/mm/fault.c
+++ linux-3.2/arch/mips/mm/fault.c +++ b/arch/mips/mm/fault.c
@@ -88,7 +88,7 @@ asmlinkage void __kprobes do_page_fault( @@ -88,7 +88,7 @@ asmlinkage void __kprobes do_page_fault(struct pt_regs *regs, unsigned long writ
* If we're in an interrupt or have no user * If we're in an interrupt or have no user
* context, we must not take the fault.. * context, we must not take the fault..
*/ */
@ -161,11 +163,11 @@ Index: linux-3.2/arch/mips/mm/fault.c
goto bad_area_nosemaphore; goto bad_area_nosemaphore;
down_read(&mm->mmap_sem); down_read(&mm->mmap_sem);
Index: linux-3.2/arch/mn10300/mm/fault.c diff --git a/arch/mn10300/mm/fault.c b/arch/mn10300/mm/fault.c
=================================================================== index 0945409..53c8d16 100644
--- linux-3.2.orig/arch/mn10300/mm/fault.c --- a/arch/mn10300/mm/fault.c
+++ linux-3.2/arch/mn10300/mm/fault.c +++ b/arch/mn10300/mm/fault.c
@@ -168,7 +168,7 @@ asmlinkage void do_page_fault(struct pt_ @@ -168,7 +168,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long fault_code,
* If we're in an interrupt or have no user * If we're in an interrupt or have no user
* context, we must not take the fault.. * context, we must not take the fault..
*/ */
@ -174,11 +176,11 @@ Index: linux-3.2/arch/mn10300/mm/fault.c
goto no_context; goto no_context;
down_read(&mm->mmap_sem); down_read(&mm->mmap_sem);
Index: linux-3.2/arch/parisc/mm/fault.c diff --git a/arch/parisc/mm/fault.c b/arch/parisc/mm/fault.c
=================================================================== index 18162ce..09ecc8a 100644
--- linux-3.2.orig/arch/parisc/mm/fault.c --- a/arch/parisc/mm/fault.c
+++ linux-3.2/arch/parisc/mm/fault.c +++ b/arch/parisc/mm/fault.c
@@ -176,7 +176,7 @@ void do_page_fault(struct pt_regs *regs, @@ -176,7 +176,7 @@ void do_page_fault(struct pt_regs *regs, unsigned long code,
unsigned long acc_type; unsigned long acc_type;
int fault; int fault;
@ -187,11 +189,11 @@ Index: linux-3.2/arch/parisc/mm/fault.c
goto no_context; goto no_context;
down_read(&mm->mmap_sem); down_read(&mm->mmap_sem);
Index: linux-3.2/arch/powerpc/mm/fault.c diff --git a/arch/powerpc/mm/fault.c b/arch/powerpc/mm/fault.c
=================================================================== index 5efe8c9..17f8bbe 100644
--- linux-3.2.orig/arch/powerpc/mm/fault.c --- a/arch/powerpc/mm/fault.c
+++ linux-3.2/arch/powerpc/mm/fault.c +++ b/arch/powerpc/mm/fault.c
@@ -162,7 +162,7 @@ int __kprobes do_page_fault(struct pt_re @@ -162,7 +162,7 @@ int __kprobes do_page_fault(struct pt_regs *regs, unsigned long address,
} }
#endif #endif
@ -200,11 +202,11 @@ Index: linux-3.2/arch/powerpc/mm/fault.c
if (!user_mode(regs)) if (!user_mode(regs))
return SIGSEGV; return SIGSEGV;
/* in_atomic() in user mode is really bad, /* in_atomic() in user mode is really bad,
Index: linux-3.2/arch/s390/mm/fault.c diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c
=================================================================== index c7f0fbc..0d60168 100644
--- linux-3.2.orig/arch/s390/mm/fault.c --- a/arch/s390/mm/fault.c
+++ linux-3.2/arch/s390/mm/fault.c +++ b/arch/s390/mm/fault.c
@@ -295,7 +295,8 @@ static inline int do_exception(struct pt @@ -294,7 +294,8 @@ static inline int do_exception(struct pt_regs *regs, int access,
* user context. * user context.
*/ */
fault = VM_FAULT_BADCONTEXT; fault = VM_FAULT_BADCONTEXT;
@ -214,7 +216,7 @@ Index: linux-3.2/arch/s390/mm/fault.c
goto out; goto out;
address = trans_exc_code & __FAIL_ADDR_MASK; address = trans_exc_code & __FAIL_ADDR_MASK;
@@ -426,7 +427,8 @@ void __kprobes do_asce_exception(struct @@ -425,7 +426,8 @@ void __kprobes do_asce_exception(struct pt_regs *regs, long pgm_int_code,
struct mm_struct *mm = current->mm; struct mm_struct *mm = current->mm;
struct vm_area_struct *vma; struct vm_area_struct *vma;
@ -224,11 +226,11 @@ Index: linux-3.2/arch/s390/mm/fault.c
goto no_context; goto no_context;
down_read(&mm->mmap_sem); down_read(&mm->mmap_sem);
Index: linux-3.2/arch/score/mm/fault.c diff --git a/arch/score/mm/fault.c b/arch/score/mm/fault.c
=================================================================== index 47b600e..4c12824 100644
--- linux-3.2.orig/arch/score/mm/fault.c --- a/arch/score/mm/fault.c
+++ linux-3.2/arch/score/mm/fault.c +++ b/arch/score/mm/fault.c
@@ -72,7 +72,7 @@ asmlinkage void do_page_fault(struct pt_ @@ -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 * If we're in an interrupt or have no user
* context, we must not take the fault.. * context, we must not take the fault..
*/ */
@ -237,11 +239,11 @@ Index: linux-3.2/arch/score/mm/fault.c
goto bad_area_nosemaphore; goto bad_area_nosemaphore;
down_read(&mm->mmap_sem); down_read(&mm->mmap_sem);
Index: linux-3.2/arch/sh/mm/fault_32.c diff --git a/arch/sh/mm/fault_32.c b/arch/sh/mm/fault_32.c
=================================================================== index 7bebd04..a67ac56 100644
--- linux-3.2.orig/arch/sh/mm/fault_32.c --- a/arch/sh/mm/fault_32.c
+++ linux-3.2/arch/sh/mm/fault_32.c +++ b/arch/sh/mm/fault_32.c
@@ -166,7 +166,7 @@ asmlinkage void __kprobes do_page_fault( @@ -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 * If we're in an interrupt, have no user context or are running
* in an atomic region then we must not take the fault: * in an atomic region then we must not take the fault:
*/ */
@ -250,11 +252,11 @@ Index: linux-3.2/arch/sh/mm/fault_32.c
goto no_context; goto no_context;
down_read(&mm->mmap_sem); down_read(&mm->mmap_sem);
Index: linux-3.2/arch/sparc/mm/fault_32.c diff --git a/arch/sparc/mm/fault_32.c b/arch/sparc/mm/fault_32.c
=================================================================== index 8023fd7..e0742c1 100644
--- linux-3.2.orig/arch/sparc/mm/fault_32.c --- a/arch/sparc/mm/fault_32.c
+++ linux-3.2/arch/sparc/mm/fault_32.c +++ b/arch/sparc/mm/fault_32.c
@@ -247,8 +247,8 @@ asmlinkage void do_sparc_fault(struct pt @@ -247,8 +247,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 * If we're in an interrupt or have no user
* context, we must not take the fault.. * context, we must not take the fault..
*/ */
@ -265,11 +267,11 @@ Index: linux-3.2/arch/sparc/mm/fault_32.c
perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address); perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address);
Index: linux-3.2/arch/sparc/mm/fault_64.c diff --git a/arch/sparc/mm/fault_64.c b/arch/sparc/mm/fault_64.c
=================================================================== index 504c062..9d691a5 100644
--- linux-3.2.orig/arch/sparc/mm/fault_64.c --- a/arch/sparc/mm/fault_64.c
+++ linux-3.2/arch/sparc/mm/fault_64.c +++ b/arch/sparc/mm/fault_64.c
@@ -322,7 +322,7 @@ asmlinkage void __kprobes do_sparc64_fau @@ -322,7 +322,7 @@ asmlinkage void __kprobes do_sparc64_fault(struct pt_regs *regs)
* If we're in an interrupt or have no user * If we're in an interrupt or have no user
* context, we must not take the fault.. * context, we must not take the fault..
*/ */
@ -278,11 +280,11 @@ Index: linux-3.2/arch/sparc/mm/fault_64.c
goto intr_or_no_mm; goto intr_or_no_mm;
perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address); perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address);
Index: linux-3.2/arch/tile/mm/fault.c diff --git a/arch/tile/mm/fault.c b/arch/tile/mm/fault.c
=================================================================== index 25b7b90..ecdb016 100644
--- linux-3.2.orig/arch/tile/mm/fault.c --- a/arch/tile/mm/fault.c
+++ linux-3.2/arch/tile/mm/fault.c +++ b/arch/tile/mm/fault.c
@@ -346,7 +346,7 @@ static int handle_page_fault(struct pt_r @@ -346,7 +346,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 * If we're in an interrupt, have no user context or are running in an
* atomic region then we must not take the fault. * atomic region then we must not take the fault.
*/ */
@ -291,11 +293,11 @@ Index: linux-3.2/arch/tile/mm/fault.c
vma = NULL; /* happy compiler */ vma = NULL; /* happy compiler */
goto bad_area_nosemaphore; goto bad_area_nosemaphore;
} }
Index: linux-3.2/arch/um/kernel/trap.c diff --git a/arch/um/kernel/trap.c b/arch/um/kernel/trap.c
=================================================================== index dafc947..a283400 100644
--- linux-3.2.orig/arch/um/kernel/trap.c --- a/arch/um/kernel/trap.c
+++ linux-3.2/arch/um/kernel/trap.c +++ b/arch/um/kernel/trap.c
@@ -37,7 +37,7 @@ int handle_page_fault(unsigned long addr @@ -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 * If the fault was during atomic operation, don't take the fault, just
* fail. * fail.
*/ */
@ -304,11 +306,11 @@ Index: linux-3.2/arch/um/kernel/trap.c
goto out_nosemaphore; goto out_nosemaphore;
down_read(&mm->mmap_sem); down_read(&mm->mmap_sem);
Index: linux-3.2/arch/x86/mm/fault.c diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c
=================================================================== index 5db0490..191015f 100644
--- linux-3.2.orig/arch/x86/mm/fault.c --- a/arch/x86/mm/fault.c
+++ linux-3.2/arch/x86/mm/fault.c +++ b/arch/x86/mm/fault.c
@@ -1084,7 +1084,7 @@ do_page_fault(struct pt_regs *regs, unsi @@ -1084,7 +1084,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 * If we're in an interrupt, have no user context or are running
* in an atomic region then we must not take the fault: * in an atomic region then we must not take the fault:
*/ */
@ -317,10 +319,10 @@ Index: linux-3.2/arch/x86/mm/fault.c
bad_area_nosemaphore(regs, error_code, address); bad_area_nosemaphore(regs, error_code, address);
return; return;
} }
Index: linux-3.2/arch/xtensa/mm/fault.c diff --git a/arch/xtensa/mm/fault.c b/arch/xtensa/mm/fault.c
=================================================================== index e367e30..705f483 100644
--- linux-3.2.orig/arch/xtensa/mm/fault.c --- a/arch/xtensa/mm/fault.c
+++ linux-3.2/arch/xtensa/mm/fault.c +++ b/arch/xtensa/mm/fault.c
@@ -57,7 +57,7 @@ void do_page_fault(struct pt_regs *regs) @@ -57,7 +57,7 @@ void do_page_fault(struct pt_regs *regs)
/* If we're in an interrupt or have no user /* If we're in an interrupt or have no user
* context, we must not take the fault.. * context, we must not take the fault..
@ -330,3 +332,6 @@ Index: linux-3.2/arch/xtensa/mm/fault.c
bad_page_fault(regs, address, SIGSEGV); bad_page_fault(regs, address, SIGSEGV);
return; return;
} }
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: mm: pagefault_disabled() From 2ee27c95145e16e1c9cff6bc19ae777e55269863 Mon Sep 17 00:00:00 2001
From: Peter Zijlstra <a.p.zijlstra@chello.nl> From: Peter Zijlstra <a.p.zijlstra@chello.nl>
Date: Thu Aug 11 15:31:31 CEST 2011 Date: Thu, 11 Aug 2011 15:31:31 +0200
Subject: [PATCH 047/267] mm: pagefault_disabled()
Wrap the test for pagefault_disabled() into a helper, this allows us Wrap the test for pagefault_disabled() into a helper, this allows us
to remove the need for current->pagefault_disabled on !-rt kernels. 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 ++ kernel/fork.c | 2 ++
24 files changed, 41 insertions(+), 26 deletions(-) 24 files changed, 41 insertions(+), 26 deletions(-)
Index: linux-3.2/arch/alpha/mm/fault.c diff --git a/arch/alpha/mm/fault.c b/arch/alpha/mm/fault.c
=================================================================== index 6d73e1b..4a0a0af 100644
--- linux-3.2.orig/arch/alpha/mm/fault.c --- a/arch/alpha/mm/fault.c
+++ linux-3.2/arch/alpha/mm/fault.c +++ b/arch/alpha/mm/fault.c
@@ -107,7 +107,7 @@ do_page_fault(unsigned long address, uns @@ -107,7 +107,7 @@ do_page_fault(unsigned long address, unsigned long mmcsr,
/* If we're in an interrupt context, or have no user context, /* If we're in an interrupt context, or have no user context,
we must not take the fault. */ we must not take the fault. */
@ -47,11 +48,11 @@ Index: linux-3.2/arch/alpha/mm/fault.c
goto no_context; goto no_context;
#ifdef CONFIG_ALPHA_LARGE_VMALLOC #ifdef CONFIG_ALPHA_LARGE_VMALLOC
Index: linux-3.2/arch/arm/mm/fault.c diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c
=================================================================== index c8dd303..d717bd3 100644
--- linux-3.2.orig/arch/arm/mm/fault.c --- a/arch/arm/mm/fault.c
+++ linux-3.2/arch/arm/mm/fault.c +++ b/arch/arm/mm/fault.c
@@ -294,7 +294,7 @@ do_page_fault(unsigned long addr, unsign @@ -294,7 +294,7 @@ do_page_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
* If we're in an interrupt or have no user * If we're in an interrupt or have no user
* context, we must not take the fault.. * context, we must not take the fault..
*/ */
@ -60,11 +61,11 @@ Index: linux-3.2/arch/arm/mm/fault.c
goto no_context; goto no_context;
/* /*
Index: linux-3.2/arch/avr32/mm/fault.c diff --git a/arch/avr32/mm/fault.c b/arch/avr32/mm/fault.c
=================================================================== index 623a027..155ad8d 100644
--- linux-3.2.orig/arch/avr32/mm/fault.c --- a/arch/avr32/mm/fault.c
+++ linux-3.2/arch/avr32/mm/fault.c +++ b/arch/avr32/mm/fault.c
@@ -81,8 +81,7 @@ asmlinkage void do_page_fault(unsigned l @@ -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 * If we're in an interrupt or have no user context, we must
* not take the fault... * not take the fault...
*/ */
@ -74,11 +75,11 @@ Index: linux-3.2/arch/avr32/mm/fault.c
goto no_context; goto no_context;
local_irq_enable(); local_irq_enable();
Index: linux-3.2/arch/cris/mm/fault.c diff --git a/arch/cris/mm/fault.c b/arch/cris/mm/fault.c
=================================================================== index 2b2c292..ba9cfbe 100644
--- linux-3.2.orig/arch/cris/mm/fault.c --- a/arch/cris/mm/fault.c
+++ linux-3.2/arch/cris/mm/fault.c +++ b/arch/cris/mm/fault.c
@@ -111,7 +111,7 @@ do_page_fault(unsigned long address, str @@ -111,7 +111,7 @@ do_page_fault(unsigned long address, struct pt_regs *regs,
* user context, we must not take the fault. * user context, we must not take the fault.
*/ */
@ -87,11 +88,11 @@ Index: linux-3.2/arch/cris/mm/fault.c
goto no_context; goto no_context;
down_read(&mm->mmap_sem); down_read(&mm->mmap_sem);
Index: linux-3.2/arch/frv/mm/fault.c diff --git a/arch/frv/mm/fault.c b/arch/frv/mm/fault.c
=================================================================== index 3da8ec7..a9ce0f0 100644
--- linux-3.2.orig/arch/frv/mm/fault.c --- a/arch/frv/mm/fault.c
+++ linux-3.2/arch/frv/mm/fault.c +++ b/arch/frv/mm/fault.c
@@ -79,7 +79,7 @@ asmlinkage void do_page_fault(int datamm @@ -79,7 +79,7 @@ asmlinkage void do_page_fault(int datammu, unsigned long esr0, unsigned long ear
* If we're in an interrupt or have no user * If we're in an interrupt or have no user
* context, we must not take the fault.. * context, we must not take the fault..
*/ */
@ -100,11 +101,11 @@ Index: linux-3.2/arch/frv/mm/fault.c
goto no_context; goto no_context;
down_read(&mm->mmap_sem); down_read(&mm->mmap_sem);
Index: linux-3.2/arch/ia64/mm/fault.c diff --git a/arch/ia64/mm/fault.c b/arch/ia64/mm/fault.c
=================================================================== index 2a4e44f..05946c2 100644
--- linux-3.2.orig/arch/ia64/mm/fault.c --- a/arch/ia64/mm/fault.c
+++ linux-3.2/arch/ia64/mm/fault.c +++ b/arch/ia64/mm/fault.c
@@ -89,7 +89,7 @@ ia64_do_page_fault (unsigned long addres @@ -89,7 +89,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.. * If we're in an interrupt or have no user context, we must not take the fault..
*/ */
@ -113,11 +114,11 @@ Index: linux-3.2/arch/ia64/mm/fault.c
goto no_context; goto no_context;
#ifdef CONFIG_VIRTUAL_MEM_MAP #ifdef CONFIG_VIRTUAL_MEM_MAP
Index: linux-3.2/arch/m32r/mm/fault.c diff --git a/arch/m32r/mm/fault.c b/arch/m32r/mm/fault.c
=================================================================== index 16fa2c7..6d763f6 100644
--- linux-3.2.orig/arch/m32r/mm/fault.c --- a/arch/m32r/mm/fault.c
+++ linux-3.2/arch/m32r/mm/fault.c +++ b/arch/m32r/mm/fault.c
@@ -115,7 +115,7 @@ asmlinkage void do_page_fault(struct pt_ @@ -115,7 +115,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 * 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.. * atomic region then we must not take the fault..
*/ */
@ -126,11 +127,11 @@ Index: linux-3.2/arch/m32r/mm/fault.c
goto bad_area_nosemaphore; goto bad_area_nosemaphore;
/* When running in the kernel we expect faults to occur only to /* When running in the kernel we expect faults to occur only to
Index: linux-3.2/arch/m68k/mm/fault.c diff --git a/arch/m68k/mm/fault.c b/arch/m68k/mm/fault.c
=================================================================== index 238ffc0..74fe559 100644
--- linux-3.2.orig/arch/m68k/mm/fault.c --- a/arch/m68k/mm/fault.c
+++ linux-3.2/arch/m68k/mm/fault.c +++ b/arch/m68k/mm/fault.c
@@ -85,7 +85,7 @@ int do_page_fault(struct pt_regs *regs, @@ -85,7 +85,7 @@ int do_page_fault(struct pt_regs *regs, unsigned long address,
* If we're in an interrupt or have no user * If we're in an interrupt or have no user
* context, we must not take the fault.. * context, we must not take the fault..
*/ */
@ -139,11 +140,11 @@ Index: linux-3.2/arch/m68k/mm/fault.c
goto no_context; goto no_context;
down_read(&mm->mmap_sem); down_read(&mm->mmap_sem);
Index: linux-3.2/arch/microblaze/mm/fault.c diff --git a/arch/microblaze/mm/fault.c b/arch/microblaze/mm/fault.c
=================================================================== index c3f219c..4cdd84d 100644
--- linux-3.2.orig/arch/microblaze/mm/fault.c --- a/arch/microblaze/mm/fault.c
+++ linux-3.2/arch/microblaze/mm/fault.c +++ b/arch/microblaze/mm/fault.c
@@ -107,7 +107,7 @@ void do_page_fault(struct pt_regs *regs, @@ -107,7 +107,7 @@ void do_page_fault(struct pt_regs *regs, unsigned long address,
if ((error_code & 0x13) == 0x13 || (error_code & 0x11) == 0x11) if ((error_code & 0x13) == 0x13 || (error_code & 0x11) == 0x11)
is_write = 0; is_write = 0;
@ -152,11 +153,11 @@ Index: linux-3.2/arch/microblaze/mm/fault.c
if (kernel_mode(regs)) if (kernel_mode(regs))
goto bad_area_nosemaphore; goto bad_area_nosemaphore;
Index: linux-3.2/arch/mips/mm/fault.c diff --git a/arch/mips/mm/fault.c b/arch/mips/mm/fault.c
=================================================================== index ce7e75e..7ade72b 100644
--- linux-3.2.orig/arch/mips/mm/fault.c --- a/arch/mips/mm/fault.c
+++ linux-3.2/arch/mips/mm/fault.c +++ b/arch/mips/mm/fault.c
@@ -88,7 +88,7 @@ asmlinkage void __kprobes do_page_fault( @@ -88,7 +88,7 @@ asmlinkage void __kprobes do_page_fault(struct pt_regs *regs, unsigned long writ
* If we're in an interrupt or have no user * If we're in an interrupt or have no user
* context, we must not take the fault.. * context, we must not take the fault..
*/ */
@ -165,11 +166,11 @@ Index: linux-3.2/arch/mips/mm/fault.c
goto bad_area_nosemaphore; goto bad_area_nosemaphore;
down_read(&mm->mmap_sem); down_read(&mm->mmap_sem);
Index: linux-3.2/arch/mn10300/mm/fault.c diff --git a/arch/mn10300/mm/fault.c b/arch/mn10300/mm/fault.c
=================================================================== index 53c8d16..2fea01c 100644
--- linux-3.2.orig/arch/mn10300/mm/fault.c --- a/arch/mn10300/mm/fault.c
+++ linux-3.2/arch/mn10300/mm/fault.c +++ b/arch/mn10300/mm/fault.c
@@ -168,7 +168,7 @@ asmlinkage void do_page_fault(struct pt_ @@ -168,7 +168,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long fault_code,
* If we're in an interrupt or have no user * If we're in an interrupt or have no user
* context, we must not take the fault.. * context, we must not take the fault..
*/ */
@ -178,11 +179,11 @@ Index: linux-3.2/arch/mn10300/mm/fault.c
goto no_context; goto no_context;
down_read(&mm->mmap_sem); down_read(&mm->mmap_sem);
Index: linux-3.2/arch/parisc/mm/fault.c diff --git a/arch/parisc/mm/fault.c b/arch/parisc/mm/fault.c
=================================================================== index 09ecc8a..df22f39 100644
--- linux-3.2.orig/arch/parisc/mm/fault.c --- a/arch/parisc/mm/fault.c
+++ linux-3.2/arch/parisc/mm/fault.c +++ b/arch/parisc/mm/fault.c
@@ -176,7 +176,7 @@ void do_page_fault(struct pt_regs *regs, @@ -176,7 +176,7 @@ void do_page_fault(struct pt_regs *regs, unsigned long code,
unsigned long acc_type; unsigned long acc_type;
int fault; int fault;
@ -191,11 +192,11 @@ Index: linux-3.2/arch/parisc/mm/fault.c
goto no_context; goto no_context;
down_read(&mm->mmap_sem); down_read(&mm->mmap_sem);
Index: linux-3.2/arch/powerpc/mm/fault.c diff --git a/arch/powerpc/mm/fault.c b/arch/powerpc/mm/fault.c
=================================================================== index 17f8bbe..94bedd4 100644
--- linux-3.2.orig/arch/powerpc/mm/fault.c --- a/arch/powerpc/mm/fault.c
+++ linux-3.2/arch/powerpc/mm/fault.c +++ b/arch/powerpc/mm/fault.c
@@ -162,7 +162,7 @@ int __kprobes do_page_fault(struct pt_re @@ -162,7 +162,7 @@ int __kprobes do_page_fault(struct pt_regs *regs, unsigned long address,
} }
#endif #endif
@ -204,11 +205,11 @@ Index: linux-3.2/arch/powerpc/mm/fault.c
if (!user_mode(regs)) if (!user_mode(regs))
return SIGSEGV; return SIGSEGV;
/* in_atomic() in user mode is really bad, /* in_atomic() in user mode is really bad,
Index: linux-3.2/arch/s390/mm/fault.c diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c
=================================================================== index 0d60168..a68d836 100644
--- linux-3.2.orig/arch/s390/mm/fault.c --- a/arch/s390/mm/fault.c
+++ linux-3.2/arch/s390/mm/fault.c +++ b/arch/s390/mm/fault.c
@@ -295,8 +295,8 @@ static inline int do_exception(struct pt @@ -294,8 +294,8 @@ static inline int do_exception(struct pt_regs *regs, int access,
* user context. * user context.
*/ */
fault = VM_FAULT_BADCONTEXT; fault = VM_FAULT_BADCONTEXT;
@ -219,7 +220,7 @@ Index: linux-3.2/arch/s390/mm/fault.c
goto out; goto out;
address = trans_exc_code & __FAIL_ADDR_MASK; address = trans_exc_code & __FAIL_ADDR_MASK;
@@ -427,8 +427,8 @@ void __kprobes do_asce_exception(struct @@ -426,8 +426,8 @@ void __kprobes do_asce_exception(struct pt_regs *regs, long pgm_int_code,
struct mm_struct *mm = current->mm; struct mm_struct *mm = current->mm;
struct vm_area_struct *vma; struct vm_area_struct *vma;
@ -230,11 +231,11 @@ Index: linux-3.2/arch/s390/mm/fault.c
goto no_context; goto no_context;
down_read(&mm->mmap_sem); down_read(&mm->mmap_sem);
Index: linux-3.2/arch/score/mm/fault.c diff --git a/arch/score/mm/fault.c b/arch/score/mm/fault.c
=================================================================== index 4c12824..59fccbe 100644
--- linux-3.2.orig/arch/score/mm/fault.c --- a/arch/score/mm/fault.c
+++ linux-3.2/arch/score/mm/fault.c +++ b/arch/score/mm/fault.c
@@ -72,7 +72,7 @@ asmlinkage void do_page_fault(struct pt_ @@ -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 * If we're in an interrupt or have no user
* context, we must not take the fault.. * context, we must not take the fault..
*/ */
@ -243,11 +244,11 @@ Index: linux-3.2/arch/score/mm/fault.c
goto bad_area_nosemaphore; goto bad_area_nosemaphore;
down_read(&mm->mmap_sem); down_read(&mm->mmap_sem);
Index: linux-3.2/arch/sh/mm/fault_32.c diff --git a/arch/sh/mm/fault_32.c b/arch/sh/mm/fault_32.c
=================================================================== index a67ac56..643670d 100644
--- linux-3.2.orig/arch/sh/mm/fault_32.c --- a/arch/sh/mm/fault_32.c
+++ linux-3.2/arch/sh/mm/fault_32.c +++ b/arch/sh/mm/fault_32.c
@@ -166,7 +166,7 @@ asmlinkage void __kprobes do_page_fault( @@ -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 * If we're in an interrupt, have no user context or are running
* in an atomic region then we must not take the fault: * in an atomic region then we must not take the fault:
*/ */
@ -256,11 +257,11 @@ Index: linux-3.2/arch/sh/mm/fault_32.c
goto no_context; goto no_context;
down_read(&mm->mmap_sem); down_read(&mm->mmap_sem);
Index: linux-3.2/arch/sparc/mm/fault_32.c diff --git a/arch/sparc/mm/fault_32.c b/arch/sparc/mm/fault_32.c
=================================================================== index e0742c1..054cf56 100644
--- linux-3.2.orig/arch/sparc/mm/fault_32.c --- a/arch/sparc/mm/fault_32.c
+++ linux-3.2/arch/sparc/mm/fault_32.c +++ b/arch/sparc/mm/fault_32.c
@@ -247,7 +247,7 @@ asmlinkage void do_sparc_fault(struct pt @@ -247,7 +247,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 * If we're in an interrupt or have no user
* context, we must not take the fault.. * context, we must not take the fault..
*/ */
@ -269,11 +270,11 @@ Index: linux-3.2/arch/sparc/mm/fault_32.c
goto no_context; goto no_context;
perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address); perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address);
Index: linux-3.2/arch/sparc/mm/fault_64.c diff --git a/arch/sparc/mm/fault_64.c b/arch/sparc/mm/fault_64.c
=================================================================== index 9d691a5..f6572f8 100644
--- linux-3.2.orig/arch/sparc/mm/fault_64.c --- a/arch/sparc/mm/fault_64.c
+++ linux-3.2/arch/sparc/mm/fault_64.c +++ b/arch/sparc/mm/fault_64.c
@@ -322,7 +322,7 @@ asmlinkage void __kprobes do_sparc64_fau @@ -322,7 +322,7 @@ asmlinkage void __kprobes do_sparc64_fault(struct pt_regs *regs)
* If we're in an interrupt or have no user * If we're in an interrupt or have no user
* context, we must not take the fault.. * context, we must not take the fault..
*/ */
@ -282,11 +283,11 @@ Index: linux-3.2/arch/sparc/mm/fault_64.c
goto intr_or_no_mm; goto intr_or_no_mm;
perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address); perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address);
Index: linux-3.2/arch/tile/mm/fault.c diff --git a/arch/tile/mm/fault.c b/arch/tile/mm/fault.c
=================================================================== index ecdb016..1b6fa51 100644
--- linux-3.2.orig/arch/tile/mm/fault.c --- a/arch/tile/mm/fault.c
+++ linux-3.2/arch/tile/mm/fault.c +++ b/arch/tile/mm/fault.c
@@ -346,7 +346,7 @@ static int handle_page_fault(struct pt_r @@ -346,7 +346,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 * If we're in an interrupt, have no user context or are running in an
* atomic region then we must not take the fault. * atomic region then we must not take the fault.
*/ */
@ -295,11 +296,11 @@ Index: linux-3.2/arch/tile/mm/fault.c
vma = NULL; /* happy compiler */ vma = NULL; /* happy compiler */
goto bad_area_nosemaphore; goto bad_area_nosemaphore;
} }
Index: linux-3.2/arch/um/kernel/trap.c diff --git a/arch/um/kernel/trap.c b/arch/um/kernel/trap.c
=================================================================== index a283400..7878069 100644
--- linux-3.2.orig/arch/um/kernel/trap.c --- a/arch/um/kernel/trap.c
+++ linux-3.2/arch/um/kernel/trap.c +++ b/arch/um/kernel/trap.c
@@ -37,7 +37,7 @@ int handle_page_fault(unsigned long addr @@ -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 * If the fault was during atomic operation, don't take the fault, just
* fail. * fail.
*/ */
@ -308,11 +309,11 @@ Index: linux-3.2/arch/um/kernel/trap.c
goto out_nosemaphore; goto out_nosemaphore;
down_read(&mm->mmap_sem); down_read(&mm->mmap_sem);
Index: linux-3.2/arch/x86/mm/fault.c diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c
=================================================================== index 191015f..b567837 100644
--- linux-3.2.orig/arch/x86/mm/fault.c --- a/arch/x86/mm/fault.c
+++ linux-3.2/arch/x86/mm/fault.c +++ b/arch/x86/mm/fault.c
@@ -1084,7 +1084,7 @@ do_page_fault(struct pt_regs *regs, unsi @@ -1084,7 +1084,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 * If we're in an interrupt, have no user context or are running
* in an atomic region then we must not take the fault: * in an atomic region then we must not take the fault:
*/ */
@ -321,10 +322,10 @@ Index: linux-3.2/arch/x86/mm/fault.c
bad_area_nosemaphore(regs, error_code, address); bad_area_nosemaphore(regs, error_code, address);
return; return;
} }
Index: linux-3.2/arch/xtensa/mm/fault.c diff --git a/arch/xtensa/mm/fault.c b/arch/xtensa/mm/fault.c
=================================================================== index 705f483..8f3f52a 100644
--- linux-3.2.orig/arch/xtensa/mm/fault.c --- a/arch/xtensa/mm/fault.c
+++ linux-3.2/arch/xtensa/mm/fault.c +++ b/arch/xtensa/mm/fault.c
@@ -57,7 +57,7 @@ void do_page_fault(struct pt_regs *regs) @@ -57,7 +57,7 @@ void do_page_fault(struct pt_regs *regs)
/* If we're in an interrupt or have no user /* If we're in an interrupt or have no user
* context, we must not take the fault.. * context, we must not take the fault..
@ -334,10 +335,10 @@ Index: linux-3.2/arch/xtensa/mm/fault.c
bad_page_fault(regs, address, SIGSEGV); bad_page_fault(regs, address, SIGSEGV);
return; return;
} }
Index: linux-3.2/include/linux/sched.h diff --git a/include/linux/sched.h b/include/linux/sched.h
=================================================================== index bce86f9..8cb4365 100644
--- linux-3.2.orig/include/linux/sched.h --- a/include/linux/sched.h
+++ linux-3.2/include/linux/sched.h +++ b/include/linux/sched.h
@@ -91,6 +91,7 @@ struct sched_param { @@ -91,6 +91,7 @@ struct sched_param {
#include <linux/latencytop.h> #include <linux/latencytop.h>
#include <linux/cred.h> #include <linux/cred.h>
@ -374,11 +375,11 @@ Index: linux-3.2/include/linux/sched.h
/* /*
* Priority of a process goes from 0..MAX_PRIO-1, valid RT * Priority of a process goes from 0..MAX_PRIO-1, valid RT
* priority is 0..MAX_RT_PRIO-1, and SCHED_NORMAL/SCHED_BATCH * priority is 0..MAX_RT_PRIO-1, and SCHED_NORMAL/SCHED_BATCH
Index: linux-3.2/kernel/fork.c diff --git a/kernel/fork.c b/kernel/fork.c
=================================================================== index a17bc75..7992f54 100644
--- linux-3.2.orig/kernel/fork.c --- a/kernel/fork.c
+++ linux-3.2/kernel/fork.c +++ b/kernel/fork.c
@@ -1193,7 +1193,9 @@ static struct task_struct *copy_process( @@ -1196,7 +1196,9 @@ static struct task_struct *copy_process(unsigned long clone_flags,
p->hardirq_context = 0; p->hardirq_context = 0;
p->softirq_context = 0; p->softirq_context = 0;
#endif #endif
@ -388,3 +389,6 @@ Index: linux-3.2/kernel/fork.c
#ifdef CONFIG_LOCKDEP #ifdef CONFIG_LOCKDEP
p->lockdep_depth = 0; /* no locks held yet */ p->lockdep_depth = 0; /* no locks held yet */
p->curr_chain_key = 0; p->curr_chain_key = 0;
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: mm: raw_pagefault_disable From 48b2128f0cb2e9503cce884a100c636729eb6b23 Mon Sep 17 00:00:00 2001
From: Peter Zijlstra <a.p.zijlstra@chello.nl> From: Peter Zijlstra <a.p.zijlstra@chello.nl>
Date: Fri Aug 05 17:16:58 CEST 2011 Date: Fri, 5 Aug 2011 17:16:58 +0200
Subject: [PATCH 048/267] mm: raw_pagefault_disable
Adding migrate_disable() to pagefault_disable() to preserve the Adding migrate_disable() to pagefault_disable() to preserve the
per-cpu thing for kmap_atomic might not have been the best of choices. 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().
[<ffffffff814ffb38>] smp_apic_timer_interrupt+0x85/0x98 [<ffffffff814ffb38>] smp_apic_timer_interrupt+0x85/0x98
[<ffffffff814fef13>] apic_timer_interrupt+0x13/0x20 [<ffffffff814fef13>] apic_timer_interrupt+0x13/0x20
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/n/tip-31keae8mkjiv8esq4rl76cib@git.kernel.org 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 ++ mm/memory.c | 2 ++
2 files changed, 30 insertions(+), 2 deletions(-) 2 files changed, 30 insertions(+), 2 deletions(-)
Index: linux-3.2/include/linux/uaccess.h diff --git a/include/linux/uaccess.h b/include/linux/uaccess.h
=================================================================== index 9414a1b..44b3751 100644
--- linux-3.2.orig/include/linux/uaccess.h --- a/include/linux/uaccess.h
+++ linux-3.2/include/linux/uaccess.h +++ b/include/linux/uaccess.h
@@ -8,8 +8,34 @@ @@ -8,8 +8,34 @@
* These routines enable/disable the pagefault handler in that * These routines enable/disable the pagefault handler in that
* it will not take any MM locks and go straight to the fixup table. * it will not take any MM locks and go straight to the fixup table.
@ -117,7 +117,7 @@ Index: linux-3.2/include/linux/uaccess.h
#ifndef ARCH_HAS_NOCACHE_UACCESS #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(); \ mm_segment_t old_fs = get_fs(); \
\ \
set_fs(KERNEL_DS); \ set_fs(KERNEL_DS); \
@ -129,11 +129,11 @@ Index: linux-3.2/include/linux/uaccess.h
set_fs(old_fs); \ set_fs(old_fs); \
ret; \ ret; \
}) })
Index: linux-3.2/mm/memory.c diff --git a/mm/memory.c b/mm/memory.c
=================================================================== index 454ad3f..a3f7ed8 100644
--- linux-3.2.orig/mm/memory.c --- a/mm/memory.c
+++ linux-3.2/mm/memory.c +++ b/mm/memory.c
@@ -3436,6 +3436,7 @@ unlock: @@ -3444,6 +3444,7 @@ unlock:
return 0; return 0;
} }
@ -141,7 +141,7 @@ Index: linux-3.2/mm/memory.c
void pagefault_disable(void) void pagefault_disable(void)
{ {
inc_preempt_count(); inc_preempt_count();
@@ -3464,6 +3465,7 @@ void pagefault_enable(void) @@ -3472,6 +3473,7 @@ void pagefault_enable(void)
preempt_check_resched(); preempt_check_resched();
} }
EXPORT_SYMBOL_GPL(pagefault_enable); EXPORT_SYMBOL_GPL(pagefault_enable);
@ -149,3 +149,6 @@ Index: linux-3.2/mm/memory.c
/* /*
* By the time we get here, we already hold the mm semaphore * By the time we get here, we already hold the mm semaphore
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: filemap-fix-up.patch From 90e4703e2535c334bf845c719179075440e4fdca Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Fri, 17 Jun 2011 18:56:24 +0200 Date: Fri, 17 Jun 2011 18:56:24 +0200
Subject: [PATCH 049/267] filemap-fix-up.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Wrecked-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Wrecked-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
@ -9,11 +10,11 @@ Link: http://lkml.kernel.org/n/tip-m6yuzd6ul717hlnl2gj6p3ou@git.kernel.org
mm/filemap.c | 2 +- mm/filemap.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-) 1 file changed, 1 insertion(+), 1 deletion(-)
Index: linux-3.2/mm/filemap.c diff --git a/mm/filemap.c b/mm/filemap.c
=================================================================== index 03c5b0e..4a30d36 100644
--- linux-3.2.orig/mm/filemap.c --- a/mm/filemap.c
+++ linux-3.2/mm/filemap.c +++ b/mm/filemap.c
@@ -2044,7 +2044,7 @@ size_t iov_iter_copy_from_user_atomic(st @@ -2044,7 +2044,7 @@ size_t iov_iter_copy_from_user_atomic(struct page *page,
char *kaddr; char *kaddr;
size_t copied; size_t copied;
@ -22,3 +23,6 @@ Index: linux-3.2/mm/filemap.c
kaddr = kmap_atomic(page, KM_USER0); kaddr = kmap_atomic(page, KM_USER0);
if (likely(i->nr_segs == 1)) { if (likely(i->nr_segs == 1)) {
int left; int left;
--
1.7.10

View File

@ -1,6 +1,8 @@
From d7f4a8b96d5578399fab50795bb26568d3a4a1dc Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Sat, 25 Jul 2009 22:06:27 +0200 Date: Sat, 25 Jul 2009 22:06:27 +0200
Subject: mm: Remove preempt count from pagefault disable/enable Subject: [PATCH 050/267] mm: Remove preempt count from pagefault
disable/enable
Now that all users are cleaned up, we can remove the preemption count. Now that all users are cleaned up, we can remove the preemption count.
@ -9,11 +11,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
mm/memory.c | 7 ------- mm/memory.c | 7 -------
1 file changed, 7 deletions(-) 1 file changed, 7 deletions(-)
Index: linux-3.2/mm/memory.c diff --git a/mm/memory.c b/mm/memory.c
=================================================================== index a3f7ed8..7fa62d9 100644
--- linux-3.2.orig/mm/memory.c --- a/mm/memory.c
+++ linux-3.2/mm/memory.c +++ b/mm/memory.c
@@ -3439,7 +3439,6 @@ unlock: @@ -3447,7 +3447,6 @@ unlock:
#ifdef CONFIG_PREEMPT_RT_FULL #ifdef CONFIG_PREEMPT_RT_FULL
void pagefault_disable(void) void pagefault_disable(void)
{ {
@ -21,7 +23,7 @@ Index: linux-3.2/mm/memory.c
current->pagefault_disabled++; current->pagefault_disabled++;
/* /*
* make sure to have issued the store before a pagefault * make sure to have issued the store before a pagefault
@@ -3457,12 +3456,6 @@ void pagefault_enable(void) @@ -3465,12 +3464,6 @@ void pagefault_enable(void)
*/ */
barrier(); barrier();
current->pagefault_disabled--; current->pagefault_disabled--;
@ -34,3 +36,6 @@ Index: linux-3.2/mm/memory.c
} }
EXPORT_SYMBOL_GPL(pagefault_enable); EXPORT_SYMBOL_GPL(pagefault_enable);
#endif #endif
--
1.7.10

View File

@ -1,22 +1,22 @@
From 7aa88c0924519e9f412b40d1b5fe72bd7d9afff0 Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu> From: Ingo Molnar <mingo@elte.hu>
Date: Fri, 3 Jul 2009 08:29:25 -0500 Date: Fri, 3 Jul 2009 08:29:25 -0500
Subject: x86: highmem: Replace BUG_ON by WARN_ON Subject: [PATCH 051/267] x86: highmem: Replace BUG_ON by WARN_ON
The machine might survive that problem and be at least in a state The machine might survive that problem and be at least in a state
which allows us to get more information about the problem. which allows us to get more information about the problem.
Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
arch/x86/mm/highmem_32.c | 2 +- arch/x86/mm/highmem_32.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-) 1 file changed, 1 insertion(+), 1 deletion(-)
Index: linux-3.2/arch/x86/mm/highmem_32.c diff --git a/arch/x86/mm/highmem_32.c b/arch/x86/mm/highmem_32.c
=================================================================== index f4f29b1..71bd7d6 100644
--- linux-3.2.orig/arch/x86/mm/highmem_32.c --- a/arch/x86/mm/highmem_32.c
+++ linux-3.2/arch/x86/mm/highmem_32.c +++ b/arch/x86/mm/highmem_32.c
@@ -43,7 +43,7 @@ void *kmap_atomic_prot(struct page *page @@ -43,7 +43,7 @@ void *kmap_atomic_prot(struct page *page, pgprot_t prot)
type = kmap_atomic_idx_push(); type = kmap_atomic_idx_push();
idx = type + KM_TYPE_NR*smp_processor_id(); idx = type + KM_TYPE_NR*smp_processor_id();
vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx); vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx);
@ -25,3 +25,6 @@ Index: linux-3.2/arch/x86/mm/highmem_32.c
set_pte(kmap_pte-idx, mk_pte(page, prot)); set_pte(kmap_pte-idx, mk_pte(page, prot));
arch_flush_lazy_mmu_mode(); arch_flush_lazy_mmu_mode();
--
1.7.10

View File

@ -1,6 +1,7 @@
From f79388c83db88b6ef89497405df9c630964b512e Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Thu, 15 Jul 2010 10:29:00 +0200 Date: Thu, 15 Jul 2010 10:29:00 +0200
Subject: suspend: Prevent might sleep splats Subject: [PATCH 052/267] suspend: Prevent might sleep splats
timekeeping suspend/resume calls read_persistant_clock() which takes timekeeping suspend/resume calls read_persistant_clock() which takes
rtc_lock. That results in might sleep warnings because at that point rtc_lock. That results in might sleep warnings because at that point
@ -16,18 +17,17 @@ and restoring it to SYSTEM_RUNNING afer sysdev_resume().
Needs to be revisited. Needs to be revisited.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
include/linux/kernel.h | 2 +- include/linux/kernel.h | 2 +-
kernel/power/hibernate.c | 7 +++++++ kernel/power/hibernate.c | 7 +++++++
kernel/power/suspend.c | 4 ++++ kernel/power/suspend.c | 4 ++++
3 files changed, 12 insertions(+), 1 deletion(-) 3 files changed, 12 insertions(+), 1 deletion(-)
Index: linux-3.2/include/linux/kernel.h diff --git a/include/linux/kernel.h b/include/linux/kernel.h
=================================================================== index a70783d..22bdd4b 100644
--- linux-3.2.orig/include/linux/kernel.h --- a/include/linux/kernel.h
+++ linux-3.2/include/linux/kernel.h +++ b/include/linux/kernel.h
@@ -356,7 +356,7 @@ extern enum system_states { @@ -369,7 +369,7 @@ extern enum system_states {
SYSTEM_HALT, SYSTEM_HALT,
SYSTEM_POWER_OFF, SYSTEM_POWER_OFF,
SYSTEM_RESTART, SYSTEM_RESTART,
@ -36,11 +36,11 @@ Index: linux-3.2/include/linux/kernel.h
} system_state; } system_state;
#define TAINT_PROPRIETARY_MODULE 0 #define TAINT_PROPRIETARY_MODULE 0
Index: linux-3.2/kernel/power/hibernate.c diff --git a/kernel/power/hibernate.c b/kernel/power/hibernate.c
=================================================================== index 7c0d578..32741e2 100644
--- linux-3.2.orig/kernel/power/hibernate.c --- a/kernel/power/hibernate.c
+++ linux-3.2/kernel/power/hibernate.c +++ b/kernel/power/hibernate.c
@@ -284,6 +284,8 @@ static int create_image(int platform_mod @@ -284,6 +284,8 @@ static int create_image(int platform_mode)
local_irq_disable(); local_irq_disable();
@ -49,7 +49,7 @@ Index: linux-3.2/kernel/power/hibernate.c
error = syscore_suspend(); error = syscore_suspend();
if (error) { if (error) {
printk(KERN_ERR "PM: Some system devices failed to power down, " printk(KERN_ERR "PM: Some system devices failed to power down, "
@@ -311,6 +313,7 @@ static int create_image(int platform_mod @@ -311,6 +313,7 @@ static int create_image(int platform_mode)
syscore_resume(); syscore_resume();
Enable_irqs: Enable_irqs:
@ -57,7 +57,7 @@ Index: linux-3.2/kernel/power/hibernate.c
local_irq_enable(); local_irq_enable();
Enable_cpus: Enable_cpus:
@@ -437,6 +440,7 @@ static int resume_target_kernel(bool pla @@ -437,6 +440,7 @@ static int resume_target_kernel(bool platform_mode)
goto Enable_cpus; goto Enable_cpus;
local_irq_disable(); local_irq_disable();
@ -65,7 +65,7 @@ Index: linux-3.2/kernel/power/hibernate.c
error = syscore_suspend(); error = syscore_suspend();
if (error) if (error)
@@ -470,6 +474,7 @@ static int resume_target_kernel(bool pla @@ -470,6 +474,7 @@ static int resume_target_kernel(bool platform_mode)
syscore_resume(); syscore_resume();
Enable_irqs: Enable_irqs:
@ -89,11 +89,11 @@ Index: linux-3.2/kernel/power/hibernate.c
local_irq_enable(); local_irq_enable();
enable_nonboot_cpus(); enable_nonboot_cpus();
Index: linux-3.2/kernel/power/suspend.c diff --git a/kernel/power/suspend.c b/kernel/power/suspend.c
=================================================================== index 4953dc0..691f46e 100644
--- linux-3.2.orig/kernel/power/suspend.c --- a/kernel/power/suspend.c
+++ linux-3.2/kernel/power/suspend.c +++ b/kernel/power/suspend.c
@@ -171,6 +171,8 @@ static int suspend_enter(suspend_state_t @@ -171,6 +171,8 @@ static int suspend_enter(suspend_state_t state, bool *wakeup)
arch_suspend_disable_irqs(); arch_suspend_disable_irqs();
BUG_ON(!irqs_disabled()); BUG_ON(!irqs_disabled());
@ -102,7 +102,7 @@ Index: linux-3.2/kernel/power/suspend.c
error = syscore_suspend(); error = syscore_suspend();
if (!error) { if (!error) {
*wakeup = pm_wakeup_pending(); *wakeup = pm_wakeup_pending();
@@ -181,6 +183,8 @@ static int suspend_enter(suspend_state_t @@ -181,6 +183,8 @@ static int suspend_enter(suspend_state_t state, bool *wakeup)
syscore_resume(); syscore_resume();
} }
@ -111,3 +111,6 @@ Index: linux-3.2/kernel/power/suspend.c
arch_suspend_enable_irqs(); arch_suspend_enable_irqs();
BUG_ON(irqs_disabled()); BUG_ON(irqs_disabled());
--
1.7.10

View File

@ -1,6 +1,7 @@
From 417e0d7c3de36b87075e446b0920e480fb96a871 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Thu, 13 Aug 2009 09:04:10 +0200 Date: Thu, 13 Aug 2009 09:04:10 +0200
Subject: OF: Fixup resursive locking code paths Subject: [PATCH 053/267] OF: Fixup resursive locking code paths
There is no real reason to use a rwlock for devtree_lock. It even 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 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. read_lock.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
drivers/of/base.c | 93 +++++++++++++++++++++++++++++++++++++++++------------- drivers/of/base.c | 93 ++++++++++++++++++++++++++++++++++++++++-------------
1 file changed, 71 insertions(+), 22 deletions(-) 1 file changed, 71 insertions(+), 22 deletions(-)
Index: linux-3.2/drivers/of/base.c diff --git a/drivers/of/base.c b/drivers/of/base.c
=================================================================== index 9b6588e..200f2dd 100644
--- linux-3.2.orig/drivers/of/base.c --- a/drivers/of/base.c
+++ linux-3.2/drivers/of/base.c +++ b/drivers/of/base.c
@@ -163,16 +163,14 @@ void of_node_put(struct device_node *nod @@ -163,16 +163,14 @@ void of_node_put(struct device_node *node)
EXPORT_SYMBOL(of_node_put); EXPORT_SYMBOL(of_node_put);
#endif /* !CONFIG_SPARC */ #endif /* !CONFIG_SPARC */
@ -40,7 +40,7 @@ Index: linux-3.2/drivers/of/base.c
for (pp = np->properties; pp != 0; pp = pp->next) { for (pp = np->properties; pp != 0; pp = pp->next) {
if (of_prop_cmp(pp->name, name) == 0) { if (of_prop_cmp(pp->name, name) == 0) {
if (lenp != 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; break;
} }
} }
@ -99,7 +99,7 @@ Index: linux-3.2/drivers/of/base.c
if (cp == NULL) if (cp == NULL)
return 0; return 0;
while (cplen > 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; return 0;
} }
@ -120,7 +120,7 @@ Index: linux-3.2/drivers/of/base.c
EXPORT_SYMBOL(of_device_is_compatible); 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 if (type
&& !(np->type && (of_node_cmp(np->type, type) == 0))) && !(np->type && (of_node_cmp(np->type, type) == 0)))
continue; continue;
@ -149,7 +149,7 @@ Index: linux-3.2/drivers/of/base.c
{ {
if (!matches) if (!matches)
return NULL; 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 match &= node->type
&& !strcmp(matches->type, node->type); && !strcmp(matches->type, node->type);
if (matches->compatible[0]) if (matches->compatible[0])
@ -184,7 +184,7 @@ Index: linux-3.2/drivers/of/base.c
EXPORT_SYMBOL(of_match_node); 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); read_lock(&devtree_lock);
np = from ? from->allnext : allnodes; np = from ? from->allnext : allnodes;
for (; np; np = np->allnext) { for (; np; np = np->allnext) {
@ -193,3 +193,6 @@ Index: linux-3.2/drivers/of/base.c
break; break;
} }
of_node_put(from); of_node_put(from);
--
1.7.10

View File

@ -1,19 +1,20 @@
Subject: of-convert-devtree-lock.patch From 580a4dd59597f8d389ab340f87ebb0ad654db7e3 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Mon, 21 Mar 2011 14:35:34 +0100 Date: Mon, 21 Mar 2011 14:35:34 +0100
Subject: [PATCH 054/267] of-convert-devtree-lock.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
arch/sparc/kernel/prom_common.c | 4 - arch/sparc/kernel/prom_common.c | 4 +-
drivers/of/base.c | 92 ++++++++++++++++++++++------------------ drivers/of/base.c | 92 ++++++++++++++++++++++-----------------
include/linux/of.h | 2 include/linux/of.h | 2 +-
3 files changed, 55 insertions(+), 43 deletions(-) 3 files changed, 55 insertions(+), 43 deletions(-)
Index: linux-3.2/arch/sparc/kernel/prom_common.c diff --git a/arch/sparc/kernel/prom_common.c b/arch/sparc/kernel/prom_common.c
=================================================================== index 741df91..ca73a28 100644
--- linux-3.2.orig/arch/sparc/kernel/prom_common.c --- a/arch/sparc/kernel/prom_common.c
+++ linux-3.2/arch/sparc/kernel/prom_common.c +++ b/arch/sparc/kernel/prom_common.c
@@ -65,7 +65,7 @@ int of_set_property(struct device_node * @@ -65,7 +65,7 @@ int of_set_property(struct device_node *dp, const char *name, void *val, int len
err = -ENODEV; err = -ENODEV;
mutex_lock(&of_set_property_mutex); mutex_lock(&of_set_property_mutex);
@ -22,7 +23,7 @@ Index: linux-3.2/arch/sparc/kernel/prom_common.c
prevp = &dp->properties; prevp = &dp->properties;
while (*prevp) { while (*prevp) {
struct property *prop = *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; prevp = &(*prevp)->next;
} }
@ -31,10 +32,10 @@ Index: linux-3.2/arch/sparc/kernel/prom_common.c
mutex_unlock(&of_set_property_mutex); mutex_unlock(&of_set_property_mutex);
/* XXX Upate procfs if necessary... */ /* XXX Upate procfs if necessary... */
Index: linux-3.2/drivers/of/base.c diff --git a/drivers/of/base.c b/drivers/of/base.c
=================================================================== index 200f2dd..becc6ca 100644
--- linux-3.2.orig/drivers/of/base.c --- a/drivers/of/base.c
+++ linux-3.2/drivers/of/base.c +++ b/drivers/of/base.c
@@ -54,7 +54,7 @@ static DEFINE_MUTEX(of_aliases_mutex); @@ -54,7 +54,7 @@ static DEFINE_MUTEX(of_aliases_mutex);
/* use when traversing tree through the allnext, child, sibling, /* use when traversing tree through the allnext, child, sibling,
* or parent members of struct device_node. * or parent members of struct device_node.
@ -44,7 +45,7 @@ Index: linux-3.2/drivers/of/base.c
int of_n_addr_cells(struct device_node *np) 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) int *lenp)
{ {
struct property *pp; struct property *pp;
@ -58,7 +59,7 @@ Index: linux-3.2/drivers/of/base.c
return pp; 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; struct device_node *np;
@ -74,7 +75,7 @@ Index: linux-3.2/drivers/of/base.c
return np; return np;
} }
EXPORT_SYMBOL(of_find_all_nodes); 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, int of_device_is_compatible(const struct device_node *device,
const char *compat) const char *compat)
{ {
@ -124,7 +125,7 @@ Index: linux-3.2/drivers/of/base.c
return parent; 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 *prev)
{ {
struct device_node *next; struct device_node *next;
@ -160,7 +161,7 @@ Index: linux-3.2/drivers/of/base.c
return np; return np;
} }
EXPORT_SYMBOL(of_find_node_by_path); 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) const char *name)
{ {
struct device_node *np; struct device_node *np;
@ -179,7 +180,7 @@ Index: linux-3.2/drivers/of/base.c
return np; return np;
} }
EXPORT_SYMBOL(of_find_node_by_name); 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) const char *type)
{ {
struct device_node *np; struct device_node *np;
@ -198,7 +199,7 @@ Index: linux-3.2/drivers/of/base.c
return np; return np;
} }
EXPORT_SYMBOL(of_find_node_by_type); 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) const char *type, const char *compatible)
{ {
struct device_node *np; struct device_node *np;
@ -209,7 +210,7 @@ Index: linux-3.2/drivers/of/base.c
np = from ? from->allnext : allnodes; np = from ? from->allnext : allnodes;
for (; np; np = np->allnext) { for (; np; np = np->allnext) {
if (type 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; break;
} }
of_node_put(from); of_node_put(from);
@ -218,7 +219,7 @@ Index: linux-3.2/drivers/of/base.c
return np; return np;
} }
EXPORT_SYMBOL(of_find_compatible_node); 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 device_node *np;
struct property *pp; struct property *pp;
@ -229,7 +230,7 @@ Index: linux-3.2/drivers/of/base.c
np = from ? from->allnext : allnodes; np = from ? from->allnext : allnodes;
for (; np; np = np->allnext) { for (; np; np = np->allnext) {
for (pp = np->properties; pp != 0; pp = pp->next) { 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: out:
of_node_put(from); of_node_put(from);
@ -238,7 +239,7 @@ Index: linux-3.2/drivers/of/base.c
return np; return np;
} }
EXPORT_SYMBOL(of_find_node_with_property); 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 device_node *node)
{ {
const struct of_device_id *match; const struct of_device_id *match;
@ -252,7 +253,7 @@ Index: linux-3.2/drivers/of/base.c
return match; return match;
} }
EXPORT_SYMBOL(of_match_node); 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) const struct of_device_id *matches)
{ {
struct device_node *np; struct device_node *np;
@ -271,7 +272,7 @@ Index: linux-3.2/drivers/of/base.c
return np; return np;
} }
EXPORT_SYMBOL(of_find_matching_node); 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; struct device_node *np;
@ -286,7 +287,7 @@ Index: linux-3.2/drivers/of/base.c
return np; return np;
} }
EXPORT_SYMBOL(of_find_node_by_phandle); EXPORT_SYMBOL(of_find_node_by_phandle);
@@ -998,18 +1010,18 @@ int prom_add_property(struct device_node @@ -998,18 +1010,18 @@ int prom_add_property(struct device_node *np, struct property *prop)
unsigned long flags; unsigned long flags;
prop->next = NULL; prop->next = NULL;
@ -308,7 +309,7 @@ Index: linux-3.2/drivers/of/base.c
#ifdef CONFIG_PROC_DEVICETREE #ifdef CONFIG_PROC_DEVICETREE
/* try to add to proc as well if it was initialized */ /* try to add to proc as well if it was initialized */
@@ -1034,7 +1046,7 @@ int prom_remove_property(struct device_n @@ -1034,7 +1046,7 @@ int prom_remove_property(struct device_node *np, struct property *prop)
unsigned long flags; unsigned long flags;
int found = 0; int found = 0;
@ -317,7 +318,7 @@ Index: linux-3.2/drivers/of/base.c
next = &np->properties; next = &np->properties;
while (*next) { while (*next) {
if (*next == prop) { if (*next == prop) {
@@ -1047,7 +1059,7 @@ int prom_remove_property(struct device_n @@ -1047,7 +1059,7 @@ int prom_remove_property(struct device_node *np, struct property *prop)
} }
next = &(*next)->next; next = &(*next)->next;
} }
@ -326,7 +327,7 @@ Index: linux-3.2/drivers/of/base.c
if (!found) if (!found)
return -ENODEV; return -ENODEV;
@@ -1077,7 +1089,7 @@ int prom_update_property(struct device_n @@ -1077,7 +1089,7 @@ int prom_update_property(struct device_node *np,
unsigned long flags; unsigned long flags;
int found = 0; int found = 0;
@ -335,7 +336,7 @@ Index: linux-3.2/drivers/of/base.c
next = &np->properties; next = &np->properties;
while (*next) { while (*next) {
if (*next == oldprop) { if (*next == oldprop) {
@@ -1091,7 +1103,7 @@ int prom_update_property(struct device_n @@ -1091,7 +1103,7 @@ int prom_update_property(struct device_node *np,
} }
next = &(*next)->next; next = &(*next)->next;
} }
@ -344,7 +345,7 @@ Index: linux-3.2/drivers/of/base.c
if (!found) if (!found)
return -ENODEV; return -ENODEV;
@@ -1121,12 +1133,12 @@ void of_attach_node(struct device_node * @@ -1121,12 +1133,12 @@ void of_attach_node(struct device_node *np)
{ {
unsigned long flags; unsigned long flags;
@ -359,7 +360,7 @@ Index: linux-3.2/drivers/of/base.c
} }
/** /**
@@ -1140,7 +1152,7 @@ void of_detach_node(struct device_node * @@ -1140,7 +1152,7 @@ void of_detach_node(struct device_node *np)
struct device_node *parent; struct device_node *parent;
unsigned long flags; unsigned long flags;
@ -368,7 +369,7 @@ Index: linux-3.2/drivers/of/base.c
parent = np->parent; parent = np->parent;
if (!parent) if (!parent)
@@ -1171,7 +1183,7 @@ void of_detach_node(struct device_node * @@ -1171,7 +1183,7 @@ void of_detach_node(struct device_node *np)
of_node_set_flag(np, OF_DETACHED); of_node_set_flag(np, OF_DETACHED);
out_unlock: out_unlock:
@ -377,10 +378,10 @@ Index: linux-3.2/drivers/of/base.c
} }
#endif /* defined(CONFIG_OF_DYNAMIC) */ #endif /* defined(CONFIG_OF_DYNAMIC) */
Index: linux-3.2/include/linux/of.h diff --git a/include/linux/of.h b/include/linux/of.h
=================================================================== index 4948552..e87303d 100644
--- linux-3.2.orig/include/linux/of.h --- a/include/linux/of.h
+++ linux-3.2/include/linux/of.h +++ b/include/linux/of.h
@@ -71,7 +71,7 @@ struct device_node { @@ -71,7 +71,7 @@ struct device_node {
extern struct device_node *allnodes; extern struct device_node *allnodes;
extern struct device_node *of_chosen; extern struct device_node *of_chosen;
@ -390,3 +391,6 @@ Index: linux-3.2/include/linux/of.h
static inline bool of_have_populated_dt(void) static inline bool of_have_populated_dt(void)
{ {
--
1.7.10

View File

@ -1,17 +1,18 @@
Subject: list-add-list-last-entry.patch From cbf1e12f91e468d580db7a5ecefa0bdab8021cdf Mon Sep 17 00:00:00 2001
From: Peter Zijlstra <peterz@infradead.org> From: Peter Zijlstra <peterz@infradead.org>
Date: Tue, 21 Jun 2011 11:22:36 +0200 Date: Tue, 21 Jun 2011 11:22:36 +0200
Subject: [PATCH 055/267] list-add-list-last-entry.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
include/linux/list.h | 11 +++++++++++ include/linux/list.h | 11 +++++++++++
1 file changed, 11 insertions(+) 1 file changed, 11 insertions(+)
Index: linux-3.2/include/linux/list.h diff --git a/include/linux/list.h b/include/linux/list.h
=================================================================== index cc6d2aa..7a9851b 100644
--- linux-3.2.orig/include/linux/list.h --- a/include/linux/list.h
+++ linux-3.2/include/linux/list.h +++ b/include/linux/list.h
@@ -362,6 +362,17 @@ static inline void list_splice_tail_init @@ -362,6 +362,17 @@ static inline void list_splice_tail_init(struct list_head *list,
list_entry((ptr)->next, type, member) list_entry((ptr)->next, type, member)
/** /**
@ -29,3 +30,6 @@ Index: linux-3.2/include/linux/list.h
* list_for_each - iterate over a list * list_for_each - iterate over a list
* @pos: the &struct list_head to use as a loop cursor. * @pos: the &struct list_head to use as a loop cursor.
* @head: the head for your list. * @head: the head for your list.
--
1.7.10

View File

@ -1,17 +1,18 @@
Subject: mm-page-alloc-use-list-last-entry.patch From eadff32638247080501a10cd5294d86e535c0019 Mon Sep 17 00:00:00 2001
From: Peter Zijlstra <peterz@infradead.org> From: Peter Zijlstra <peterz@infradead.org>
Date: Tue, 21 Jun 2011 11:24:35 +0200 Date: Tue, 21 Jun 2011 11:24:35 +0200
Subject: [PATCH 056/267] mm-page-alloc-use-list-last-entry.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
mm/page_alloc.c | 2 +- mm/page_alloc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-) 1 file changed, 1 insertion(+), 1 deletion(-)
Index: linux-3.2/mm/page_alloc.c diff --git a/mm/page_alloc.c b/mm/page_alloc.c
=================================================================== index 485be89..3344154 100644
--- linux-3.2.orig/mm/page_alloc.c --- a/mm/page_alloc.c
+++ linux-3.2/mm/page_alloc.c +++ b/mm/page_alloc.c
@@ -625,7 +625,7 @@ static void free_pcppages_bulk(struct zo @@ -625,7 +625,7 @@ static void free_pcppages_bulk(struct zone *zone, int count,
batch_free = to_free; batch_free = to_free;
do { do {
@ -20,3 +21,6 @@ Index: linux-3.2/mm/page_alloc.c
/* must delete as __free_one_page list manipulates */ /* must delete as __free_one_page list manipulates */
list_del(&page->lru); list_del(&page->lru);
/* MIGRATE_MOVABLE list may include MIGRATE_RESERVEs */ /* MIGRATE_MOVABLE list may include MIGRATE_RESERVEs */
--
1.7.10

View File

@ -1,17 +1,18 @@
Subject: mm-slab-move-debug-out.patch From a04f0b4dea8eaefdb1f1c10122a74aee2875b1f0 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Mon, 20 Jun 2011 10:42:04 +0200 Date: Mon, 20 Jun 2011 10:42:04 +0200
Subject: [PATCH 057/267] mm-slab-move-debug-out.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
mm/slab.c | 4 ++-- mm/slab.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-) 1 file changed, 2 insertions(+), 2 deletions(-)
Index: linux-3.2/mm/slab.c diff --git a/mm/slab.c b/mm/slab.c
=================================================================== index b76905e..1fd9983 100644
--- linux-3.2.orig/mm/slab.c --- a/mm/slab.c
+++ linux-3.2/mm/slab.c +++ b/mm/slab.c
@@ -3851,10 +3851,10 @@ void kmem_cache_free(struct kmem_cache * @@ -3851,10 +3851,10 @@ void kmem_cache_free(struct kmem_cache *cachep, void *objp)
{ {
unsigned long flags; unsigned long flags;
@ -36,3 +37,6 @@ Index: linux-3.2/mm/slab.c
__cache_free(c, (void *)objp, __builtin_return_address(0)); __cache_free(c, (void *)objp, __builtin_return_address(0));
local_irq_restore(flags); local_irq_restore(flags);
} }
--
1.7.10

View File

@ -1,16 +1,17 @@
Subject: rwsem-inlcude-fix.patch From dde840601c92b17bf87a3357ac64ad703ef3e7e2 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Fri, 15 Jul 2011 21:24:27 +0200 Date: Fri, 15 Jul 2011 21:24:27 +0200
Subject: [PATCH 058/267] rwsem-inlcude-fix.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
include/linux/pid.h | 1 + include/linux/pid.h | 1 +
1 file changed, 1 insertion(+) 1 file changed, 1 insertion(+)
Index: linux-3.2/include/linux/pid.h diff --git a/include/linux/pid.h b/include/linux/pid.h
=================================================================== index b152d44..7f33683 100644
--- linux-3.2.orig/include/linux/pid.h --- a/include/linux/pid.h
+++ linux-3.2/include/linux/pid.h +++ b/include/linux/pid.h
@@ -2,6 +2,7 @@ @@ -2,6 +2,7 @@
#define _LINUX_PID_H #define _LINUX_PID_H
@ -19,3 +20,6 @@ Index: linux-3.2/include/linux/pid.h
enum pid_type enum pid_type
{ {
--
1.7.10

View File

@ -1,16 +1,17 @@
Subject: sysctl-include-fix.patch From b44a025ed02cf7deb699ff642758cea3b6198cb7 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Mon, 14 Nov 2011 10:52:34 +0100 Date: Mon, 14 Nov 2011 10:52:34 +0100
Subject: [PATCH 059/267] sysctl-include-fix.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
include/linux/sysctl.h | 1 + include/linux/sysctl.h | 1 +
1 file changed, 1 insertion(+) 1 file changed, 1 insertion(+)
Index: linux-3.2/include/linux/sysctl.h diff --git a/include/linux/sysctl.h b/include/linux/sysctl.h
=================================================================== index 703cfa33..b954c41 100644
--- linux-3.2.orig/include/linux/sysctl.h --- a/include/linux/sysctl.h
+++ linux-3.2/include/linux/sysctl.h +++ b/include/linux/sysctl.h
@@ -932,6 +932,7 @@ enum @@ -932,6 +932,7 @@ enum
#include <linux/list.h> #include <linux/list.h>
#include <linux/rcupdate.h> #include <linux/rcupdate.h>
@ -19,3 +20,6 @@ Index: linux-3.2/include/linux/sysctl.h
/* For the /proc/sys support */ /* For the /proc/sys support */
struct ctl_table; struct ctl_table;
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: net-flip-lock-dep-thingy.patch From 7f2038cd9f9a170fb63f0ab16d1ff7a8b9ee92cf Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Tue, 28 Jun 2011 10:59:58 +0200 Date: Tue, 28 Jun 2011 10:59:58 +0200
Subject: [PATCH 060/267] net-flip-lock-dep-thingy.patch
======================================================= =======================================================
[ INFO: possible circular locking dependency detected ] [ INFO: possible circular locking dependency detected ]
@ -14,7 +15,6 @@ but task is already holding lock:
which lock already depends on the new lock. which lock already depends on the new lock.
the existing dependency chain (in reverse order) is: the existing dependency chain (in reverse order) is:
-> #1 (sk_lock-AF_INET){+.+...}: -> #1 (sk_lock-AF_INET){+.+...}:
@ -87,17 +87,16 @@ Call Trace:
[<ffffffff8112667a>] sys_close+0xf8/0x13d [<ffffffff8112667a>] sys_close+0xf8/0x13d
[<ffffffff814ae882>] system_call_fastpath+0x16/0x1b [<ffffffff814ae882>] system_call_fastpath+0x16/0x1b
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
net/core/sock.c | 3 +-- net/core/sock.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-) 1 file changed, 1 insertion(+), 2 deletions(-)
Index: linux-3.2/net/core/sock.c diff --git a/net/core/sock.c b/net/core/sock.c
=================================================================== index b23f174..a87eb16 100644
--- linux-3.2.orig/net/core/sock.c --- a/net/core/sock.c
+++ linux-3.2/net/core/sock.c +++ b/net/core/sock.c
@@ -2031,12 +2031,11 @@ void lock_sock_nested(struct sock *sk, i @@ -2031,12 +2031,11 @@ void lock_sock_nested(struct sock *sk, int subclass)
if (sk->sk_lock.owned) if (sk->sk_lock.owned)
__lock_sock(sk); __lock_sock(sk);
sk->sk_lock.owned = 1; sk->sk_lock.owned = 1;
@ -111,3 +110,6 @@ Index: linux-3.2/net/core/sock.c
} }
EXPORT_SYMBOL(lock_sock_nested); EXPORT_SYMBOL(lock_sock_nested);
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: softirq-thread-do-softirq.patch From 96af58acea4b1f2d36ff57313a95c5cd6e8c0e9c Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Tue, 28 Jun 2011 15:44:15 +0200 Date: Tue, 28 Jun 2011 15:44:15 +0200
Subject: [PATCH 061/267] softirq-thread-do-softirq.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
@ -8,10 +9,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
net/core/dev.c | 2 +- net/core/dev.c | 2 +-
2 files changed, 3 insertions(+), 1 deletion(-) 2 files changed, 3 insertions(+), 1 deletion(-)
Index: linux-3.2/include/linux/interrupt.h diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
=================================================================== index a64b00e..21b94de 100644
--- linux-3.2.orig/include/linux/interrupt.h --- a/include/linux/interrupt.h
+++ linux-3.2/include/linux/interrupt.h +++ b/include/linux/interrupt.h
@@ -454,6 +454,8 @@ struct softirq_action @@ -454,6 +454,8 @@ struct softirq_action
asmlinkage void do_softirq(void); asmlinkage void do_softirq(void);
@ -21,10 +22,10 @@ Index: linux-3.2/include/linux/interrupt.h
extern void open_softirq(int nr, void (*action)(struct softirq_action *)); extern void open_softirq(int nr, void (*action)(struct softirq_action *));
extern void softirq_init(void); extern void softirq_init(void);
static inline void __raise_softirq_irqoff(unsigned int nr) static inline void __raise_softirq_irqoff(unsigned int nr)
Index: linux-3.2/net/core/dev.c diff --git a/net/core/dev.c b/net/core/dev.c
=================================================================== index 55cd370..c28987a 100644
--- linux-3.2.orig/net/core/dev.c --- a/net/core/dev.c
+++ linux-3.2/net/core/dev.c +++ b/net/core/dev.c
@@ -3037,7 +3037,7 @@ int netif_rx_ni(struct sk_buff *skb) @@ -3037,7 +3037,7 @@ int netif_rx_ni(struct sk_buff *skb)
preempt_disable(); preempt_disable();
err = netif_rx(skb); err = netif_rx(skb);
@ -34,3 +35,6 @@ Index: linux-3.2/net/core/dev.c
preempt_enable(); preempt_enable();
return err; return err;
--
1.7.10

View File

@ -1,16 +1,17 @@
Subject: softirq-split-out-code.patch From afd97d0727b378d48a20073ae838cb800ec0c7df Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Tue, 28 Jun 2011 15:46:49 +0200 Date: Tue, 28 Jun 2011 15:46:49 +0200
Subject: [PATCH 062/267] softirq-split-out-code.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
kernel/softirq.c | 94 ++++++++++++++++++++++++++++++------------------------- kernel/softirq.c | 94 ++++++++++++++++++++++++++++++------------------------
1 file changed, 52 insertions(+), 42 deletions(-) 1 file changed, 52 insertions(+), 42 deletions(-)
Index: linux-3.2/kernel/softirq.c diff --git a/kernel/softirq.c b/kernel/softirq.c
=================================================================== index a8becbf..c6c5824 100644
--- linux-3.2.orig/kernel/softirq.c --- a/kernel/softirq.c
+++ linux-3.2/kernel/softirq.c +++ b/kernel/softirq.c
@@ -76,6 +76,34 @@ static void wakeup_softirqd(void) @@ -76,6 +76,34 @@ static void wakeup_softirqd(void)
wake_up_process(tsk); wake_up_process(tsk);
} }
@ -128,7 +129,7 @@ Index: linux-3.2/kernel/softirq.c
#ifndef __ARCH_HAS_DO_SOFTIRQ #ifndef __ARCH_HAS_DO_SOFTIRQ
asmlinkage void do_softirq(void) asmlinkage void do_softirq(void)
@@ -743,22 +761,14 @@ static int run_ksoftirqd(void * __bind_c @@ -743,22 +761,14 @@ static int run_ksoftirqd(void * __bind_cpu)
while (!kthread_should_stop()) { while (!kthread_should_stop()) {
preempt_disable(); preempt_disable();
@ -153,3 +154,6 @@ Index: linux-3.2/kernel/softirq.c
__preempt_enable_no_resched(); __preempt_enable_no_resched();
cond_resched(); cond_resched();
preempt_disable(); preempt_disable();
--
1.7.10

View File

@ -1,22 +1,23 @@
From f6adc04c439c56acd6163820b2ac6251a138755f Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu> From: Ingo Molnar <mingo@elte.hu>
Date: Fri, 3 Jul 2009 08:29:27 -0500 Date: Fri, 3 Jul 2009 08:29:27 -0500
Subject: x86: Do not unmask io_apic when interrupt is in progress Subject: [PATCH 063/267] x86: Do not unmask io_apic when interrupt is in
progress
With threaded interrupts we might see an interrupt in progress on With threaded interrupts we might see an interrupt in progress on
migration. Do not unmask it when this is the case. migration. Do not unmask it when this is the case.
Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
arch/x86/kernel/apic/io_apic.c | 3 ++- arch/x86/kernel/apic/io_apic.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-) 1 file changed, 2 insertions(+), 1 deletion(-)
Index: linux-3.2/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 8980555..91527bc 100644
--- linux-3.2.orig/arch/x86/kernel/apic/io_apic.c --- a/arch/x86/kernel/apic/io_apic.c
+++ linux-3.2/arch/x86/kernel/apic/io_apic.c +++ b/arch/x86/kernel/apic/io_apic.c
@@ -2521,7 +2521,8 @@ static void ack_apic_level(struct irq_da @@ -2521,7 +2521,8 @@ static void ack_apic_level(struct irq_data *data)
irq_complete_move(cfg); irq_complete_move(cfg);
#ifdef CONFIG_GENERIC_PENDING_IRQ #ifdef CONFIG_GENERIC_PENDING_IRQ
/* If we are moving the irq we need to mask it */ /* If we are moving the irq we need to mask it */
@ -26,3 +27,6 @@ Index: linux-3.2/arch/x86/kernel/apic/io_apic.c
do_unmask_irq = 1; do_unmask_irq = 1;
mask_ioapic(cfg); mask_ioapic(cfg);
} }
--
1.7.10

View File

@ -1,17 +1,18 @@
Subject: x86-32-fix-signal-crap.patch From 52c45c824d10baf0dd84cc56dc2fc35536d4fa49 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Mon, 18 Jul 2011 15:59:38 +0200 Date: Mon, 18 Jul 2011 15:59:38 +0200
Subject: [PATCH 064/267] x86-32-fix-signal-crap.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
arch/x86/kernel/entry_32.S | 8 ++++++++ arch/x86/kernel/entry_32.S | 8 ++++++++
1 file changed, 8 insertions(+) 1 file changed, 8 insertions(+)
Index: linux-3.2/arch/x86/kernel/entry_32.S diff --git a/arch/x86/kernel/entry_32.S b/arch/x86/kernel/entry_32.S
=================================================================== index bcda816..426cf51 100644
--- linux-3.2.orig/arch/x86/kernel/entry_32.S --- a/arch/x86/kernel/entry_32.S
+++ linux-3.2/arch/x86/kernel/entry_32.S +++ b/arch/x86/kernel/entry_32.S
@@ -626,7 +626,11 @@ work_notifysig: # deal with pending s @@ -629,7 +629,11 @@ work_notifysig: # deal with pending signals and
jne work_notifysig_v86 # returning to kernel-space or jne work_notifysig_v86 # returning to kernel-space or
# vm86-space # vm86-space
xorl %edx, %edx xorl %edx, %edx
@ -23,7 +24,7 @@ Index: linux-3.2/arch/x86/kernel/entry_32.S
jmp resume_userspace_sig jmp resume_userspace_sig
ALIGN ALIGN
@@ -639,7 +643,11 @@ work_notifysig_v86: @@ -642,7 +646,11 @@ work_notifysig_v86:
movl %esp, %eax movl %esp, %eax
#endif #endif
xorl %edx, %edx xorl %edx, %edx
@ -35,3 +36,6 @@ Index: linux-3.2/arch/x86/kernel/entry_32.S
jmp resume_userspace_sig jmp resume_userspace_sig
END(work_pending) END(work_pending)
--
1.7.10

View File

@ -1,5 +1,7 @@
Subject: x86: Do not disable preemption in int3 on 32bit From 31561541540fcec25c731c360a66fab17d50fa33 Mon Sep 17 00:00:00 2001
From: Steven Rostedt <rostedt@goodmis.org> From: Steven Rostedt <rostedt@goodmis.org>
Date: Tue, 10 Apr 2012 14:33:57 -0400
Subject: [PATCH 065/267] x86: Do not disable preemption in int3 on 32bit
Preemption must be disabled before enabling interrupts in do_trap 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 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 Cc: stable-rt@vger.kernel.org
Signed-off-by: Steven Rostedt <rostedt@goodmis.org> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
arch/x86/kernel/traps.c | 32 +++++++++++++++++++++++--------- arch/x86/kernel/traps.c | 32 +++++++++++++++++++++++---------
1 file changed, 23 insertions(+), 9 deletions(-) 1 file changed, 23 insertions(+), 9 deletions(-)
Index: linux-3.2/arch/x86/kernel/traps.c diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c
=================================================================== index 31d9d0f..cc88aec 100644
--- linux-3.2.orig/arch/x86/kernel/traps.c --- a/arch/x86/kernel/traps.c
+++ linux-3.2/arch/x86/kernel/traps.c +++ b/arch/x86/kernel/traps.c
@@ -87,9 +87,21 @@ static inline void conditional_sti(struc @@ -87,9 +87,21 @@ static inline void conditional_sti(struct pt_regs *regs)
local_irq_enable(); local_irq_enable();
} }
@ -49,7 +50,7 @@ Index: linux-3.2/arch/x86/kernel/traps.c
if (regs->flags & X86_EFLAGS_IF) if (regs->flags & X86_EFLAGS_IF)
local_irq_enable(); 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(); local_irq_disable();
} }
@ -64,7 +65,7 @@ Index: linux-3.2/arch/x86/kernel/traps.c
} }
static void __kprobes static void __kprobes
@@ -222,9 +236,9 @@ dotraplinkage void do_stack_segment(stru @@ -222,9 +236,9 @@ dotraplinkage void do_stack_segment(struct pt_regs *regs, long error_code)
if (notify_die(DIE_TRAP, "stack segment", regs, error_code, if (notify_die(DIE_TRAP, "stack segment", regs, error_code,
12, SIGBUS) == NOTIFY_STOP) 12, SIGBUS) == NOTIFY_STOP)
return; return;
@ -76,7 +77,7 @@ Index: linux-3.2/arch/x86/kernel/traps.c
} }
dotraplinkage void do_double_fault(struct pt_regs *regs, long error_code) dotraplinkage void do_double_fault(struct pt_regs *regs, long error_code)
@@ -316,9 +330,9 @@ dotraplinkage void __kprobes do_int3(str @@ -316,9 +330,9 @@ dotraplinkage void __kprobes do_int3(struct pt_regs *regs, long error_code)
return; return;
#endif #endif
@ -88,7 +89,7 @@ Index: linux-3.2/arch/x86/kernel/traps.c
} }
#ifdef CONFIG_X86_64 #ifdef CONFIG_X86_64
@@ -412,12 +426,12 @@ dotraplinkage void __kprobes do_debug(st @@ -412,12 +426,12 @@ dotraplinkage void __kprobes do_debug(struct pt_regs *regs, long error_code)
return; return;
/* It's safe to allow irq's after DR6 has been saved */ /* It's safe to allow irq's after DR6 has been saved */
@ -103,7 +104,7 @@ Index: linux-3.2/arch/x86/kernel/traps.c
return; return;
} }
@@ -436,7 +450,7 @@ dotraplinkage void __kprobes do_debug(st @@ -436,7 +450,7 @@ dotraplinkage void __kprobes do_debug(struct pt_regs *regs, long error_code)
si_code = get_si_code(tsk->thread.debugreg6); si_code = get_si_code(tsk->thread.debugreg6);
if (tsk->thread.debugreg6 & (DR_STEP | DR_TRAP_BITS) || user_icebp) if (tsk->thread.debugreg6 & (DR_STEP | DR_TRAP_BITS) || user_icebp)
send_sigtrap(tsk, regs, error_code, si_code); send_sigtrap(tsk, regs, error_code, si_code);
@ -112,3 +113,6 @@ Index: linux-3.2/arch/x86/kernel/traps.c
return; return;
} }
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: rcu: Reduce lock section From e48b25d1e88f0066fc74583020ad764cd0d002f5 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Fri, 24 Jun 2011 22:23:02 +0200 Date: Fri, 24 Jun 2011 22:23:02 +0200
Subject: [PATCH 066/267] rcu: Reduce lock section
So the waitqueue wakeup is outside the raw locked section. So the waitqueue wakeup is outside the raw locked section.
@ -11,11 +12,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/rcutree_plugin.h | 14 ++++++++------ kernel/rcutree_plugin.h | 14 ++++++++------
3 files changed, 11 insertions(+), 8 deletions(-) 3 files changed, 11 insertions(+), 8 deletions(-)
Index: linux-3.2/kernel/rcutree.c diff --git a/kernel/rcutree.c b/kernel/rcutree.c
=================================================================== index 6b76d81..8ef8675 100644
--- linux-3.2.orig/kernel/rcutree.c --- a/kernel/rcutree.c
+++ linux-3.2/kernel/rcutree.c +++ b/kernel/rcutree.c
@@ -1221,7 +1221,7 @@ static void __rcu_offline_cpu(int cpu, s @@ -1221,7 +1221,7 @@ static void __rcu_offline_cpu(int cpu, struct rcu_state *rsp)
else else
raw_spin_unlock_irqrestore(&rnp->lock, flags); raw_spin_unlock_irqrestore(&rnp->lock, flags);
if (need_report & RCU_OFL_TASKS_EXP_GP) if (need_report & RCU_OFL_TASKS_EXP_GP)
@ -24,11 +25,11 @@ Index: linux-3.2/kernel/rcutree.c
rcu_node_kthread_setaffinity(rnp, -1); rcu_node_kthread_setaffinity(rnp, -1);
} }
Index: linux-3.2/kernel/rcutree.h diff --git a/kernel/rcutree.h b/kernel/rcutree.h
=================================================================== index 849ce9e..dca495d 100644
--- linux-3.2.orig/kernel/rcutree.h --- a/kernel/rcutree.h
+++ linux-3.2/kernel/rcutree.h +++ b/kernel/rcutree.h
@@ -451,7 +451,8 @@ static void rcu_preempt_check_callbacks( @@ -451,7 +451,8 @@ static void rcu_preempt_check_callbacks(int cpu);
static void rcu_preempt_process_callbacks(void); static void rcu_preempt_process_callbacks(void);
void call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *rcu)); void call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *rcu));
#if defined(CONFIG_HOTPLUG_CPU) || defined(CONFIG_TREE_PREEMPT_RCU) #if defined(CONFIG_HOTPLUG_CPU) || defined(CONFIG_TREE_PREEMPT_RCU)
@ -38,11 +39,11 @@ Index: linux-3.2/kernel/rcutree.h
#endif /* #if defined(CONFIG_HOTPLUG_CPU) || defined(CONFIG_TREE_PREEMPT_RCU) */ #endif /* #if defined(CONFIG_HOTPLUG_CPU) || defined(CONFIG_TREE_PREEMPT_RCU) */
static int rcu_preempt_pending(int cpu); static int rcu_preempt_pending(int cpu);
static int rcu_preempt_needs_cpu(int cpu); static int rcu_preempt_needs_cpu(int cpu);
Index: linux-3.2/kernel/rcutree_plugin.h diff --git a/kernel/rcutree_plugin.h b/kernel/rcutree_plugin.h
=================================================================== index 4b9b9f8..73cab33 100644
--- linux-3.2.orig/kernel/rcutree_plugin.h --- a/kernel/rcutree_plugin.h
+++ linux-3.2/kernel/rcutree_plugin.h +++ b/kernel/rcutree_plugin.h
@@ -407,7 +407,7 @@ static noinline void rcu_read_unlock_spe @@ -407,7 +407,7 @@ static noinline void rcu_read_unlock_special(struct task_struct *t)
* then we need to report up the rcu_node hierarchy. * then we need to report up the rcu_node hierarchy.
*/ */
if (!empty_exp && !rcu_preempted_readers_exp(rnp)) if (!empty_exp && !rcu_preempted_readers_exp(rnp))
@ -51,7 +52,7 @@ Index: linux-3.2/kernel/rcutree_plugin.h
} else { } else {
local_irq_restore(flags); local_irq_restore(flags);
} }
@@ -731,7 +731,8 @@ static int sync_rcu_preempt_exp_done(str @@ -731,7 +731,8 @@ static int sync_rcu_preempt_exp_done(struct rcu_node *rnp)
* *
* Caller must hold sync_rcu_preempt_exp_mutex. * Caller must hold sync_rcu_preempt_exp_mutex.
*/ */
@ -61,7 +62,7 @@ Index: linux-3.2/kernel/rcutree_plugin.h
{ {
unsigned long flags; unsigned long flags;
unsigned long mask; unsigned long mask;
@@ -744,7 +745,8 @@ static void rcu_report_exp_rnp(struct rc @@ -744,7 +745,8 @@ static void rcu_report_exp_rnp(struct rcu_state *rsp, struct rcu_node *rnp)
} }
if (rnp->parent == NULL) { if (rnp->parent == NULL) {
raw_spin_unlock_irqrestore(&rnp->lock, flags); raw_spin_unlock_irqrestore(&rnp->lock, flags);
@ -71,7 +72,7 @@ Index: linux-3.2/kernel/rcutree_plugin.h
break; break;
} }
mask = rnp->grpmask; mask = rnp->grpmask;
@@ -777,7 +779,7 @@ sync_rcu_preempt_exp_init(struct rcu_sta @@ -777,7 +779,7 @@ sync_rcu_preempt_exp_init(struct rcu_state *rsp, struct rcu_node *rnp)
must_wait = 1; must_wait = 1;
} }
if (!must_wait) if (!must_wait)
@ -80,7 +81,7 @@ Index: linux-3.2/kernel/rcutree_plugin.h
} }
/* /*
@@ -1069,9 +1071,9 @@ EXPORT_SYMBOL_GPL(synchronize_rcu_expedi @@ -1069,9 +1071,9 @@ EXPORT_SYMBOL_GPL(synchronize_rcu_expedited);
* report on tasks preempted in RCU read-side critical sections during * report on tasks preempted in RCU read-side critical sections during
* expedited RCU grace periods. * expedited RCU grace periods.
*/ */
@ -92,3 +93,6 @@ Index: linux-3.2/kernel/rcutree_plugin.h
} }
#endif /* #ifdef CONFIG_HOTPLUG_CPU */ #endif /* #ifdef CONFIG_HOTPLUG_CPU */
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: locking-various-init-fixes.patch From dc11bfa3d93805ee1ad47b3b449f2ca456b2abd0 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Sun, 17 Jul 2011 21:25:03 +0200 Date: Sun, 17 Jul 2011 21:25:03 +0200
Subject: [PATCH 067/267] locking-various-init-fixes.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
@ -11,11 +12,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/cred.c | 2 +- kernel/cred.c | 2 +-
5 files changed, 7 insertions(+), 7 deletions(-) 5 files changed, 7 insertions(+), 7 deletions(-)
Index: linux-3.2/drivers/char/random.c diff --git a/drivers/char/random.c b/drivers/char/random.c
=================================================================== index 786a856..026bdbb 100644
--- linux-3.2.orig/drivers/char/random.c --- a/drivers/char/random.c
+++ linux-3.2/drivers/char/random.c +++ b/drivers/char/random.c
@@ -433,7 +433,7 @@ static struct entropy_store input_pool = @@ -433,7 +433,7 @@ static struct entropy_store input_pool = {
.poolinfo = &poolinfo_table[0], .poolinfo = &poolinfo_table[0],
.name = "input", .name = "input",
.limit = 1, .limit = 1,
@ -24,7 +25,7 @@ Index: linux-3.2/drivers/char/random.c
.pool = input_pool_data .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", .name = "blocking",
.limit = 1, .limit = 1,
.pull = &input_pool, .pull = &input_pool,
@ -33,7 +34,7 @@ Index: linux-3.2/drivers/char/random.c
.pool = blocking_pool_data .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], .poolinfo = &poolinfo_table[1],
.name = "nonblocking", .name = "nonblocking",
.pull = &input_pool, .pull = &input_pool,
@ -42,10 +43,10 @@ Index: linux-3.2/drivers/char/random.c
.pool = nonblocking_pool_data .pool = nonblocking_pool_data
}; };
Index: linux-3.2/drivers/usb/gadget/ci13xxx_udc.c diff --git a/drivers/usb/gadget/ci13xxx_udc.c b/drivers/usb/gadget/ci13xxx_udc.c
=================================================================== index 9a0c397..f526873 100644
--- linux-3.2.orig/drivers/usb/gadget/ci13xxx_udc.c --- a/drivers/usb/gadget/ci13xxx_udc.c
+++ linux-3.2/drivers/usb/gadget/ci13xxx_udc.c +++ b/drivers/usb/gadget/ci13xxx_udc.c
@@ -819,7 +819,7 @@ static struct { @@ -819,7 +819,7 @@ static struct {
} dbg_data = { } dbg_data = {
.idx = 0, .idx = 0,
@ -55,10 +56,10 @@ Index: linux-3.2/drivers/usb/gadget/ci13xxx_udc.c
}; };
/** /**
Index: linux-3.2/fs/file.c diff --git a/fs/file.c b/fs/file.c
=================================================================== index 4c6992d..375472d 100644
--- linux-3.2.orig/fs/file.c --- a/fs/file.c
+++ linux-3.2/fs/file.c +++ b/fs/file.c
@@ -422,7 +422,7 @@ struct files_struct init_files = { @@ -422,7 +422,7 @@ struct files_struct init_files = {
.close_on_exec = (fd_set *)&init_files.close_on_exec_init, .close_on_exec = (fd_set *)&init_files.close_on_exec_init,
.open_fds = (fd_set *)&init_files.open_fds_init, .open_fds = (fd_set *)&init_files.open_fds_init,
@ -68,10 +69,10 @@ Index: linux-3.2/fs/file.c
}; };
/* /*
Index: linux-3.2/include/linux/idr.h diff --git a/include/linux/idr.h b/include/linux/idr.h
=================================================================== index 255491c..4eaacf0 100644
--- linux-3.2.orig/include/linux/idr.h --- a/include/linux/idr.h
+++ linux-3.2/include/linux/idr.h +++ b/include/linux/idr.h
@@ -136,7 +136,7 @@ struct ida { @@ -136,7 +136,7 @@ struct ida {
struct ida_bitmap *free_bitmap; struct ida_bitmap *free_bitmap;
}; };
@ -81,10 +82,10 @@ Index: linux-3.2/include/linux/idr.h
#define DEFINE_IDA(name) struct ida name = IDA_INIT(name) #define DEFINE_IDA(name) struct ida name = IDA_INIT(name)
int ida_pre_get(struct ida *ida, gfp_t gfp_mask); int ida_pre_get(struct ida *ida, gfp_t gfp_mask);
Index: linux-3.2/kernel/cred.c diff --git a/kernel/cred.c b/kernel/cred.c
=================================================================== index 48c6fd3..482a0e3 100644
--- linux-3.2.orig/kernel/cred.c --- a/kernel/cred.c
+++ linux-3.2/kernel/cred.c +++ b/kernel/cred.c
@@ -35,7 +35,7 @@ static struct kmem_cache *cred_jar; @@ -35,7 +35,7 @@ static struct kmem_cache *cred_jar;
static struct thread_group_cred init_tgcred = { static struct thread_group_cred init_tgcred = {
.usage = ATOMIC_INIT(2), .usage = ATOMIC_INIT(2),
@ -94,3 +95,6 @@ Index: linux-3.2/kernel/cred.c
}; };
#endif #endif
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: wait: Provide __wake_up_all_locked From 90713b9e3f210d7ebb96dade4cc71b7397ce99d4 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Thu, 01 Dec 2011 00:04:00 +0100 Date: Thu, 1 Dec 2011 00:04:00 +0100
Subject: [PATCH 068/267] wait: Provide __wake_up_all_locked
For code which protects the waitqueue itself with another lock it For code which protects the waitqueue itself with another lock it
makes no sense to acquire the waitqueue lock for wakeup all. Provide makes no sense to acquire the waitqueue lock for wakeup all. Provide
@ -13,11 +14,11 @@ Cc: stable-rt@vger.kernel.org
kernel/sched.c | 4 ++-- kernel/sched.c | 4 ++--
2 files changed, 5 insertions(+), 4 deletions(-) 2 files changed, 5 insertions(+), 4 deletions(-)
Index: linux-3.2/include/linux/wait.h diff --git a/include/linux/wait.h b/include/linux/wait.h
=================================================================== index 3efc9f3..1e904b8 100644
--- linux-3.2.orig/include/linux/wait.h --- a/include/linux/wait.h
+++ linux-3.2/include/linux/wait.h +++ b/include/linux/wait.h
@@ -157,7 +157,7 @@ void __wake_up(wait_queue_head_t *q, uns @@ -157,7 +157,7 @@ void __wake_up(wait_queue_head_t *q, unsigned int mode, int nr, void *key);
void __wake_up_locked_key(wait_queue_head_t *q, unsigned int mode, void *key); void __wake_up_locked_key(wait_queue_head_t *q, unsigned int mode, void *key);
void __wake_up_sync_key(wait_queue_head_t *q, unsigned int mode, int nr, void __wake_up_sync_key(wait_queue_head_t *q, unsigned int mode, int nr,
void *key); void *key);
@ -26,7 +27,7 @@ Index: linux-3.2/include/linux/wait.h
void __wake_up_sync(wait_queue_head_t *q, unsigned int mode, int nr); void __wake_up_sync(wait_queue_head_t *q, unsigned int mode, int nr);
void __wake_up_bit(wait_queue_head_t *, void *, int); void __wake_up_bit(wait_queue_head_t *, void *, int);
int __wait_on_bit(wait_queue_head_t *, struct wait_bit_queue *, int (*)(void *), unsigned); int __wait_on_bit(wait_queue_head_t *, struct wait_bit_queue *, int (*)(void *), unsigned);
@@ -170,7 +170,8 @@ wait_queue_head_t *bit_waitqueue(void *, @@ -170,7 +170,8 @@ wait_queue_head_t *bit_waitqueue(void *, int);
#define wake_up(x) __wake_up(x, TASK_NORMAL, 1, NULL) #define wake_up(x) __wake_up(x, TASK_NORMAL, 1, NULL)
#define wake_up_nr(x, nr) __wake_up(x, TASK_NORMAL, nr, NULL) #define wake_up_nr(x, nr) __wake_up(x, TASK_NORMAL, nr, NULL)
#define wake_up_all(x) __wake_up(x, TASK_NORMAL, 0, NULL) #define wake_up_all(x) __wake_up(x, TASK_NORMAL, 0, NULL)
@ -36,10 +37,10 @@ Index: linux-3.2/include/linux/wait.h
#define wake_up_interruptible(x) __wake_up(x, TASK_INTERRUPTIBLE, 1, NULL) #define wake_up_interruptible(x) __wake_up(x, TASK_INTERRUPTIBLE, 1, NULL)
#define wake_up_interruptible_nr(x, nr) __wake_up(x, TASK_INTERRUPTIBLE, nr, NULL) #define wake_up_interruptible_nr(x, nr) __wake_up(x, TASK_INTERRUPTIBLE, nr, NULL)
Index: linux-3.2/kernel/sched.c diff --git a/kernel/sched.c b/kernel/sched.c
=================================================================== index e35f01c..bb93b0b 100644
--- linux-3.2.orig/kernel/sched.c --- a/kernel/sched.c
+++ linux-3.2/kernel/sched.c +++ b/kernel/sched.c
@@ -4637,9 +4637,9 @@ EXPORT_SYMBOL(__wake_up); @@ -4637,9 +4637,9 @@ EXPORT_SYMBOL(__wake_up);
/* /*
* Same as __wake_up but called with the spinlock in wait_queue_head_t held. * Same as __wake_up but called with the spinlock in wait_queue_head_t held.
@ -52,3 +53,6 @@ Index: linux-3.2/kernel/sched.c
} }
EXPORT_SYMBOL_GPL(__wake_up_locked); EXPORT_SYMBOL_GPL(__wake_up_locked);
--
1.7.10

View File

@ -1,6 +1,8 @@
Subject: pci: Use __wake_up_all_locked pci_unblock_user_cfg_access() From 0285604d1f4283b1bb59ec7efd683d4475c018db Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Thu, 01 Dec 2011 00:07:16 +0100 Date: Thu, 1 Dec 2011 00:07:16 +0100
Subject: [PATCH 069/267] 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 The waitqueue is protected by the pci_lock, so we can just avoid to
lock the waitqueue lock itself. That prevents the lock the waitqueue lock itself. That prevents the
@ -12,11 +14,11 @@ Cc: stable-rt@vger.kernel.org
drivers/pci/access.c | 2 +- drivers/pci/access.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-) 1 file changed, 1 insertion(+), 1 deletion(-)
Index: linux-3.2/drivers/pci/access.c diff --git a/drivers/pci/access.c b/drivers/pci/access.c
=================================================================== index fdaa42a..1a6cc67 100644
--- linux-3.2.orig/drivers/pci/access.c --- a/drivers/pci/access.c
+++ linux-3.2/drivers/pci/access.c +++ b/drivers/pci/access.c
@@ -441,7 +441,7 @@ void pci_unblock_user_cfg_access(struct @@ -441,7 +441,7 @@ void pci_unblock_user_cfg_access(struct pci_dev *dev)
WARN_ON(!dev->block_ucfg_access); WARN_ON(!dev->block_ucfg_access);
dev->block_ucfg_access = 0; dev->block_ucfg_access = 0;
@ -25,3 +27,6 @@ Index: linux-3.2/drivers/pci/access.c
raw_spin_unlock_irqrestore(&pci_lock, flags); raw_spin_unlock_irqrestore(&pci_lock, flags);
} }
EXPORT_SYMBOL_GPL(pci_unblock_user_cfg_access); EXPORT_SYMBOL_GPL(pci_unblock_user_cfg_access);
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: latency-hist.patch From e14a7c82d8bd43fbda64e57a9cae2a4fff5cb7fb Mon Sep 17 00:00:00 2001
From: Carsten Emde <C.Emde@osadl.org> From: Carsten Emde <C.Emde@osadl.org>
Date: Tue, 19 Jul 2011 14:03:41 +0100 Date: Tue, 19 Jul 2011 14:03:41 +0100
Subject: [PATCH 070/267] latency-hist.patch
This patch provides a recording mechanism to store data of potential This patch provides a recording mechanism to store data of potential
sources of system latencies. The recordings separately determine the 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 <C.Emde@osadl.org> Signed-off-by: Carsten Emde <C.Emde@osadl.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
Documentation/trace/histograms.txt | 186 +++++ Documentation/trace/histograms.txt | 186 ++++++
include/linux/sched.h | 6 include/linux/sched.h | 6 +
include/trace/events/hist.h | 69 ++ include/trace/events/hist.h | 69 +++
include/trace/events/latency_hist.h | 30 include/trace/events/latency_hist.h | 30 +
kernel/hrtimer.c | 11 kernel/hrtimer.c | 11 +
kernel/trace/Kconfig | 104 +++ kernel/trace/Kconfig | 104 ++++
kernel/trace/Makefile | 4 kernel/trace/Makefile | 4 +
kernel/trace/latency_hist.c | 1170 ++++++++++++++++++++++++++++++++++++ kernel/trace/latency_hist.c | 1170 +++++++++++++++++++++++++++++++++++
kernel/trace/trace_irqsoff.c | 11 kernel/trace/trace_irqsoff.c | 11 +
9 files changed, 1591 insertions(+) 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.2/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 --- /dev/null
+++ linux-3.2/Documentation/trace/histograms.txt +++ b/Documentation/trace/histograms.txt
@@ -0,0 +1,186 @@ @@ -0,0 +1,186 @@
+ Using the Linux Kernel Latency Histograms + Using the Linux Kernel Latency Histograms
+ +
@ -215,10 +220,10 @@ Index: linux-3.2/Documentation/trace/histograms.txt
+is provided. +is provided.
+ +
+These data are also reset when the wakeup histogram is reset. +These data are also reset when the wakeup histogram is reset.
Index: linux-3.2/include/linux/sched.h diff --git a/include/linux/sched.h b/include/linux/sched.h
=================================================================== index 8cb4365..30ac0b5 100644
--- linux-3.2.orig/include/linux/sched.h --- a/include/linux/sched.h
+++ linux-3.2/include/linux/sched.h +++ b/include/linux/sched.h
@@ -1570,6 +1570,12 @@ struct task_struct { @@ -1570,6 +1570,12 @@ struct task_struct {
unsigned long trace; unsigned long trace;
/* bitmask and counter of trace recursion */ /* bitmask and counter of trace recursion */
@ -232,10 +237,11 @@ Index: linux-3.2/include/linux/sched.h
#endif /* CONFIG_TRACING */ #endif /* CONFIG_TRACING */
#ifdef CONFIG_CGROUP_MEM_RES_CTLR /* memcg uses this to do batch job */ #ifdef CONFIG_CGROUP_MEM_RES_CTLR /* memcg uses this to do batch job */
struct memcg_batch_info { struct memcg_batch_info {
Index: linux-3.2/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 --- /dev/null
+++ linux-3.2/include/trace/events/hist.h +++ b/include/trace/events/hist.h
@@ -0,0 +1,69 @@ @@ -0,0 +1,69 @@
+#undef TRACE_SYSTEM +#undef TRACE_SYSTEM
+#define TRACE_SYSTEM hist +#define TRACE_SYSTEM hist
@ -306,10 +312,11 @@ Index: linux-3.2/include/trace/events/hist.h
+ +
+/* This part must be outside protection */ +/* This part must be outside protection */
+#include <trace/define_trace.h> +#include <trace/define_trace.h>
Index: linux-3.2/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 --- /dev/null
+++ linux-3.2/include/trace/events/latency_hist.h +++ b/include/trace/events/latency_hist.h
@@ -0,0 +1,30 @@ @@ -0,0 +1,30 @@
+#ifndef _LATENCY_HIST_H +#ifndef _LATENCY_HIST_H
+#define _LATENCY_HIST_H +#define _LATENCY_HIST_H
@ -341,10 +348,10 @@ Index: linux-3.2/include/trace/events/latency_hist.h
+ +
+#endif /* _LATENCY_HIST_H */ +#endif /* _LATENCY_HIST_H */
+ +
Index: linux-3.2/kernel/hrtimer.c diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c
=================================================================== index ae34bf5..1a3695e 100644
--- linux-3.2.orig/kernel/hrtimer.c --- a/kernel/hrtimer.c
+++ linux-3.2/kernel/hrtimer.c +++ b/kernel/hrtimer.c
@@ -49,6 +49,7 @@ @@ -49,6 +49,7 @@
#include <asm/uaccess.h> #include <asm/uaccess.h>
@ -353,7 +360,7 @@ Index: linux-3.2/kernel/hrtimer.c
/* /*
* The timer bases: * 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 #ifdef CONFIG_HIGH_RES_TIMERS
@ -377,10 +384,10 @@ Index: linux-3.2/kernel/hrtimer.c
/* /*
* The immediate goal for using the softexpires is * The immediate goal for using the softexpires is
* minimizing wakeups, not running timers at the * minimizing wakeups, not running timers at the
Index: linux-3.2/kernel/trace/Kconfig diff --git a/kernel/trace/Kconfig b/kernel/trace/Kconfig
=================================================================== index cd31345..2685322 100644
--- linux-3.2.orig/kernel/trace/Kconfig --- a/kernel/trace/Kconfig
+++ linux-3.2/kernel/trace/Kconfig +++ b/kernel/trace/Kconfig
@@ -192,6 +192,24 @@ config IRQSOFF_TRACER @@ -192,6 +192,24 @@ config IRQSOFF_TRACER
enabled. This option and the preempt-off timing option can be enabled. This option and the preempt-off timing option can be
used together or separately.) used together or separately.)
@ -506,11 +513,11 @@ Index: linux-3.2/kernel/trace/Kconfig
config ENABLE_DEFAULT_TRACERS config ENABLE_DEFAULT_TRACERS
bool "Trace process context switches and events" bool "Trace process context switches and events"
depends on !GENERIC_TRACER depends on !GENERIC_TRACER
Index: linux-3.2/kernel/trace/Makefile diff --git a/kernel/trace/Makefile b/kernel/trace/Makefile
=================================================================== index 5f39a07..108a387 100644
--- linux-3.2.orig/kernel/trace/Makefile --- a/kernel/trace/Makefile
+++ linux-3.2/kernel/trace/Makefile +++ b/kernel/trace/Makefile
@@ -36,6 +36,10 @@ obj-$(CONFIG_FUNCTION_TRACER) += trace_f @@ -36,6 +36,10 @@ obj-$(CONFIG_FUNCTION_TRACER) += trace_functions.o
obj-$(CONFIG_IRQSOFF_TRACER) += trace_irqsoff.o obj-$(CONFIG_IRQSOFF_TRACER) += trace_irqsoff.o
obj-$(CONFIG_PREEMPT_TRACER) += trace_irqsoff.o obj-$(CONFIG_PREEMPT_TRACER) += trace_irqsoff.o
obj-$(CONFIG_SCHED_TRACER) += trace_sched_wakeup.o obj-$(CONFIG_SCHED_TRACER) += trace_sched_wakeup.o
@ -521,10 +528,11 @@ Index: linux-3.2/kernel/trace/Makefile
obj-$(CONFIG_NOP_TRACER) += trace_nop.o obj-$(CONFIG_NOP_TRACER) += trace_nop.o
obj-$(CONFIG_STACK_TRACER) += trace_stack.o obj-$(CONFIG_STACK_TRACER) += trace_stack.o
obj-$(CONFIG_MMIOTRACE) += trace_mmiotrace.o obj-$(CONFIG_MMIOTRACE) += trace_mmiotrace.o
Index: linux-3.2/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 --- /dev/null
+++ linux-3.2/kernel/trace/latency_hist.c +++ b/kernel/trace/latency_hist.c
@@ -0,0 +1,1170 @@ @@ -0,0 +1,1170 @@
+/* +/*
+ * kernel/trace/latency_hist.c + * kernel/trace/latency_hist.c
@ -1696,10 +1704,10 @@ Index: linux-3.2/kernel/trace/latency_hist.c
+} +}
+ +
+__initcall(latency_hist_init); +__initcall(latency_hist_init);
Index: linux-3.2/kernel/trace/trace_irqsoff.c diff --git a/kernel/trace/trace_irqsoff.c b/kernel/trace/trace_irqsoff.c
=================================================================== index 20dad0d..1e6c33e 100644
--- linux-3.2.orig/kernel/trace/trace_irqsoff.c --- a/kernel/trace/trace_irqsoff.c
+++ linux-3.2/kernel/trace/trace_irqsoff.c +++ b/kernel/trace/trace_irqsoff.c
@@ -17,6 +17,7 @@ @@ -17,6 +17,7 @@
#include <linux/fs.h> #include <linux/fs.h>
@ -1722,7 +1730,7 @@ Index: linux-3.2/kernel/trace/trace_irqsoff.c
if (preempt_trace() || irq_trace()) if (preempt_trace() || irq_trace())
stop_critical_timing(CALLER_ADDR0, CALLER_ADDR1); stop_critical_timing(CALLER_ADDR0, CALLER_ADDR1);
} }
@@ -440,6 +443,7 @@ EXPORT_SYMBOL_GPL(stop_critical_timings) @@ -440,6 +443,7 @@ EXPORT_SYMBOL_GPL(stop_critical_timings);
#ifdef CONFIG_PROVE_LOCKING #ifdef CONFIG_PROVE_LOCKING
void time_hardirqs_on(unsigned long a0, unsigned long a1) void time_hardirqs_on(unsigned long a0, unsigned long a1)
{ {
@ -1730,7 +1738,7 @@ Index: linux-3.2/kernel/trace/trace_irqsoff.c
if (!preempt_trace() && irq_trace()) if (!preempt_trace() && irq_trace())
stop_critical_timing(a0, a1); stop_critical_timing(a0, a1);
} }
@@ -448,6 +452,7 @@ void time_hardirqs_off(unsigned long a0, @@ -448,6 +452,7 @@ void time_hardirqs_off(unsigned long a0, unsigned long a1)
{ {
if (!preempt_trace() && irq_trace()) if (!preempt_trace() && irq_trace())
start_critical_timing(a0, a1); start_critical_timing(a0, a1);
@ -1738,7 +1746,7 @@ Index: linux-3.2/kernel/trace/trace_irqsoff.c
} }
#else /* !CONFIG_PROVE_LOCKING */ #else /* !CONFIG_PROVE_LOCKING */
@@ -473,6 +478,7 @@ inline void print_irqtrace_events(struct @@ -473,6 +478,7 @@ inline void print_irqtrace_events(struct task_struct *curr)
*/ */
void trace_hardirqs_on(void) void trace_hardirqs_on(void)
{ {
@ -1760,7 +1768,7 @@ Index: linux-3.2/kernel/trace/trace_irqsoff.c
if (!preempt_trace() && irq_trace()) if (!preempt_trace() && irq_trace())
stop_critical_timing(CALLER_ADDR0, caller_addr); stop_critical_timing(CALLER_ADDR0, caller_addr);
} }
@@ -496,6 +504,7 @@ void trace_hardirqs_off_caller(unsigned @@ -496,6 +504,7 @@ void trace_hardirqs_off_caller(unsigned long caller_addr)
{ {
if (!preempt_trace() && irq_trace()) if (!preempt_trace() && irq_trace())
start_critical_timing(CALLER_ADDR0, caller_addr); start_critical_timing(CALLER_ADDR0, caller_addr);
@ -1768,7 +1776,7 @@ Index: linux-3.2/kernel/trace/trace_irqsoff.c
} }
EXPORT_SYMBOL(trace_hardirqs_off_caller); EXPORT_SYMBOL(trace_hardirqs_off_caller);
@@ -505,12 +514,14 @@ EXPORT_SYMBOL(trace_hardirqs_off_caller) @@ -505,12 +514,14 @@ EXPORT_SYMBOL(trace_hardirqs_off_caller);
#ifdef CONFIG_PREEMPT_TRACER #ifdef CONFIG_PREEMPT_TRACER
void trace_preempt_on(unsigned long a0, unsigned long a1) void trace_preempt_on(unsigned long a0, unsigned long a1)
{ {
@ -1783,3 +1791,6 @@ Index: linux-3.2/kernel/trace/trace_irqsoff.c
if (preempt_trace() && !irq_trace()) if (preempt_trace() && !irq_trace())
start_critical_timing(a0, a1); start_critical_timing(a0, a1);
} }
--
1.7.10

View File

@ -1,25 +1,28 @@
Subject: hwlatdetect.patch From 64c6278c3b79d72e2992c767dca658f4c7f65739 Mon Sep 17 00:00:00 2001
From: Carsten Emde <C.Emde@osadl.org> From: Carsten Emde <C.Emde@osadl.org>
Date: Tue, 19 Jul 2011 13:53:12 +0100 Date: Tue, 19 Jul 2011 13:53:12 +0100
Subject: [PATCH 071/267] hwlatdetect.patch
Jon Masters developed this wonderful SMI detector. For details please Jon Masters developed this wonderful SMI detector. For details please
consult Documentation/hwlat_detector.txt. It could be ported to Linux consult Documentation/hwlat_detector.txt. It could be ported to Linux
3.0 RT without any major change. 3.0 RT without any major change.
Signed-off-by: Carsten Emde <C.Emde@osadl.org> Signed-off-by: Carsten Emde <C.Emde@osadl.org>
--- ---
Documentation/hwlat_detector.txt | 64 ++ Documentation/hwlat_detector.txt | 64 ++
MAINTAINERS | 9 MAINTAINERS | 9 +
drivers/misc/Kconfig | 29 drivers/misc/Kconfig | 29 +
drivers/misc/Makefile | 1 drivers/misc/Makefile | 1 +
drivers/misc/hwlat_detector.c | 1212 +++++++++++++++++++++++++++++++++++++++ drivers/misc/hwlat_detector.c | 1212 ++++++++++++++++++++++++++++++++++++++
5 files changed, 1315 insertions(+) 5 files changed, 1315 insertions(+)
create mode 100644 Documentation/hwlat_detector.txt
create mode 100644 drivers/misc/hwlat_detector.c
Index: linux-3.2/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 --- /dev/null
+++ linux-3.2/Documentation/hwlat_detector.txt +++ b/Documentation/hwlat_detector.txt
@@ -0,0 +1,64 @@ @@ -0,0 +1,64 @@
+Introduction: +Introduction:
+------------- +-------------
@ -85,10 +88,10 @@ Index: linux-3.2/Documentation/hwlat_detector.txt
+observe any latencies that exceed the threshold (initially 100 usecs), +observe any latencies that exceed the threshold (initially 100 usecs),
+then we write to a global sample ring buffer of 8K samples, which is +then we write to a global sample ring buffer of 8K samples, which is
+consumed by reading from the "sample" (pipe) debugfs file interface. +consumed by reading from the "sample" (pipe) debugfs file interface.
Index: linux-3.2/MAINTAINERS diff --git a/MAINTAINERS b/MAINTAINERS
=================================================================== index f986e7d..b257477 100644
--- linux-3.2.orig/MAINTAINERS --- a/MAINTAINERS
+++ linux-3.2/MAINTAINERS +++ b/MAINTAINERS
@@ -3008,6 +3008,15 @@ L: linuxppc-dev@lists.ozlabs.org @@ -3008,6 +3008,15 @@ L: linuxppc-dev@lists.ozlabs.org
S: Odd Fixes S: Odd Fixes
F: drivers/tty/hvc/ F: drivers/tty/hvc/
@ -105,10 +108,10 @@ Index: linux-3.2/MAINTAINERS
HARDWARE MONITORING HARDWARE MONITORING
M: Jean Delvare <khali@linux-fr.org> M: Jean Delvare <khali@linux-fr.org>
M: Guenter Roeck <guenter.roeck@ericsson.com> M: Guenter Roeck <guenter.roeck@ericsson.com>
Index: linux-3.2/drivers/misc/Kconfig diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig
=================================================================== index f3031a4..1cb530c 100644
--- linux-3.2.orig/drivers/misc/Kconfig --- a/drivers/misc/Kconfig
+++ linux-3.2/drivers/misc/Kconfig +++ b/drivers/misc/Kconfig
@@ -140,6 +140,35 @@ config IBM_ASM @@ -140,6 +140,35 @@ config IBM_ASM
for information on the specific driver level and support statement for information on the specific driver level and support statement
for your IBM server. for your IBM server.
@ -145,19 +148,20 @@ Index: linux-3.2/drivers/misc/Kconfig
config PHANTOM config PHANTOM
tristate "Sensable PHANToM (PCI)" tristate "Sensable PHANToM (PCI)"
depends on PCI depends on PCI
Index: linux-3.2/drivers/misc/Makefile diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile
=================================================================== index b26495a..84c4554 100644
--- linux-3.2.orig/drivers/misc/Makefile --- a/drivers/misc/Makefile
+++ linux-3.2/drivers/misc/Makefile +++ b/drivers/misc/Makefile
@@ -48,3 +48,4 @@ obj-y += lis3lv02d/ @@ -48,3 +48,4 @@ obj-y += lis3lv02d/
obj-y += carma/ obj-y += carma/
obj-$(CONFIG_USB_SWITCH_FSA9480) += fsa9480.o obj-$(CONFIG_USB_SWITCH_FSA9480) += fsa9480.o
obj-$(CONFIG_ALTERA_STAPL) +=altera-stapl/ obj-$(CONFIG_ALTERA_STAPL) +=altera-stapl/
+obj-$(CONFIG_HWLAT_DETECTOR) += hwlat_detector.o +obj-$(CONFIG_HWLAT_DETECTOR) += hwlat_detector.o
Index: linux-3.2/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 --- /dev/null
+++ linux-3.2/drivers/misc/hwlat_detector.c +++ b/drivers/misc/hwlat_detector.c
@@ -0,0 +1,1212 @@ @@ -0,0 +1,1212 @@
+/* +/*
+ * hwlat_detector.c - A simple Hardware Latency detector. + * hwlat_detector.c - A simple Hardware Latency detector.
@ -1371,3 +1375,6 @@ Index: linux-3.2/drivers/misc/hwlat_detector.c
+ +
+module_init(detector_init); +module_init(detector_init);
+module_exit(detector_exit); +module_exit(detector_exit);
--
1.7.10

View File

@ -0,0 +1,23 @@
From dc3a0b29103cadebe8c40fd3ad80b18b7d1af27b Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Fri, 8 Jul 2011 20:25:16 +0200
Subject: [PATCH 072/267] localversion.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/n/tip-8vdw4bfcsds27cvox6rpb334@git.kernel.org
---
localversion-rt | 1 +
1 file changed, 1 insertion(+)
create mode 100644 localversion-rt
diff --git a/localversion-rt b/localversion-rt
new file mode 100644
index 0000000..b2111a2
--- /dev/null
+++ b/localversion-rt
@@ -0,0 +1 @@
+-rt24
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: early-printk-consolidate.patch From d6a466f7aef3ff53e864d1d0a8f5e93d61768714 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Sat, 23 Jul 2011 11:04:08 +0200 Date: Sat, 23 Jul 2011 11:04:08 +0200
Subject: [PATCH 073/267] early-printk-consolidate.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
@ -21,11 +22,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/printk.c | 27 ++++++++++++++++++++------- kernel/printk.c | 27 ++++++++++++++++++++-------
15 files changed, 62 insertions(+), 110 deletions(-) 15 files changed, 62 insertions(+), 110 deletions(-)
Index: linux-3.2/arch/arm/kernel/early_printk.c diff --git a/arch/arm/kernel/early_printk.c b/arch/arm/kernel/early_printk.c
=================================================================== index 85aa2b2..4307653 100644
--- linux-3.2.orig/arch/arm/kernel/early_printk.c --- a/arch/arm/kernel/early_printk.c
+++ linux-3.2/arch/arm/kernel/early_printk.c +++ b/arch/arm/kernel/early_printk.c
@@ -29,28 +29,17 @@ static void early_console_write(struct c @@ -29,28 +29,17 @@ static void early_console_write(struct console *con, const char *s, unsigned n)
early_write(s, n); early_write(s, n);
} }
@ -57,11 +58,11 @@ Index: linux-3.2/arch/arm/kernel/early_printk.c
return 0; return 0;
} }
Index: linux-3.2/arch/blackfin/kernel/early_printk.c diff --git a/arch/blackfin/kernel/early_printk.c b/arch/blackfin/kernel/early_printk.c
=================================================================== index 84ed837..61fbd2d 100644
--- linux-3.2.orig/arch/blackfin/kernel/early_printk.c --- a/arch/blackfin/kernel/early_printk.c
+++ linux-3.2/arch/blackfin/kernel/early_printk.c +++ b/arch/blackfin/kernel/early_printk.c
@@ -25,8 +25,6 @@ extern struct console *bfin_earlyserial_ @@ -25,8 +25,6 @@ extern struct console *bfin_earlyserial_init(unsigned int port,
extern struct console *bfin_jc_early_init(void); extern struct console *bfin_jc_early_init(void);
#endif #endif
@ -70,10 +71,10 @@ Index: linux-3.2/arch/blackfin/kernel/early_printk.c
/* Default console */ /* Default console */
#define DEFAULT_PORT 0 #define DEFAULT_PORT 0
#define DEFAULT_CFLAG CS8|B57600 #define DEFAULT_CFLAG CS8|B57600
Index: linux-3.2/arch/microblaze/kernel/early_printk.c diff --git a/arch/microblaze/kernel/early_printk.c b/arch/microblaze/kernel/early_printk.c
=================================================================== index d26d92d..0420624 100644
--- linux-3.2.orig/arch/microblaze/kernel/early_printk.c --- a/arch/microblaze/kernel/early_printk.c
+++ linux-3.2/arch/microblaze/kernel/early_printk.c +++ b/arch/microblaze/kernel/early_printk.c
@@ -21,7 +21,6 @@ @@ -21,7 +21,6 @@
#include <asm/setup.h> #include <asm/setup.h>
#include <asm/prom.h> #include <asm/prom.h>
@ -82,7 +83,7 @@ Index: linux-3.2/arch/microblaze/kernel/early_printk.c
static u32 base_addr; static u32 base_addr;
#ifdef CONFIG_SERIAL_UARTLITE_CONSOLE #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 */ #endif /* CONFIG_SERIAL_8250_CONSOLE */
@ -140,11 +141,11 @@ Index: linux-3.2/arch/microblaze/kernel/early_printk.c
- early_console_initialized = 0; - early_console_initialized = 0;
+ early_console = NULL; + early_console = NULL;
} }
Index: linux-3.2/arch/mips/kernel/early_printk.c diff --git a/arch/mips/kernel/early_printk.c b/arch/mips/kernel/early_printk.c
=================================================================== index 9ae813e..973c995 100644
--- linux-3.2.orig/arch/mips/kernel/early_printk.c --- a/arch/mips/kernel/early_printk.c
+++ linux-3.2/arch/mips/kernel/early_printk.c +++ b/arch/mips/kernel/early_printk.c
@@ -25,20 +25,18 @@ early_console_write(struct console *con, @@ -25,20 +25,18 @@ early_console_write(struct console *con, const char *s, unsigned n)
} }
} }
@ -169,10 +170,10 @@ Index: linux-3.2/arch/mips/kernel/early_printk.c
- register_console(&early_console); - register_console(&early_console);
+ register_console(&early_console_prom); + register_console(&early_console_prom);
} }
Index: linux-3.2/arch/powerpc/kernel/udbg.c diff --git a/arch/powerpc/kernel/udbg.c b/arch/powerpc/kernel/udbg.c
=================================================================== index 57fa2c0..1b9174d 100644
--- linux-3.2.orig/arch/powerpc/kernel/udbg.c --- a/arch/powerpc/kernel/udbg.c
+++ linux-3.2/arch/powerpc/kernel/udbg.c +++ b/arch/powerpc/kernel/udbg.c
@@ -182,15 +182,13 @@ static struct console udbg_console = { @@ -182,15 +182,13 @@ static struct console udbg_console = {
.index = 0, .index = 0,
}; };
@ -190,7 +191,7 @@ Index: linux-3.2/arch/powerpc/kernel/udbg.c
return; return;
if (!udbg_putc) if (!udbg_putc)
@@ -200,7 +198,7 @@ void __init register_early_udbg_console( @@ -200,7 +198,7 @@ void __init register_early_udbg_console(void)
printk(KERN_INFO "early console immortal !\n"); printk(KERN_INFO "early console immortal !\n");
udbg_console.flags &= ~CON_BOOT; udbg_console.flags &= ~CON_BOOT;
} }
@ -199,10 +200,10 @@ Index: linux-3.2/arch/powerpc/kernel/udbg.c
register_console(&udbg_console); register_console(&udbg_console);
} }
Index: linux-3.2/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
--- linux-3.2.orig/arch/sh/kernel/sh_bios.c --- a/arch/sh/kernel/sh_bios.c
+++ linux-3.2/arch/sh/kernel/sh_bios.c +++ b/arch/sh/kernel/sh_bios.c
@@ -144,8 +144,6 @@ static struct console bios_console = { @@ -144,8 +144,6 @@ static struct console bios_console = {
.index = -1, .index = -1,
}; };
@ -212,10 +213,10 @@ Index: linux-3.2/arch/sh/kernel/sh_bios.c
static int __init setup_early_printk(char *buf) static int __init setup_early_printk(char *buf)
{ {
int keep_early = 0; int keep_early = 0;
Index: linux-3.2/arch/sparc/kernel/setup_32.c diff --git a/arch/sparc/kernel/setup_32.c b/arch/sparc/kernel/setup_32.c
=================================================================== index fe1e3fc..e6475f0 100644
--- linux-3.2.orig/arch/sparc/kernel/setup_32.c --- a/arch/sparc/kernel/setup_32.c
+++ linux-3.2/arch/sparc/kernel/setup_32.c +++ b/arch/sparc/kernel/setup_32.c
@@ -221,6 +221,7 @@ void __init setup_arch(char **cmdline_p) @@ -221,6 +221,7 @@ void __init setup_arch(char **cmdline_p)
boot_flags_init(*cmdline_p); boot_flags_init(*cmdline_p);
@ -224,11 +225,11 @@ Index: linux-3.2/arch/sparc/kernel/setup_32.c
register_console(&prom_early_console); register_console(&prom_early_console);
/* Set sparc_cpu_model */ /* Set sparc_cpu_model */
Index: linux-3.2/arch/sparc/kernel/setup_64.c diff --git a/arch/sparc/kernel/setup_64.c b/arch/sparc/kernel/setup_64.c
=================================================================== index a854a1c..b85d039 100644
--- linux-3.2.orig/arch/sparc/kernel/setup_64.c --- a/arch/sparc/kernel/setup_64.c
+++ linux-3.2/arch/sparc/kernel/setup_64.c +++ b/arch/sparc/kernel/setup_64.c
@@ -487,6 +487,12 @@ static void __init init_sparc64_elf_hwca @@ -487,6 +487,12 @@ static void __init init_sparc64_elf_hwcap(void)
popc_patch(); popc_patch();
} }
@ -250,11 +251,11 @@ Index: linux-3.2/arch/sparc/kernel/setup_64.c
if (tlb_type == hypervisor) if (tlb_type == hypervisor)
printk("ARCH: SUN4V\n"); printk("ARCH: SUN4V\n");
Index: linux-3.2/arch/tile/kernel/early_printk.c diff --git a/arch/tile/kernel/early_printk.c b/arch/tile/kernel/early_printk.c
=================================================================== index 493a0e6..ba2ac00 100644
--- linux-3.2.orig/arch/tile/kernel/early_printk.c --- a/arch/tile/kernel/early_printk.c
+++ linux-3.2/arch/tile/kernel/early_printk.c +++ b/arch/tile/kernel/early_printk.c
@@ -32,25 +32,8 @@ static struct console early_hv_console = @@ -32,25 +32,8 @@ static struct console early_hv_console = {
}; };
/* Direct interface for emergencies */ /* Direct interface for emergencies */
@ -296,7 +297,7 @@ Index: linux-3.2/arch/tile/kernel/early_printk.c
register_console(early_console); register_console(early_console);
return 0; return 0;
@@ -84,12 +66,12 @@ static int __init setup_early_printk(cha @@ -84,12 +66,12 @@ static int __init setup_early_printk(char *str)
void __init disable_early_printk(void) void __init disable_early_printk(void)
{ {
early_console_complete = 1; early_console_complete = 1;
@ -320,11 +321,11 @@ Index: linux-3.2/arch/tile/kernel/early_printk.c
return; return;
early_printk("\ early_printk("\
Machine shutting down before console output is fully initialized.\n\ Machine shutting down before console output is fully initialized.\n\
Index: linux-3.2/arch/um/kernel/early_printk.c diff --git a/arch/um/kernel/early_printk.c b/arch/um/kernel/early_printk.c
=================================================================== index ec649bf..183060f 100644
--- linux-3.2.orig/arch/um/kernel/early_printk.c --- a/arch/um/kernel/early_printk.c
+++ linux-3.2/arch/um/kernel/early_printk.c +++ b/arch/um/kernel/early_printk.c
@@ -16,7 +16,7 @@ static void early_console_write(struct c @@ -16,7 +16,7 @@ static void early_console_write(struct console *con, const char *s, unsigned int
um_early_printk(s, n); um_early_printk(s, n);
} }
@ -346,11 +347,11 @@ Index: linux-3.2/arch/um/kernel/early_printk.c
return 0; return 0;
} }
Index: linux-3.2/arch/unicore32/kernel/early_printk.c diff --git a/arch/unicore32/kernel/early_printk.c b/arch/unicore32/kernel/early_printk.c
=================================================================== index 3922255..9be0d5d 100644
--- linux-3.2.orig/arch/unicore32/kernel/early_printk.c --- a/arch/unicore32/kernel/early_printk.c
+++ linux-3.2/arch/unicore32/kernel/early_printk.c +++ b/arch/unicore32/kernel/early_printk.c
@@ -33,21 +33,17 @@ static struct console early_ocd_console @@ -33,21 +33,17 @@ static struct console early_ocd_console = {
.index = -1, .index = -1,
}; };
@ -376,11 +377,11 @@ Index: linux-3.2/arch/unicore32/kernel/early_printk.c
if (keep_early) if (keep_early)
early_console->flags &= ~CON_BOOT; early_console->flags &= ~CON_BOOT;
Index: linux-3.2/arch/x86/kernel/early_printk.c diff --git a/arch/x86/kernel/early_printk.c b/arch/x86/kernel/early_printk.c
=================================================================== index cd28a35..5f3d9c5 100644
--- linux-3.2.orig/arch/x86/kernel/early_printk.c --- a/arch/x86/kernel/early_printk.c
+++ linux-3.2/arch/x86/kernel/early_printk.c +++ b/arch/x86/kernel/early_printk.c
@@ -169,25 +169,9 @@ static struct console early_serial_conso @@ -169,25 +169,9 @@ static struct console early_serial_console = {
.index = -1, .index = -1,
}; };
@ -407,7 +408,7 @@ Index: linux-3.2/arch/x86/kernel/early_printk.c
printk(KERN_CRIT "ERROR: earlyprintk= %s already used\n", printk(KERN_CRIT "ERROR: earlyprintk= %s already used\n",
con->name); con->name);
return; 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) if (!buf)
return 0; return 0;
@ -418,10 +419,10 @@ Index: linux-3.2/arch/x86/kernel/early_printk.c
keep = (strstr(buf, "keep") != NULL); keep = (strstr(buf, "keep") != NULL);
Index: linux-3.2/include/linux/console.h diff --git a/include/linux/console.h b/include/linux/console.h
=================================================================== index 7453cfd..e5b5dc0 100644
--- linux-3.2.orig/include/linux/console.h --- a/include/linux/console.h
+++ linux-3.2/include/linux/console.h +++ b/include/linux/console.h
@@ -133,6 +133,7 @@ struct console { @@ -133,6 +133,7 @@ struct console {
for (con = console_drivers; con != NULL; con = con->next) for (con = console_drivers; con != NULL; con = con->next)
@ -430,10 +431,10 @@ Index: linux-3.2/include/linux/console.h
extern int add_preferred_console(char *name, int idx, char *options); 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); extern int update_console_cmdline(char *name, int idx, char *name_new, int idx_new, char *options);
Index: linux-3.2/include/linux/printk.h diff --git a/include/linux/printk.h b/include/linux/printk.h
=================================================================== index f0e22f7..be10455 100644
--- linux-3.2.orig/include/linux/printk.h --- a/include/linux/printk.h
+++ linux-3.2/include/linux/printk.h +++ b/include/linux/printk.h
@@ -88,8 +88,13 @@ int no_printk(const char *fmt, ...) @@ -88,8 +88,13 @@ int no_printk(const char *fmt, ...)
return 0; return 0;
} }
@ -448,10 +449,10 @@ Index: linux-3.2/include/linux/printk.h
extern int printk_needs_cpu(int cpu); extern int printk_needs_cpu(int cpu);
extern void printk_tick(void); extern void printk_tick(void);
Index: linux-3.2/kernel/printk.c diff --git a/kernel/printk.c b/kernel/printk.c
=================================================================== index 7982a0a..b7aa50e 100644
--- linux-3.2.orig/kernel/printk.c --- a/kernel/printk.c
+++ linux-3.2/kernel/printk.c +++ b/kernel/printk.c
@@ -44,13 +44,6 @@ @@ -44,13 +44,6 @@
#include <asm/uaccess.h> #include <asm/uaccess.h>
@ -466,7 +467,7 @@ Index: linux-3.2/kernel/printk.c
#define __LOG_BUF_LEN (1 << CONFIG_LOG_BUF_SHIFT) #define __LOG_BUF_LEN (1 << CONFIG_LOG_BUF_SHIFT)
/* printk's without a loglevel use this.. */ /* printk's without a loglevel use this.. */
@@ -521,6 +514,26 @@ static void __call_console_drivers(unsig @@ -521,6 +514,26 @@ static void __call_console_drivers(unsigned start, unsigned end)
} }
} }
@ -493,3 +494,6 @@ Index: linux-3.2/kernel/printk.c
static int __read_mostly ignore_loglevel; static int __read_mostly ignore_loglevel;
static int __init ignore_loglevel_setup(char *str) static int __init ignore_loglevel_setup(char *str)
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: printk-kill.patch From 91869f3a1488dba10d311b5892e4555e94f67353 Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu> From: Ingo Molnar <mingo@elte.hu>
Date: Fri, 22 Jul 2011 17:58:40 +0200 Date: Fri, 22 Jul 2011 17:58:40 +0200
Subject: [PATCH 074/267] printk-kill.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
@ -9,10 +10,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/watchdog.c | 15 +++++++++++++-- kernel/watchdog.c | 15 +++++++++++++--
3 files changed, 48 insertions(+), 3 deletions(-) 3 files changed, 48 insertions(+), 3 deletions(-)
Index: linux-3.2/include/linux/printk.h diff --git a/include/linux/printk.h b/include/linux/printk.h
=================================================================== index be10455..a53adf6 100644
--- linux-3.2.orig/include/linux/printk.h --- a/include/linux/printk.h
+++ linux-3.2/include/linux/printk.h +++ b/include/linux/printk.h
@@ -91,9 +91,11 @@ int no_printk(const char *fmt, ...) @@ -91,9 +91,11 @@ int no_printk(const char *fmt, ...)
#ifdef CONFIG_EARLY_PRINTK #ifdef CONFIG_EARLY_PRINTK
extern asmlinkage __printf(1, 2) extern asmlinkage __printf(1, 2)
@ -25,7 +26,7 @@ Index: linux-3.2/include/linux/printk.h
#endif #endif
extern int printk_needs_cpu(int cpu); extern int printk_needs_cpu(int cpu);
@@ -114,7 +116,6 @@ extern int __printk_ratelimit(const char @@ -114,7 +116,6 @@ extern int __printk_ratelimit(const char *func);
#define printk_ratelimit() __printk_ratelimit(__func__) #define printk_ratelimit() __printk_ratelimit(__func__)
extern bool printk_timed_ratelimit(unsigned long *caller_jiffies, extern bool printk_timed_ratelimit(unsigned long *caller_jiffies,
unsigned int interval_msec); unsigned int interval_msec);
@ -33,11 +34,11 @@ Index: linux-3.2/include/linux/printk.h
extern int printk_delay_msec; extern int printk_delay_msec;
extern int dmesg_restrict; extern int dmesg_restrict;
extern int kptr_restrict; extern int kptr_restrict;
Index: linux-3.2/kernel/printk.c diff --git a/kernel/printk.c b/kernel/printk.c
=================================================================== index b7aa50e..96ee3cd 100644
--- linux-3.2.orig/kernel/printk.c --- a/kernel/printk.c
+++ linux-3.2/kernel/printk.c +++ b/kernel/printk.c
@@ -532,6 +532,32 @@ asmlinkage void early_printk(const char @@ -532,6 +532,32 @@ asmlinkage void early_printk(const char *fmt, ...)
early_vprintk(fmt, ap); early_vprintk(fmt, ap);
va_end(ap); va_end(ap);
} }
@ -70,7 +71,7 @@ Index: linux-3.2/kernel/printk.c
#endif #endif
static int __read_mostly ignore_loglevel; static int __read_mostly ignore_loglevel;
@@ -850,6 +876,13 @@ asmlinkage int vprintk(const char *fmt, @@ -850,6 +876,13 @@ asmlinkage int vprintk(const char *fmt, va_list args)
size_t plen; size_t plen;
char special; char special;
@ -84,11 +85,11 @@ Index: linux-3.2/kernel/printk.c
boot_delay_msec(); boot_delay_msec();
printk_delay(); printk_delay();
Index: linux-3.2/kernel/watchdog.c diff --git a/kernel/watchdog.c b/kernel/watchdog.c
=================================================================== index 1d7bca7..c7e2a2f 100644
--- linux-3.2.orig/kernel/watchdog.c --- a/kernel/watchdog.c
+++ linux-3.2/kernel/watchdog.c +++ b/kernel/watchdog.c
@@ -201,6 +201,8 @@ static int is_softlockup(unsigned long t @@ -201,6 +201,8 @@ static int is_softlockup(unsigned long touch_ts)
#ifdef CONFIG_HARDLOCKUP_DETECTOR #ifdef CONFIG_HARDLOCKUP_DETECTOR
@ -97,7 +98,7 @@ Index: linux-3.2/kernel/watchdog.c
static struct perf_event_attr wd_hw_attr = { static struct perf_event_attr wd_hw_attr = {
.type = PERF_TYPE_HARDWARE, .type = PERF_TYPE_HARDWARE,
.config = PERF_COUNT_HW_CPU_CYCLES, .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) if (__this_cpu_read(hard_watchdog_warn) == true)
return; return;
@ -119,3 +120,6 @@ Index: linux-3.2/kernel/watchdog.c
__this_cpu_write(hard_watchdog_warn, true); __this_cpu_write(hard_watchdog_warn, true);
return; return;
--
1.7.10

View File

@ -1,10 +1,8 @@
Subject: printk: %27force_early_printk%27 boot param to help with debugging From 7e09744cd7ca0c94a940049f7557916e764ef9ea Mon Sep 17 00:00:00 2001
From: Peter Zijlstra <peterz@infradead.org>
Date: Fri, 02 Sep 2011 14:41:29 +0200
Subject: printk: 'force_early_printk' boot param to help with debugging
From: Peter Zijlstra <a.p.zijlstra@chello.nl> From: Peter Zijlstra <a.p.zijlstra@chello.nl>
Date: Fri Sep 02 14:29:33 CEST 2011 Date: Fri, 2 Sep 2011 14:29:33 +0200
Subject: [PATCH 075/267] printk: 'force_early_printk' boot param to help with
debugging
Gives me an option to screw printk and actually see what the machine Gives me an option to screw printk and actually see what the machine
says. says.
@ -17,11 +15,11 @@ Link: http://lkml.kernel.org/n/tip-ykb97nsfmobq44xketrxs977@git.kernel.org
kernel/printk.c | 7 +++++++ kernel/printk.c | 7 +++++++
1 file changed, 7 insertions(+) 1 file changed, 7 insertions(+)
Index: linux-3.2/kernel/printk.c diff --git a/kernel/printk.c b/kernel/printk.c
=================================================================== index 96ee3cd..1f06626 100644
--- linux-3.2.orig/kernel/printk.c --- a/kernel/printk.c
+++ linux-3.2/kernel/printk.c +++ b/kernel/printk.c
@@ -541,6 +541,13 @@ asmlinkage void early_printk(const char @@ -541,6 +541,13 @@ asmlinkage void early_printk(const char *fmt, ...)
*/ */
static int __read_mostly printk_killswitch; static int __read_mostly printk_killswitch;
@ -35,3 +33,6 @@ Index: linux-3.2/kernel/printk.c
void printk_kill(void) void printk_kill(void)
{ {
printk_killswitch = 1; printk_killswitch = 1;
--
1.7.10

View File

@ -1,16 +1,17 @@
Subject: rt-preempt-base-config.patch From fa80496475ea56404325811b11eb95bdb1519b13 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Fri, 17 Jun 2011 12:39:57 +0200 Date: Fri, 17 Jun 2011 12:39:57 +0200
Subject: [PATCH 076/267] rt-preempt-base-config.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
kernel/Kconfig.preempt | 19 +++++++++++++++++-- kernel/Kconfig.preempt | 19 +++++++++++++++++--
1 file changed, 17 insertions(+), 2 deletions(-) 1 file changed, 17 insertions(+), 2 deletions(-)
Index: linux-3.2/kernel/Kconfig.preempt diff --git a/kernel/Kconfig.preempt b/kernel/Kconfig.preempt
=================================================================== index 24e7cb0..35c6f20 100644
--- linux-3.2.orig/kernel/Kconfig.preempt --- a/kernel/Kconfig.preempt
+++ linux-3.2/kernel/Kconfig.preempt +++ b/kernel/Kconfig.preempt
@@ -1,3 +1,10 @@ @@ -1,3 +1,10 @@
+config PREEMPT +config PREEMPT
+ bool + bool
@ -49,3 +50,6 @@ Index: linux-3.2/kernel/Kconfig.preempt
endchoice endchoice
config PREEMPT_COUNT config PREEMPT_COUNT
--
1.7.10

View File

@ -1,18 +1,18 @@
From 7258f0c5442a0dde07c06e12f431134e4b9bff47 Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu> From: Ingo Molnar <mingo@elte.hu>
Date: Fri, 3 Jul 2009 08:29:58 -0500 Date: Fri, 3 Jul 2009 08:29:58 -0500
Subject: bug: BUG_ON/WARN_ON variants dependend on RT/!RT Subject: [PATCH 077/267] bug: BUG_ON/WARN_ON variants dependend on RT/!RT
Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
include/asm-generic/bug.h | 18 ++++++++++++++++++ include/asm-generic/bug.h | 18 ++++++++++++++++++
1 file changed, 18 insertions(+) 1 file changed, 18 insertions(+)
Index: linux-3.2/include/asm-generic/bug.h diff --git a/include/asm-generic/bug.h b/include/asm-generic/bug.h
=================================================================== index 84458b0..97c1eaf 100644
--- linux-3.2.orig/include/asm-generic/bug.h --- a/include/asm-generic/bug.h
+++ linux-3.2/include/asm-generic/bug.h +++ b/include/asm-generic/bug.h
@@ -3,6 +3,10 @@ @@ -3,6 +3,10 @@
#include <linux/compiler.h> #include <linux/compiler.h>
@ -24,7 +24,7 @@ Index: linux-3.2/include/asm-generic/bug.h
#ifdef CONFIG_BUG #ifdef CONFIG_BUG
#ifdef CONFIG_GENERIC_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;}) # define WARN_ON_SMP(x) ({0;})
#endif #endif
@ -43,3 +43,6 @@ Index: linux-3.2/include/asm-generic/bug.h
+#endif +#endif
+ +
#endif #endif
--
1.7.10

View File

@ -1,23 +1,23 @@
From 7ff90eac6ba7e1e5fefaf931f42ec83ed6534a7c Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Tue, 21 Jul 2009 22:34:14 +0200 Date: Tue, 21 Jul 2009 22:34:14 +0200
Subject: rt: local_irq_* variants depending on RT/!RT Subject: [PATCH 078/267] rt: local_irq_* variants depending on RT/!RT
Add local_irq_*_(no)rt variant which are mainly used to break Add local_irq_*_(no)rt variant which are mainly used to break
interrupt disabled sections on PREEMPT_RT or to explicitely disable interrupt disabled sections on PREEMPT_RT or to explicitely disable
interrupts on PREEMPT_RT. interrupts on PREEMPT_RT.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
include/linux/interrupt.h | 2 +- include/linux/interrupt.h | 2 +-
include/linux/irqflags.h | 19 +++++++++++++++++++ include/linux/irqflags.h | 19 +++++++++++++++++++
2 files changed, 20 insertions(+), 1 deletion(-) 2 files changed, 20 insertions(+), 1 deletion(-)
Index: linux-3.2/include/linux/interrupt.h diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
=================================================================== index 21b94de..ddd6b2a 100644
--- linux-3.2.orig/include/linux/interrupt.h --- a/include/linux/interrupt.h
+++ linux-3.2/include/linux/interrupt.h +++ b/include/linux/interrupt.h
@@ -219,7 +219,7 @@ extern void devm_free_irq(struct device @@ -219,7 +219,7 @@ extern void devm_free_irq(struct device *dev, unsigned int irq, void *dev_id);
#ifdef CONFIG_LOCKDEP #ifdef CONFIG_LOCKDEP
# define local_irq_enable_in_hardirq() do { } while (0) # define local_irq_enable_in_hardirq() do { } while (0)
#else #else
@ -26,10 +26,10 @@ Index: linux-3.2/include/linux/interrupt.h
#endif #endif
extern void disable_irq_nosync(unsigned int irq); extern void disable_irq_nosync(unsigned int irq);
Index: linux-3.2/include/linux/irqflags.h diff --git a/include/linux/irqflags.h b/include/linux/irqflags.h
=================================================================== index d176d65..37b13c4 100644
--- linux-3.2.orig/include/linux/irqflags.h --- a/include/linux/irqflags.h
+++ linux-3.2/include/linux/irqflags.h +++ b/include/linux/irqflags.h
@@ -147,4 +147,23 @@ @@ -147,4 +147,23 @@
#endif /* CONFIG_TRACE_IRQFLAGS_SUPPORT */ #endif /* CONFIG_TRACE_IRQFLAGS_SUPPORT */
@ -54,3 +54,6 @@ Index: linux-3.2/include/linux/irqflags.h
+#endif +#endif
+ +
#endif #endif
--
1.7.10

View File

@ -1,20 +1,20 @@
From b114ea4baca627525d85c109fefcb2ba3de55ffa Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Fri, 24 Jul 2009 12:38:56 +0200 Date: Fri, 24 Jul 2009 12:38:56 +0200
Subject: preempt: Provide preempt_*_(no)rt variants Subject: [PATCH 079/267] preempt: Provide preempt_*_(no)rt variants
RT needs a few preempt_disable/enable points which are not necessary RT needs a few preempt_disable/enable points which are not necessary
otherwise. Implement variants to avoid #ifdeffery. otherwise. Implement variants to avoid #ifdeffery.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
include/linux/preempt.h | 20 ++++++++++++++++++-- include/linux/preempt.h | 20 ++++++++++++++++++--
1 file changed, 18 insertions(+), 2 deletions(-) 1 file changed, 18 insertions(+), 2 deletions(-)
Index: linux-3.2/include/linux/preempt.h diff --git a/include/linux/preempt.h b/include/linux/preempt.h
=================================================================== index 227b0f5..29db25f 100644
--- linux-3.2.orig/include/linux/preempt.h --- a/include/linux/preempt.h
+++ linux-3.2/include/linux/preempt.h +++ b/include/linux/preempt.h
@@ -54,11 +54,15 @@ do { \ @@ -54,11 +54,15 @@ do { \
dec_preempt_count(); \ dec_preempt_count(); \
} while (0) } while (0)
@ -52,3 +52,6 @@ Index: linux-3.2/include/linux/preempt.h
#ifdef CONFIG_PREEMPT_NOTIFIERS #ifdef CONFIG_PREEMPT_NOTIFIERS
struct preempt_notifier; struct preempt_notifier;
--
1.7.10

View File

@ -1,22 +1,23 @@
From 8568db0e556b5159c9c7d85ce78f66d1df5d50ee Mon Sep 17 00:00:00 2001
From: Steven Rostedt <srostedt@redhat.com> From: Steven Rostedt <srostedt@redhat.com>
Date: Fri, 3 Jul 2009 08:44:29 -0500 Date: Fri, 3 Jul 2009 08:44:29 -0500
Subject: ata: Do not disable interrupts in ide code for preempt-rt Subject: [PATCH 080/267] ata: Do not disable interrupts in ide code for
preempt-rt
Use the local_irq_*_nort variants. Use the local_irq_*_nort variants.
Signed-off-by: Steven Rostedt <srostedt@redhat.com> Signed-off-by: Steven Rostedt <srostedt@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
drivers/ata/libata-sff.c | 12 ++++++------ drivers/ata/libata-sff.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-) 1 file changed, 6 insertions(+), 6 deletions(-)
Index: linux-3.2/drivers/ata/libata-sff.c diff --git a/drivers/ata/libata-sff.c b/drivers/ata/libata-sff.c
=================================================================== index 4cadfa2..100f85c 100644
--- linux-3.2.orig/drivers/ata/libata-sff.c --- a/drivers/ata/libata-sff.c
+++ linux-3.2/drivers/ata/libata-sff.c +++ b/drivers/ata/libata-sff.c
@@ -678,9 +678,9 @@ unsigned int ata_sff_data_xfer_noirq(str @@ -678,9 +678,9 @@ unsigned int ata_sff_data_xfer_noirq(struct ata_device *dev, unsigned char *buf,
unsigned long flags; unsigned long flags;
unsigned int consumed; unsigned int consumed;
@ -28,7 +29,7 @@ Index: linux-3.2/drivers/ata/libata-sff.c
return consumed; 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; unsigned long flags;
/* FIXME: use a bounce buffer */ /* FIXME: use a bounce buffer */
@ -37,7 +38,7 @@ Index: linux-3.2/drivers/ata/libata-sff.c
buf = kmap_atomic(page, KM_IRQ0); buf = kmap_atomic(page, KM_IRQ0);
/* do the actual data transfer */ /* 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); do_write);
kunmap_atomic(buf, KM_IRQ0); kunmap_atomic(buf, KM_IRQ0);
@ -64,3 +65,6 @@ Index: linux-3.2/drivers/ata/libata-sff.c
} else { } else {
buf = page_address(page); buf = page_address(page);
consumed = ap->ops->sff_data_xfer(dev, buf + offset, consumed = ap->ops->sff_data_xfer(dev, buf + offset,
--
1.7.10

View File

@ -1,12 +1,12 @@
From 56ffc28ceb835c0eb0bff7fb3395cd66ba0860b0 Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu> From: Ingo Molnar <mingo@elte.hu>
Date: Fri, 3 Jul 2009 08:30:16 -0500 Date: Fri, 3 Jul 2009 08:30:16 -0500
Subject: ide: Do not disable interrupts for PREEMPT-RT Subject: [PATCH 081/267] ide: Do not disable interrupts for PREEMPT-RT
Use the local_irq_*_nort variants. Use the local_irq_*_nort variants.
Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
drivers/ide/alim15x3.c | 4 ++-- drivers/ide/alim15x3.c | 4 ++--
drivers/ide/hpt366.c | 4 ++-- drivers/ide/hpt366.c | 4 ++--
@ -17,11 +17,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
drivers/ide/ide-taskfile.c | 6 +++--- drivers/ide/ide-taskfile.c | 6 +++---
7 files changed, 16 insertions(+), 16 deletions(-) 7 files changed, 16 insertions(+), 16 deletions(-)
Index: linux-3.2/drivers/ide/alim15x3.c diff --git a/drivers/ide/alim15x3.c b/drivers/ide/alim15x3.c
=================================================================== index 2c8016a..6fd6037 100644
--- linux-3.2.orig/drivers/ide/alim15x3.c --- a/drivers/ide/alim15x3.c
+++ linux-3.2/drivers/ide/alim15x3.c +++ b/drivers/ide/alim15x3.c
@@ -234,7 +234,7 @@ static int init_chipset_ali15x3(struct p @@ -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); isa_dev = pci_get_device(PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M1533, NULL);
@ -39,11 +39,11 @@ Index: linux-3.2/drivers/ide/alim15x3.c
return 0; return 0;
} }
Index: linux-3.2/drivers/ide/hpt366.c diff --git a/drivers/ide/hpt366.c b/drivers/ide/hpt366.c
=================================================================== index 58c51cd..d2a4059 100644
--- linux-3.2.orig/drivers/ide/hpt366.c --- a/drivers/ide/hpt366.c
+++ linux-3.2/drivers/ide/hpt366.c +++ b/drivers/ide/hpt366.c
@@ -1241,7 +1241,7 @@ static int __devinit init_dma_hpt366(ide @@ -1241,7 +1241,7 @@ static int __devinit init_dma_hpt366(ide_hwif_t *hwif,
dma_old = inb(base + 2); dma_old = inb(base + 2);
@ -52,7 +52,7 @@ Index: linux-3.2/drivers/ide/hpt366.c
dma_new = dma_old; dma_new = dma_old;
pci_read_config_byte(dev, hwif->channel ? 0x4b : 0x43, &masterdma); 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) if (dma_new != dma_old)
outb(dma_new, base + 2); outb(dma_new, base + 2);
@ -61,11 +61,11 @@ Index: linux-3.2/drivers/ide/hpt366.c
printk(KERN_INFO " %s: BM-DMA at 0x%04lx-0x%04lx\n", printk(KERN_INFO " %s: BM-DMA at 0x%04lx-0x%04lx\n",
hwif->name, base, base + 7); hwif->name, base, base + 7);
Index: linux-3.2/drivers/ide/ide-io-std.c diff --git a/drivers/ide/ide-io-std.c b/drivers/ide/ide-io-std.c
=================================================================== index 1976397..4169433 100644
--- linux-3.2.orig/drivers/ide/ide-io-std.c --- a/drivers/ide/ide-io-std.c
+++ linux-3.2/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, @@ -175,7 +175,7 @@ void ide_input_data(ide_drive_t *drive, struct ide_cmd *cmd, void *buf,
unsigned long uninitialized_var(flags); unsigned long uninitialized_var(flags);
if ((io_32bit & 2) && !mmio) { if ((io_32bit & 2) && !mmio) {
@ -74,7 +74,7 @@ Index: linux-3.2/drivers/ide/ide-io-std.c
ata_vlb_sync(io_ports->nsect_addr); 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); insl(data_addr, buf, words);
if ((io_32bit & 2) && !mmio) if ((io_32bit & 2) && !mmio)
@ -83,7 +83,7 @@ Index: linux-3.2/drivers/ide/ide-io-std.c
if (((len + 1) & 3) < 2) if (((len + 1) & 3) < 2)
return; 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); unsigned long uninitialized_var(flags);
if ((io_32bit & 2) && !mmio) { if ((io_32bit & 2) && !mmio) {
@ -92,7 +92,7 @@ Index: linux-3.2/drivers/ide/ide-io-std.c
ata_vlb_sync(io_ports->nsect_addr); 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); outsl(data_addr, buf, words);
if ((io_32bit & 2) && !mmio) if ((io_32bit & 2) && !mmio)
@ -101,11 +101,11 @@ Index: linux-3.2/drivers/ide/ide-io-std.c
if (((len + 1) & 3) < 2) if (((len + 1) & 3) < 2)
return; return;
Index: linux-3.2/drivers/ide/ide-io.c diff --git a/drivers/ide/ide-io.c b/drivers/ide/ide-io.c
=================================================================== index 177db6d..079ae6b 100644
--- linux-3.2.orig/drivers/ide/ide-io.c --- a/drivers/ide/ide-io.c
+++ linux-3.2/drivers/ide/ide-io.c +++ b/drivers/ide/ide-io.c
@@ -659,7 +659,7 @@ void ide_timer_expiry (unsigned long dat @@ -659,7 +659,7 @@ void ide_timer_expiry (unsigned long data)
/* disable_irq_nosync ?? */ /* disable_irq_nosync ?? */
disable_irq(hwif->irq); disable_irq(hwif->irq);
/* local CPU only, as if we were handling an interrupt */ /* local CPU only, as if we were handling an interrupt */
@ -114,11 +114,11 @@ Index: linux-3.2/drivers/ide/ide-io.c
if (hwif->polling) { if (hwif->polling) {
startstop = handler(drive); startstop = handler(drive);
} else if (drive_is_ready(drive)) { } else if (drive_is_ready(drive)) {
Index: linux-3.2/drivers/ide/ide-iops.c diff --git a/drivers/ide/ide-iops.c b/drivers/ide/ide-iops.c
=================================================================== index 376f2dc..f014dd1 100644
--- linux-3.2.orig/drivers/ide/ide-iops.c --- a/drivers/ide/ide-iops.c
+++ linux-3.2/drivers/ide/ide-iops.c +++ b/drivers/ide/ide-iops.c
@@ -129,12 +129,12 @@ int __ide_wait_stat(ide_drive_t *drive, @@ -129,12 +129,12 @@ int __ide_wait_stat(ide_drive_t *drive, u8 good, u8 bad,
if ((stat & ATA_BUSY) == 0) if ((stat & ATA_BUSY) == 0)
break; break;
@ -133,11 +133,11 @@ Index: linux-3.2/drivers/ide/ide-iops.c
} }
/* /*
* Allow status to settle, then read it again. * Allow status to settle, then read it again.
Index: linux-3.2/drivers/ide/ide-probe.c diff --git a/drivers/ide/ide-probe.c b/drivers/ide/ide-probe.c
=================================================================== index 068cef0..38e69e1 100644
--- linux-3.2.orig/drivers/ide/ide-probe.c --- a/drivers/ide/ide-probe.c
+++ linux-3.2/drivers/ide/ide-probe.c +++ b/drivers/ide/ide-probe.c
@@ -196,10 +196,10 @@ static void do_identify(ide_drive_t *dri @@ -196,10 +196,10 @@ static void do_identify(ide_drive_t *drive, u8 cmd, u16 *id)
int bswap = 1; int bswap = 1;
/* local CPU only; some systems need this */ /* local CPU only; some systems need this */
@ -150,11 +150,11 @@ Index: linux-3.2/drivers/ide/ide-probe.c
drive->dev_flags |= IDE_DFLAG_ID_READ; drive->dev_flags |= IDE_DFLAG_ID_READ;
#ifdef DEBUG #ifdef DEBUG
Index: linux-3.2/drivers/ide/ide-taskfile.c diff --git a/drivers/ide/ide-taskfile.c b/drivers/ide/ide-taskfile.c
=================================================================== index 5bc2839..da861a6 100644
--- linux-3.2.orig/drivers/ide/ide-taskfile.c --- a/drivers/ide/ide-taskfile.c
+++ linux-3.2/drivers/ide/ide-taskfile.c +++ b/drivers/ide/ide-taskfile.c
@@ -251,7 +251,7 @@ void ide_pio_bytes(ide_drive_t *drive, s @@ -251,7 +251,7 @@ void ide_pio_bytes(ide_drive_t *drive, struct ide_cmd *cmd,
page_is_high = PageHighMem(page); page_is_high = PageHighMem(page);
if (page_is_high) if (page_is_high)
@ -163,7 +163,7 @@ Index: linux-3.2/drivers/ide/ide-taskfile.c
buf = kmap_atomic(page, KM_BIO_SRC_IRQ) + offset; buf = kmap_atomic(page, KM_BIO_SRC_IRQ) + 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, KM_BIO_SRC_IRQ); kunmap_atomic(buf, KM_BIO_SRC_IRQ);
if (page_is_high) if (page_is_high)
@ -172,7 +172,7 @@ Index: linux-3.2/drivers/ide/ide-taskfile.c
len -= nr_bytes; 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) if ((drive->dev_flags & IDE_DFLAG_UNMASK) == 0)
@ -181,3 +181,6 @@ Index: linux-3.2/drivers/ide/ide-taskfile.c
ide_set_handler(drive, &task_pio_intr, WAIT_WORSTCASE); ide_set_handler(drive, &task_pio_intr, WAIT_WORSTCASE);
--
1.7.10

View File

@ -1,6 +1,8 @@
From cd9cb9fbaf1df154b72fa6be9a3665ba7ad81433 Mon Sep 17 00:00:00 2001
From: Sven-Thorsten Dietrich <sdietrich@novell.com> From: Sven-Thorsten Dietrich <sdietrich@novell.com>
Date: Fri, 3 Jul 2009 08:30:35 -0500 Date: Fri, 3 Jul 2009 08:30:35 -0500
Subject: infiniband: Mellanox IB driver patch use _nort() primitives Subject: [PATCH 082/267] infiniband: Mellanox IB driver patch use _nort()
primitives
Fixes in_atomic stack-dump, when Mellanox module is loaded into the RT Fixes in_atomic stack-dump, when Mellanox module is loaded into the RT
Kernel. Kernel.
@ -13,16 +15,15 @@ changes."
Signed-off-by: Sven-Thorsten Dietrich <sven@thebigcorporation.com> Signed-off-by: Sven-Thorsten Dietrich <sven@thebigcorporation.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
drivers/infiniband/ulp/ipoib/ipoib_multicast.c | 4 ++-- drivers/infiniband/ulp/ipoib/ipoib_multicast.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-) 1 file changed, 2 insertions(+), 2 deletions(-)
Index: linux-3.2/drivers/infiniband/ulp/ipoib/ipoib_multicast.c diff --git a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
=================================================================== index e5069b4..2683192 100644
--- linux-3.2.orig/drivers/infiniband/ulp/ipoib/ipoib_multicast.c --- a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
+++ linux-3.2/drivers/infiniband/ulp/ipoib/ipoib_multicast.c +++ b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
@@ -806,7 +806,7 @@ void ipoib_mcast_restart_task(struct wor @@ -799,7 +799,7 @@ void ipoib_mcast_restart_task(struct work_struct *work)
ipoib_mcast_stop_thread(dev, 0); ipoib_mcast_stop_thread(dev, 0);
@ -31,7 +32,7 @@ Index: linux-3.2/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
netif_addr_lock(dev); netif_addr_lock(dev);
spin_lock(&priv->lock); spin_lock(&priv->lock);
@@ -888,7 +888,7 @@ void ipoib_mcast_restart_task(struct wor @@ -881,7 +881,7 @@ void ipoib_mcast_restart_task(struct work_struct *work)
spin_unlock(&priv->lock); spin_unlock(&priv->lock);
netif_addr_unlock(dev); netif_addr_unlock(dev);
@ -40,3 +41,6 @@ Index: linux-3.2/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
/* We have to cancel outside of the spinlock */ /* We have to cancel outside of the spinlock */
list_for_each_entry_safe(mcast, tmcast, &remove_list, list) { list_for_each_entry_safe(mcast, tmcast, &remove_list, list) {
--
1.7.10

View File

@ -1,21 +1,22 @@
From 359b7e30fef466df9d38227b1f570e21fcb37b5e Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu> From: Ingo Molnar <mingo@elte.hu>
Date: Fri, 3 Jul 2009 08:30:16 -0500 Date: Fri, 3 Jul 2009 08:30:16 -0500
Subject: input: gameport: Do not disable interrupts on PREEMPT_RT Subject: [PATCH 083/267] input: gameport: Do not disable interrupts on
PREEMPT_RT
Use the _nort() primitives. Use the _nort() primitives.
Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
drivers/input/gameport/gameport.c | 8 ++++---- drivers/input/gameport/gameport.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-) 1 file changed, 4 insertions(+), 4 deletions(-)
Index: linux-3.2/drivers/input/gameport/gameport.c diff --git a/drivers/input/gameport/gameport.c b/drivers/input/gameport/gameport.c
=================================================================== index c351aa4..1ecaf60 100644
--- linux-3.2.orig/drivers/input/gameport/gameport.c --- a/drivers/input/gameport/gameport.c
+++ linux-3.2/drivers/input/gameport/gameport.c +++ b/drivers/input/gameport/gameport.c
@@ -87,12 +87,12 @@ static int gameport_measure_speed(struct @@ -87,12 +87,12 @@ static int gameport_measure_speed(struct gameport *gameport)
tx = 1 << 30; tx = 1 << 30;
for(i = 0; i < 50; i++) { for(i = 0; i < 50; i++) {
@ -30,7 +31,7 @@ Index: linux-3.2/drivers/input/gameport/gameport.c
udelay(i * 10); udelay(i * 10);
if ((t = DELTA(t2,t1) - DELTA(t3,t2)) < tx) tx = t; 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; tx = 1 << 30;
for(i = 0; i < 50; i++) { for(i = 0; i < 50; i++) {
@ -44,3 +45,6 @@ Index: linux-3.2/drivers/input/gameport/gameport.c
udelay(i * 10); udelay(i * 10);
if (t2 - t1 < tx) tx = t2 - t1; if (t2 - t1 < tx) tx = t2 - t1;
} }
--
1.7.10

View File

@ -1,19 +1,19 @@
From 6bd3fc45f9c1bd877a0fd6776610ca5658dae3b1 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Tue, 21 Jul 2009 22:54:51 +0200 Date: Tue, 21 Jul 2009 22:54:51 +0200
Subject: acpi: Do not disable interrupts on PREEMPT_RT Subject: [PATCH 084/267] acpi: Do not disable interrupts on PREEMPT_RT
Use the local_irq_*_nort() variants. Use the local_irq_*_nort() variants.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
arch/x86/include/asm/acpi.h | 4 ++-- arch/x86/include/asm/acpi.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-) 1 file changed, 2 insertions(+), 2 deletions(-)
Index: linux-3.2/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
--- linux-3.2.orig/arch/x86/include/asm/acpi.h --- a/arch/x86/include/asm/acpi.h
+++ linux-3.2/arch/x86/include/asm/acpi.h +++ b/arch/x86/include/asm/acpi.h
@@ -51,8 +51,8 @@ @@ -51,8 +51,8 @@
#define ACPI_ASM_MACROS #define ACPI_ASM_MACROS
@ -25,3 +25,6 @@ Index: linux-3.2/arch/x86/include/asm/acpi.h
#define ACPI_FLUSH_CPU_CACHE() wbinvd() #define ACPI_FLUSH_CPU_CACHE() wbinvd()
int __acpi_acquire_global_lock(unsigned int *lock); int __acpi_acquire_global_lock(unsigned int *lock);
--
1.7.10

View File

@ -1,20 +1,21 @@
From 1e9f1cee0ada298f8ffa264a72156c25d9e1b5c1 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Tue, 21 Jul 2009 23:06:05 +0200 Date: Tue, 21 Jul 2009 23:06:05 +0200
Subject: core: Do not disable interrupts on RT in kernel/users.c Subject: [PATCH 085/267] core: Do not disable interrupts on RT in
kernel/users.c
Use the local_irq_*_nort variants to reduce latencies in RT. The code Use the local_irq_*_nort variants to reduce latencies in RT. The code
is serialized by the locks. No need to disable interrupts. is serialized by the locks. No need to disable interrupts.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
kernel/user.c | 4 ++-- kernel/user.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-) 1 file changed, 2 insertions(+), 2 deletions(-)
Index: linux-3.2/kernel/user.c diff --git a/kernel/user.c b/kernel/user.c
=================================================================== index 71dd236..b831e51 100644
--- linux-3.2.orig/kernel/user.c --- a/kernel/user.c
+++ linux-3.2/kernel/user.c +++ b/kernel/user.c
@@ -129,11 +129,11 @@ void free_uid(struct user_struct *up) @@ -129,11 +129,11 @@ void free_uid(struct user_struct *up)
if (!up) if (!up)
return; return;
@ -29,3 +30,6 @@ Index: linux-3.2/kernel/user.c
} }
struct user_struct *alloc_uid(struct user_namespace *ns, uid_t uid) struct user_struct *alloc_uid(struct user_namespace *ns, uid_t uid)
--
1.7.10

View File

@ -1,6 +1,8 @@
From fadf7cb3af643dd7aa4ad2322df4916621e09e03 Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu> From: Ingo Molnar <mingo@elte.hu>
Date: Fri, 3 Jul 2009 08:44:33 -0500 Date: Fri, 3 Jul 2009 08:44:33 -0500
Subject: core: Do not disable interrupts on RT in res_counter.c Subject: [PATCH 086/267] core: Do not disable interrupts on RT in
res_counter.c
Frederic Weisbecker reported this warning: Frederic Weisbecker reported this warning:
@ -41,16 +43,15 @@ So replace it with _nort(). This code needs a second look.
Reported-by: Frederic Weisbecker <fweisbec@gmail.com> Reported-by: Frederic Weisbecker <fweisbec@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
kernel/res_counter.c | 8 ++++---- kernel/res_counter.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-) 1 file changed, 4 insertions(+), 4 deletions(-)
Index: linux-3.2/kernel/res_counter.c diff --git a/kernel/res_counter.c b/kernel/res_counter.c
=================================================================== index 34683ef..21e9ec4 100644
--- linux-3.2.orig/kernel/res_counter.c --- a/kernel/res_counter.c
+++ linux-3.2/kernel/res_counter.c +++ b/kernel/res_counter.c
@@ -43,7 +43,7 @@ int res_counter_charge(struct res_counte @@ -43,7 +43,7 @@ int res_counter_charge(struct res_counter *counter, unsigned long val,
struct res_counter *c, *u; struct res_counter *c, *u;
*limit_fail_at = NULL; *limit_fail_at = NULL;
@ -68,7 +69,7 @@ Index: linux-3.2/kernel/res_counter.c
return ret; return ret;
} }
@@ -79,13 +79,13 @@ void res_counter_uncharge(struct res_cou @@ -79,13 +79,13 @@ void res_counter_uncharge(struct res_counter *counter, unsigned long val)
unsigned long flags; unsigned long flags;
struct res_counter *c; struct res_counter *c;
@ -84,3 +85,6 @@ Index: linux-3.2/kernel/res_counter.c
} }
--
1.7.10

View File

@ -1,22 +1,22 @@
From aede9f913c631a8c15d7e4bc1898eb7021dc234c Mon Sep 17 00:00:00 2001
From: Steven Rostedt <srostedt@redhat.com> From: Steven Rostedt <srostedt@redhat.com>
Date: Fri, 3 Jul 2009 08:44:26 -0500 Date: Fri, 3 Jul 2009 08:44:26 -0500
Subject: usb: Use local_irq_*_nort() variants Subject: [PATCH 087/267] usb: Use local_irq_*_nort() variants
[ tglx: Now that irqf_disabled is dead we should kill that ] [ tglx: Now that irqf_disabled is dead we should kill that ]
Signed-off-by: Steven Rostedt <srostedt@redhat.com> Signed-off-by: Steven Rostedt <srostedt@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
drivers/usb/core/hcd.c | 4 ++-- drivers/usb/core/hcd.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-) 1 file changed, 2 insertions(+), 2 deletions(-)
Index: linux-3.2/drivers/usb/core/hcd.c diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c
=================================================================== index 8cb9304..32dfd76 100644
--- linux-3.2.orig/drivers/usb/core/hcd.c --- a/drivers/usb/core/hcd.c
+++ linux-3.2/drivers/usb/core/hcd.c +++ b/drivers/usb/core/hcd.c
@@ -2145,7 +2145,7 @@ irqreturn_t usb_hcd_irq (int irq, void * @@ -2145,7 +2145,7 @@ irqreturn_t usb_hcd_irq (int irq, void *__hcd)
* when the first handler doesn't use it. So let's just * when the first handler doesn't use it. So let's just
* assume it's never used. * assume it's never used.
*/ */
@ -25,7 +25,7 @@ Index: linux-3.2/drivers/usb/core/hcd.c
if (unlikely(HCD_DEAD(hcd) || !HCD_HW_ACCESSIBLE(hcd))) { if (unlikely(HCD_DEAD(hcd) || !HCD_HW_ACCESSIBLE(hcd))) {
rc = IRQ_NONE; rc = IRQ_NONE;
@@ -2158,7 +2158,7 @@ irqreturn_t usb_hcd_irq (int irq, void * @@ -2158,7 +2158,7 @@ irqreturn_t usb_hcd_irq (int irq, void *__hcd)
rc = IRQ_HANDLED; rc = IRQ_HANDLED;
} }
@ -34,3 +34,6 @@ Index: linux-3.2/drivers/usb/core/hcd.c
return rc; return rc;
} }
EXPORT_SYMBOL_GPL(usb_hcd_irq); EXPORT_SYMBOL_GPL(usb_hcd_irq);
--
1.7.10

View File

@ -1,6 +1,7 @@
From 6dabd1ea3f534ed222bd7fb1391308d5e5ffc844 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Mon, 17 Aug 2009 19:49:19 +0200 Date: Mon, 17 Aug 2009 19:49:19 +0200
Subject: tty: Do not disable interrupts in put_ldisc on -rt Subject: [PATCH 088/267] tty: Do not disable interrupts in put_ldisc on -rt
Fixes the following on PREEMPT_RT: Fixes the following on PREEMPT_RT:
@ -20,16 +21,15 @@ Call Trace:
.... ....
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
drivers/tty/tty_ldisc.c | 4 ++-- drivers/tty/tty_ldisc.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-) 1 file changed, 2 insertions(+), 2 deletions(-)
Index: linux-3.2/drivers/tty/tty_ldisc.c diff --git a/drivers/tty/tty_ldisc.c b/drivers/tty/tty_ldisc.c
=================================================================== index 8e0924f..820f7dc 100644
--- linux-3.2.orig/drivers/tty/tty_ldisc.c --- a/drivers/tty/tty_ldisc.c
+++ linux-3.2/drivers/tty/tty_ldisc.c +++ b/drivers/tty/tty_ldisc.c
@@ -71,7 +71,7 @@ static void put_ldisc(struct tty_ldisc * @@ -71,7 +71,7 @@ static void put_ldisc(struct tty_ldisc *ld)
* We really want an "atomic_dec_and_lock_irqsave()", * We really want an "atomic_dec_and_lock_irqsave()",
* but we don't have it, so this does it by hand. * but we don't have it, so this does it by hand.
*/ */
@ -38,7 +38,7 @@ Index: linux-3.2/drivers/tty/tty_ldisc.c
if (atomic_dec_and_lock(&ld->users, &tty_ldisc_lock)) { if (atomic_dec_and_lock(&ld->users, &tty_ldisc_lock)) {
struct tty_ldisc_ops *ldo = ld->ops; struct tty_ldisc_ops *ldo = ld->ops;
@@ -82,7 +82,7 @@ static void put_ldisc(struct tty_ldisc * @@ -82,7 +82,7 @@ static void put_ldisc(struct tty_ldisc *ld)
kfree(ld); kfree(ld);
return; return;
} }
@ -47,3 +47,6 @@ Index: linux-3.2/drivers/tty/tty_ldisc.c
wake_up(&tty_ldisc_idle); wake_up(&tty_ldisc_idle);
} }
--
1.7.10

View File

@ -1,17 +1,18 @@
From 2d38de27401078dc4dce8c56993479d6e1dac21c Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Fri, 3 Jul 2009 08:44:34 -0500 Date: Fri, 3 Jul 2009 08:44:34 -0500
Subject: mm: scatterlist dont disable irqs on RT Subject: [PATCH 089/267] mm: scatterlist dont disable irqs on RT
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
lib/scatterlist.c | 6 +++--- lib/scatterlist.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-) 1 file changed, 3 insertions(+), 3 deletions(-)
Index: linux-3.2/lib/scatterlist.c diff --git a/lib/scatterlist.c b/lib/scatterlist.c
=================================================================== index 4ceb05d..181f364 100644
--- linux-3.2.orig/lib/scatterlist.c --- a/lib/scatterlist.c
+++ linux-3.2/lib/scatterlist.c +++ b/lib/scatterlist.c
@@ -423,7 +423,7 @@ void sg_miter_stop(struct sg_mapping_ite @@ -423,7 +423,7 @@ void sg_miter_stop(struct sg_mapping_iter *miter)
flush_kernel_dcache_page(miter->page); flush_kernel_dcache_page(miter->page);
if (miter->__flags & SG_MITER_ATOMIC) { if (miter->__flags & SG_MITER_ATOMIC) {
@ -20,7 +21,7 @@ Index: linux-3.2/lib/scatterlist.c
kunmap_atomic(miter->addr, KM_BIO_SRC_IRQ); kunmap_atomic(miter->addr, KM_BIO_SRC_IRQ);
} else } else
kunmap(miter->page); 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); sg_miter_start(&miter, sgl, nents, sg_flags);
@ -29,7 +30,7 @@ Index: linux-3.2/lib/scatterlist.c
while (sg_miter_next(&miter) && offset < buflen) { while (sg_miter_next(&miter) && offset < buflen) {
unsigned int len; 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); sg_miter_stop(&miter);
@ -38,3 +39,6 @@ Index: linux-3.2/lib/scatterlist.c
return offset; return offset;
} }
--
1.7.10

View File

@ -1,17 +1,18 @@
Subject: signal-fix-up-rcu-wreckage.patch From 8dae1f2c7df48338f0aa39dc07d65ec2c2faabe6 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Fri, 22 Jul 2011 08:07:08 +0200 Date: Fri, 22 Jul 2011 08:07:08 +0200
Subject: [PATCH 090/267] signal-fix-up-rcu-wreckage.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
kernel/signal.c | 6 +++--- kernel/signal.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-) 1 file changed, 3 insertions(+), 3 deletions(-)
Index: linux-3.2/kernel/signal.c diff --git a/kernel/signal.c b/kernel/signal.c
=================================================================== index c8b1bc1..739c2e4 100644
--- linux-3.2.orig/kernel/signal.c --- a/kernel/signal.c
+++ linux-3.2/kernel/signal.c +++ b/kernel/signal.c
@@ -1362,12 +1362,12 @@ struct sighand_struct *__lock_task_sigha @@ -1362,12 +1362,12 @@ struct sighand_struct *__lock_task_sighand(struct task_struct *tsk,
struct sighand_struct *sighand; struct sighand_struct *sighand;
for (;;) { for (;;) {
@ -26,7 +27,7 @@ Index: linux-3.2/kernel/signal.c
break; break;
} }
@@ -1378,7 +1378,7 @@ struct sighand_struct *__lock_task_sigha @@ -1378,7 +1378,7 @@ struct sighand_struct *__lock_task_sighand(struct task_struct *tsk,
} }
spin_unlock(&sighand->siglock); spin_unlock(&sighand->siglock);
rcu_read_unlock(); rcu_read_unlock();
@ -35,3 +36,6 @@ Index: linux-3.2/kernel/signal.c
} }
return sighand; return sighand;
--
1.7.10

View File

@ -1,17 +1,18 @@
Subject: net-wireless-warn-nort.patch From 384bc8236ecff10777676ea6f2e5cc5d03fbe2c4 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Thu, 21 Jul 2011 21:05:33 +0200 Date: Thu, 21 Jul 2011 21:05:33 +0200
Subject: [PATCH 091/267] net-wireless-warn-nort.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
net/mac80211/rx.c | 2 +- net/mac80211/rx.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-) 1 file changed, 1 insertion(+), 1 deletion(-)
Index: linux-3.2/net/mac80211/rx.c diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
=================================================================== index 064d20f..642d96c 100644
--- linux-3.2.orig/net/mac80211/rx.c --- a/net/mac80211/rx.c
+++ linux-3.2/net/mac80211/rx.c +++ b/net/mac80211/rx.c
@@ -2958,7 +2958,7 @@ void ieee80211_rx(struct ieee80211_hw *h @@ -2958,7 +2958,7 @@ void ieee80211_rx(struct ieee80211_hw *hw, struct sk_buff *skb)
struct ieee80211_supported_band *sband; struct ieee80211_supported_band *sband;
struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb); struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb);
@ -20,3 +21,6 @@ Index: linux-3.2/net/mac80211/rx.c
if (WARN_ON(status->band < 0 || if (WARN_ON(status->band < 0 ||
status->band >= IEEE80211_NUM_BANDS)) status->band >= IEEE80211_NUM_BANDS))
--
1.7.10

View File

@ -1,20 +1,20 @@
From d553f4dded23aedcf07184908178b715c78cc492 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Wed, 19 Aug 2009 09:56:42 +0200 Date: Wed, 19 Aug 2009 09:56:42 +0200
Subject: mm: Replace cgroup_page bit spinlock Subject: [PATCH 092/267] mm: Replace cgroup_page bit spinlock
Bit spinlocks are not working on RT. Replace them. Bit spinlocks are not working on RT. Replace them.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
include/linux/page_cgroup.h | 28 ++++++++++++++++++++++++++++ include/linux/page_cgroup.h | 28 ++++++++++++++++++++++++++++
mm/page_cgroup.c | 1 + mm/page_cgroup.c | 1 +
2 files changed, 29 insertions(+) 2 files changed, 29 insertions(+)
Index: linux-3.2/include/linux/page_cgroup.h diff --git a/include/linux/page_cgroup.h b/include/linux/page_cgroup.h
=================================================================== index 961ecc7..2927c08 100644
--- linux-3.2.orig/include/linux/page_cgroup.h --- a/include/linux/page_cgroup.h
+++ linux-3.2/include/linux/page_cgroup.h +++ b/include/linux/page_cgroup.h
@@ -30,6 +30,10 @@ enum { @@ -30,6 +30,10 @@ enum {
*/ */
struct page_cgroup { struct page_cgroup {
@ -26,7 +26,7 @@ Index: linux-3.2/include/linux/page_cgroup.h
struct mem_cgroup *mem_cgroup; struct mem_cgroup *mem_cgroup;
struct list_head lru; /* per cgroup LRU list */ struct list_head lru; /* per cgroup LRU list */
}; };
@@ -96,30 +100,54 @@ static inline void lock_page_cgroup(stru @@ -96,30 +100,54 @@ static inline void lock_page_cgroup(struct page_cgroup *pc)
* Don't take this lock in IRQ context. * Don't take this lock in IRQ context.
* This lock is for pc->mem_cgroup, USED, CACHE, MIGRATION * This lock is for pc->mem_cgroup, USED, CACHE, MIGRATION
*/ */
@ -81,11 +81,11 @@ Index: linux-3.2/include/linux/page_cgroup.h
} }
#ifdef CONFIG_SPARSEMEM #ifdef CONFIG_SPARSEMEM
Index: linux-3.2/mm/page_cgroup.c diff --git a/mm/page_cgroup.c b/mm/page_cgroup.c
=================================================================== index 2d123f9..2e0d18d 100644
--- linux-3.2.orig/mm/page_cgroup.c --- a/mm/page_cgroup.c
+++ linux-3.2/mm/page_cgroup.c +++ b/mm/page_cgroup.c
@@ -17,6 +17,7 @@ static void __meminit init_page_cgroup(s @@ -17,6 +17,7 @@ static void __meminit init_page_cgroup(struct page_cgroup *pc, unsigned long id)
set_page_cgroup_array_id(pc, id); set_page_cgroup_array_id(pc, id);
pc->mem_cgroup = NULL; pc->mem_cgroup = NULL;
INIT_LIST_HEAD(&pc->lru); INIT_LIST_HEAD(&pc->lru);
@ -93,3 +93,6 @@ Index: linux-3.2/mm/page_cgroup.c
} }
static unsigned long total_usage; static unsigned long total_usage;
--
1.7.10

View File

@ -1,6 +1,7 @@
From 0d6994d78eab6e6ebe324aa490ad10ddd2fc4e31 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Fri, 18 Mar 2011 09:18:52 +0100 Date: Fri, 18 Mar 2011 09:18:52 +0100
Subject: buffer_head: Replace bh_uptodate_lock for -rt Subject: [PATCH 093/267] buffer_head: Replace bh_uptodate_lock for -rt
Wrap the bit_spin_lock calls into a separate inline and add the RT Wrap the bit_spin_lock calls into a separate inline and add the RT
replacements with a real spinlock. replacements with a real spinlock.
@ -12,11 +13,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
include/linux/buffer_head.h | 34 ++++++++++++++++++++++++++++++++++ include/linux/buffer_head.h | 34 ++++++++++++++++++++++++++++++++++
3 files changed, 44 insertions(+), 21 deletions(-) 3 files changed, 44 insertions(+), 21 deletions(-)
Index: linux-3.2/fs/buffer.c diff --git a/fs/buffer.c b/fs/buffer.c
=================================================================== index 19d8eb7..32c4680 100644
--- linux-3.2.orig/fs/buffer.c --- a/fs/buffer.c
+++ linux-3.2/fs/buffer.c +++ b/fs/buffer.c
@@ -331,8 +331,7 @@ static void end_buffer_async_read(struct @@ -331,8 +331,7 @@ static void end_buffer_async_read(struct buffer_head *bh, int uptodate)
* decide that the page is now completely done. * decide that the page is now completely done.
*/ */
first = page_buffers(page); first = page_buffers(page);
@ -26,7 +27,7 @@ Index: linux-3.2/fs/buffer.c
clear_buffer_async_read(bh); clear_buffer_async_read(bh);
unlock_buffer(bh); unlock_buffer(bh);
tmp = bh; tmp = bh;
@@ -345,8 +344,7 @@ static void end_buffer_async_read(struct @@ -345,8 +344,7 @@ static void end_buffer_async_read(struct buffer_head *bh, int uptodate)
} }
tmp = tmp->b_this_page; tmp = tmp->b_this_page;
} while (tmp != bh); } while (tmp != bh);
@ -36,7 +37,7 @@ Index: linux-3.2/fs/buffer.c
/* /*
* If none of the buffers had errors and they are all * If none of the buffers had errors and they are all
@@ -358,9 +356,7 @@ static void end_buffer_async_read(struct @@ -358,9 +356,7 @@ static void end_buffer_async_read(struct buffer_head *bh, int uptodate)
return; return;
still_busy: still_busy:
@ -47,7 +48,7 @@ Index: linux-3.2/fs/buffer.c
} }
/* /*
@@ -394,8 +390,7 @@ void end_buffer_async_write(struct buffe @@ -394,8 +390,7 @@ void end_buffer_async_write(struct buffer_head *bh, int uptodate)
} }
first = page_buffers(page); first = page_buffers(page);
@ -57,7 +58,7 @@ Index: linux-3.2/fs/buffer.c
clear_buffer_async_write(bh); clear_buffer_async_write(bh);
unlock_buffer(bh); unlock_buffer(bh);
@@ -407,15 +402,12 @@ void end_buffer_async_write(struct buffe @@ -407,15 +402,12 @@ void end_buffer_async_write(struct buffer_head *bh, int uptodate)
} }
tmp = tmp->b_this_page; tmp = tmp->b_this_page;
} }
@ -75,7 +76,7 @@ Index: linux-3.2/fs/buffer.c
} }
EXPORT_SYMBOL(end_buffer_async_write); EXPORT_SYMBOL(end_buffer_async_write);
@@ -3223,6 +3215,7 @@ struct buffer_head *alloc_buffer_head(gf @@ -3223,6 +3215,7 @@ struct buffer_head *alloc_buffer_head(gfp_t gfp_flags)
struct buffer_head *ret = kmem_cache_zalloc(bh_cachep, gfp_flags); struct buffer_head *ret = kmem_cache_zalloc(bh_cachep, gfp_flags);
if (ret) { if (ret) {
INIT_LIST_HEAD(&ret->b_assoc_buffers); INIT_LIST_HEAD(&ret->b_assoc_buffers);
@ -83,11 +84,11 @@ Index: linux-3.2/fs/buffer.c
preempt_disable(); preempt_disable();
__this_cpu_inc(bh_accounting.nr); __this_cpu_inc(bh_accounting.nr);
recalc_bh_state(); recalc_bh_state();
Index: linux-3.2/fs/ntfs/aops.c diff --git a/fs/ntfs/aops.c b/fs/ntfs/aops.c
=================================================================== index 0b1e885b..7fb7f1b 100644
--- linux-3.2.orig/fs/ntfs/aops.c --- a/fs/ntfs/aops.c
+++ linux-3.2/fs/ntfs/aops.c +++ b/fs/ntfs/aops.c
@@ -108,8 +108,7 @@ static void ntfs_end_buffer_async_read(s @@ -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); "0x%llx.", (unsigned long long)bh->b_blocknr);
} }
first = page_buffers(page); first = page_buffers(page);
@ -97,7 +98,7 @@ Index: linux-3.2/fs/ntfs/aops.c
clear_buffer_async_read(bh); clear_buffer_async_read(bh);
unlock_buffer(bh); unlock_buffer(bh);
tmp = 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; tmp = tmp->b_this_page;
} while (tmp != bh); } while (tmp != bh);
@ -107,7 +108,7 @@ Index: linux-3.2/fs/ntfs/aops.c
/* /*
* If none of the buffers had errors then we can set the page uptodate, * 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 * 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); unlock_page(page);
return; return;
still_busy: still_busy:
@ -118,10 +119,10 @@ Index: linux-3.2/fs/ntfs/aops.c
} }
/** /**
Index: linux-3.2/include/linux/buffer_head.h diff --git a/include/linux/buffer_head.h b/include/linux/buffer_head.h
=================================================================== index 458f497..5c16cf1 100644
--- linux-3.2.orig/include/linux/buffer_head.h --- a/include/linux/buffer_head.h
+++ linux-3.2/include/linux/buffer_head.h +++ b/include/linux/buffer_head.h
@@ -72,8 +72,42 @@ struct buffer_head { @@ -72,8 +72,42 @@ struct buffer_head {
struct address_space *b_assoc_map; /* mapping this buffer is struct address_space *b_assoc_map; /* mapping this buffer is
associated with */ associated with */
@ -165,3 +166,6 @@ Index: linux-3.2/include/linux/buffer_head.h
/* /*
* macro tricks to expand the set_buffer_foo(), clear_buffer_foo() * macro tricks to expand the set_buffer_foo(), clear_buffer_foo()
* and buffer_foo() functions. * and buffer_foo() functions.
--
1.7.10

View File

@ -1,6 +1,8 @@
From c9293d9a9b626e39108b276a74a6d4794374a973 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Fri, 18 Mar 2011 10:11:25 +0100 Date: Fri, 18 Mar 2011 10:11:25 +0100
Subject: fs: jbd/jbd2: Make state lock and journal head lock rt safe Subject: [PATCH 094/267] fs: jbd/jbd2: Make state lock and journal head lock
rt safe
bit_spin_locks break under RT. bit_spin_locks break under RT.
@ -12,11 +14,15 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
include/linux/buffer_head.h | 10 ++++++++++ include/linux/buffer_head.h | 10 ++++++++++
include/linux/jbd_common.h | 24 ++++++++++++++++++++++++ include/linux/jbd_common.h | 24 ++++++++++++++++++++++++
2 files changed, 34 insertions(+) 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.2/include/linux/buffer_head.h diff --git a/include/linux/buffer_head.h b/include/linux/buffer_head.h
=================================================================== index 5c16cf1..3f8e27b 100644
--- linux-3.2.orig/include/linux/buffer_head.h --- a/include/linux/buffer_head.h
+++ linux-3.2/include/linux/buffer_head.h +++ b/include/linux/buffer_head.h
@@ -74,6 +74,11 @@ struct buffer_head { @@ -74,6 +74,11 @@ struct buffer_head {
atomic_t b_count; /* users using this buffer_head */ atomic_t b_count; /* users using this buffer_head */
#ifdef CONFIG_PREEMPT_RT_BASE #ifdef CONFIG_PREEMPT_RT_BASE
@ -29,7 +35,7 @@ Index: linux-3.2/include/linux/buffer_head.h
#endif #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 #ifdef CONFIG_PREEMPT_RT_BASE
spin_lock_init(&bh->b_uptodate_lock); spin_lock_init(&bh->b_uptodate_lock);
@ -41,11 +47,11 @@ Index: linux-3.2/include/linux/buffer_head.h
#endif #endif
} }
Index: linux-3.2/include/linux/jbd_common.h diff --git a/include/linux/jbd_common.h b/include/linux/jbd_common.h
=================================================================== index 6230f85..11c313e 100644
--- linux-3.2.orig/include/linux/jbd_common.h --- a/include/linux/jbd_common.h
+++ linux-3.2/include/linux/jbd_common.h +++ b/include/linux/jbd_common.h
@@ -37,32 +37,56 @@ static inline struct journal_head *bh2jh @@ -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) static inline void jbd_lock_bh_state(struct buffer_head *bh)
{ {
@ -102,3 +108,6 @@ Index: linux-3.2/include/linux/jbd_common.h
} }
#endif #endif
--
1.7.10

View File

@ -1,16 +1,17 @@
From 5b808390bbd3ef32efd5d44116bd0e5a17860200 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Sun, 18 Mar 2011 10:22:04 +0100 Date: Fri, 18 Mar 2011 10:22:04 +0100
Subject: genirq: Disable DEBUG_SHIRQ for rt Subject: [PATCH 095/267] genirq: Disable DEBUG_SHIRQ for rt
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
lib/Kconfig.debug | 2 +- lib/Kconfig.debug | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-) 1 file changed, 1 insertion(+), 1 deletion(-)
Index: linux-3.2/lib/Kconfig.debug diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
=================================================================== index 82928f5..c347db3 100644
--- linux-3.2.orig/lib/Kconfig.debug --- a/lib/Kconfig.debug
+++ linux-3.2/lib/Kconfig.debug +++ b/lib/Kconfig.debug
@@ -151,7 +151,7 @@ config DEBUG_KERNEL @@ -151,7 +151,7 @@ config DEBUG_KERNEL
config DEBUG_SHIRQ config DEBUG_SHIRQ
@ -20,3 +21,6 @@ Index: linux-3.2/lib/Kconfig.debug
help help
Enable this to generate a spurious interrupt as soon as a shared Enable this to generate a spurious interrupt as soon as a shared
interrupt handler is registered, and just before one is deregistered. interrupt handler is registered, and just before one is deregistered.
--
1.7.10

View File

@ -1,21 +1,21 @@
From f190b6f8506745170cbb3754f21ab36267847483 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Tue, 21 Jul 2009 16:07:37 +0200 Date: Tue, 21 Jul 2009 16:07:37 +0200
Subject: genirq: Disable random call on preempt-rt Subject: [PATCH 096/267] genirq: Disable random call on preempt-rt
The random call introduces high latencies and is almost The random call introduces high latencies and is almost
unused. Disable it for -rt. unused. Disable it for -rt.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
kernel/irq/handle.c | 3 +++ kernel/irq/handle.c | 3 +++
1 file changed, 3 insertions(+) 1 file changed, 3 insertions(+)
Index: linux-3.2/kernel/irq/handle.c diff --git a/kernel/irq/handle.c b/kernel/irq/handle.c
=================================================================== index 470d08c..634620c 100644
--- linux-3.2.orig/kernel/irq/handle.c --- a/kernel/irq/handle.c
+++ linux-3.2/kernel/irq/handle.c +++ b/kernel/irq/handle.c
@@ -156,8 +156,11 @@ handle_irq_event_percpu(struct irq_desc @@ -156,8 +156,11 @@ handle_irq_event_percpu(struct irq_desc *desc, struct irqaction *action)
action = action->next; action = action->next;
} while (action); } while (action);
@ -27,3 +27,6 @@ Index: linux-3.2/kernel/irq/handle.c
if (!noirqdebug) if (!noirqdebug)
note_interrupt(irq, desc, retval); note_interrupt(irq, desc, retval);
--
1.7.10

View File

@ -1,21 +1,21 @@
From c52440d3a3faff677bbba7d09e44222de48b6cf2 Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu> From: Ingo Molnar <mingo@elte.hu>
Date: Fri, 3 Jul 2009 08:29:57 -0500 Date: Fri, 3 Jul 2009 08:29:57 -0500
Subject: genirq: disable irqpoll on -rt Subject: [PATCH 097/267] genirq: disable irqpoll on -rt
Creates long latencies for no value Creates long latencies for no value
Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
kernel/irq/spurious.c | 10 ++++++++++ kernel/irq/spurious.c | 10 ++++++++++
1 file changed, 10 insertions(+) 1 file changed, 10 insertions(+)
Index: linux-3.2/kernel/irq/spurious.c diff --git a/kernel/irq/spurious.c b/kernel/irq/spurious.c
=================================================================== index dc813a9..d09e0f5 100644
--- linux-3.2.orig/kernel/irq/spurious.c --- a/kernel/irq/spurious.c
+++ linux-3.2/kernel/irq/spurious.c +++ b/kernel/irq/spurious.c
@@ -341,6 +341,11 @@ MODULE_PARM_DESC(noirqdebug, "Disable ir @@ -341,6 +341,11 @@ MODULE_PARM_DESC(noirqdebug, "Disable irq lockup detection when true");
static int __init irqfixup_setup(char *str) static int __init irqfixup_setup(char *str)
{ {
@ -39,3 +39,6 @@ Index: linux-3.2/kernel/irq/spurious.c
irqfixup = 2; irqfixup = 2;
printk(KERN_WARNING "Misrouted IRQ fixup and polling support " printk(KERN_WARNING "Misrouted IRQ fixup and polling support "
"enabled\n"); "enabled\n");
--
1.7.10

View File

@ -1,6 +1,7 @@
Subject: genirq-force-threading.patch From 63d0b60e274fb76c5b8b1a2fd74a5d93eacc656a Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Sun, 03 Apr 2011 11:57:29 +0200 Date: Sun, 3 Apr 2011 11:57:29 +0200
Subject: [PATCH 098/267] genirq-force-threading.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
@ -8,11 +9,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/irq/manage.c | 2 ++ kernel/irq/manage.c | 2 ++
2 files changed, 8 insertions(+), 2 deletions(-) 2 files changed, 8 insertions(+), 2 deletions(-)
Index: linux-3.2/include/linux/interrupt.h diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
=================================================================== index ddd6b2a..b9162dc 100644
--- linux-3.2.orig/include/linux/interrupt.h --- a/include/linux/interrupt.h
+++ linux-3.2/include/linux/interrupt.h +++ b/include/linux/interrupt.h
@@ -396,9 +396,13 @@ static inline int disable_irq_wake(unsig @@ -396,9 +396,13 @@ static inline int disable_irq_wake(unsigned int irq)
#ifdef CONFIG_IRQ_FORCED_THREADING #ifdef CONFIG_IRQ_FORCED_THREADING
@ -28,10 +29,10 @@ Index: linux-3.2/include/linux/interrupt.h
#endif #endif
#ifndef __ARCH_SET_SOFTIRQ_PENDING #ifndef __ARCH_SET_SOFTIRQ_PENDING
Index: linux-3.2/kernel/irq/manage.c diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c
=================================================================== index 7600092..b3e6228 100644
--- linux-3.2.orig/kernel/irq/manage.c --- a/kernel/irq/manage.c
+++ linux-3.2/kernel/irq/manage.c +++ b/kernel/irq/manage.c
@@ -18,6 +18,7 @@ @@ -18,6 +18,7 @@
#include "internals.h" #include "internals.h"
@ -40,7 +41,7 @@ Index: linux-3.2/kernel/irq/manage.c
__read_mostly bool force_irqthreads; __read_mostly bool force_irqthreads;
static int __init setup_forced_irqthreads(char *arg) 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; return 0;
} }
early_param("threadirqs", setup_forced_irqthreads); early_param("threadirqs", setup_forced_irqthreads);
@ -48,3 +49,6 @@ Index: linux-3.2/kernel/irq/manage.c
#endif #endif
/** /**
--
1.7.10

View File

@ -1,6 +1,7 @@
From 91639026470adfb7ab98a86b62dfefedb485e3a4 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de> From: Thomas Gleixner <tglx@linutronix.de>
Date: Sat, 20 Jun 2009 11:36:54 +0200 Date: Sat, 20 Jun 2009 11:36:54 +0200
Subject: drivers/net: fix livelock issues Subject: [PATCH 099/267] drivers/net: fix livelock issues
Preempt-RT runs into a live lock issue with the NETDEV_TX_LOCKED micro Preempt-RT runs into a live lock issue with the NETDEV_TX_LOCKED micro
optimization. The reason is that the softirq thread is rescheduling optimization. The reason is that the softirq thread is rescheduling
@ -10,7 +11,6 @@ monoplize the CPU and livelock on UP systems.
Remove it. Remove it.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- ---
drivers/net/ethernet/atheros/atl1c/atl1c_main.c | 6 +----- drivers/net/ethernet/atheros/atl1c/atl1c_main.c | 6 +-----
drivers/net/ethernet/atheros/atl1e/atl1e_main.c | 3 +-- drivers/net/ethernet/atheros/atl1e/atl1e_main.c | 3 +--
@ -21,11 +21,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
drivers/net/rionet.c | 6 +----- drivers/net/rionet.c | 6 +-----
7 files changed, 10 insertions(+), 31 deletions(-) 7 files changed, 10 insertions(+), 31 deletions(-)
Index: linux-3.2/drivers/net/ethernet/atheros/atl1c/atl1c_main.c diff --git a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
=================================================================== index eccdcff..ee8d8a2 100644
--- linux-3.2.orig/drivers/net/ethernet/atheros/atl1c/atl1c_main.c --- a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
+++ linux-3.2/drivers/net/ethernet/atheros/atl1c/atl1c_main.c +++ b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
@@ -2236,11 +2236,7 @@ static netdev_tx_t atl1c_xmit_frame(stru @@ -2236,11 +2236,7 @@ static netdev_tx_t atl1c_xmit_frame(struct sk_buff *skb,
} }
tpd_req = atl1c_cal_tpd_req(skb); tpd_req = atl1c_cal_tpd_req(skb);
@ -38,11 +38,11 @@ Index: linux-3.2/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
if (atl1c_tpd_avail(adapter, type) < tpd_req) { if (atl1c_tpd_avail(adapter, type) < tpd_req) {
/* no enough descriptor, just stop queue */ /* no enough descriptor, just stop queue */
Index: linux-3.2/drivers/net/ethernet/atheros/atl1e/atl1e_main.c diff --git a/drivers/net/ethernet/atheros/atl1e/atl1e_main.c b/drivers/net/ethernet/atheros/atl1e/atl1e_main.c
=================================================================== index 95483bc..eaf84e9 100644
--- linux-3.2.orig/drivers/net/ethernet/atheros/atl1e/atl1e_main.c --- a/drivers/net/ethernet/atheros/atl1e/atl1e_main.c
+++ linux-3.2/drivers/net/ethernet/atheros/atl1e/atl1e_main.c +++ b/drivers/net/ethernet/atheros/atl1e/atl1e_main.c
@@ -1819,8 +1819,7 @@ static netdev_tx_t atl1e_xmit_frame(stru @@ -1819,8 +1819,7 @@ static netdev_tx_t atl1e_xmit_frame(struct sk_buff *skb,
return NETDEV_TX_OK; return NETDEV_TX_OK;
} }
tpd_req = atl1e_cal_tdp_req(skb); tpd_req = atl1e_cal_tdp_req(skb);
@ -52,11 +52,11 @@ Index: linux-3.2/drivers/net/ethernet/atheros/atl1e/atl1e_main.c
if (atl1e_tpd_avail(adapter) < tpd_req) { if (atl1e_tpd_avail(adapter) < tpd_req) {
/* no enough descriptor, just stop queue */ /* no enough descriptor, just stop queue */
Index: linux-3.2/drivers/net/ethernet/chelsio/cxgb/sge.c diff --git a/drivers/net/ethernet/chelsio/cxgb/sge.c b/drivers/net/ethernet/chelsio/cxgb/sge.c
=================================================================== index f9b6023..6d7412a 100644
--- linux-3.2.orig/drivers/net/ethernet/chelsio/cxgb/sge.c --- a/drivers/net/ethernet/chelsio/cxgb/sge.c
+++ linux-3.2/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 @@ -1678,8 +1678,7 @@ static int t1_sge_tx(struct sk_buff *skb, struct adapter *adapter,
struct cmdQ *q = &sge->cmdQ[qid]; struct cmdQ *q = &sge->cmdQ[qid];
unsigned int credits, pidx, genbit, count, use_sched_skb = 0; unsigned int credits, pidx, genbit, count, use_sched_skb = 0;
@ -66,11 +66,11 @@ Index: linux-3.2/drivers/net/ethernet/chelsio/cxgb/sge.c
reclaim_completed_tx(sge, q); reclaim_completed_tx(sge, q);
Index: linux-3.2/drivers/net/ethernet/neterion/s2io.c diff --git a/drivers/net/ethernet/neterion/s2io.c b/drivers/net/ethernet/neterion/s2io.c
=================================================================== index c27fb3d..4624278 100644
--- linux-3.2.orig/drivers/net/ethernet/neterion/s2io.c --- a/drivers/net/ethernet/neterion/s2io.c
+++ linux-3.2/drivers/net/ethernet/neterion/s2io.c +++ b/drivers/net/ethernet/neterion/s2io.c
@@ -4090,12 +4090,7 @@ static netdev_tx_t s2io_xmit(struct sk_b @@ -4090,12 +4090,7 @@ static netdev_tx_t s2io_xmit(struct sk_buff *skb, struct net_device *dev)
[skb->priority & (MAX_TX_FIFOS - 1)]; [skb->priority & (MAX_TX_FIFOS - 1)];
fifo = &mac_control->fifos[queue]; fifo = &mac_control->fifos[queue];
@ -84,11 +84,11 @@ Index: linux-3.2/drivers/net/ethernet/neterion/s2io.c
if (sp->config.multiq) { if (sp->config.multiq) {
if (__netif_subqueue_stopped(dev, fifo->fifo_no)) { if (__netif_subqueue_stopped(dev, fifo->fifo_no)) {
Index: linux-3.2/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c 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 43c7b25..c084bea 100644
--- linux-3.2.orig/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c --- a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
+++ linux-3.2/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c +++ b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
@@ -1931,10 +1931,9 @@ static int pch_gbe_xmit_frame(struct sk_ @@ -1937,10 +1937,9 @@ static int pch_gbe_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
adapter->stats.tx_length_errors++; adapter->stats.tx_length_errors++;
return NETDEV_TX_OK; return NETDEV_TX_OK;
} }
@ -102,11 +102,11 @@ Index: linux-3.2/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
if (unlikely(!PCH_GBE_DESC_UNUSED(tx_ring))) { if (unlikely(!PCH_GBE_DESC_UNUSED(tx_ring))) {
netif_stop_queue(netdev); netif_stop_queue(netdev);
spin_unlock_irqrestore(&tx_ring->tx_lock, flags); spin_unlock_irqrestore(&tx_ring->tx_lock, flags);
Index: linux-3.2/drivers/net/ethernet/tehuti/tehuti.c diff --git a/drivers/net/ethernet/tehuti/tehuti.c b/drivers/net/ethernet/tehuti/tehuti.c
=================================================================== index 3a90af6..e2e930e 100644
--- linux-3.2.orig/drivers/net/ethernet/tehuti/tehuti.c --- a/drivers/net/ethernet/tehuti/tehuti.c
+++ linux-3.2/drivers/net/ethernet/tehuti/tehuti.c +++ b/drivers/net/ethernet/tehuti/tehuti.c
@@ -1605,13 +1605,8 @@ static netdev_tx_t bdx_tx_transmit(struc @@ -1605,13 +1605,8 @@ static netdev_tx_t bdx_tx_transmit(struct sk_buff *skb,
unsigned long flags; unsigned long flags;
ENTER; ENTER;
@ -122,11 +122,11 @@ Index: linux-3.2/drivers/net/ethernet/tehuti/tehuti.c
/* build tx descriptor */ /* build tx descriptor */
BDX_ASSERT(f->m.wptr >= f->m.memsz); /* started with valid wptr */ BDX_ASSERT(f->m.wptr >= f->m.memsz); /* started with valid wptr */
Index: linux-3.2/drivers/net/rionet.c diff --git a/drivers/net/rionet.c b/drivers/net/rionet.c
=================================================================== index 7145714..2a1ed18 100644
--- linux-3.2.orig/drivers/net/rionet.c --- a/drivers/net/rionet.c
+++ linux-3.2/drivers/net/rionet.c +++ b/drivers/net/rionet.c
@@ -176,11 +176,7 @@ static int rionet_start_xmit(struct sk_b @@ -176,11 +176,7 @@ static int rionet_start_xmit(struct sk_buff *skb, struct net_device *ndev)
u16 destid; u16 destid;
unsigned long flags; unsigned long flags;
@ -139,3 +139,6 @@ Index: linux-3.2/drivers/net/rionet.c
if ((rnet->tx_cnt + 1) > RIONET_TX_RING_SIZE) { if ((rnet->tx_cnt + 1) > RIONET_TX_RING_SIZE) {
netif_stop_queue(ndev); netif_stop_queue(ndev);
--
1.7.10

Some files were not shown because too many files have changed in this diff Show More