[rt] bump version to 3.2.16-rt27
svn path=/dists/sid/linux-2.6/; revision=18999
This commit is contained in:
parent
88590a0642
commit
e39ab1b001
|
@ -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
|
||||
(CVE-2012-1601)
|
||||
* KVM: lock slots_lock around device assignment (CVE-2012-2121)
|
||||
* [rt] bump version to 3.2.16-rt27
|
||||
|
||||
[ Bastian Blank ]
|
||||
* [s390] Enable IUCV special message support. (closes: #671238)
|
||||
|
|
|
@ -1,13 +1,14 @@
|
|||
From 76f41af7cc93591a2723d2c59918df003f90cb09 Mon Sep 17 00:00:00 2001
|
||||
From: Frederic Weisbecker <fweisbec@gmail.com>
|
||||
Date: Mon Sep 26 12:19:11 2011 +0200
|
||||
Subject: x86: Call idle notifier after irq_enter()
|
||||
|
||||
Date: Mon, 26 Sep 2011 12:19:11 +0200
|
||||
Subject: [PATCH 001/267] x86: Call idle notifier after irq_enter()
|
||||
|
||||
Interrupts notify the idle exit state before calling irq_enter(). But
|
||||
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_irq_enter() to be called before doing so otherwise this results in
|
||||
a grumpy RCU:
|
||||
|
||||
|
||||
[ 0.099991] WARNING: at include/linux/rcupdate.h:194 __atomic_notifier_call_chain+0xd2/0x110()
|
||||
[ 0.099991] Hardware name: AMD690VM-FMH
|
||||
[ 0.099991] Modules linked in:
|
||||
|
@ -30,7 +31,7 @@ a grumpy RCU:
|
|||
[ 0.099991] [<ffffffff81cc5ca3>] start_kernel+0x3d1/0x3dc
|
||||
[ 0.099991] [<ffffffff81cc5321>] x86_64_start_reservations+0x131/0x135
|
||||
[ 0.099991] [<ffffffff81cc5412>] x86_64_start_kernel+0xed/0xf4
|
||||
|
||||
|
||||
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
|
||||
Link: http://lkml.kernel.org/r/20110929194047.GA10247@linux.vnet.ibm.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>
|
||||
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
|
||||
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
||||
|
||||
---
|
||||
arch/x86/kernel/apic/apic.c | 6 +++---
|
||||
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 +++---
|
||||
5 files changed, 9 insertions(+), 9 deletions(-)
|
||||
|
||||
Index: linux-3.2/arch/x86/kernel/apic/apic.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/x86/kernel/apic/apic.c
|
||||
+++ linux-3.2/arch/x86/kernel/apic/apic.c
|
||||
@@ -876,8 +876,8 @@ void __irq_entry smp_apic_timer_interrup
|
||||
diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c
|
||||
index f98d84c..2cd2d93 100644
|
||||
--- a/arch/x86/kernel/apic/apic.c
|
||||
+++ b/arch/x86/kernel/apic/apic.c
|
||||
@@ -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
|
||||
* 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();
|
||||
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;
|
||||
|
||||
|
@ -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
|
||||
* 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 */
|
||||
};
|
||||
|
||||
|
@ -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 */
|
||||
v0 = apic_read(APIC_ESR);
|
||||
apic_write(APIC_ESR, 0);
|
||||
Index: linux-3.2/arch/x86/kernel/apic/io_apic.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/x86/kernel/apic/io_apic.c
|
||||
+++ linux-3.2/arch/x86/kernel/apic/io_apic.c
|
||||
@@ -2421,8 +2421,8 @@ asmlinkage void smp_irq_move_cleanup_int
|
||||
diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
|
||||
index 6d939d7..8980555 100644
|
||||
--- a/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_interrupt(void)
|
||||
unsigned vector, me;
|
||||
|
||||
ack_APIC_irq();
|
||||
|
@ -95,11 +95,11 @@ Index: linux-3.2/arch/x86/kernel/apic/io_apic.c
|
|||
|
||||
me = smp_processor_id();
|
||||
for (vector = FIRST_EXTERNAL_VECTOR; vector < NR_VECTORS; vector++) {
|
||||
Index: linux-3.2/arch/x86/kernel/cpu/mcheck/therm_throt.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/x86/kernel/cpu/mcheck/therm_throt.c
|
||||
+++ linux-3.2/arch/x86/kernel/cpu/mcheck/therm_throt.c
|
||||
@@ -397,8 +397,8 @@ static void (*smp_thermal_vector)(void)
|
||||
diff --git a/arch/x86/kernel/cpu/mcheck/therm_throt.c b/arch/x86/kernel/cpu/mcheck/therm_throt.c
|
||||
index 787e06c..ce21561 100644
|
||||
--- a/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) = unexpected_thermal_interrupt;
|
||||
|
||||
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);
|
||||
smp_thermal_vector();
|
||||
irq_exit();
|
||||
Index: linux-3.2/arch/x86/kernel/cpu/mcheck/threshold.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/x86/kernel/cpu/mcheck/threshold.c
|
||||
+++ linux-3.2/arch/x86/kernel/cpu/mcheck/threshold.c
|
||||
@@ -19,8 +19,8 @@ void (*mce_threshold_vector)(void) = def
|
||||
diff --git a/arch/x86/kernel/cpu/mcheck/threshold.c b/arch/x86/kernel/cpu/mcheck/threshold.c
|
||||
index d746df2..aa578ca 100644
|
||||
--- a/arch/x86/kernel/cpu/mcheck/threshold.c
|
||||
+++ b/arch/x86/kernel/cpu/mcheck/threshold.c
|
||||
@@ -19,8 +19,8 @@ void (*mce_threshold_vector)(void) = default_threshold_interrupt;
|
||||
|
||||
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);
|
||||
mce_threshold_vector();
|
||||
irq_exit();
|
||||
Index: linux-3.2/arch/x86/kernel/irq.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/x86/kernel/irq.c
|
||||
+++ linux-3.2/arch/x86/kernel/irq.c
|
||||
@@ -181,8 +181,8 @@ unsigned int __irq_entry do_IRQ(struct p
|
||||
diff --git a/arch/x86/kernel/irq.c b/arch/x86/kernel/irq.c
|
||||
index 429e0c9..5d31e5b 100644
|
||||
--- a/arch/x86/kernel/irq.c
|
||||
+++ b/arch/x86/kernel/irq.c
|
||||
@@ -181,8 +181,8 @@ unsigned int __irq_entry do_IRQ(struct pt_regs *regs)
|
||||
unsigned vector = ~regs->orig_ax;
|
||||
unsigned irq;
|
||||
|
||||
|
@ -137,7 +137,7 @@ Index: linux-3.2/arch/x86/kernel/irq.c
|
|||
|
||||
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();
|
||||
|
||||
|
@ -150,3 +150,6 @@ Index: linux-3.2/arch/x86/kernel/irq.c
|
|||
inc_irq_stat(x86_platform_ipis);
|
||||
|
||||
if (x86_platform_ipi_callback)
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -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>
|
||||
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.
|
||||
|
||||
|
@ -17,10 +18,11 @@ Link: http://lkml.kernel.org/n/tip-10bey2cgpcvtbdkgigaoab8w@git.kernel.org
|
|||
---
|
||||
mm/slab.c | 52 ++++++++++++++++++++++++++++------------------------
|
||||
1 file changed, 28 insertions(+), 24 deletions(-)
|
||||
Index: linux-3.2/mm/slab.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/mm/slab.c
|
||||
+++ linux-3.2/mm/slab.c
|
||||
|
||||
diff --git a/mm/slab.c b/mm/slab.c
|
||||
index 83311c9a..b76905e 100644
|
||||
--- a/mm/slab.c
|
||||
+++ b/mm/slab.c
|
||||
@@ -607,6 +607,12 @@ int slab_is_available(void)
|
||||
return g_cpucache_up >= EARLY;
|
||||
}
|
||||
|
@ -34,7 +36,7 @@ Index: linux-3.2/mm/slab.c
|
|||
#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);
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -121,7 +123,7 @@ Index: linux-3.2/mm/slab.c
|
|||
mutex_unlock(&cache_chain_mutex);
|
||||
|
||||
/* 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);
|
||||
}
|
||||
|
||||
|
@ -130,3 +132,6 @@ Index: linux-3.2/mm/slab.c
|
|||
/* cache setup completed, link it into the list */
|
||||
list_add(&cachep->next, &cache_chain);
|
||||
oops:
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -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>
|
||||
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:
|
||||
|
||||
|
@ -15,11 +16,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
|||
arch/x86/kernel/kprobes.c | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
Index: linux-3.2/arch/x86/kernel/kprobes.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/x86/kernel/kprobes.c
|
||||
+++ linux-3.2/arch/x86/kernel/kprobes.c
|
||||
@@ -478,7 +478,6 @@ static void __kprobes setup_singlestep(s
|
||||
diff --git a/arch/x86/kernel/kprobes.c b/arch/x86/kernel/kprobes.c
|
||||
index 7da647d..5604455 100644
|
||||
--- a/arch/x86/kernel/kprobes.c
|
||||
+++ b/arch/x86/kernel/kprobes.c
|
||||
@@ -478,7 +478,6 @@ static void __kprobes setup_singlestep(struct kprobe *p, struct pt_regs *regs,
|
||||
* stepping.
|
||||
*/
|
||||
regs->ip = (unsigned long)p->ainsn.insn;
|
||||
|
@ -27,3 +28,6 @@ Index: linux-3.2/arch/x86/kernel/kprobes.c
|
|||
return;
|
||||
}
|
||||
#endif
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -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>
|
||||
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
|
||||
- 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 +++++++++++++++++++++++++++
|
||||
1 file changed, 27 insertions(+)
|
||||
|
||||
Index: linux-3.2/arch/x86/kernel/hpet.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/x86/kernel/hpet.c
|
||||
+++ 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
|
||||
--- a/arch/x86/kernel/hpet.c
|
||||
+++ b/arch/x86/kernel/hpet.c
|
||||
@@ -9,6 +9,7 @@
|
||||
#include <linux/slab.h>
|
||||
#include <linux/hpet.h>
|
||||
|
@ -24,7 +25,7 @@ Index: linux-3.2/arch/x86/kernel/hpet.c
|
|||
#include <linux/cpu.h>
|
||||
#include <linux/pm.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
|
||||
#endif
|
||||
|
||||
|
@ -55,7 +56,7 @@ Index: linux-3.2/arch/x86/kernel/hpet.c
|
|||
static void hpet_msi_capability_lookup(unsigned int start_timer)
|
||||
{
|
||||
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;
|
||||
int i;
|
||||
|
||||
|
@ -64,3 +65,6 @@ Index: linux-3.2/arch/x86/kernel/hpet.c
|
|||
if (hpet_msi_disable)
|
||||
return;
|
||||
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -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>
|
||||
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
|
||||
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 ++++++++------------
|
||||
1 file changed, 8 insertions(+), 12 deletions(-)
|
||||
|
||||
Index: linux-3.2/block/blk-core.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/block/blk-core.c
|
||||
+++ linux-3.2/block/blk-core.c
|
||||
@@ -300,7 +300,11 @@ void __blk_run_queue(struct request_queu
|
||||
diff --git a/block/blk-core.c b/block/blk-core.c
|
||||
index 15de223..7366ad4 100644
|
||||
--- a/block/blk-core.c
|
||||
+++ b/block/blk-core.c
|
||||
@@ -300,7 +300,11 @@ void __blk_run_queue(struct request_queue *q)
|
||||
{
|
||||
if (unlikely(blk_queue_stopped(q)))
|
||||
return;
|
||||
|
@ -63,7 +64,7 @@ Index: linux-3.2/block/blk-core.c
|
|||
q->request_fn(q);
|
||||
}
|
||||
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).
|
||||
*/
|
||||
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)
|
||||
{
|
||||
struct request_queue *q;
|
||||
|
@ -85,7 +86,7 @@ Index: linux-3.2/block/blk-core.c
|
|||
struct request *rq;
|
||||
LIST_HEAD(list);
|
||||
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;
|
||||
depth = 0;
|
||||
|
||||
|
@ -97,7 +98,7 @@ Index: linux-3.2/block/blk-core.c
|
|||
while (!list_empty(&list)) {
|
||||
rq = list_entry_rq(list.next);
|
||||
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);
|
||||
q = rq->q;
|
||||
depth = 0;
|
||||
|
@ -106,7 +107,7 @@ Index: linux-3.2/block/blk-core.c
|
|||
}
|
||||
/*
|
||||
* 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)
|
||||
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)
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -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>
|
||||
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
|
||||
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
|
||||
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
||||
---
|
||||
kernel/sched.c | 66 ++++++++++----------------------------------
|
||||
kernel/workqueue.c | 69 +++++++++++++++++++++--------------------------
|
||||
kernel/workqueue_sched.h | 5 +--
|
||||
3 files changed, 48 insertions(+), 92 deletions(-)
|
||||
kernel/sched.c | 66 +++++++++++----------------------------------
|
||||
kernel/workqueue.c | 67 +++++++++++++++++++++-------------------------
|
||||
kernel/workqueue_sched.h | 5 ++--
|
||||
3 files changed, 47 insertions(+), 91 deletions(-)
|
||||
|
||||
Index: linux-3.2/kernel/sched.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/kernel/sched.c
|
||||
+++ linux-3.2/kernel/sched.c
|
||||
@@ -2644,10 +2644,6 @@ static void ttwu_activate(struct rq *rq,
|
||||
diff --git a/kernel/sched.c b/kernel/sched.c
|
||||
index d6b149c..a39494e 100644
|
||||
--- a/kernel/sched.c
|
||||
+++ b/kernel/sched.c
|
||||
@@ -2644,10 +2644,6 @@ static void ttwu_activate(struct rq *rq, struct task_struct *p, int en_flags)
|
||||
{
|
||||
activate_task(rq, p, en_flags);
|
||||
p->on_rq = 1;
|
||||
|
@ -104,7 +105,7 @@ Index: linux-3.2/kernel/sched.c
|
|||
}
|
||||
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)
|
||||
return;
|
||||
|
@ -119,7 +120,7 @@ Index: linux-3.2/kernel/sched.c
|
|||
/*
|
||||
* If we are going to sleep and we have plugged IO queued,
|
||||
* 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);
|
||||
}
|
||||
|
||||
|
@ -139,10 +140,10 @@ Index: linux-3.2/kernel/sched.c
|
|||
}
|
||||
EXPORT_SYMBOL(schedule);
|
||||
|
||||
Index: linux-3.2/kernel/workqueue.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/kernel/workqueue.c
|
||||
+++ linux-3.2/kernel/workqueue.c
|
||||
diff --git a/kernel/workqueue.c b/kernel/workqueue.c
|
||||
index bb425b1..4b4421d 100644
|
||||
--- a/kernel/workqueue.c
|
||||
+++ b/kernel/workqueue.c
|
||||
@@ -137,6 +137,7 @@ struct worker {
|
||||
unsigned int flags; /* X: flags */
|
||||
int id; /* I: worker id */
|
||||
|
@ -151,7 +152,7 @@ Index: linux-3.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)
|
||||
- return NULL;
|
||||
+ return;
|
||||
|
||||
- /* this can only happen on the local cpu */
|
||||
- BUG_ON(cpu != raw_smp_processor_id());
|
||||
+
|
||||
+ if (WARN_ON_ONCE(worker->sleeping))
|
||||
+ return;
|
||||
|
||||
- /* this can only happen on the local cpu */
|
||||
- BUG_ON(cpu != raw_smp_processor_id());
|
||||
+ worker->sleeping = 1;
|
||||
+
|
||||
|
||||
+ cpu = smp_processor_id();
|
||||
+ gcwq = get_gcwq(cpu);
|
||||
+ spin_lock_irq(&gcwq->lock);
|
||||
|
@ -233,11 +234,10 @@ Index: linux-3.2/kernel/workqueue.c
|
|||
- * and preemption disabled, which in turn means that none else
|
||||
- * could be manipulating idle_list, so dereferencing idle_list
|
||||
- * without gcwq lock is safe.
|
||||
- */
|
||||
*/
|
||||
- if (atomic_dec_and_test(nr_running) && !list_empty(&gcwq->worklist))
|
||||
- to_wakeup = first_worker(gcwq);
|
||||
- return to_wakeup ? to_wakeup->task : NULL;
|
||||
+ */
|
||||
+ if (atomic_dec_and_test(get_gcwq_nr_running(cpu)) &&
|
||||
+ !list_empty(&gcwq->worklist)) {
|
||||
+ worker = first_worker(gcwq);
|
||||
|
@ -248,10 +248,10 @@ Index: linux-3.2/kernel/workqueue.c
|
|||
}
|
||||
|
||||
/**
|
||||
Index: linux-3.2/kernel/workqueue_sched.h
|
||||
===================================================================
|
||||
--- linux-3.2.orig/kernel/workqueue_sched.h
|
||||
+++ linux-3.2/kernel/workqueue_sched.h
|
||||
diff --git a/kernel/workqueue_sched.h b/kernel/workqueue_sched.h
|
||||
index 2d10fc9..3bf73e2 100644
|
||||
--- a/kernel/workqueue_sched.h
|
||||
+++ b/kernel/workqueue_sched.h
|
||||
@@ -4,6 +4,5 @@
|
||||
* Scheduler hooks for concurrency managed workqueue. Only to be
|
||||
* included from sched.c and workqueue.c.
|
||||
|
@ -261,3 +261,6 @@ Index: linux-3.2/kernel/workqueue_sched.h
|
|||
- unsigned int cpu);
|
||||
+void wq_worker_running(struct task_struct *task);
|
||||
+void wq_worker_sleeping(struct task_struct *task);
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -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>
|
||||
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>
|
||||
---
|
||||
arch/mips/kernel/signal.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
Index: linux-3.2/arch/mips/kernel/signal.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/mips/kernel/signal.c
|
||||
+++ linux-3.2/arch/mips/kernel/signal.c
|
||||
@@ -604,6 +604,9 @@ static void do_signal(struct pt_regs *re
|
||||
diff --git a/arch/mips/kernel/signal.c b/arch/mips/kernel/signal.c
|
||||
index f852400..1c8f34c 100644
|
||||
--- a/arch/mips/kernel/signal.c
|
||||
+++ b/arch/mips/kernel/signal.c
|
||||
@@ -604,6 +604,9 @@ static void do_signal(struct pt_regs *regs)
|
||||
if (!user_mode(regs))
|
||||
return;
|
||||
|
||||
|
@ -21,3 +22,6 @@ Index: linux-3.2/arch/mips/kernel/signal.c
|
|||
if (test_thread_flag(TIF_RESTORE_SIGMASK))
|
||||
oldset = ¤t->saved_sigmask;
|
||||
else
|
||||
--
|
||||
1.7.10
|
||||
|
27
debian/patches/features/all/rt/0008-arm-enable-interrupts-in-signal-code.patch.patch
vendored
Normal file
27
debian/patches/features/all/rt/0008-arm-enable-interrupts-in-signal-code.patch.patch
vendored
Normal 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
|
||||
|
|
@ -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>
|
||||
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.
|
||||
|
||||
|
@ -9,11 +10,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
|||
arch/powerpc/platforms/85xx/mpc85xx_cds.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
Index: linux-3.2/arch/powerpc/platforms/85xx/mpc85xx_cds.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/powerpc/platforms/85xx/mpc85xx_cds.c
|
||||
+++ linux-3.2/arch/powerpc/platforms/85xx/mpc85xx_cds.c
|
||||
@@ -177,7 +177,7 @@ static irqreturn_t mpc85xx_8259_cascade_
|
||||
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_cds.c b/arch/powerpc/platforms/85xx/mpc85xx_cds.c
|
||||
index 66cb8d6..7e2a4d2 100644
|
||||
--- a/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_action(int irq, void *dev_id)
|
||||
|
||||
static struct irqaction mpc85xxcds_8259_irqaction = {
|
||||
.handler = mpc85xx_8259_cascade_action,
|
||||
|
@ -22,3 +23,6 @@ Index: linux-3.2/arch/powerpc/platforms/85xx/mpc85xx_cds.c
|
|||
.name = "8259 cascade",
|
||||
};
|
||||
#endif /* PPC_I8259 */
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -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>
|
||||
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.
|
||||
|
||||
|
@ -9,10 +11,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
|||
arch/powerpc/platforms/wsp/opb_pic.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
Index: linux-3.2/arch/powerpc/platforms/wsp/opb_pic.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/powerpc/platforms/wsp/opb_pic.c
|
||||
+++ 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
|
||||
--- a/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)
|
||||
}
|
||||
|
||||
|
@ -23,3 +25,6 @@ Index: linux-3.2/arch/powerpc/platforms/wsp/opb_pic.c
|
|||
if (rc) {
|
||||
printk("opb: request_irq failed: %d\n", rc);
|
||||
continue;
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -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>
|
||||
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
|
||||
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 +++--
|
||||
3 files changed, 7 insertions(+), 6 deletions(-)
|
||||
|
||||
Index: linux-3.2/arch/powerpc/kernel/smp.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/powerpc/kernel/smp.c
|
||||
+++ linux-3.2/arch/powerpc/kernel/smp.c
|
||||
@@ -187,8 +187,8 @@ int smp_request_message_ipi(int virq, in
|
||||
diff --git a/arch/powerpc/kernel/smp.c b/arch/powerpc/kernel/smp.c
|
||||
index 6df7090..abdedd3 100644
|
||||
--- a/arch/powerpc/kernel/smp.c
|
||||
+++ b/arch/powerpc/kernel/smp.c
|
||||
@@ -187,8 +187,8 @@ int smp_request_message_ipi(int virq, int msg)
|
||||
return 1;
|
||||
}
|
||||
#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",
|
||||
virq, smp_ipi_name[msg], err);
|
||||
|
||||
Index: linux-3.2/arch/powerpc/platforms/powermac/smp.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/powerpc/platforms/powermac/smp.c
|
||||
+++ linux-3.2/arch/powerpc/platforms/powermac/smp.c
|
||||
@@ -200,7 +200,7 @@ static int psurge_secondary_ipi_init(voi
|
||||
diff --git a/arch/powerpc/platforms/powermac/smp.c b/arch/powerpc/platforms/powermac/smp.c
|
||||
index 3394254..8d75ac8 100644
|
||||
--- a/arch/powerpc/platforms/powermac/smp.c
|
||||
+++ b/arch/powerpc/platforms/powermac/smp.c
|
||||
@@ -200,7 +200,7 @@ static int psurge_secondary_ipi_init(void)
|
||||
|
||||
if (psurge_secondary_virq)
|
||||
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)
|
||||
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 = {
|
||||
.handler = psurge_ipi_intr,
|
||||
|
@ -49,10 +50,10 @@ Index: linux-3.2/arch/powerpc/platforms/powermac/smp.c
|
|||
.name = "primary IPI",
|
||||
};
|
||||
|
||||
Index: linux-3.2/arch/powerpc/sysdev/xics/xics-common.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/powerpc/sysdev/xics/xics-common.c
|
||||
+++ 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
|
||||
--- a/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)
|
||||
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)
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
Subject: powerpc: Allow irq threading
|
||||
From 2e574f68fff54d8c7398b3984f183fb80ec8ce3e Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
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
|
||||
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 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
Index: linux-3.2/arch/powerpc/Kconfig
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/powerpc/Kconfig
|
||||
+++ linux-3.2/arch/powerpc/Kconfig
|
||||
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
|
||||
index 951e18f..7c93c7e 100644
|
||||
--- a/arch/powerpc/Kconfig
|
||||
+++ b/arch/powerpc/Kconfig
|
||||
@@ -132,6 +132,7 @@ config PPC
|
||||
select IRQ_PER_CPU
|
||||
select GENERIC_IRQ_SHOW
|
||||
|
@ -22,3 +23,6 @@ Index: linux-3.2/arch/powerpc/Kconfig
|
|||
select HAVE_RCU_TABLE_FREE if SMP
|
||||
select HAVE_SYSCALL_TRACEPOINTS
|
||||
select HAVE_BPF_JIT if (PPC64 && NET)
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,6 +1,8 @@
|
|||
From 9e1c03d11fdc2426a5d53a1d0e0b63b412924287 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Zijlstra <peterz@infradead.org>
|
||||
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
|
||||
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 ++++++++-----
|
||||
1 file changed, 8 insertions(+), 5 deletions(-)
|
||||
|
||||
Index: linux-3.2/kernel/sched_rt.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/kernel/sched_rt.c
|
||||
+++ linux-3.2/kernel/sched_rt.c
|
||||
@@ -580,12 +580,9 @@ static inline int balance_runtime(struct
|
||||
diff --git a/kernel/sched_rt.c b/kernel/sched_rt.c
|
||||
index 78fcacf..40d97e1 100644
|
||||
--- a/kernel/sched_rt.c
|
||||
+++ b/kernel/sched_rt.c
|
||||
@@ -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)
|
||||
{
|
||||
|
@ -33,7 +35,7 @@ Index: linux-3.2/kernel/sched_rt.c
|
|||
span = sched_rt_period_mask();
|
||||
for_each_cpu(i, span) {
|
||||
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))
|
||||
enqueue = 1;
|
||||
}
|
||||
|
@ -51,7 +53,7 @@ Index: linux-3.2/kernel/sched_rt.c
|
|||
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))
|
||||
delta_exec = 0;
|
||||
|
||||
|
@ -61,3 +63,6 @@ Index: linux-3.2/kernel/sched_rt.c
|
|||
|
||||
curr->se.sum_exec_runtime += delta_exec;
|
||||
account_group_exec_runtime(curr, delta_exec);
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
From ce43773df1fea5d063ac8d1aca4ff806bf899b5b Mon Sep 17 00:00:00 2001
|
||||
From: Peter Zijlstra <peterz@infradead.org>
|
||||
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
|
||||
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 ++++++++++++++++++--
|
||||
1 file changed, 18 insertions(+), 2 deletions(-)
|
||||
|
||||
Index: linux-3.2/kernel/sched_rt.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/kernel/sched_rt.c
|
||||
+++ linux-3.2/kernel/sched_rt.c
|
||||
@@ -659,8 +659,24 @@ static int sched_rt_runtime_exceeded(str
|
||||
diff --git a/kernel/sched_rt.c b/kernel/sched_rt.c
|
||||
index 40d97e1..c108b9c 100644
|
||||
--- a/kernel/sched_rt.c
|
||||
+++ b/kernel/sched_rt.c
|
||||
@@ -659,8 +659,24 @@ static int sched_rt_runtime_exceeded(struct rt_rq *rt_rq)
|
||||
return 0;
|
||||
|
||||
if (rt_rq->rt_time > runtime) {
|
||||
|
@ -46,3 +47,6 @@ Index: linux-3.2/kernel/sched_rt.c
|
|||
if (rt_rq_throttled(rt_rq)) {
|
||||
sched_rt_rq_dequeue(rt_rq);
|
||||
return 1;
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
Subject: time: Remove bogus comments
|
||||
From f427d80501aa7fcdf695288aa8eb507dbd5c9369 Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
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
|
||||
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 ------
|
||||
1 file changed, 6 deletions(-)
|
||||
|
||||
Index: linux-3.2/kernel/time.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/kernel/time.c
|
||||
+++ linux-3.2/kernel/time.c
|
||||
@@ -163,7 +163,6 @@ int do_sys_settimeofday(const struct tim
|
||||
diff --git a/kernel/time.c b/kernel/time.c
|
||||
index 73e416d..ba744cf 100644
|
||||
--- a/kernel/time.c
|
||||
+++ b/kernel/time.c
|
||||
@@ -163,7 +163,6 @@ int do_sys_settimeofday(const struct timespec *tv, const struct timezone *tz)
|
||||
return error;
|
||||
|
||||
if (tz) {
|
||||
|
@ -23,7 +24,7 @@ Index: linux-3.2/kernel/time.c
|
|||
sys_tz = *tz;
|
||||
update_vsyscall_tz();
|
||||
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)
|
||||
|
@ -36,3 +37,6 @@ Index: linux-3.2/kernel/time.c
|
|||
return 0;
|
||||
}
|
||||
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -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>
|
||||
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
|
||||
pointless.
|
||||
pointless.
|
||||
|
||||
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().
|
||||
|
@ -13,10 +15,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
|||
arch/x86/kernel/vsyscall_64.c | 5 -----
|
||||
1 file changed, 5 deletions(-)
|
||||
|
||||
Index: linux-2.6/arch/x86/kernel/vsyscall_64.c
|
||||
===================================================================
|
||||
--- linux-2.6.orig/arch/x86/kernel/vsyscall_64.c
|
||||
+++ 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
|
||||
--- a/arch/x86/kernel/vsyscall_64.c
|
||||
+++ b/arch/x86/kernel/vsyscall_64.c
|
||||
@@ -80,12 +80,7 @@ early_param("vsyscall", vsyscall_setup);
|
||||
|
||||
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,
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -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>
|
||||
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
|
||||
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 ++++++++--------
|
||||
3 files changed, 12 insertions(+), 17 deletions(-)
|
||||
|
||||
Index: linux-3.2/arch/x86/include/asm/vgtod.h
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/x86/include/asm/vgtod.h
|
||||
+++ 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
|
||||
--- a/arch/x86/include/asm/vgtod.h
|
||||
+++ b/arch/x86/include/asm/vgtod.h
|
||||
@@ -5,7 +5,7 @@
|
||||
#include <linux/clocksource.h>
|
||||
|
||||
|
@ -25,10 +26,10 @@ Index: linux-3.2/arch/x86/include/asm/vgtod.h
|
|||
|
||||
/* open coded 'struct timespec' */
|
||||
time_t wall_time_sec;
|
||||
Index: linux-3.2/arch/x86/kernel/vsyscall_64.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/x86/kernel/vsyscall_64.c
|
||||
+++ 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
|
||||
--- a/arch/x86/kernel/vsyscall_64.c
|
||||
+++ b/arch/x86/kernel/vsyscall_64.c
|
||||
@@ -52,10 +52,7 @@
|
||||
#include "vsyscall_trace.h"
|
||||
|
||||
|
@ -52,7 +53,7 @@ Index: linux-3.2/arch/x86/kernel/vsyscall_64.c
|
|||
|
||||
/* copy vsyscall data */
|
||||
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_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,
|
||||
Index: linux-3.2/arch/x86/vdso/vclock_gettime.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/x86/vdso/vclock_gettime.c
|
||||
+++ linux-3.2/arch/x86/vdso/vclock_gettime.c
|
||||
@@ -86,11 +86,11 @@ notrace static noinline int do_realtime(
|
||||
diff --git a/arch/x86/vdso/vclock_gettime.c b/arch/x86/vdso/vclock_gettime.c
|
||||
index 6bc0e72..d8511fb 100644
|
||||
--- a/arch/x86/vdso/vclock_gettime.c
|
||||
+++ b/arch/x86/vdso/vclock_gettime.c
|
||||
@@ -86,11 +86,11 @@ notrace static noinline int do_realtime(struct timespec *ts)
|
||||
{
|
||||
unsigned long seq, ns;
|
||||
do {
|
||||
|
@ -79,7 +80,7 @@ Index: linux-3.2/arch/x86/vdso/vclock_gettime.c
|
|||
timespec_add_ns(ts, ns);
|
||||
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;
|
||||
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
|
||||
* 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;
|
||||
do {
|
||||
|
@ -107,7 +108,7 @@ Index: linux-3.2/arch/x86/vdso/vclock_gettime.c
|
|||
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;
|
||||
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
|
||||
* guaranteed to be between 0 and NSEC_PER_SEC.
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -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>
|
||||
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
|
||||
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 +++-------
|
||||
4 files changed, 7 insertions(+), 11 deletions(-)
|
||||
|
||||
Index: linux-2.6/arch/ia64/kernel/asm-offsets.c
|
||||
===================================================================
|
||||
--- linux-2.6.orig/arch/ia64/kernel/asm-offsets.c
|
||||
+++ 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
|
||||
--- a/arch/ia64/kernel/asm-offsets.c
|
||||
+++ b/arch/ia64/kernel/asm-offsets.c
|
||||
@@ -269,8 +269,8 @@ void foo(void)
|
||||
BLANK();
|
||||
|
||||
|
@ -29,10 +30,10 @@ Index: linux-2.6/arch/ia64/kernel/asm-offsets.c
|
|||
DEFINE(IA64_GTOD_WALL_TIME_OFFSET,
|
||||
offsetof (struct fsyscall_gtod_data_t, wall_time));
|
||||
DEFINE(IA64_GTOD_MONO_TIME_OFFSET,
|
||||
Index: linux-2.6/arch/ia64/kernel/fsys.S
|
||||
===================================================================
|
||||
--- linux-2.6.orig/arch/ia64/kernel/fsys.S
|
||||
+++ 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
|
||||
--- a/arch/ia64/kernel/fsys.S
|
||||
+++ b/arch/ia64/kernel/fsys.S
|
||||
@@ -174,7 +174,7 @@ ENTRY(fsys_set_tid_address)
|
||||
FSYS_RETURN
|
||||
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
|
||||
#endif
|
||||
#if IA64_ITC_JITTER_OFFSET !=0
|
||||
Index: linux-2.6/arch/ia64/kernel/fsyscall_gtod_data.h
|
||||
===================================================================
|
||||
--- linux-2.6.orig/arch/ia64/kernel/fsyscall_gtod_data.h
|
||||
+++ 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
|
||||
--- a/arch/ia64/kernel/fsyscall_gtod_data.h
|
||||
+++ b/arch/ia64/kernel/fsyscall_gtod_data.h
|
||||
@@ -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 monotonic_time;
|
||||
cycle_t clk_mask;
|
||||
Index: linux-2.6/arch/ia64/kernel/time.c
|
||||
===================================================================
|
||||
--- linux-2.6.orig/arch/ia64/kernel/time.c
|
||||
+++ 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
|
||||
--- a/arch/ia64/kernel/time.c
|
||||
+++ b/arch/ia64/kernel/time.c
|
||||
@@ -35,9 +35,7 @@
|
||||
|
||||
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 */
|
||||
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++;
|
||||
}
|
||||
|
||||
|
@ -89,3 +90,6 @@ Index: linux-2.6/arch/ia64/kernel/time.c
|
|||
+ write_seqcount_end(&fsyscall_gtod_data.seq);
|
||||
}
|
||||
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,17 +1,18 @@
|
|||
Subject: seqlock: Remove unused functions
|
||||
From 5e0436d075a54bc63fa9e48a160ca9df12ff9b77 Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
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>
|
||||
---
|
||||
include/linux/seqlock.h | 21 ---------------------
|
||||
1 file changed, 21 deletions(-)
|
||||
|
||||
Index: linux-3.2/include/linux/seqlock.h
|
||||
===================================================================
|
||||
--- linux-3.2.orig/include/linux/seqlock.h
|
||||
+++ linux-3.2/include/linux/seqlock.h
|
||||
@@ -69,17 +69,6 @@ static inline void write_sequnlock(seqlo
|
||||
diff --git a/include/linux/seqlock.h b/include/linux/seqlock.h
|
||||
index c6db9fb..b990f6e 100644
|
||||
--- a/include/linux/seqlock.h
|
||||
+++ b/include/linux/seqlock.h
|
||||
@@ -69,17 +69,6 @@ static inline void write_sequnlock(seqlock_t *sl)
|
||||
spin_unlock(&sl->lock);
|
||||
}
|
||||
|
||||
|
@ -29,7 +30,7 @@ Index: linux-3.2/include/linux/seqlock.h
|
|||
/* Start of read calculation -- fetch last complete writer token */
|
||||
static __always_inline unsigned read_seqbegin(const seqlock_t *sl)
|
||||
{
|
||||
@@ -248,14 +237,4 @@ static inline void write_seqcount_barrie
|
||||
@@ -248,14 +237,4 @@ static inline void write_seqcount_barrier(seqcount_t *s)
|
||||
#define write_sequnlock_bh(lock) \
|
||||
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 */
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,18 +1,19 @@
|
|||
Subject: seqlock: Use seqcount
|
||||
From cc961dbd2fbdd830c4ba4162c7116d354dfcb13f Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
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.
|
||||
|
||||
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(-)
|
||||
|
||||
Index: rt/include/linux/seqlock.h
|
||||
===================================================================
|
||||
--- rt.orig/include/linux/seqlock.h
|
||||
+++ rt/include/linux/seqlock.h
|
||||
diff --git a/include/linux/seqlock.h b/include/linux/seqlock.h
|
||||
index b990f6e..3e1f3f9 100644
|
||||
--- a/include/linux/seqlock.h
|
||||
+++ b/include/linux/seqlock.h
|
||||
@@ -30,81 +30,12 @@
|
||||
#include <linux/preempt.h>
|
||||
#include <asm/processor.h>
|
||||
|
@ -95,7 +96,7 @@ Index: rt/include/linux/seqlock.h
|
|||
typedef struct seqcount {
|
||||
unsigned sequence;
|
||||
} 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)
|
||||
{
|
||||
smp_rmb();
|
||||
|
@ -103,7 +104,7 @@ Index: rt/include/linux/seqlock.h
|
|||
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;
|
||||
}
|
||||
|
||||
|
@ -218,3 +219,6 @@ Index: rt/include/linux/seqlock.h
|
|||
+}
|
||||
|
||||
#endif /* __LINUX_SEQLOCK_H */
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -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>
|
||||
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
|
||||
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.
|
||||
|
||||
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
|
||||
index 78b519c..f5818c4 100644
|
||||
|
@ -81,5 +86,6 @@ index 78b519c..f5818c4 100644
|
|||
spin_unlock(&fs->lock);
|
||||
}
|
||||
task_unlock(p);
|
||||
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
Subject: timekeeping: Split xtime_lock
|
||||
From 575bc99dec3a6b5121859ec0dc56a400313c500b Mon Sep 17 00:00:00 2001
|
||||
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
|
||||
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>
|
||||
---
|
||||
kernel/time/jiffies.c | 4 -
|
||||
kernel/time/ntp.c | 24 +++++++----
|
||||
kernel/time/tick-common.c | 10 ++--
|
||||
kernel/time/tick-internal.h | 3 -
|
||||
kernel/time/tick-sched.c | 16 ++++---
|
||||
kernel/time/timekeeping.c | 90 +++++++++++++++++++++++++-------------------
|
||||
kernel/time/jiffies.c | 4 +-
|
||||
kernel/time/ntp.c | 24 ++++++++----
|
||||
kernel/time/tick-common.c | 10 +++--
|
||||
kernel/time/tick-internal.h | 3 +-
|
||||
kernel/time/tick-sched.c | 16 +++++---
|
||||
kernel/time/timekeeping.c | 90 +++++++++++++++++++++++++------------------
|
||||
6 files changed, 88 insertions(+), 59 deletions(-)
|
||||
|
||||
Index: linux-3.2/kernel/time/jiffies.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/kernel/time/jiffies.c
|
||||
+++ linux-3.2/kernel/time/jiffies.c
|
||||
diff --git a/kernel/time/jiffies.c b/kernel/time/jiffies.c
|
||||
index a470154..21940eb 100644
|
||||
--- a/kernel/time/jiffies.c
|
||||
+++ b/kernel/time/jiffies.c
|
||||
@@ -74,9 +74,9 @@ u64 get_jiffies_64(void)
|
||||
u64 ret;
|
||||
|
||||
|
@ -33,11 +34,11 @@ Index: linux-3.2/kernel/time/jiffies.c
|
|||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL(get_jiffies_64);
|
||||
Index: linux-3.2/kernel/time/ntp.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/kernel/time/ntp.c
|
||||
+++ linux-3.2/kernel/time/ntp.c
|
||||
@@ -358,7 +358,8 @@ static enum hrtimer_restart ntp_leap_sec
|
||||
diff --git a/kernel/time/ntp.c b/kernel/time/ntp.c
|
||||
index 4b85a7a..419cbaa 100644
|
||||
--- a/kernel/time/ntp.c
|
||||
+++ b/kernel/time/ntp.c
|
||||
@@ -358,7 +358,8 @@ static enum hrtimer_restart ntp_leap_second(struct hrtimer *timer)
|
||||
{
|
||||
enum hrtimer_restart res = HRTIMER_NORESTART;
|
||||
|
||||
|
@ -47,7 +48,7 @@ Index: linux-3.2/kernel/time/ntp.c
|
|||
|
||||
switch (time_state) {
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -77,7 +78,7 @@ Index: linux-3.2/kernel/time/ntp.c
|
|||
|
||||
txc->time.tv_sec = ts.tv_sec;
|
||||
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);
|
||||
|
||||
|
@ -87,7 +88,7 @@ Index: linux-3.2/kernel/time/ntp.c
|
|||
|
||||
/* clear the error bits, they will be set again if needed */
|
||||
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 */
|
||||
if (unlikely(pps_fbase.tv_sec == 0)) {
|
||||
pps_fbase = *raw_ts;
|
||||
|
@ -97,7 +98,7 @@ Index: linux-3.2/kernel/time/ntp.c
|
|||
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;
|
||||
/* restart the frequency calibration interval */
|
||||
pps_fbase = *raw_ts;
|
||||
|
@ -107,7 +108,7 @@ Index: linux-3.2/kernel/time/ntp.c
|
|||
pr_err("hardpps: PPSJITTER: bad pulse\n");
|
||||
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);
|
||||
|
||||
|
@ -117,10 +118,10 @@ Index: linux-3.2/kernel/time/ntp.c
|
|||
}
|
||||
EXPORT_SYMBOL(hardpps);
|
||||
|
||||
Index: linux-3.2/kernel/time/tick-common.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/kernel/time/tick-common.c
|
||||
+++ 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
|
||||
--- a/kernel/time/tick-common.c
|
||||
+++ b/kernel/time/tick-common.c
|
||||
@@ -63,13 +63,15 @@ int tick_is_oneshot_available(void)
|
||||
static void tick_periodic(int cpu)
|
||||
{
|
||||
|
@ -139,7 +140,7 @@ Index: linux-3.2/kernel/time/tick-common.c
|
|||
}
|
||||
|
||||
update_process_times(user_mode(get_irq_regs()));
|
||||
@@ -130,9 +132,9 @@ void tick_setup_periodic(struct clock_ev
|
||||
@@ -130,9 +132,9 @@ void tick_setup_periodic(struct clock_event_device *dev, int broadcast)
|
||||
ktime_t next;
|
||||
|
||||
do {
|
||||
|
@ -151,22 +152,22 @@ Index: linux-3.2/kernel/time/tick-common.c
|
|||
|
||||
clockevents_set_mode(dev, CLOCK_EVT_MODE_ONESHOT);
|
||||
|
||||
Index: linux-3.2/kernel/time/tick-internal.h
|
||||
===================================================================
|
||||
--- linux-3.2.orig/kernel/time/tick-internal.h
|
||||
+++ linux-3.2/kernel/time/tick-internal.h
|
||||
@@ -141,4 +141,5 @@ static inline int tick_device_is_functio
|
||||
diff --git a/kernel/time/tick-internal.h b/kernel/time/tick-internal.h
|
||||
index 4e265b9..c91100d 100644
|
||||
--- a/kernel/time/tick-internal.h
|
||||
+++ b/kernel/time/tick-internal.h
|
||||
@@ -141,4 +141,5 @@ static inline int tick_device_is_functional(struct clock_event_device *dev)
|
||||
#endif
|
||||
|
||||
extern void do_timer(unsigned long ticks);
|
||||
-extern seqlock_t xtime_lock;
|
||||
+extern raw_spinlock_t xtime_lock;
|
||||
+extern seqcount_t xtime_seq;
|
||||
Index: linux-3.2/kernel/time/tick-sched.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/kernel/time/tick-sched.c
|
||||
+++ linux-3.2/kernel/time/tick-sched.c
|
||||
@@ -56,7 +56,8 @@ static void tick_do_update_jiffies64(kti
|
||||
diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c
|
||||
index c923640..d7abd2f 100644
|
||||
--- a/kernel/time/tick-sched.c
|
||||
+++ b/kernel/time/tick-sched.c
|
||||
@@ -56,7 +56,8 @@ static void tick_do_update_jiffies64(ktime_t now)
|
||||
return;
|
||||
|
||||
/* Reevalute with xtime_lock held */
|
||||
|
@ -176,7 +177,7 @@ Index: linux-3.2/kernel/time/tick-sched.c
|
|||
|
||||
delta = ktime_sub(now, last_jiffies_update);
|
||||
if (delta.tv64 >= tick_period.tv64) {
|
||||
@@ -79,7 +80,8 @@ static void tick_do_update_jiffies64(kti
|
||||
@@ -79,7 +80,8 @@ static void tick_do_update_jiffies64(ktime_t now)
|
||||
/* Keep the tick_next_period variable up to date */
|
||||
tick_next_period = ktime_add(last_jiffies_update, tick_period);
|
||||
}
|
||||
|
@ -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;
|
||||
|
||||
|
@ -203,7 +204,7 @@ Index: linux-3.2/kernel/time/tick-sched.c
|
|||
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++;
|
||||
/* Read jiffies and the time when jiffies were updated last */
|
||||
do {
|
||||
|
@ -217,11 +218,11 @@ Index: linux-3.2/kernel/time/tick-sched.c
|
|||
|
||||
if (rcu_needs_cpu(cpu) || printk_needs_cpu(cpu) ||
|
||||
arch_needs_cpu(cpu)) {
|
||||
Index: linux-3.2/kernel/time/timekeeping.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/kernel/time/timekeeping.c
|
||||
+++ linux-3.2/kernel/time/timekeeping.c
|
||||
@@ -139,8 +139,8 @@ static inline s64 timekeeping_get_ns_raw
|
||||
diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c
|
||||
index 2378413..da9e1f9 100644
|
||||
--- a/kernel/time/timekeeping.c
|
||||
+++ b/kernel/time/timekeeping.c
|
||||
@@ -139,8 +139,8 @@ static inline s64 timekeeping_get_ns_raw(void)
|
||||
* This read-write spinlock protects us from races in SMP while
|
||||
* 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,
|
||||
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 {
|
||||
u32 arch_offset;
|
||||
|
||||
|
@ -293,7 +294,7 @@ Index: linux-3.2/kernel/time/timekeeping.c
|
|||
|
||||
*ts_raw = raw_time;
|
||||
*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_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_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)
|
||||
return -EINVAL;
|
||||
|
||||
|
@ -312,7 +313,7 @@ Index: linux-3.2/kernel/time/timekeeping.c
|
|||
|
||||
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,
|
||||
timekeeper.mult);
|
||||
|
||||
|
@ -322,7 +323,7 @@ Index: linux-3.2/kernel/time/timekeeping.c
|
|||
|
||||
/* signal hrtimers about time change */
|
||||
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)
|
||||
return -EINVAL;
|
||||
|
||||
|
@ -332,7 +333,7 @@ Index: linux-3.2/kernel/time/timekeeping.c
|
|||
|
||||
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,
|
||||
timekeeper.mult);
|
||||
|
||||
|
@ -342,7 +343,7 @@ Index: linux-3.2/kernel/time/timekeeping.c
|
|||
|
||||
/* signal hrtimers about time change */
|
||||
clock_was_set();
|
||||
@@ -490,11 +494,11 @@ void getrawmonotonic(struct timespec *ts
|
||||
@@ -490,11 +494,11 @@ void getrawmonotonic(struct timespec *ts)
|
||||
s64 nsecs;
|
||||
|
||||
do {
|
||||
|
@ -390,7 +391,7 @@ Index: linux-3.2/kernel/time/timekeeping.c
|
|||
}
|
||||
|
||||
/* 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))
|
||||
return;
|
||||
|
||||
|
@ -400,7 +401,7 @@ Index: linux-3.2/kernel/time/timekeeping.c
|
|||
timekeeping_forward_now();
|
||||
|
||||
__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,
|
||||
timekeeper.mult);
|
||||
|
||||
|
@ -450,7 +451,7 @@ Index: linux-3.2/kernel/time/timekeeping.c
|
|||
|
||||
clockevents_notify(CLOCK_EVT_NOTIFY_SUSPEND, NULL);
|
||||
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);
|
||||
|
||||
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,
|
||||
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;
|
||||
|
||||
do {
|
||||
|
@ -479,7 +480,7 @@ Index: linux-3.2/kernel/time/timekeeping.c
|
|||
|
||||
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;
|
||||
|
||||
do {
|
||||
|
@ -493,7 +494,7 @@ Index: linux-3.2/kernel/time/timekeeping.c
|
|||
|
||||
set_normalized_timespec(&now, now.tv_sec + mono.tv_sec,
|
||||
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;
|
||||
|
||||
do {
|
||||
|
@ -531,3 +532,6 @@ Index: linux-3.2/kernel/time/timekeeping.c
|
|||
+ write_seqcount_end(&xtime_seq);
|
||||
+ raw_spin_unlock(&xtime_lock);
|
||||
}
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -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>
|
||||
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.
|
||||
|
||||
|
@ -22,15 +23,14 @@ Signed-off-by: Mike Galbraith <efault@gmx.de>
|
|||
Cc: Steven Rostedt <rostedt@goodmis.org>
|
||||
Link: http://lkml.kernel.org/r/1323258522.5057.73.camel@marge.simson.net
|
||||
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
||||
|
||||
---
|
||||
drivers/idle/i7300_idle.c | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
Index: linux-3.2/drivers/idle/i7300_idle.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/drivers/idle/i7300_idle.c
|
||||
+++ 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
|
||||
--- a/drivers/idle/i7300_idle.c
|
||||
+++ b/drivers/idle/i7300_idle.c
|
||||
@@ -75,7 +75,7 @@ static unsigned long past_skip;
|
||||
|
||||
static struct pci_dev *fbd_dev;
|
||||
|
@ -40,7 +40,7 @@ Index: linux-3.2/drivers/idle/i7300_idle.c
|
|||
static int i7300_idle_active;
|
||||
|
||||
static u8 i7300_idle_thrtctl_saved;
|
||||
@@ -457,7 +457,7 @@ static int i7300_idle_notifier(struct no
|
||||
@@ -457,7 +457,7 @@ static int i7300_idle_notifier(struct notifier_block *nb, unsigned long val,
|
||||
idle_begin_time = ktime_get();
|
||||
}
|
||||
|
||||
|
@ -49,7 +49,7 @@ Index: linux-3.2/drivers/idle/i7300_idle.c
|
|||
if (val == IDLE_START) {
|
||||
|
||||
cpumask_set_cpu(smp_processor_id(), idle_cpumask);
|
||||
@@ -506,7 +506,7 @@ static int i7300_idle_notifier(struct no
|
||||
@@ -506,7 +506,7 @@ static int i7300_idle_notifier(struct notifier_block *nb, unsigned long val,
|
||||
}
|
||||
}
|
||||
end:
|
||||
|
@ -67,3 +67,6 @@ Index: linux-3.2/drivers/idle/i7300_idle.c
|
|||
total_us = 0;
|
||||
|
||||
if (i7300_idle_platform_probe(&fbd_dev, &ioat_dev, forceload))
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -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>
|
||||
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
|
||||
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>
|
||||
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
||||
---
|
||||
mm/memcontrol.c | 73 ++++++++++++++++++++++++++------------------------------
|
||||
mm/memcontrol.c | 73 ++++++++++++++++++++++++++-----------------------------
|
||||
1 file changed, 35 insertions(+), 38 deletions(-)
|
||||
|
||||
Thomas, HTH and it is probably interesting for upstream as well.
|
||||
Unfortunately, I'm in the middle of moving right now, so this is
|
||||
untested except for compiling.
|
||||
|
||||
Index: linux-3.2/mm/memcontrol.c
|
||||
===================================================================
|
||||
--- 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
|
||||
diff --git a/mm/memcontrol.c b/mm/memcontrol.c
|
||||
index 778554f..abf5497 100644
|
||||
--- a/mm/memcontrol.c
|
||||
+++ b/mm/memcontrol.c
|
||||
@@ -683,37 +683,32 @@ static unsigned long mem_cgroup_nr_lru_pages(struct mem_cgroup *memcg,
|
||||
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();
|
||||
/* 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)
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,6 +1,8 @@
|
|||
From ee9d814d8872fc578eb31771307b2b6a8f5822f8 Mon Sep 17 00:00:00 2001
|
||||
From: Steven Rostedt <rostedt@goodmis.org>
|
||||
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
|
||||
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 +++++++++
|
||||
1 file changed, 9 insertions(+)
|
||||
|
||||
Index: linux-3.2/kernel/sched.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/kernel/sched.c
|
||||
+++ linux-3.2/kernel/sched.c
|
||||
@@ -4520,7 +4520,16 @@ asmlinkage void __sched notrace preempt_
|
||||
diff --git a/kernel/sched.c b/kernel/sched.c
|
||||
index a39494e..6b32395 100644
|
||||
--- a/kernel/sched.c
|
||||
+++ b/kernel/sched.c
|
||||
@@ -4520,7 +4520,16 @@ asmlinkage void __sched notrace preempt_schedule(void)
|
||||
|
||||
do {
|
||||
add_preempt_count_notrace(PREEMPT_ACTIVE);
|
||||
|
@ -46,3 +48,6 @@ Index: linux-3.2/kernel/sched.c
|
|||
sub_preempt_count_notrace(PREEMPT_ACTIVE);
|
||||
|
||||
/*
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -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>
|
||||
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>
|
||||
---
|
||||
kernel/signal.c | 8 --------
|
||||
1 file changed, 8 deletions(-)
|
||||
|
||||
Index: linux-3.2/kernel/signal.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/kernel/signal.c
|
||||
+++ linux-3.2/kernel/signal.c
|
||||
@@ -1857,15 +1857,7 @@ static void ptrace_stop(int exit_code, i
|
||||
diff --git a/kernel/signal.c b/kernel/signal.c
|
||||
index 2065515..d8b0b21 100644
|
||||
--- a/kernel/signal.c
|
||||
+++ b/kernel/signal.c
|
||||
@@ -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))
|
||||
do_notify_parent_cldstop(current, false, why);
|
||||
|
||||
|
@ -27,3 +28,6 @@ Index: linux-3.2/kernel/signal.c
|
|||
schedule();
|
||||
} else {
|
||||
/*
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -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>
|
||||
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
|
||||
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 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
Index: linux-3.2/arch/arm/kernel/perf_event.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/arm/kernel/perf_event.c
|
||||
+++ linux-3.2/arch/arm/kernel/perf_event.c
|
||||
@@ -441,7 +441,7 @@ armpmu_reserve_hardware(struct arm_pmu *
|
||||
diff --git a/arch/arm/kernel/perf_event.c b/arch/arm/kernel/perf_event.c
|
||||
index ecebb89..e1286fb 100644
|
||||
--- a/arch/arm/kernel/perf_event.c
|
||||
+++ b/arch/arm/kernel/perf_event.c
|
||||
@@ -435,7 +435,7 @@ armpmu_reserve_hardware(struct arm_pmu *armpmu)
|
||||
}
|
||||
|
||||
err = request_irq(irq, handle_irq,
|
||||
|
@ -23,3 +24,6 @@ Index: linux-3.2/arch/arm/kernel/perf_event.c
|
|||
"arm-pmu", armpmu);
|
||||
if (err) {
|
||||
pr_err("unable to request IRQ%d for ARM PMU counters\n",
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -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>
|
||||
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
|
||||
its safe to allow forced interrupt threading.
|
||||
|
@ -10,10 +11,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
|||
arch/arm/Kconfig | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
Index: linux-3.2/arch/arm/Kconfig
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/arm/Kconfig
|
||||
+++ linux-3.2/arch/arm/Kconfig
|
||||
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
|
||||
index ab3740e..fc327b8 100644
|
||||
--- a/arch/arm/Kconfig
|
||||
+++ b/arch/arm/Kconfig
|
||||
@@ -29,6 +29,7 @@ config ARM
|
||||
select HAVE_GENERIC_HARDIRQS
|
||||
select HAVE_SPARSE_IRQ
|
||||
|
@ -22,3 +23,6 @@ Index: linux-3.2/arch/arm/Kconfig
|
|||
select CPU_PM if (SUSPEND || CPU_IDLE)
|
||||
help
|
||||
The ARM series is a line of low-power-consumption RISC chip designs
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -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>
|
||||
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
|
||||
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 +++++-----
|
||||
6 files changed, 31 insertions(+), 31 deletions(-)
|
||||
|
||||
Index: linux-3.2/arch/arm/mach-exynos/platsmp.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/arm/mach-exynos/platsmp.c
|
||||
+++ 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
|
||||
--- a/arch/arm/mach-exynos/platsmp.c
|
||||
+++ b/arch/arm/mach-exynos/platsmp.c
|
||||
@@ -63,7 +63,7 @@ static void __iomem *scu_base_addr(void)
|
||||
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)
|
||||
{
|
||||
@@ -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.
|
||||
*/
|
||||
|
@ -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)
|
||||
@@ -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
|
||||
* 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
|
||||
@@ -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) {
|
||||
printk(KERN_ERR "cpu1 power enable failed");
|
||||
|
@ -70,7 +70,7 @@ Index: linux-3.2/arch/arm/mach-exynos/platsmp.c
|
|||
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
|
||||
* 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;
|
||||
}
|
||||
Index: linux-3.2/arch/arm/mach-msm/platsmp.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/arm/mach-msm/platsmp.c
|
||||
+++ 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
|
||||
--- a/arch/arm/mach-msm/platsmp.c
|
||||
+++ b/arch/arm/mach-msm/platsmp.c
|
||||
@@ -39,7 +39,7 @@ extern void msm_secondary_startup(void);
|
||||
*/
|
||||
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)
|
||||
{
|
||||
@@ -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.
|
||||
*/
|
||||
|
@ -103,7 +103,7 @@ Index: linux-3.2/arch/arm/mach-msm/platsmp.c
|
|||
}
|
||||
|
||||
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
|
||||
* 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
|
||||
@@ -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
|
||||
* 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;
|
||||
}
|
||||
Index: linux-3.2/arch/arm/mach-omap2/omap-smp.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/arm/mach-omap2/omap-smp.c
|
||||
+++ 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
|
||||
--- a/arch/arm/mach-omap2/omap-smp.c
|
||||
+++ b/arch/arm/mach-omap2/omap-smp.c
|
||||
@@ -29,7 +29,7 @@
|
||||
/* SCU base address */
|
||||
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)
|
||||
{
|
||||
@@ -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.
|
||||
*/
|
||||
|
@ -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)
|
||||
@@ -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
|
||||
* 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.
|
||||
@@ -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
|
||||
* calibrations, then wait for it to finish
|
||||
*/
|
||||
|
@ -163,10 +163,10 @@ Index: linux-3.2/arch/arm/mach-omap2/omap-smp.c
|
|||
|
||||
return 0;
|
||||
}
|
||||
Index: linux-3.2/arch/arm/mach-tegra/platsmp.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/arm/mach-tegra/platsmp.c
|
||||
+++ 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
|
||||
--- a/arch/arm/mach-tegra/platsmp.c
|
||||
+++ b/arch/arm/mach-tegra/platsmp.c
|
||||
@@ -28,7 +28,7 @@
|
||||
|
||||
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);
|
||||
|
||||
#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.
|
||||
*/
|
||||
|
@ -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)
|
||||
@@ -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
|
||||
* 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 */
|
||||
@@ -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
|
||||
* calibrations, then wait for it to finish
|
||||
*/
|
||||
|
@ -205,10 +205,10 @@ Index: linux-3.2/arch/arm/mach-tegra/platsmp.c
|
|||
|
||||
return 0;
|
||||
}
|
||||
Index: linux-3.2/arch/arm/mach-ux500/platsmp.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/arm/mach-ux500/platsmp.c
|
||||
+++ 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
|
||||
--- a/arch/arm/mach-ux500/platsmp.c
|
||||
+++ b/arch/arm/mach-ux500/platsmp.c
|
||||
@@ -57,7 +57,7 @@ static void __iomem *scu_base_addr(void)
|
||||
return NULL;
|
||||
}
|
||||
|
@ -218,7 +218,7 @@ Index: linux-3.2/arch/arm/mach-ux500/platsmp.c
|
|||
|
||||
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.
|
||||
*/
|
||||
|
@ -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)
|
||||
@@ -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
|
||||
* 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
|
||||
@@ -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
|
||||
* 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;
|
||||
}
|
||||
Index: linux-3.2/arch/arm/plat-versatile/platsmp.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/arm/plat-versatile/platsmp.c
|
||||
+++ linux-3.2/arch/arm/plat-versatile/platsmp.c
|
||||
@@ -37,7 +37,7 @@ static void __cpuinit write_pen_release(
|
||||
diff --git a/arch/arm/plat-versatile/platsmp.c b/arch/arm/plat-versatile/platsmp.c
|
||||
index 92f18d3..287bbb5 100644
|
||||
--- a/arch/arm/plat-versatile/platsmp.c
|
||||
+++ b/arch/arm/plat-versatile/platsmp.c
|
||||
@@ -37,7 +37,7 @@ static void __cpuinit write_pen_release(int val)
|
||||
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)
|
||||
{
|
||||
@@ -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.
|
||||
*/
|
||||
|
@ -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)
|
||||
@@ -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
|
||||
* 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
|
||||
@@ -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
|
||||
* 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;
|
||||
}
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -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>
|
||||
Date: Mon, 21 Mar 2011 12:09:35 +0100
|
||||
Subject: [PATCH 030/267] sched: Create schedule_preempt_disabled()
|
||||
|
||||
Get rid of the ever repeating:
|
||||
|
||||
|
@ -14,11 +15,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
|||
kernel/sched.c | 12 ++++++++++++
|
||||
2 files changed, 13 insertions(+)
|
||||
|
||||
Index: linux-3.2/include/linux/sched.h
|
||||
===================================================================
|
||||
--- linux-3.2.orig/include/linux/sched.h
|
||||
+++ linux-3.2/include/linux/sched.h
|
||||
@@ -359,6 +359,7 @@ extern signed long schedule_timeout_inte
|
||||
diff --git a/include/linux/sched.h b/include/linux/sched.h
|
||||
index 1c4f3e9..9897fe6 100644
|
||||
--- a/include/linux/sched.h
|
||||
+++ b/include/linux/sched.h
|
||||
@@ -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_uninterruptible(signed long timeout);
|
||||
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);
|
||||
|
||||
struct nsproxy;
|
||||
Index: linux-3.2/kernel/sched.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/kernel/sched.c
|
||||
+++ linux-3.2/kernel/sched.c
|
||||
diff --git a/kernel/sched.c b/kernel/sched.c
|
||||
index 6b32395..465fd11 100644
|
||||
--- a/kernel/sched.c
|
||||
+++ b/kernel/sched.c
|
||||
@@ -4456,6 +4456,18 @@ asmlinkage void __sched schedule(void)
|
||||
}
|
||||
EXPORT_SYMBOL(schedule);
|
||||
|
@ -49,3 +50,6 @@ Index: linux-3.2/kernel/sched.c
|
|||
#ifdef CONFIG_MUTEX_SPIN_ON_OWNER
|
||||
|
||||
static inline bool owner_running(struct mutex *lock, struct task_struct *owner)
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -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>
|
||||
Date: Mon, 21 Mar 2011 12:33:18 +0100
|
||||
Subject: [PATCH 031/267] sched: Use schedule_preempt_disabled()
|
||||
|
||||
Coccinelle based conversion.
|
||||
|
||||
|
@ -36,10 +37,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
|||
kernel/softirq.c | 4 +---
|
||||
28 files changed, 36 insertions(+), 95 deletions(-)
|
||||
|
||||
Index: linux-3.2/arch/arm/kernel/process.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/arm/kernel/process.c
|
||||
+++ 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
|
||||
--- a/arch/arm/kernel/process.c
|
||||
+++ b/arch/arm/kernel/process.c
|
||||
@@ -214,9 +214,7 @@ void cpu_idle(void)
|
||||
}
|
||||
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
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/avr32/kernel/process.c
|
||||
+++ 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
|
||||
--- a/arch/avr32/kernel/process.c
|
||||
+++ b/arch/avr32/kernel/process.c
|
||||
@@ -38,9 +38,7 @@ void cpu_idle(void)
|
||||
while (!need_resched())
|
||||
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
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/blackfin/kernel/process.c
|
||||
+++ 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
|
||||
--- a/arch/blackfin/kernel/process.c
|
||||
+++ b/arch/blackfin/kernel/process.c
|
||||
@@ -92,9 +92,7 @@ void cpu_idle(void)
|
||||
while (!need_resched())
|
||||
idle();
|
||||
|
@ -81,10 +82,10 @@ Index: linux-3.2/arch/blackfin/kernel/process.c
|
|||
}
|
||||
}
|
||||
|
||||
Index: linux-3.2/arch/cris/kernel/process.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/cris/kernel/process.c
|
||||
+++ 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
|
||||
--- a/arch/cris/kernel/process.c
|
||||
+++ b/arch/cris/kernel/process.c
|
||||
@@ -115,9 +115,7 @@ void cpu_idle (void)
|
||||
idle = default_idle;
|
||||
idle();
|
||||
|
@ -96,10 +97,10 @@ Index: linux-3.2/arch/cris/kernel/process.c
|
|||
}
|
||||
}
|
||||
|
||||
Index: linux-3.2/arch/frv/kernel/process.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/frv/kernel/process.c
|
||||
+++ 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
|
||||
--- a/arch/frv/kernel/process.c
|
||||
+++ b/arch/frv/kernel/process.c
|
||||
@@ -92,9 +92,7 @@ void cpu_idle(void)
|
||||
idle();
|
||||
}
|
||||
|
@ -111,10 +112,10 @@ Index: linux-3.2/arch/frv/kernel/process.c
|
|||
}
|
||||
}
|
||||
|
||||
Index: linux-3.2/arch/h8300/kernel/process.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/h8300/kernel/process.c
|
||||
+++ 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
|
||||
--- a/arch/h8300/kernel/process.c
|
||||
+++ b/arch/h8300/kernel/process.c
|
||||
@@ -81,9 +81,7 @@ void cpu_idle(void)
|
||||
while (1) {
|
||||
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
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/ia64/kernel/process.c
|
||||
+++ 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
|
||||
--- a/arch/ia64/kernel/process.c
|
||||
+++ b/arch/ia64/kernel/process.c
|
||||
@@ -330,9 +330,7 @@ cpu_idle (void)
|
||||
normal_xtp();
|
||||
#endif
|
||||
|
@ -141,10 +142,10 @@ Index: linux-3.2/arch/ia64/kernel/process.c
|
|||
check_pgt_cache();
|
||||
if (cpu_is_offline(cpu))
|
||||
play_dead();
|
||||
Index: linux-3.2/arch/m32r/kernel/process.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/m32r/kernel/process.c
|
||||
+++ 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
|
||||
--- a/arch/m32r/kernel/process.c
|
||||
+++ b/arch/m32r/kernel/process.c
|
||||
@@ -90,9 +90,7 @@ void cpu_idle (void)
|
||||
|
||||
idle();
|
||||
|
@ -156,10 +157,10 @@ Index: linux-3.2/arch/m32r/kernel/process.c
|
|||
}
|
||||
}
|
||||
|
||||
Index: linux-3.2/arch/m68k/kernel/process_mm.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/m68k/kernel/process_mm.c
|
||||
+++ 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
|
||||
--- a/arch/m68k/kernel/process_mm.c
|
||||
+++ b/arch/m68k/kernel/process_mm.c
|
||||
@@ -94,9 +94,7 @@ void cpu_idle(void)
|
||||
while (1) {
|
||||
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
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/m68k/kernel/process_no.c
|
||||
+++ 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
|
||||
--- a/arch/m68k/kernel/process_no.c
|
||||
+++ b/arch/m68k/kernel/process_no.c
|
||||
@@ -73,9 +73,7 @@ void cpu_idle(void)
|
||||
/* endless idle loop with no priority at all */
|
||||
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
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/microblaze/kernel/process.c
|
||||
+++ 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
|
||||
--- a/arch/microblaze/kernel/process.c
|
||||
+++ b/arch/microblaze/kernel/process.c
|
||||
@@ -108,9 +108,7 @@ void cpu_idle(void)
|
||||
idle();
|
||||
tick_nohz_restart_sched_tick();
|
||||
|
@ -201,10 +202,10 @@ Index: linux-3.2/arch/microblaze/kernel/process.c
|
|||
check_pgt_cache();
|
||||
}
|
||||
}
|
||||
Index: linux-3.2/arch/mips/kernel/process.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/mips/kernel/process.c
|
||||
+++ 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
|
||||
--- a/arch/mips/kernel/process.c
|
||||
+++ b/arch/mips/kernel/process.c
|
||||
@@ -78,9 +78,7 @@ void __noreturn cpu_idle(void)
|
||||
play_dead();
|
||||
#endif
|
||||
|
@ -216,10 +217,10 @@ Index: linux-3.2/arch/mips/kernel/process.c
|
|||
}
|
||||
}
|
||||
|
||||
Index: linux-3.2/arch/mn10300/kernel/process.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/mn10300/kernel/process.c
|
||||
+++ 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
|
||||
--- a/arch/mn10300/kernel/process.c
|
||||
+++ b/arch/mn10300/kernel/process.c
|
||||
@@ -123,9 +123,7 @@ void cpu_idle(void)
|
||||
idle();
|
||||
}
|
||||
|
@ -231,10 +232,10 @@ Index: linux-3.2/arch/mn10300/kernel/process.c
|
|||
}
|
||||
}
|
||||
|
||||
Index: linux-3.2/arch/parisc/kernel/process.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/parisc/kernel/process.c
|
||||
+++ 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
|
||||
--- a/arch/parisc/kernel/process.c
|
||||
+++ b/arch/parisc/kernel/process.c
|
||||
@@ -71,9 +71,7 @@ void cpu_idle(void)
|
||||
while (1) {
|
||||
while (!need_resched())
|
||||
|
@ -246,10 +247,10 @@ Index: linux-3.2/arch/parisc/kernel/process.c
|
|||
check_pgt_cache();
|
||||
}
|
||||
}
|
||||
Index: linux-3.2/arch/powerpc/kernel/idle.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/powerpc/kernel/idle.c
|
||||
+++ 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
|
||||
--- a/arch/powerpc/kernel/idle.c
|
||||
+++ b/arch/powerpc/kernel/idle.c
|
||||
@@ -94,11 +94,11 @@ void cpu_idle(void)
|
||||
HMT_medium();
|
||||
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
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/powerpc/platforms/iseries/setup.c
|
||||
+++ 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
|
||||
--- a/arch/powerpc/platforms/iseries/setup.c
|
||||
+++ b/arch/powerpc/platforms/iseries/setup.c
|
||||
@@ -582,9 +582,7 @@ static void iseries_shared_idle(void)
|
||||
if (hvlpevent_is_pending())
|
||||
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
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/s390/kernel/process.c
|
||||
+++ linux-3.2/arch/s390/kernel/process.c
|
||||
@@ -95,9 +95,7 @@ void cpu_idle(void)
|
||||
diff --git a/arch/s390/kernel/process.c b/arch/s390/kernel/process.c
|
||||
index 53088e2..fa093f7 100644
|
||||
--- a/arch/s390/kernel/process.c
|
||||
+++ b/arch/s390/kernel/process.c
|
||||
@@ -94,9 +94,7 @@ void cpu_idle(void)
|
||||
while (!need_resched())
|
||||
default_idle();
|
||||
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
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/score/kernel/process.c
|
||||
+++ 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
|
||||
--- a/arch/score/kernel/process.c
|
||||
+++ b/arch/score/kernel/process.c
|
||||
@@ -53,9 +53,7 @@ void __noreturn cpu_idle(void)
|
||||
while (!need_resched())
|
||||
barrier();
|
||||
|
@ -322,10 +323,10 @@ Index: linux-3.2/arch/score/kernel/process.c
|
|||
}
|
||||
}
|
||||
|
||||
Index: linux-3.2/arch/sh/kernel/idle.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/sh/kernel/idle.c
|
||||
+++ 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
|
||||
--- a/arch/sh/kernel/idle.c
|
||||
+++ b/arch/sh/kernel/idle.c
|
||||
@@ -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
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/sparc/kernel/process_32.c
|
||||
+++ 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
|
||||
--- a/arch/sparc/kernel/process_32.c
|
||||
+++ b/arch/sparc/kernel/process_32.c
|
||||
@@ -113,9 +113,7 @@ void cpu_idle(void)
|
||||
while (!need_resched())
|
||||
cpu_relax();
|
||||
|
@ -363,10 +364,10 @@ Index: linux-3.2/arch/sparc/kernel/process_32.c
|
|||
check_pgt_cache();
|
||||
}
|
||||
}
|
||||
Index: linux-3.2/arch/sparc/kernel/process_64.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/sparc/kernel/process_64.c
|
||||
+++ 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
|
||||
--- a/arch/sparc/kernel/process_64.c
|
||||
+++ b/arch/sparc/kernel/process_64.c
|
||||
@@ -102,15 +102,13 @@ void cpu_idle(void)
|
||||
|
||||
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
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/tile/kernel/process.c
|
||||
+++ 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
|
||||
--- a/arch/tile/kernel/process.c
|
||||
+++ b/arch/tile/kernel/process.c
|
||||
@@ -106,9 +106,7 @@ void cpu_idle(void)
|
||||
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
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/x86/kernel/process_32.c
|
||||
+++ 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
|
||||
--- a/arch/x86/kernel/process_32.c
|
||||
+++ b/arch/x86/kernel/process_32.c
|
||||
@@ -117,9 +117,7 @@ void cpu_idle(void)
|
||||
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
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/x86/kernel/process_64.c
|
||||
+++ 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
|
||||
--- a/arch/x86/kernel/process_64.c
|
||||
+++ b/arch/x86/kernel/process_64.c
|
||||
@@ -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
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/xtensa/kernel/process.c
|
||||
+++ 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
|
||||
--- a/arch/xtensa/kernel/process.c
|
||||
+++ b/arch/xtensa/kernel/process.c
|
||||
@@ -113,9 +113,7 @@ void cpu_idle(void)
|
||||
while (1) {
|
||||
while (!need_resched())
|
||||
|
@ -447,11 +448,11 @@ Index: linux-3.2/arch/xtensa/kernel/process.c
|
|||
}
|
||||
}
|
||||
|
||||
Index: linux-3.2/init/main.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/init/main.c
|
||||
+++ linux-3.2/init/main.c
|
||||
@@ -378,11 +378,8 @@ static noinline void __init_refok rest_i
|
||||
diff --git a/init/main.c b/init/main.c
|
||||
index 217ed23..0e274f9 100644
|
||||
--- a/init/main.c
|
||||
+++ b/init/main.c
|
||||
@@ -378,11 +378,8 @@ static noinline void __init_refok rest_init(void)
|
||||
* at least once to get things moving:
|
||||
*/
|
||||
init_idle_bootup_task(current);
|
||||
|
@ -464,11 +465,11 @@ Index: linux-3.2/init/main.c
|
|||
cpu_idle();
|
||||
}
|
||||
|
||||
Index: linux-3.2/kernel/mutex.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/kernel/mutex.c
|
||||
+++ linux-3.2/kernel/mutex.c
|
||||
@@ -240,9 +240,7 @@ __mutex_lock_common(struct mutex *lock,
|
||||
diff --git a/kernel/mutex.c b/kernel/mutex.c
|
||||
index 89096dd..a307cc9 100644
|
||||
--- a/kernel/mutex.c
|
||||
+++ b/kernel/mutex.c
|
||||
@@ -240,9 +240,7 @@ __mutex_lock_common(struct mutex *lock, long state, unsigned int subclass,
|
||||
|
||||
/* didn't get the lock, go to sleep: */
|
||||
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);
|
||||
}
|
||||
|
||||
Index: linux-3.2/kernel/softirq.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/kernel/softirq.c
|
||||
+++ linux-3.2/kernel/softirq.c
|
||||
@@ -744,9 +744,7 @@ static int run_ksoftirqd(void * __bind_c
|
||||
diff --git a/kernel/softirq.c b/kernel/softirq.c
|
||||
index 2c71d91..c9da2c8 100644
|
||||
--- a/kernel/softirq.c
|
||||
+++ b/kernel/softirq.c
|
||||
@@ -744,9 +744,7 @@ static int run_ksoftirqd(void * __bind_cpu)
|
||||
while (!kthread_should_stop()) {
|
||||
preempt_disable();
|
||||
if (!local_softirq_pending()) {
|
||||
|
@ -494,3 +495,6 @@ Index: linux-3.2/kernel/softirq.c
|
|||
}
|
||||
|
||||
__set_current_state(TASK_RUNNING);
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,21 +1,21 @@
|
|||
From 244867f1bbbcc44274b4bf053f82e6de83b5e32d Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
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
|
||||
waking up current :)
|
||||
|
||||
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
||||
|
||||
---
|
||||
kernel/signal.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
Index: linux-3.2/kernel/signal.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/kernel/signal.c
|
||||
+++ linux-3.2/kernel/signal.c
|
||||
@@ -682,6 +682,9 @@ void signal_wake_up(struct task_struct *
|
||||
diff --git a/kernel/signal.c b/kernel/signal.c
|
||||
index d8b0b21..8ad4755 100644
|
||||
--- a/kernel/signal.c
|
||||
+++ b/kernel/signal.c
|
||||
@@ -682,6 +682,9 @@ void signal_wake_up(struct task_struct *t, int resume)
|
||||
|
||||
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
|
||||
* case. We don't check t->state here because there is a race with it
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,21 +1,21 @@
|
|||
From 224b94ef7444a37fa715a10779f3a758722c7598 Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
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
|
||||
signals. Prevent it.
|
||||
|
||||
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
||||
|
||||
---
|
||||
kernel/posix-timers.c | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
Index: linux-3.2/kernel/posix-timers.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/kernel/posix-timers.c
|
||||
+++ linux-3.2/kernel/posix-timers.c
|
||||
@@ -439,6 +439,7 @@ static enum hrtimer_restart posix_timer_
|
||||
diff --git a/kernel/posix-timers.c b/kernel/posix-timers.c
|
||||
index 69185ae..7b73c34 100644
|
||||
--- a/kernel/posix-timers.c
|
||||
+++ b/kernel/posix-timers.c
|
||||
@@ -439,6 +439,7 @@ static enum hrtimer_restart posix_timer_fn(struct hrtimer *timer)
|
||||
static struct pid *good_sigevent(sigevent_t * event)
|
||||
{
|
||||
struct task_struct *rtn = current->group_leader;
|
||||
|
@ -23,7 +23,7 @@ Index: linux-3.2/kernel/posix-timers.c
|
|||
|
||||
if ((event->sigev_notify & SIGEV_THREAD_ID ) &&
|
||||
(!(rtn = find_task_by_vpid(event->sigev_notify_thread_id)) ||
|
||||
@@ -447,7 +448,8 @@ static struct pid *good_sigevent(sigeven
|
||||
@@ -447,7 +448,8 @@ static struct pid *good_sigevent(sigevent_t * event)
|
||||
return NULL;
|
||||
|
||||
if (((event->sigev_notify & ~SIGEV_THREAD_ID) != SIGEV_NONE) &&
|
||||
|
@ -33,3 +33,6 @@ Index: linux-3.2/kernel/posix-timers.c
|
|||
return NULL;
|
||||
|
||||
return task_pid(rtn);
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,24 +1,24 @@
|
|||
From 4f199fd1218f10cf419d1c9f9a7ed6c57969320c Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
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
|
||||
task struct.
|
||||
|
||||
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
||||
|
||||
---
|
||||
include/linux/sched.h | 1
|
||||
include/linux/signal.h | 1
|
||||
kernel/exit.c | 2 -
|
||||
kernel/fork.c | 1
|
||||
kernel/signal.c | 83 ++++++++++++++++++++++++++++++++++++++++++++++---
|
||||
include/linux/sched.h | 1 +
|
||||
include/linux/signal.h | 1 +
|
||||
kernel/exit.c | 2 +-
|
||||
kernel/fork.c | 1 +
|
||||
kernel/signal.c | 83 +++++++++++++++++++++++++++++++++++++++++++++---
|
||||
5 files changed, 83 insertions(+), 5 deletions(-)
|
||||
|
||||
Index: linux-3.2/include/linux/sched.h
|
||||
===================================================================
|
||||
--- linux-3.2.orig/include/linux/sched.h
|
||||
+++ linux-3.2/include/linux/sched.h
|
||||
diff --git a/include/linux/sched.h b/include/linux/sched.h
|
||||
index 9897fe6..7268acf 100644
|
||||
--- a/include/linux/sched.h
|
||||
+++ b/include/linux/sched.h
|
||||
@@ -1387,6 +1387,7 @@ struct task_struct {
|
||||
/* signal handlers */
|
||||
struct signal_struct *signal;
|
||||
|
@ -27,11 +27,11 @@ Index: linux-3.2/include/linux/sched.h
|
|||
|
||||
sigset_t blocked, real_blocked;
|
||||
sigset_t saved_sigmask; /* restored if set_restore_sigmask() was used */
|
||||
Index: linux-3.2/include/linux/signal.h
|
||||
===================================================================
|
||||
--- linux-3.2.orig/include/linux/signal.h
|
||||
+++ linux-3.2/include/linux/signal.h
|
||||
@@ -229,6 +229,7 @@ static inline void init_sigpending(struc
|
||||
diff --git a/include/linux/signal.h b/include/linux/signal.h
|
||||
index a822300..a448900 100644
|
||||
--- a/include/linux/signal.h
|
||||
+++ b/include/linux/signal.h
|
||||
@@ -229,6 +229,7 @@ static inline void init_sigpending(struct sigpending *sig)
|
||||
}
|
||||
|
||||
extern void flush_sigqueue(struct sigpending *queue);
|
||||
|
@ -39,11 +39,11 @@ Index: linux-3.2/include/linux/signal.h
|
|||
|
||||
/* Test if 'sig' is valid signal. Use this instead of testing _NSIG directly */
|
||||
static inline int valid_signal(unsigned long sig)
|
||||
Index: linux-3.2/kernel/exit.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/kernel/exit.c
|
||||
+++ linux-3.2/kernel/exit.c
|
||||
@@ -141,7 +141,7 @@ static void __exit_signal(struct task_st
|
||||
diff --git a/kernel/exit.c b/kernel/exit.c
|
||||
index e6e01b9..9075780 100644
|
||||
--- a/kernel/exit.c
|
||||
+++ b/kernel/exit.c
|
||||
@@ -141,7 +141,7 @@ static void __exit_signal(struct task_struct *tsk)
|
||||
* Do this under ->siglock, we can race with another thread
|
||||
* doing sigqueue_free() if we have SIGQUEUE_PREALLOC signals.
|
||||
*/
|
||||
|
@ -52,11 +52,11 @@ Index: linux-3.2/kernel/exit.c
|
|||
tsk->sighand = NULL;
|
||||
spin_unlock(&sighand->siglock);
|
||||
|
||||
Index: linux-3.2/kernel/fork.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/kernel/fork.c
|
||||
+++ linux-3.2/kernel/fork.c
|
||||
@@ -1131,6 +1131,7 @@ static struct task_struct *copy_process(
|
||||
diff --git a/kernel/fork.c b/kernel/fork.c
|
||||
index 0acf42c0..d8aa0c7 100644
|
||||
--- a/kernel/fork.c
|
||||
+++ b/kernel/fork.c
|
||||
@@ -1134,6 +1134,7 @@ static struct task_struct *copy_process(unsigned long clone_flags,
|
||||
spin_lock_init(&p->alloc_lock);
|
||||
|
||||
init_sigpending(&p->pending);
|
||||
|
@ -64,11 +64,11 @@ Index: linux-3.2/kernel/fork.c
|
|||
|
||||
p->utime = cputime_zero;
|
||||
p->stime = cputime_zero;
|
||||
Index: linux-3.2/kernel/signal.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/kernel/signal.c
|
||||
+++ linux-3.2/kernel/signal.c
|
||||
@@ -344,13 +344,45 @@ static bool task_participate_group_stop(
|
||||
diff --git a/kernel/signal.c b/kernel/signal.c
|
||||
index 8ad4755..fc1a67a 100644
|
||||
--- a/kernel/signal.c
|
||||
+++ b/kernel/signal.c
|
||||
@@ -344,13 +344,45 @@ static bool task_participate_group_stop(struct task_struct *task)
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -115,7 +115,7 @@ Index: linux-3.2/kernel/signal.c
|
|||
{
|
||||
struct sigqueue *q = NULL;
|
||||
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 ||
|
||||
atomic_read(&user->sigpending) <=
|
||||
task_rlimit(t, RLIMIT_SIGPENDING)) {
|
||||
|
@ -127,7 +127,7 @@ Index: linux-3.2/kernel/signal.c
|
|||
} else {
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -141,7 +141,7 @@ Index: linux-3.2/kernel/signal.c
|
|||
static void __sigqueue_free(struct sigqueue *q)
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
|
@ -163,7 +163,7 @@ Index: linux-3.2/kernel/signal.c
|
|||
void flush_sigqueue(struct sigpending *queue)
|
||||
{
|
||||
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.
|
||||
*/
|
||||
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:
|
||||
list_del_init(&first->list);
|
||||
copy_siginfo(info, &first->info);
|
||||
|
@ -194,7 +194,7 @@ Index: linux-3.2/kernel/signal.c
|
|||
} else {
|
||||
/*
|
||||
* 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;
|
||||
|
||||
|
@ -213,3 +213,6 @@ Index: linux-3.2/kernel/signal.c
|
|||
|
||||
if (q)
|
||||
q->flags |= SIGQUEUE_PREALLOC;
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -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>
|
||||
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
|
||||
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: Thomas Gleixner <tglx@linutronix.de>
|
||||
---
|
||||
|
||||
arch/x86/include/asm/signal.h | 13 +++++++++++++
|
||||
arch/x86/kernel/signal.c | 9 +++++++++
|
||||
include/linux/sched.h | 4 ++++
|
||||
kernel/signal.c | 37 +++++++++++++++++++++++++++++++++++--
|
||||
4 files changed, 61 insertions(+), 2 deletions(-)
|
||||
|
||||
Index: linux-3.2/arch/x86/include/asm/signal.h
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/x86/include/asm/signal.h
|
||||
+++ 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
|
||||
--- a/arch/x86/include/asm/signal.h
|
||||
+++ b/arch/x86/include/asm/signal.h
|
||||
@@ -31,6 +31,19 @@ typedef struct {
|
||||
unsigned long sig[_NSIG_WORDS];
|
||||
} sigset_t;
|
||||
|
@ -59,11 +60,11 @@ Index: linux-3.2/arch/x86/include/asm/signal.h
|
|||
#else
|
||||
/* Here we must cater to libcs that poke about in kernel headers. */
|
||||
|
||||
Index: linux-3.2/arch/x86/kernel/signal.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/x86/kernel/signal.c
|
||||
+++ linux-3.2/arch/x86/kernel/signal.c
|
||||
@@ -820,6 +820,15 @@ do_notify_resume(struct pt_regs *regs, v
|
||||
diff --git a/arch/x86/kernel/signal.c b/arch/x86/kernel/signal.c
|
||||
index 54ddaeb2..12c4d53 100644
|
||||
--- a/arch/x86/kernel/signal.c
|
||||
+++ b/arch/x86/kernel/signal.c
|
||||
@@ -820,6 +820,15 @@ do_notify_resume(struct pt_regs *regs, void *unused, __u32 thread_info_flags)
|
||||
mce_notify_process();
|
||||
#endif /* CONFIG_X86_64 && CONFIG_X86_MCE */
|
||||
|
||||
|
@ -79,10 +80,10 @@ Index: linux-3.2/arch/x86/kernel/signal.c
|
|||
/* deal with pending signal delivery */
|
||||
if (thread_info_flags & _TIF_SIGPENDING)
|
||||
do_signal(regs);
|
||||
Index: linux-3.2/include/linux/sched.h
|
||||
===================================================================
|
||||
--- linux-3.2.orig/include/linux/sched.h
|
||||
+++ linux-3.2/include/linux/sched.h
|
||||
diff --git a/include/linux/sched.h b/include/linux/sched.h
|
||||
index 7268acf..ed2b9f9 100644
|
||||
--- a/include/linux/sched.h
|
||||
+++ b/include/linux/sched.h
|
||||
@@ -1392,6 +1392,10 @@ struct task_struct {
|
||||
sigset_t blocked, real_blocked;
|
||||
sigset_t saved_sigmask; /* restored if set_restore_sigmask() was used */
|
||||
|
@ -94,11 +95,11 @@ Index: linux-3.2/include/linux/sched.h
|
|||
|
||||
unsigned long sas_ss_sp;
|
||||
size_t sas_ss_size;
|
||||
Index: linux-3.2/kernel/signal.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/kernel/signal.c
|
||||
+++ linux-3.2/kernel/signal.c
|
||||
@@ -1273,8 +1273,8 @@ int do_send_sig_info(int sig, struct sig
|
||||
diff --git a/kernel/signal.c b/kernel/signal.c
|
||||
index fc1a67a..c8b1bc1 100644
|
||||
--- a/kernel/signal.c
|
||||
+++ b/kernel/signal.c
|
||||
@@ -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,
|
||||
* that is why we also clear SIGNAL_UNKILLABLE.
|
||||
*/
|
||||
|
@ -109,7 +110,7 @@ Index: linux-3.2/kernel/signal.c
|
|||
{
|
||||
unsigned long int flags;
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -149,3 +150,6 @@ Index: linux-3.2/kernel/signal.c
|
|||
/*
|
||||
* Nuke all other threads in the group.
|
||||
*/
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,21 +1,22 @@
|
|||
From f105d10b4701b0b44c781bc0c37379f3468521a3 Mon Sep 17 00:00:00 2001
|
||||
From: Ingo Molnar <mingo@elte.hu>
|
||||
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.
|
||||
|
||||
Signed-off-by: Ingo Molnar <mingo@elte.hu>
|
||||
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
||||
|
||||
---
|
||||
include/asm-generic/cmpxchg-local.h | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
Index: linux-3.2/include/asm-generic/cmpxchg-local.h
|
||||
===================================================================
|
||||
--- linux-3.2.orig/include/asm-generic/cmpxchg-local.h
|
||||
+++ linux-3.2/include/asm-generic/cmpxchg-local.h
|
||||
@@ -21,7 +21,7 @@ static inline unsigned long __cmpxchg_lo
|
||||
diff --git a/include/asm-generic/cmpxchg-local.h b/include/asm-generic/cmpxchg-local.h
|
||||
index 2533fdd..d8d4c89 100644
|
||||
--- a/include/asm-generic/cmpxchg-local.h
|
||||
+++ b/include/asm-generic/cmpxchg-local.h
|
||||
@@ -21,7 +21,7 @@ static inline unsigned long __cmpxchg_local_generic(volatile void *ptr,
|
||||
if (size == 8 && sizeof(unsigned long) != 8)
|
||||
wrong_size_cmpxchg(ptr);
|
||||
|
||||
|
@ -24,7 +25,7 @@ Index: linux-3.2/include/asm-generic/cmpxchg-local.h
|
|||
switch (size) {
|
||||
case 1: prev = *(u8 *)ptr;
|
||||
if (prev == old)
|
||||
@@ -42,7 +42,7 @@ static inline unsigned long __cmpxchg_lo
|
||||
@@ -42,7 +42,7 @@ static inline unsigned long __cmpxchg_local_generic(volatile void *ptr,
|
||||
default:
|
||||
wrong_size_cmpxchg(ptr);
|
||||
}
|
||||
|
@ -33,7 +34,7 @@ Index: linux-3.2/include/asm-generic/cmpxchg-local.h
|
|||
return prev;
|
||||
}
|
||||
|
||||
@@ -55,11 +55,11 @@ static inline u64 __cmpxchg64_local_gene
|
||||
@@ -55,11 +55,11 @@ static inline u64 __cmpxchg64_local_generic(volatile void *ptr,
|
||||
u64 prev;
|
||||
unsigned long flags;
|
||||
|
||||
|
@ -47,3 +48,6 @@ Index: linux-3.2/include/asm-generic/cmpxchg-local.h
|
|||
return prev;
|
||||
}
|
||||
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,21 +1,21 @@
|
|||
From a908abba18460e32b36e6b183e77b6c7c1cceb94 Mon Sep 17 00:00:00 2001
|
||||
From: Ingo Molnar <mingo@elte.hu>
|
||||
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.
|
||||
|
||||
Signed-off-by: Ingo Molnar <mingo@elte.hu>
|
||||
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
||||
|
||||
---
|
||||
drivers/char/random.c | 9 +++++----
|
||||
1 file changed, 5 insertions(+), 4 deletions(-)
|
||||
|
||||
Index: linux-3.2/drivers/char/random.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/drivers/char/random.c
|
||||
+++ linux-3.2/drivers/char/random.c
|
||||
@@ -633,8 +633,11 @@ static void add_timer_randomness(struct
|
||||
diff --git a/drivers/char/random.c b/drivers/char/random.c
|
||||
index 6035ab8..786a856 100644
|
||||
--- a/drivers/char/random.c
|
||||
+++ b/drivers/char/random.c
|
||||
@@ -633,8 +633,11 @@ static void add_timer_randomness(struct timer_rand_state *state, unsigned num)
|
||||
preempt_disable();
|
||||
/* if over the trickle threshold, use only 1 in 4096 samples */
|
||||
if (input_pool.entropy_count > trickle_thresh &&
|
||||
|
@ -29,7 +29,7 @@ Index: linux-3.2/drivers/char/random.c
|
|||
|
||||
sample.jiffies = jiffies;
|
||||
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,
|
||||
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,
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,6 +1,8 @@
|
|||
From 31e34bf84003d53073f3fa91d53cd6ac31bfbe58 Mon Sep 17 00:00:00 2001
|
||||
From: Benedikt Spranger <b.spranger@linutronix.de>
|
||||
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.
|
||||
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: Thomas Gleixner <tglx@linutronix.de>
|
||||
|
||||
---
|
||||
arch/arm/mach-at91/at91rm9200_time.c | 2 ++
|
||||
arch/arm/mach-at91/at91sam926x_time.c | 6 +++++-
|
||||
2 files changed, 7 insertions(+), 1 deletion(-)
|
||||
|
||||
Index: linux-3.2/arch/arm/mach-at91/at91rm9200_time.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/arm/mach-at91/at91rm9200_time.c
|
||||
+++ linux-3.2/arch/arm/mach-at91/at91rm9200_time.c
|
||||
@@ -114,6 +114,7 @@ clkevt32k_mode(enum clock_event_mode mod
|
||||
diff --git a/arch/arm/mach-at91/at91rm9200_time.c b/arch/arm/mach-at91/at91rm9200_time.c
|
||||
index 1dd69c8..0666570 100644
|
||||
--- a/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 mode, struct clock_event_device *dev)
|
||||
last_crtr = read_CRTR();
|
||||
switch (mode) {
|
||||
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 */
|
||||
irqmask = AT91_ST_PITS;
|
||||
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;
|
||||
case CLOCK_EVT_MODE_SHUTDOWN:
|
||||
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:
|
||||
irqmask = 0;
|
||||
break;
|
||||
Index: linux-3.2/arch/arm/mach-at91/at91sam926x_time.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/arm/mach-at91/at91sam926x_time.c
|
||||
+++ 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
|
||||
--- a/arch/arm/mach-at91/at91sam926x_time.c
|
||||
+++ b/arch/arm/mach-at91/at91sam926x_time.c
|
||||
@@ -54,7 +54,7 @@ static struct clocksource pit_clk = {
|
||||
.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)
|
||||
*/
|
||||
@@ -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) {
|
||||
case CLOCK_EVT_MODE_PERIODIC:
|
||||
|
@ -57,7 +58,7 @@ Index: linux-3.2/arch/arm/mach-at91/at91sam926x_time.c
|
|||
/* update clocksource counter */
|
||||
pit_cnt += pit_cycle * PIT_PICNT(at91_sys_read(AT91_PIT_PIVR));
|
||||
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:
|
||||
/* disable irq, leaving the clocksource active */
|
||||
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;
|
||||
case CLOCK_EVT_MODE_RESUME:
|
||||
break;
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,22 +1,23 @@
|
|||
From b4217e96b0c71c84b8edbca7b99813b5f0f72033 Mon Sep 17 00:00:00 2001
|
||||
From: Benedikt Spranger <b.spranger@linutronix.de>
|
||||
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.
|
||||
Add a compile time selection to allow higher clock resulution.
|
||||
|
||||
Signed-off-by: Benedikt Spranger <b.spranger@linutronix.de>
|
||||
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
||||
|
||||
---
|
||||
drivers/clocksource/tcb_clksrc.c | 44 +++++++++++++++++++++++----------------
|
||||
drivers/misc/Kconfig | 11 +++++++--
|
||||
drivers/clocksource/tcb_clksrc.c | 44 ++++++++++++++++++++++----------------
|
||||
drivers/misc/Kconfig | 11 ++++++++--
|
||||
2 files changed, 35 insertions(+), 20 deletions(-)
|
||||
|
||||
Index: linux-3.2/drivers/clocksource/tcb_clksrc.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/drivers/clocksource/tcb_clksrc.c
|
||||
+++ 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
|
||||
--- a/drivers/clocksource/tcb_clksrc.c
|
||||
+++ b/drivers/clocksource/tcb_clksrc.c
|
||||
@@ -21,8 +21,7 @@
|
||||
* resolution better than 200 nsec).
|
||||
*
|
||||
|
@ -35,7 +36,7 @@ Index: linux-3.2/drivers/clocksource/tcb_clksrc.c
|
|||
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);
|
||||
}
|
||||
|
||||
|
@ -49,7 +50,7 @@ Index: linux-3.2/drivers/clocksource/tcb_clksrc.c
|
|||
static u32 timer_clock;
|
||||
|
||||
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:
|
||||
clk_enable(tcd->clk);
|
||||
|
||||
|
@ -64,7 +65,7 @@ Index: linux-3.2/drivers/clocksource/tcb_clksrc.c
|
|||
|
||||
/* Enable clock and interrupts on RC compare */
|
||||
__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:
|
||||
clk_enable(tcd->clk);
|
||||
|
||||
|
@ -73,7 +74,7 @@ Index: linux-3.2/drivers/clocksource/tcb_clksrc.c
|
|||
__raw_writel(timer_clock | ATMEL_TC_CPCSTOP
|
||||
| ATMEL_TC_WAVE | ATMEL_TC_WAVESEL_UP_AUTO,
|
||||
regs + ATMEL_TC_REG(2, CMR));
|
||||
@@ -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
|
||||
| CLOCK_EVT_FEAT_ONESHOT,
|
||||
.shift = 32,
|
||||
|
@ -97,7 +98,7 @@ Index: linux-3.2/drivers/clocksource/tcb_clksrc.c
|
|||
struct clk *t2_clk = tc->clk[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;
|
||||
tc_irqaction.dev_id = &clkevt;
|
||||
|
||||
|
@ -132,10 +133,10 @@ Index: linux-3.2/drivers/clocksource/tcb_clksrc.c
|
|||
return 0;
|
||||
}
|
||||
arch_initcall(tcb_clksrc_init);
|
||||
Index: linux-3.2/drivers/misc/Kconfig
|
||||
===================================================================
|
||||
--- linux-3.2.orig/drivers/misc/Kconfig
|
||||
+++ linux-3.2/drivers/misc/Kconfig
|
||||
diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig
|
||||
index 5664696..f3031a4 100644
|
||||
--- a/drivers/misc/Kconfig
|
||||
+++ b/drivers/misc/Kconfig
|
||||
@@ -97,8 +97,7 @@ config ATMEL_TCB_CLKSRC
|
||||
are combined to make a single 32-bit timer.
|
||||
|
||||
|
@ -161,3 +162,6 @@ Index: linux-3.2/drivers/misc/Kconfig
|
|||
config IBM_ASM
|
||||
tristate "Device driver for IBM RSA service processor"
|
||||
depends on X86 && PCI && INPUT && EXPERIMENTAL
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,21 +1,22 @@
|
|||
From 32a59ec7007ad587e8523ea3628b364c434d4c54 Mon Sep 17 00:00:00 2001
|
||||
From: Ingo Molnar <mingo@elte.hu>
|
||||
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.
|
||||
|
||||
Signed-off-by: Ingo Molnar <mingo@elte.hu>
|
||||
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
||||
|
||||
---
|
||||
drivers/net/ethernet/dec/tulip/tulip_core.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
Index: linux-3.2/drivers/net/ethernet/dec/tulip/tulip_core.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/drivers/net/ethernet/dec/tulip/tulip_core.c
|
||||
+++ linux-3.2/drivers/net/ethernet/dec/tulip/tulip_core.c
|
||||
@@ -1949,6 +1949,7 @@ static void __devexit tulip_remove_one (
|
||||
diff --git a/drivers/net/ethernet/dec/tulip/tulip_core.c b/drivers/net/ethernet/dec/tulip/tulip_core.c
|
||||
index 9656dd0..ef7df09 100644
|
||||
--- a/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 (struct pci_dev *pdev)
|
||||
pci_iounmap(pdev, tp->base_addr);
|
||||
free_netdev (dev);
|
||||
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_power_off (pdev, -1); */
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,22 +1,22 @@
|
|||
From 4d7e0a71990ab73749dfde4f4cd201cf1bdb0f45 Mon Sep 17 00:00:00 2001
|
||||
From: Ingo Molnar <mingo@elte.hu>
|
||||
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
|
||||
called in atomic context with netpoll.
|
||||
|
||||
Signed-off-by: Ingo Molnar <mingo@elte.hu>
|
||||
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
||||
|
||||
---
|
||||
drivers/net/ethernet/realtek/8139too.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
Index: linux-3.2/drivers/net/ethernet/realtek/8139too.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/drivers/net/ethernet/realtek/8139too.c
|
||||
+++ linux-3.2/drivers/net/ethernet/realtek/8139too.c
|
||||
@@ -2174,7 +2174,7 @@ static irqreturn_t rtl8139_interrupt (in
|
||||
diff --git a/drivers/net/ethernet/realtek/8139too.c b/drivers/net/ethernet/realtek/8139too.c
|
||||
index 4d6b254..004c054 100644
|
||||
--- a/drivers/net/ethernet/realtek/8139too.c
|
||||
+++ b/drivers/net/ethernet/realtek/8139too.c
|
||||
@@ -2174,7 +2174,7 @@ static irqreturn_t rtl8139_interrupt (int irq, void *dev_instance)
|
||||
*/
|
||||
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);
|
||||
enable_irq(dev->irq);
|
||||
}
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,6 +1,8 @@
|
|||
From 1c36d3306722a2042bd4dc26baf20393c42c5b22 Mon Sep 17 00:00:00 2001
|
||||
From: Darren Hart <dvhltc@us.ibm.com>
|
||||
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
|
||||
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>
|
||||
LKML-Reference: <4BF30793.5070300@us.ibm.com>
|
||||
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
||||
|
||||
---
|
||||
drivers/net/ethernet/ibm/ehea/ehea_main.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
Index: linux-3.2/drivers/net/ethernet/ibm/ehea/ehea_main.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/drivers/net/ethernet/ibm/ehea/ehea_main.c
|
||||
+++ linux-3.2/drivers/net/ethernet/ibm/ehea/ehea_main.c
|
||||
@@ -1304,7 +1304,7 @@ static int ehea_reg_interrupts(struct ne
|
||||
diff --git a/drivers/net/ethernet/ibm/ehea/ehea_main.c b/drivers/net/ethernet/ibm/ehea/ehea_main.c
|
||||
index bfeccbf..fddfaf1 100644
|
||||
--- a/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 net_device *dev)
|
||||
"%s-queue%d", dev->name, i);
|
||||
ret = ibmebus_request_irq(pr->eq->attr.ist1,
|
||||
ehea_recv_irq_handler,
|
||||
|
@ -51,3 +52,6 @@ Index: linux-3.2/drivers/net/ethernet/ibm/ehea/ehea_main.c
|
|||
pr);
|
||||
if (ret) {
|
||||
netdev_err(dev, "failed registering irq for ehea_queue port_res_nr:%d, ist=%X\n",
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,6 +1,8 @@
|
|||
From 2989477b9c1c1f9aa82a8db158ab3a03a4b7b2f5 Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
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
|
||||
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.
|
||||
|
||||
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
||||
|
||||
---
|
||||
drivers/net/ethernet/cadence/at91_ether.c | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
Index: linux-3.2/drivers/net/ethernet/cadence/at91_ether.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/drivers/net/ethernet/cadence/at91_ether.c
|
||||
+++ linux-3.2/drivers/net/ethernet/cadence/at91_ether.c
|
||||
@@ -200,7 +200,9 @@ static irqreturn_t at91ether_phy_interru
|
||||
diff --git a/drivers/net/ethernet/cadence/at91_ether.c b/drivers/net/ethernet/cadence/at91_ether.c
|
||||
index 56624d3..ad4dbea 100644
|
||||
--- a/drivers/net/ethernet/cadence/at91_ether.c
|
||||
+++ b/drivers/net/ethernet/cadence/at91_ether.c
|
||||
@@ -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 at91_private *lp = netdev_priv(dev);
|
||||
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
|
||||
* 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:
|
||||
disable_mdi();
|
||||
|
@ -40,7 +41,7 @@ Index: linux-3.2/drivers/net/ethernet/cadence/at91_ether.c
|
|||
|
||||
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 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);
|
||||
}
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -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>
|
||||
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>
|
||||
---
|
||||
|
@ -11,10 +12,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
|||
kernel/softirq.c | 4 ++--
|
||||
5 files changed, 11 insertions(+), 8 deletions(-)
|
||||
|
||||
Index: linux-3.2/arch/powerpc/kernel/idle.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/powerpc/kernel/idle.c
|
||||
+++ 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
|
||||
--- a/arch/powerpc/kernel/idle.c
|
||||
+++ b/arch/powerpc/kernel/idle.c
|
||||
@@ -95,7 +95,7 @@ void cpu_idle(void)
|
||||
ppc64_runlatch_on();
|
||||
tick_nohz_restart_sched_tick();
|
||||
|
@ -24,10 +25,10 @@ Index: linux-3.2/arch/powerpc/kernel/idle.c
|
|||
cpu_die();
|
||||
}
|
||||
schedule_preempt_disabled();
|
||||
Index: linux-3.2/arch/sparc/kernel/process_64.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/sparc/kernel/process_64.c
|
||||
+++ 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
|
||||
--- a/arch/sparc/kernel/process_64.c
|
||||
+++ b/arch/sparc/kernel/process_64.c
|
||||
@@ -104,7 +104,7 @@ void cpu_idle(void)
|
||||
|
||||
#ifdef CONFIG_HOTPLUG_CPU
|
||||
|
@ -37,10 +38,10 @@ Index: linux-3.2/arch/sparc/kernel/process_64.c
|
|||
cpu_play_dead();
|
||||
}
|
||||
#endif
|
||||
Index: linux-3.2/include/linux/preempt.h
|
||||
===================================================================
|
||||
--- linux-3.2.orig/include/linux/preempt.h
|
||||
+++ linux-3.2/include/linux/preempt.h
|
||||
diff --git a/include/linux/preempt.h b/include/linux/preempt.h
|
||||
index 58969b2..227b0f5 100644
|
||||
--- a/include/linux/preempt.h
|
||||
+++ b/include/linux/preempt.h
|
||||
@@ -48,12 +48,14 @@ do { \
|
||||
barrier(); \
|
||||
} 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() do { } while (0)
|
||||
|
||||
Index: linux-3.2/kernel/sched.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/kernel/sched.c
|
||||
+++ linux-3.2/kernel/sched.c
|
||||
diff --git a/kernel/sched.c b/kernel/sched.c
|
||||
index 465fd11..e35f01c 100644
|
||||
--- a/kernel/sched.c
|
||||
+++ b/kernel/sched.c
|
||||
@@ -4415,7 +4415,7 @@ need_resched:
|
||||
|
||||
post_schedule(rq);
|
||||
|
@ -96,10 +97,10 @@ Index: linux-3.2/kernel/sched.c
|
|||
|
||||
schedule();
|
||||
|
||||
Index: linux-3.2/kernel/softirq.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/kernel/softirq.c
|
||||
+++ linux-3.2/kernel/softirq.c
|
||||
diff --git a/kernel/softirq.c b/kernel/softirq.c
|
||||
index c9da2c8..a8becbf 100644
|
||||
--- a/kernel/softirq.c
|
||||
+++ b/kernel/softirq.c
|
||||
@@ -353,7 +353,7 @@ void irq_exit(void)
|
||||
if (idle_cpu(smp_processor_id()) && !in_interrupt() && !need_resched())
|
||||
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())
|
||||
__do_softirq();
|
||||
local_irq_enable();
|
||||
|
@ -118,3 +119,6 @@ Index: linux-3.2/kernel/softirq.c
|
|||
cond_resched();
|
||||
preempt_disable();
|
||||
rcu_note_context_switch((long)__bind_cpu);
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,13 +1,14 @@
|
|||
From 53e45a133e1f67b90e680878517ce10dc5c0d04b Mon Sep 17 00:00:00 2001
|
||||
From: Ingo Molnar <mingo@elte.hu>
|
||||
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
|
||||
the pagefault-disabled logic from the preempt count.
|
||||
|
||||
Signed-off-by: Ingo Molnar <mingo@elte.hu>
|
||||
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
||||
|
||||
---
|
||||
include/linux/sched.h | 1 +
|
||||
include/linux/uaccess.h | 33 +++------------------------------
|
||||
|
@ -15,10 +16,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
|||
mm/memory.c | 29 +++++++++++++++++++++++++++++
|
||||
4 files changed, 34 insertions(+), 30 deletions(-)
|
||||
|
||||
Index: linux-3.2/include/linux/sched.h
|
||||
===================================================================
|
||||
--- linux-3.2.orig/include/linux/sched.h
|
||||
+++ linux-3.2/include/linux/sched.h
|
||||
diff --git a/include/linux/sched.h b/include/linux/sched.h
|
||||
index ed2b9f9..bce86f9 100644
|
||||
--- a/include/linux/sched.h
|
||||
+++ b/include/linux/sched.h
|
||||
@@ -1435,6 +1435,7 @@ struct task_struct {
|
||||
/* mutex deadlock detection */
|
||||
struct mutex_waiter *blocked_on;
|
||||
|
@ -27,10 +28,10 @@ Index: linux-3.2/include/linux/sched.h
|
|||
#ifdef CONFIG_TRACE_IRQFLAGS
|
||||
unsigned int irq_events;
|
||||
unsigned long hardirq_enable_ip;
|
||||
Index: linux-3.2/include/linux/uaccess.h
|
||||
===================================================================
|
||||
--- linux-3.2.orig/include/linux/uaccess.h
|
||||
+++ linux-3.2/include/linux/uaccess.h
|
||||
diff --git a/include/linux/uaccess.h b/include/linux/uaccess.h
|
||||
index 5ca0951..9414a1b 100644
|
||||
--- a/include/linux/uaccess.h
|
||||
+++ b/include/linux/uaccess.h
|
||||
@@ -6,37 +6,10 @@
|
||||
|
||||
/*
|
||||
|
@ -72,11 +73,11 @@ Index: linux-3.2/include/linux/uaccess.h
|
|||
|
||||
#ifndef ARCH_HAS_NOCACHE_UACCESS
|
||||
|
||||
Index: linux-3.2/kernel/fork.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/kernel/fork.c
|
||||
+++ linux-3.2/kernel/fork.c
|
||||
@@ -1193,6 +1193,7 @@ static struct task_struct *copy_process(
|
||||
diff --git a/kernel/fork.c b/kernel/fork.c
|
||||
index d8aa0c7..a17bc75 100644
|
||||
--- a/kernel/fork.c
|
||||
+++ b/kernel/fork.c
|
||||
@@ -1196,6 +1196,7 @@ static struct task_struct *copy_process(unsigned long clone_flags,
|
||||
p->hardirq_context = 0;
|
||||
p->softirq_context = 0;
|
||||
#endif
|
||||
|
@ -84,11 +85,11 @@ Index: linux-3.2/kernel/fork.c
|
|||
#ifdef CONFIG_LOCKDEP
|
||||
p->lockdep_depth = 0; /* no locks held yet */
|
||||
p->curr_chain_key = 0;
|
||||
Index: linux-3.2/mm/memory.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/mm/memory.c
|
||||
+++ linux-3.2/mm/memory.c
|
||||
@@ -3436,6 +3436,35 @@ unlock:
|
||||
diff --git a/mm/memory.c b/mm/memory.c
|
||||
index 1b1ca17..454ad3f 100644
|
||||
--- a/mm/memory.c
|
||||
+++ b/mm/memory.c
|
||||
@@ -3444,6 +3444,35 @@ unlock:
|
||||
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
|
||||
*/
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -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>
|
||||
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.
|
||||
|
||||
|
@ -30,11 +32,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
|||
arch/xtensa/mm/fault.c | 2 +-
|
||||
22 files changed, 27 insertions(+), 24 deletions(-)
|
||||
|
||||
Index: linux-3.2/arch/alpha/mm/fault.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/alpha/mm/fault.c
|
||||
+++ linux-3.2/arch/alpha/mm/fault.c
|
||||
@@ -107,7 +107,7 @@ do_page_fault(unsigned long address, uns
|
||||
diff --git a/arch/alpha/mm/fault.c b/arch/alpha/mm/fault.c
|
||||
index fadd5f8..6d73e1b 100644
|
||||
--- a/arch/alpha/mm/fault.c
|
||||
+++ b/arch/alpha/mm/fault.c
|
||||
@@ -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,
|
||||
we must not take the fault. */
|
||||
|
@ -43,11 +45,11 @@ Index: linux-3.2/arch/alpha/mm/fault.c
|
|||
goto no_context;
|
||||
|
||||
#ifdef CONFIG_ALPHA_LARGE_VMALLOC
|
||||
Index: linux-3.2/arch/arm/mm/fault.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/arm/mm/fault.c
|
||||
+++ linux-3.2/arch/arm/mm/fault.c
|
||||
@@ -294,7 +294,7 @@ do_page_fault(unsigned long addr, unsign
|
||||
diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c
|
||||
index aa33949..c8dd303 100644
|
||||
--- a/arch/arm/mm/fault.c
|
||||
+++ b/arch/arm/mm/fault.c
|
||||
@@ -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
|
||||
* context, we must not take the fault..
|
||||
*/
|
||||
|
@ -56,11 +58,11 @@ Index: linux-3.2/arch/arm/mm/fault.c
|
|||
goto no_context;
|
||||
|
||||
/*
|
||||
Index: linux-3.2/arch/avr32/mm/fault.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/avr32/mm/fault.c
|
||||
+++ linux-3.2/arch/avr32/mm/fault.c
|
||||
@@ -81,7 +81,8 @@ asmlinkage void do_page_fault(unsigned l
|
||||
diff --git a/arch/avr32/mm/fault.c b/arch/avr32/mm/fault.c
|
||||
index f7040a1..623a027 100644
|
||||
--- a/arch/avr32/mm/fault.c
|
||||
+++ b/arch/avr32/mm/fault.c
|
||||
@@ -81,7 +81,8 @@ asmlinkage void do_page_fault(unsigned long ecr, struct pt_regs *regs)
|
||||
* If we're in an interrupt or have no user context, we must
|
||||
* not take the fault...
|
||||
*/
|
||||
|
@ -70,11 +72,11 @@ Index: linux-3.2/arch/avr32/mm/fault.c
|
|||
goto no_context;
|
||||
|
||||
local_irq_enable();
|
||||
Index: linux-3.2/arch/cris/mm/fault.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/cris/mm/fault.c
|
||||
+++ linux-3.2/arch/cris/mm/fault.c
|
||||
@@ -111,7 +111,7 @@ do_page_fault(unsigned long address, str
|
||||
diff --git a/arch/cris/mm/fault.c b/arch/cris/mm/fault.c
|
||||
index 9dcac8e..2b2c292 100644
|
||||
--- a/arch/cris/mm/fault.c
|
||||
+++ b/arch/cris/mm/fault.c
|
||||
@@ -111,7 +111,7 @@ do_page_fault(unsigned long address, struct pt_regs *regs,
|
||||
* user context, we must not take the fault.
|
||||
*/
|
||||
|
||||
|
@ -83,11 +85,11 @@ Index: linux-3.2/arch/cris/mm/fault.c
|
|||
goto no_context;
|
||||
|
||||
down_read(&mm->mmap_sem);
|
||||
Index: linux-3.2/arch/frv/mm/fault.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/frv/mm/fault.c
|
||||
+++ linux-3.2/arch/frv/mm/fault.c
|
||||
@@ -79,7 +79,7 @@ asmlinkage void do_page_fault(int datamm
|
||||
diff --git a/arch/frv/mm/fault.c b/arch/frv/mm/fault.c
|
||||
index a325d57..3da8ec7 100644
|
||||
--- a/arch/frv/mm/fault.c
|
||||
+++ b/arch/frv/mm/fault.c
|
||||
@@ -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
|
||||
* context, we must not take the fault..
|
||||
*/
|
||||
|
@ -96,11 +98,11 @@ Index: linux-3.2/arch/frv/mm/fault.c
|
|||
goto no_context;
|
||||
|
||||
down_read(&mm->mmap_sem);
|
||||
Index: linux-3.2/arch/ia64/mm/fault.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/ia64/mm/fault.c
|
||||
+++ linux-3.2/arch/ia64/mm/fault.c
|
||||
@@ -89,7 +89,7 @@ ia64_do_page_fault (unsigned long addres
|
||||
diff --git a/arch/ia64/mm/fault.c b/arch/ia64/mm/fault.c
|
||||
index 20b3593..2a4e44f 100644
|
||||
--- a/arch/ia64/mm/fault.c
|
||||
+++ b/arch/ia64/mm/fault.c
|
||||
@@ -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..
|
||||
*/
|
||||
|
@ -109,11 +111,11 @@ Index: linux-3.2/arch/ia64/mm/fault.c
|
|||
goto no_context;
|
||||
|
||||
#ifdef CONFIG_VIRTUAL_MEM_MAP
|
||||
Index: linux-3.2/arch/m32r/mm/fault.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/m32r/mm/fault.c
|
||||
+++ linux-3.2/arch/m32r/mm/fault.c
|
||||
@@ -115,7 +115,7 @@ asmlinkage void do_page_fault(struct pt_
|
||||
diff --git a/arch/m32r/mm/fault.c b/arch/m32r/mm/fault.c
|
||||
index 2c9aeb4..16fa2c7 100644
|
||||
--- a/arch/m32r/mm/fault.c
|
||||
+++ b/arch/m32r/mm/fault.c
|
||||
@@ -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
|
||||
* 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;
|
||||
|
||||
/* When running in the kernel we expect faults to occur only to
|
||||
Index: linux-3.2/arch/m68k/mm/fault.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/m68k/mm/fault.c
|
||||
+++ linux-3.2/arch/m68k/mm/fault.c
|
||||
@@ -85,7 +85,7 @@ int do_page_fault(struct pt_regs *regs,
|
||||
diff --git a/arch/m68k/mm/fault.c b/arch/m68k/mm/fault.c
|
||||
index 2db6099..238ffc0 100644
|
||||
--- a/arch/m68k/mm/fault.c
|
||||
+++ b/arch/m68k/mm/fault.c
|
||||
@@ -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
|
||||
* context, we must not take the fault..
|
||||
*/
|
||||
|
@ -135,11 +137,11 @@ Index: linux-3.2/arch/m68k/mm/fault.c
|
|||
goto no_context;
|
||||
|
||||
down_read(&mm->mmap_sem);
|
||||
Index: linux-3.2/arch/microblaze/mm/fault.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/microblaze/mm/fault.c
|
||||
+++ linux-3.2/arch/microblaze/mm/fault.c
|
||||
@@ -107,7 +107,7 @@ void do_page_fault(struct pt_regs *regs,
|
||||
diff --git a/arch/microblaze/mm/fault.c b/arch/microblaze/mm/fault.c
|
||||
index ae97d2c..c3f219c 100644
|
||||
--- a/arch/microblaze/mm/fault.c
|
||||
+++ b/arch/microblaze/mm/fault.c
|
||||
@@ -107,7 +107,7 @@ void do_page_fault(struct pt_regs *regs, unsigned long address,
|
||||
if ((error_code & 0x13) == 0x13 || (error_code & 0x11) == 0x11)
|
||||
is_write = 0;
|
||||
|
||||
|
@ -148,11 +150,11 @@ Index: linux-3.2/arch/microblaze/mm/fault.c
|
|||
if (kernel_mode(regs))
|
||||
goto bad_area_nosemaphore;
|
||||
|
||||
Index: linux-3.2/arch/mips/mm/fault.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/mips/mm/fault.c
|
||||
+++ linux-3.2/arch/mips/mm/fault.c
|
||||
@@ -88,7 +88,7 @@ asmlinkage void __kprobes do_page_fault(
|
||||
diff --git a/arch/mips/mm/fault.c b/arch/mips/mm/fault.c
|
||||
index 937cf33..ce7e75e 100644
|
||||
--- a/arch/mips/mm/fault.c
|
||||
+++ b/arch/mips/mm/fault.c
|
||||
@@ -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
|
||||
* context, we must not take the fault..
|
||||
*/
|
||||
|
@ -161,11 +163,11 @@ Index: linux-3.2/arch/mips/mm/fault.c
|
|||
goto bad_area_nosemaphore;
|
||||
|
||||
down_read(&mm->mmap_sem);
|
||||
Index: linux-3.2/arch/mn10300/mm/fault.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/mn10300/mm/fault.c
|
||||
+++ linux-3.2/arch/mn10300/mm/fault.c
|
||||
@@ -168,7 +168,7 @@ asmlinkage void do_page_fault(struct pt_
|
||||
diff --git a/arch/mn10300/mm/fault.c b/arch/mn10300/mm/fault.c
|
||||
index 0945409..53c8d16 100644
|
||||
--- a/arch/mn10300/mm/fault.c
|
||||
+++ b/arch/mn10300/mm/fault.c
|
||||
@@ -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
|
||||
* context, we must not take the fault..
|
||||
*/
|
||||
|
@ -174,11 +176,11 @@ Index: linux-3.2/arch/mn10300/mm/fault.c
|
|||
goto no_context;
|
||||
|
||||
down_read(&mm->mmap_sem);
|
||||
Index: linux-3.2/arch/parisc/mm/fault.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/parisc/mm/fault.c
|
||||
+++ linux-3.2/arch/parisc/mm/fault.c
|
||||
@@ -176,7 +176,7 @@ void do_page_fault(struct pt_regs *regs,
|
||||
diff --git a/arch/parisc/mm/fault.c b/arch/parisc/mm/fault.c
|
||||
index 18162ce..09ecc8a 100644
|
||||
--- a/arch/parisc/mm/fault.c
|
||||
+++ b/arch/parisc/mm/fault.c
|
||||
@@ -176,7 +176,7 @@ void do_page_fault(struct pt_regs *regs, unsigned long code,
|
||||
unsigned long acc_type;
|
||||
int fault;
|
||||
|
||||
|
@ -187,11 +189,11 @@ Index: linux-3.2/arch/parisc/mm/fault.c
|
|||
goto no_context;
|
||||
|
||||
down_read(&mm->mmap_sem);
|
||||
Index: linux-3.2/arch/powerpc/mm/fault.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/powerpc/mm/fault.c
|
||||
+++ linux-3.2/arch/powerpc/mm/fault.c
|
||||
@@ -162,7 +162,7 @@ int __kprobes do_page_fault(struct pt_re
|
||||
diff --git a/arch/powerpc/mm/fault.c b/arch/powerpc/mm/fault.c
|
||||
index 5efe8c9..17f8bbe 100644
|
||||
--- a/arch/powerpc/mm/fault.c
|
||||
+++ b/arch/powerpc/mm/fault.c
|
||||
@@ -162,7 +162,7 @@ int __kprobes do_page_fault(struct pt_regs *regs, unsigned long address,
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -200,11 +202,11 @@ Index: linux-3.2/arch/powerpc/mm/fault.c
|
|||
if (!user_mode(regs))
|
||||
return SIGSEGV;
|
||||
/* in_atomic() in user mode is really bad,
|
||||
Index: linux-3.2/arch/s390/mm/fault.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/s390/mm/fault.c
|
||||
+++ linux-3.2/arch/s390/mm/fault.c
|
||||
@@ -295,7 +295,8 @@ static inline int do_exception(struct pt
|
||||
diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c
|
||||
index c7f0fbc..0d60168 100644
|
||||
--- a/arch/s390/mm/fault.c
|
||||
+++ b/arch/s390/mm/fault.c
|
||||
@@ -294,7 +294,8 @@ static inline int do_exception(struct pt_regs *regs, int access,
|
||||
* user context.
|
||||
*/
|
||||
fault = VM_FAULT_BADCONTEXT;
|
||||
|
@ -214,7 +216,7 @@ Index: linux-3.2/arch/s390/mm/fault.c
|
|||
goto out;
|
||||
|
||||
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 vm_area_struct *vma;
|
||||
|
||||
|
@ -224,11 +226,11 @@ Index: linux-3.2/arch/s390/mm/fault.c
|
|||
goto no_context;
|
||||
|
||||
down_read(&mm->mmap_sem);
|
||||
Index: linux-3.2/arch/score/mm/fault.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/score/mm/fault.c
|
||||
+++ linux-3.2/arch/score/mm/fault.c
|
||||
@@ -72,7 +72,7 @@ asmlinkage void do_page_fault(struct pt_
|
||||
diff --git a/arch/score/mm/fault.c b/arch/score/mm/fault.c
|
||||
index 47b600e..4c12824 100644
|
||||
--- a/arch/score/mm/fault.c
|
||||
+++ b/arch/score/mm/fault.c
|
||||
@@ -72,7 +72,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long write,
|
||||
* If we're in an interrupt or have no user
|
||||
* context, we must not take the fault..
|
||||
*/
|
||||
|
@ -237,11 +239,11 @@ Index: linux-3.2/arch/score/mm/fault.c
|
|||
goto bad_area_nosemaphore;
|
||||
|
||||
down_read(&mm->mmap_sem);
|
||||
Index: linux-3.2/arch/sh/mm/fault_32.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/sh/mm/fault_32.c
|
||||
+++ linux-3.2/arch/sh/mm/fault_32.c
|
||||
@@ -166,7 +166,7 @@ asmlinkage void __kprobes do_page_fault(
|
||||
diff --git a/arch/sh/mm/fault_32.c b/arch/sh/mm/fault_32.c
|
||||
index 7bebd04..a67ac56 100644
|
||||
--- a/arch/sh/mm/fault_32.c
|
||||
+++ b/arch/sh/mm/fault_32.c
|
||||
@@ -166,7 +166,7 @@ asmlinkage void __kprobes do_page_fault(struct pt_regs *regs,
|
||||
* If we're in an interrupt, have no user context or are running
|
||||
* in an atomic region then we must not take the fault:
|
||||
*/
|
||||
|
@ -250,11 +252,11 @@ Index: linux-3.2/arch/sh/mm/fault_32.c
|
|||
goto no_context;
|
||||
|
||||
down_read(&mm->mmap_sem);
|
||||
Index: linux-3.2/arch/sparc/mm/fault_32.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/sparc/mm/fault_32.c
|
||||
+++ linux-3.2/arch/sparc/mm/fault_32.c
|
||||
@@ -247,8 +247,8 @@ asmlinkage void do_sparc_fault(struct pt
|
||||
diff --git a/arch/sparc/mm/fault_32.c b/arch/sparc/mm/fault_32.c
|
||||
index 8023fd7..e0742c1 100644
|
||||
--- a/arch/sparc/mm/fault_32.c
|
||||
+++ b/arch/sparc/mm/fault_32.c
|
||||
@@ -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
|
||||
* 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);
|
||||
|
||||
Index: linux-3.2/arch/sparc/mm/fault_64.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/sparc/mm/fault_64.c
|
||||
+++ linux-3.2/arch/sparc/mm/fault_64.c
|
||||
@@ -322,7 +322,7 @@ asmlinkage void __kprobes do_sparc64_fau
|
||||
diff --git a/arch/sparc/mm/fault_64.c b/arch/sparc/mm/fault_64.c
|
||||
index 504c062..9d691a5 100644
|
||||
--- a/arch/sparc/mm/fault_64.c
|
||||
+++ b/arch/sparc/mm/fault_64.c
|
||||
@@ -322,7 +322,7 @@ asmlinkage void __kprobes do_sparc64_fault(struct pt_regs *regs)
|
||||
* If we're in an interrupt or have no user
|
||||
* context, we must not take the fault..
|
||||
*/
|
||||
|
@ -278,11 +280,11 @@ Index: linux-3.2/arch/sparc/mm/fault_64.c
|
|||
goto intr_or_no_mm;
|
||||
|
||||
perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address);
|
||||
Index: linux-3.2/arch/tile/mm/fault.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/tile/mm/fault.c
|
||||
+++ linux-3.2/arch/tile/mm/fault.c
|
||||
@@ -346,7 +346,7 @@ static int handle_page_fault(struct pt_r
|
||||
diff --git a/arch/tile/mm/fault.c b/arch/tile/mm/fault.c
|
||||
index 25b7b90..ecdb016 100644
|
||||
--- a/arch/tile/mm/fault.c
|
||||
+++ b/arch/tile/mm/fault.c
|
||||
@@ -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
|
||||
* 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 */
|
||||
goto bad_area_nosemaphore;
|
||||
}
|
||||
Index: linux-3.2/arch/um/kernel/trap.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/um/kernel/trap.c
|
||||
+++ linux-3.2/arch/um/kernel/trap.c
|
||||
@@ -37,7 +37,7 @@ int handle_page_fault(unsigned long addr
|
||||
diff --git a/arch/um/kernel/trap.c b/arch/um/kernel/trap.c
|
||||
index dafc947..a283400 100644
|
||||
--- a/arch/um/kernel/trap.c
|
||||
+++ b/arch/um/kernel/trap.c
|
||||
@@ -37,7 +37,7 @@ int handle_page_fault(unsigned long address, unsigned long ip,
|
||||
* If the fault was during atomic operation, don't take the fault, just
|
||||
* fail.
|
||||
*/
|
||||
|
@ -304,11 +306,11 @@ Index: linux-3.2/arch/um/kernel/trap.c
|
|||
goto out_nosemaphore;
|
||||
|
||||
down_read(&mm->mmap_sem);
|
||||
Index: linux-3.2/arch/x86/mm/fault.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/x86/mm/fault.c
|
||||
+++ linux-3.2/arch/x86/mm/fault.c
|
||||
@@ -1084,7 +1084,7 @@ do_page_fault(struct pt_regs *regs, unsi
|
||||
diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c
|
||||
index 5db0490..191015f 100644
|
||||
--- a/arch/x86/mm/fault.c
|
||||
+++ b/arch/x86/mm/fault.c
|
||||
@@ -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
|
||||
* 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);
|
||||
return;
|
||||
}
|
||||
Index: linux-3.2/arch/xtensa/mm/fault.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/xtensa/mm/fault.c
|
||||
+++ 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
|
||||
--- a/arch/xtensa/mm/fault.c
|
||||
+++ b/arch/xtensa/mm/fault.c
|
||||
@@ -57,7 +57,7 @@ void do_page_fault(struct pt_regs *regs)
|
||||
/* If we're in an interrupt or have no user
|
||||
* context, we must not take the fault..
|
||||
|
@ -330,3 +332,6 @@ Index: linux-3.2/arch/xtensa/mm/fault.c
|
|||
bad_page_fault(regs, address, SIGSEGV);
|
||||
return;
|
||||
}
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -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>
|
||||
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
|
||||
to remove the need for current->pagefault_disabled on !-rt kernels.
|
||||
|
@ -34,11 +35,11 @@ Link: http://lkml.kernel.org/n/tip-3yy517m8zsi9fpsf14xfaqkw@git.kernel.org
|
|||
kernel/fork.c | 2 ++
|
||||
24 files changed, 41 insertions(+), 26 deletions(-)
|
||||
|
||||
Index: linux-3.2/arch/alpha/mm/fault.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/alpha/mm/fault.c
|
||||
+++ linux-3.2/arch/alpha/mm/fault.c
|
||||
@@ -107,7 +107,7 @@ do_page_fault(unsigned long address, uns
|
||||
diff --git a/arch/alpha/mm/fault.c b/arch/alpha/mm/fault.c
|
||||
index 6d73e1b..4a0a0af 100644
|
||||
--- a/arch/alpha/mm/fault.c
|
||||
+++ b/arch/alpha/mm/fault.c
|
||||
@@ -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,
|
||||
we must not take the fault. */
|
||||
|
@ -47,11 +48,11 @@ Index: linux-3.2/arch/alpha/mm/fault.c
|
|||
goto no_context;
|
||||
|
||||
#ifdef CONFIG_ALPHA_LARGE_VMALLOC
|
||||
Index: linux-3.2/arch/arm/mm/fault.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/arm/mm/fault.c
|
||||
+++ linux-3.2/arch/arm/mm/fault.c
|
||||
@@ -294,7 +294,7 @@ do_page_fault(unsigned long addr, unsign
|
||||
diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c
|
||||
index c8dd303..d717bd3 100644
|
||||
--- a/arch/arm/mm/fault.c
|
||||
+++ b/arch/arm/mm/fault.c
|
||||
@@ -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
|
||||
* context, we must not take the fault..
|
||||
*/
|
||||
|
@ -60,11 +61,11 @@ Index: linux-3.2/arch/arm/mm/fault.c
|
|||
goto no_context;
|
||||
|
||||
/*
|
||||
Index: linux-3.2/arch/avr32/mm/fault.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/avr32/mm/fault.c
|
||||
+++ linux-3.2/arch/avr32/mm/fault.c
|
||||
@@ -81,8 +81,7 @@ asmlinkage void do_page_fault(unsigned l
|
||||
diff --git a/arch/avr32/mm/fault.c b/arch/avr32/mm/fault.c
|
||||
index 623a027..155ad8d 100644
|
||||
--- a/arch/avr32/mm/fault.c
|
||||
+++ b/arch/avr32/mm/fault.c
|
||||
@@ -81,8 +81,7 @@ asmlinkage void do_page_fault(unsigned long ecr, struct pt_regs *regs)
|
||||
* If we're in an interrupt or have no user context, we must
|
||||
* not take the fault...
|
||||
*/
|
||||
|
@ -74,11 +75,11 @@ Index: linux-3.2/arch/avr32/mm/fault.c
|
|||
goto no_context;
|
||||
|
||||
local_irq_enable();
|
||||
Index: linux-3.2/arch/cris/mm/fault.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/cris/mm/fault.c
|
||||
+++ linux-3.2/arch/cris/mm/fault.c
|
||||
@@ -111,7 +111,7 @@ do_page_fault(unsigned long address, str
|
||||
diff --git a/arch/cris/mm/fault.c b/arch/cris/mm/fault.c
|
||||
index 2b2c292..ba9cfbe 100644
|
||||
--- a/arch/cris/mm/fault.c
|
||||
+++ b/arch/cris/mm/fault.c
|
||||
@@ -111,7 +111,7 @@ do_page_fault(unsigned long address, struct pt_regs *regs,
|
||||
* user context, we must not take the fault.
|
||||
*/
|
||||
|
||||
|
@ -87,11 +88,11 @@ Index: linux-3.2/arch/cris/mm/fault.c
|
|||
goto no_context;
|
||||
|
||||
down_read(&mm->mmap_sem);
|
||||
Index: linux-3.2/arch/frv/mm/fault.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/frv/mm/fault.c
|
||||
+++ linux-3.2/arch/frv/mm/fault.c
|
||||
@@ -79,7 +79,7 @@ asmlinkage void do_page_fault(int datamm
|
||||
diff --git a/arch/frv/mm/fault.c b/arch/frv/mm/fault.c
|
||||
index 3da8ec7..a9ce0f0 100644
|
||||
--- a/arch/frv/mm/fault.c
|
||||
+++ b/arch/frv/mm/fault.c
|
||||
@@ -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
|
||||
* context, we must not take the fault..
|
||||
*/
|
||||
|
@ -100,11 +101,11 @@ Index: linux-3.2/arch/frv/mm/fault.c
|
|||
goto no_context;
|
||||
|
||||
down_read(&mm->mmap_sem);
|
||||
Index: linux-3.2/arch/ia64/mm/fault.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/ia64/mm/fault.c
|
||||
+++ linux-3.2/arch/ia64/mm/fault.c
|
||||
@@ -89,7 +89,7 @@ ia64_do_page_fault (unsigned long addres
|
||||
diff --git a/arch/ia64/mm/fault.c b/arch/ia64/mm/fault.c
|
||||
index 2a4e44f..05946c2 100644
|
||||
--- a/arch/ia64/mm/fault.c
|
||||
+++ b/arch/ia64/mm/fault.c
|
||||
@@ -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..
|
||||
*/
|
||||
|
@ -113,11 +114,11 @@ Index: linux-3.2/arch/ia64/mm/fault.c
|
|||
goto no_context;
|
||||
|
||||
#ifdef CONFIG_VIRTUAL_MEM_MAP
|
||||
Index: linux-3.2/arch/m32r/mm/fault.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/m32r/mm/fault.c
|
||||
+++ linux-3.2/arch/m32r/mm/fault.c
|
||||
@@ -115,7 +115,7 @@ asmlinkage void do_page_fault(struct pt_
|
||||
diff --git a/arch/m32r/mm/fault.c b/arch/m32r/mm/fault.c
|
||||
index 16fa2c7..6d763f6 100644
|
||||
--- a/arch/m32r/mm/fault.c
|
||||
+++ b/arch/m32r/mm/fault.c
|
||||
@@ -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
|
||||
* 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;
|
||||
|
||||
/* When running in the kernel we expect faults to occur only to
|
||||
Index: linux-3.2/arch/m68k/mm/fault.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/m68k/mm/fault.c
|
||||
+++ linux-3.2/arch/m68k/mm/fault.c
|
||||
@@ -85,7 +85,7 @@ int do_page_fault(struct pt_regs *regs,
|
||||
diff --git a/arch/m68k/mm/fault.c b/arch/m68k/mm/fault.c
|
||||
index 238ffc0..74fe559 100644
|
||||
--- a/arch/m68k/mm/fault.c
|
||||
+++ b/arch/m68k/mm/fault.c
|
||||
@@ -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
|
||||
* context, we must not take the fault..
|
||||
*/
|
||||
|
@ -139,11 +140,11 @@ Index: linux-3.2/arch/m68k/mm/fault.c
|
|||
goto no_context;
|
||||
|
||||
down_read(&mm->mmap_sem);
|
||||
Index: linux-3.2/arch/microblaze/mm/fault.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/microblaze/mm/fault.c
|
||||
+++ linux-3.2/arch/microblaze/mm/fault.c
|
||||
@@ -107,7 +107,7 @@ void do_page_fault(struct pt_regs *regs,
|
||||
diff --git a/arch/microblaze/mm/fault.c b/arch/microblaze/mm/fault.c
|
||||
index c3f219c..4cdd84d 100644
|
||||
--- a/arch/microblaze/mm/fault.c
|
||||
+++ b/arch/microblaze/mm/fault.c
|
||||
@@ -107,7 +107,7 @@ void do_page_fault(struct pt_regs *regs, unsigned long address,
|
||||
if ((error_code & 0x13) == 0x13 || (error_code & 0x11) == 0x11)
|
||||
is_write = 0;
|
||||
|
||||
|
@ -152,11 +153,11 @@ Index: linux-3.2/arch/microblaze/mm/fault.c
|
|||
if (kernel_mode(regs))
|
||||
goto bad_area_nosemaphore;
|
||||
|
||||
Index: linux-3.2/arch/mips/mm/fault.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/mips/mm/fault.c
|
||||
+++ linux-3.2/arch/mips/mm/fault.c
|
||||
@@ -88,7 +88,7 @@ asmlinkage void __kprobes do_page_fault(
|
||||
diff --git a/arch/mips/mm/fault.c b/arch/mips/mm/fault.c
|
||||
index ce7e75e..7ade72b 100644
|
||||
--- a/arch/mips/mm/fault.c
|
||||
+++ b/arch/mips/mm/fault.c
|
||||
@@ -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
|
||||
* context, we must not take the fault..
|
||||
*/
|
||||
|
@ -165,11 +166,11 @@ Index: linux-3.2/arch/mips/mm/fault.c
|
|||
goto bad_area_nosemaphore;
|
||||
|
||||
down_read(&mm->mmap_sem);
|
||||
Index: linux-3.2/arch/mn10300/mm/fault.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/mn10300/mm/fault.c
|
||||
+++ linux-3.2/arch/mn10300/mm/fault.c
|
||||
@@ -168,7 +168,7 @@ asmlinkage void do_page_fault(struct pt_
|
||||
diff --git a/arch/mn10300/mm/fault.c b/arch/mn10300/mm/fault.c
|
||||
index 53c8d16..2fea01c 100644
|
||||
--- a/arch/mn10300/mm/fault.c
|
||||
+++ b/arch/mn10300/mm/fault.c
|
||||
@@ -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
|
||||
* context, we must not take the fault..
|
||||
*/
|
||||
|
@ -178,11 +179,11 @@ Index: linux-3.2/arch/mn10300/mm/fault.c
|
|||
goto no_context;
|
||||
|
||||
down_read(&mm->mmap_sem);
|
||||
Index: linux-3.2/arch/parisc/mm/fault.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/parisc/mm/fault.c
|
||||
+++ linux-3.2/arch/parisc/mm/fault.c
|
||||
@@ -176,7 +176,7 @@ void do_page_fault(struct pt_regs *regs,
|
||||
diff --git a/arch/parisc/mm/fault.c b/arch/parisc/mm/fault.c
|
||||
index 09ecc8a..df22f39 100644
|
||||
--- a/arch/parisc/mm/fault.c
|
||||
+++ b/arch/parisc/mm/fault.c
|
||||
@@ -176,7 +176,7 @@ void do_page_fault(struct pt_regs *regs, unsigned long code,
|
||||
unsigned long acc_type;
|
||||
int fault;
|
||||
|
||||
|
@ -191,11 +192,11 @@ Index: linux-3.2/arch/parisc/mm/fault.c
|
|||
goto no_context;
|
||||
|
||||
down_read(&mm->mmap_sem);
|
||||
Index: linux-3.2/arch/powerpc/mm/fault.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/powerpc/mm/fault.c
|
||||
+++ linux-3.2/arch/powerpc/mm/fault.c
|
||||
@@ -162,7 +162,7 @@ int __kprobes do_page_fault(struct pt_re
|
||||
diff --git a/arch/powerpc/mm/fault.c b/arch/powerpc/mm/fault.c
|
||||
index 17f8bbe..94bedd4 100644
|
||||
--- a/arch/powerpc/mm/fault.c
|
||||
+++ b/arch/powerpc/mm/fault.c
|
||||
@@ -162,7 +162,7 @@ int __kprobes do_page_fault(struct pt_regs *regs, unsigned long address,
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -204,11 +205,11 @@ Index: linux-3.2/arch/powerpc/mm/fault.c
|
|||
if (!user_mode(regs))
|
||||
return SIGSEGV;
|
||||
/* in_atomic() in user mode is really bad,
|
||||
Index: linux-3.2/arch/s390/mm/fault.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/s390/mm/fault.c
|
||||
+++ linux-3.2/arch/s390/mm/fault.c
|
||||
@@ -295,8 +295,8 @@ static inline int do_exception(struct pt
|
||||
diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c
|
||||
index 0d60168..a68d836 100644
|
||||
--- a/arch/s390/mm/fault.c
|
||||
+++ b/arch/s390/mm/fault.c
|
||||
@@ -294,8 +294,8 @@ static inline int do_exception(struct pt_regs *regs, int access,
|
||||
* user context.
|
||||
*/
|
||||
fault = VM_FAULT_BADCONTEXT;
|
||||
|
@ -219,7 +220,7 @@ Index: linux-3.2/arch/s390/mm/fault.c
|
|||
goto out;
|
||||
|
||||
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 vm_area_struct *vma;
|
||||
|
||||
|
@ -230,11 +231,11 @@ Index: linux-3.2/arch/s390/mm/fault.c
|
|||
goto no_context;
|
||||
|
||||
down_read(&mm->mmap_sem);
|
||||
Index: linux-3.2/arch/score/mm/fault.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/score/mm/fault.c
|
||||
+++ linux-3.2/arch/score/mm/fault.c
|
||||
@@ -72,7 +72,7 @@ asmlinkage void do_page_fault(struct pt_
|
||||
diff --git a/arch/score/mm/fault.c b/arch/score/mm/fault.c
|
||||
index 4c12824..59fccbe 100644
|
||||
--- a/arch/score/mm/fault.c
|
||||
+++ b/arch/score/mm/fault.c
|
||||
@@ -72,7 +72,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long write,
|
||||
* If we're in an interrupt or have no user
|
||||
* context, we must not take the fault..
|
||||
*/
|
||||
|
@ -243,11 +244,11 @@ Index: linux-3.2/arch/score/mm/fault.c
|
|||
goto bad_area_nosemaphore;
|
||||
|
||||
down_read(&mm->mmap_sem);
|
||||
Index: linux-3.2/arch/sh/mm/fault_32.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/sh/mm/fault_32.c
|
||||
+++ linux-3.2/arch/sh/mm/fault_32.c
|
||||
@@ -166,7 +166,7 @@ asmlinkage void __kprobes do_page_fault(
|
||||
diff --git a/arch/sh/mm/fault_32.c b/arch/sh/mm/fault_32.c
|
||||
index a67ac56..643670d 100644
|
||||
--- a/arch/sh/mm/fault_32.c
|
||||
+++ b/arch/sh/mm/fault_32.c
|
||||
@@ -166,7 +166,7 @@ asmlinkage void __kprobes do_page_fault(struct pt_regs *regs,
|
||||
* If we're in an interrupt, have no user context or are running
|
||||
* in an atomic region then we must not take the fault:
|
||||
*/
|
||||
|
@ -256,11 +257,11 @@ Index: linux-3.2/arch/sh/mm/fault_32.c
|
|||
goto no_context;
|
||||
|
||||
down_read(&mm->mmap_sem);
|
||||
Index: linux-3.2/arch/sparc/mm/fault_32.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/sparc/mm/fault_32.c
|
||||
+++ linux-3.2/arch/sparc/mm/fault_32.c
|
||||
@@ -247,7 +247,7 @@ asmlinkage void do_sparc_fault(struct pt
|
||||
diff --git a/arch/sparc/mm/fault_32.c b/arch/sparc/mm/fault_32.c
|
||||
index e0742c1..054cf56 100644
|
||||
--- a/arch/sparc/mm/fault_32.c
|
||||
+++ b/arch/sparc/mm/fault_32.c
|
||||
@@ -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
|
||||
* context, we must not take the fault..
|
||||
*/
|
||||
|
@ -269,11 +270,11 @@ Index: linux-3.2/arch/sparc/mm/fault_32.c
|
|||
goto no_context;
|
||||
|
||||
perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address);
|
||||
Index: linux-3.2/arch/sparc/mm/fault_64.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/sparc/mm/fault_64.c
|
||||
+++ linux-3.2/arch/sparc/mm/fault_64.c
|
||||
@@ -322,7 +322,7 @@ asmlinkage void __kprobes do_sparc64_fau
|
||||
diff --git a/arch/sparc/mm/fault_64.c b/arch/sparc/mm/fault_64.c
|
||||
index 9d691a5..f6572f8 100644
|
||||
--- a/arch/sparc/mm/fault_64.c
|
||||
+++ b/arch/sparc/mm/fault_64.c
|
||||
@@ -322,7 +322,7 @@ asmlinkage void __kprobes do_sparc64_fault(struct pt_regs *regs)
|
||||
* If we're in an interrupt or have no user
|
||||
* context, we must not take the fault..
|
||||
*/
|
||||
|
@ -282,11 +283,11 @@ Index: linux-3.2/arch/sparc/mm/fault_64.c
|
|||
goto intr_or_no_mm;
|
||||
|
||||
perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address);
|
||||
Index: linux-3.2/arch/tile/mm/fault.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/tile/mm/fault.c
|
||||
+++ linux-3.2/arch/tile/mm/fault.c
|
||||
@@ -346,7 +346,7 @@ static int handle_page_fault(struct pt_r
|
||||
diff --git a/arch/tile/mm/fault.c b/arch/tile/mm/fault.c
|
||||
index ecdb016..1b6fa51 100644
|
||||
--- a/arch/tile/mm/fault.c
|
||||
+++ b/arch/tile/mm/fault.c
|
||||
@@ -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
|
||||
* 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 */
|
||||
goto bad_area_nosemaphore;
|
||||
}
|
||||
Index: linux-3.2/arch/um/kernel/trap.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/um/kernel/trap.c
|
||||
+++ linux-3.2/arch/um/kernel/trap.c
|
||||
@@ -37,7 +37,7 @@ int handle_page_fault(unsigned long addr
|
||||
diff --git a/arch/um/kernel/trap.c b/arch/um/kernel/trap.c
|
||||
index a283400..7878069 100644
|
||||
--- a/arch/um/kernel/trap.c
|
||||
+++ b/arch/um/kernel/trap.c
|
||||
@@ -37,7 +37,7 @@ int handle_page_fault(unsigned long address, unsigned long ip,
|
||||
* If the fault was during atomic operation, don't take the fault, just
|
||||
* fail.
|
||||
*/
|
||||
|
@ -308,11 +309,11 @@ Index: linux-3.2/arch/um/kernel/trap.c
|
|||
goto out_nosemaphore;
|
||||
|
||||
down_read(&mm->mmap_sem);
|
||||
Index: linux-3.2/arch/x86/mm/fault.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/x86/mm/fault.c
|
||||
+++ linux-3.2/arch/x86/mm/fault.c
|
||||
@@ -1084,7 +1084,7 @@ do_page_fault(struct pt_regs *regs, unsi
|
||||
diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c
|
||||
index 191015f..b567837 100644
|
||||
--- a/arch/x86/mm/fault.c
|
||||
+++ b/arch/x86/mm/fault.c
|
||||
@@ -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
|
||||
* 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);
|
||||
return;
|
||||
}
|
||||
Index: linux-3.2/arch/xtensa/mm/fault.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/xtensa/mm/fault.c
|
||||
+++ 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
|
||||
--- a/arch/xtensa/mm/fault.c
|
||||
+++ b/arch/xtensa/mm/fault.c
|
||||
@@ -57,7 +57,7 @@ void do_page_fault(struct pt_regs *regs)
|
||||
/* If we're in an interrupt or have no user
|
||||
* context, we must not take the fault..
|
||||
|
@ -334,10 +335,10 @@ Index: linux-3.2/arch/xtensa/mm/fault.c
|
|||
bad_page_fault(regs, address, SIGSEGV);
|
||||
return;
|
||||
}
|
||||
Index: linux-3.2/include/linux/sched.h
|
||||
===================================================================
|
||||
--- linux-3.2.orig/include/linux/sched.h
|
||||
+++ linux-3.2/include/linux/sched.h
|
||||
diff --git a/include/linux/sched.h b/include/linux/sched.h
|
||||
index bce86f9..8cb4365 100644
|
||||
--- a/include/linux/sched.h
|
||||
+++ b/include/linux/sched.h
|
||||
@@ -91,6 +91,7 @@ struct sched_param {
|
||||
#include <linux/latencytop.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 is 0..MAX_RT_PRIO-1, and SCHED_NORMAL/SCHED_BATCH
|
||||
Index: linux-3.2/kernel/fork.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/kernel/fork.c
|
||||
+++ linux-3.2/kernel/fork.c
|
||||
@@ -1193,7 +1193,9 @@ static struct task_struct *copy_process(
|
||||
diff --git a/kernel/fork.c b/kernel/fork.c
|
||||
index a17bc75..7992f54 100644
|
||||
--- a/kernel/fork.c
|
||||
+++ b/kernel/fork.c
|
||||
@@ -1196,7 +1196,9 @@ static struct task_struct *copy_process(unsigned long clone_flags,
|
||||
p->hardirq_context = 0;
|
||||
p->softirq_context = 0;
|
||||
#endif
|
||||
|
@ -388,3 +389,6 @@ Index: linux-3.2/kernel/fork.c
|
|||
#ifdef CONFIG_LOCKDEP
|
||||
p->lockdep_depth = 0; /* no locks held yet */
|
||||
p->curr_chain_key = 0;
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -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>
|
||||
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
|
||||
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
|
||||
[<ffffffff814fef13>] apic_timer_interrupt+0x13/0x20
|
||||
|
||||
|
||||
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
|
||||
Link: http://lkml.kernel.org/n/tip-31keae8mkjiv8esq4rl76cib@git.kernel.org
|
||||
---
|
||||
|
@ -78,10 +78,10 @@ Link: http://lkml.kernel.org/n/tip-31keae8mkjiv8esq4rl76cib@git.kernel.org
|
|||
mm/memory.c | 2 ++
|
||||
2 files changed, 30 insertions(+), 2 deletions(-)
|
||||
|
||||
Index: linux-3.2/include/linux/uaccess.h
|
||||
===================================================================
|
||||
--- linux-3.2.orig/include/linux/uaccess.h
|
||||
+++ linux-3.2/include/linux/uaccess.h
|
||||
diff --git a/include/linux/uaccess.h b/include/linux/uaccess.h
|
||||
index 9414a1b..44b3751 100644
|
||||
--- a/include/linux/uaccess.h
|
||||
+++ b/include/linux/uaccess.h
|
||||
@@ -8,8 +8,34 @@
|
||||
* These routines enable/disable the pagefault handler in that
|
||||
* it will not take any MM locks and go straight to the fixup table.
|
||||
|
@ -117,7 +117,7 @@ Index: linux-3.2/include/linux/uaccess.h
|
|||
|
||||
#ifndef ARCH_HAS_NOCACHE_UACCESS
|
||||
|
||||
@@ -50,9 +76,9 @@ static inline unsigned long __copy_from_
|
||||
@@ -50,9 +76,9 @@ static inline unsigned long __copy_from_user_nocache(void *to,
|
||||
mm_segment_t old_fs = get_fs(); \
|
||||
\
|
||||
set_fs(KERNEL_DS); \
|
||||
|
@ -129,11 +129,11 @@ Index: linux-3.2/include/linux/uaccess.h
|
|||
set_fs(old_fs); \
|
||||
ret; \
|
||||
})
|
||||
Index: linux-3.2/mm/memory.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/mm/memory.c
|
||||
+++ linux-3.2/mm/memory.c
|
||||
@@ -3436,6 +3436,7 @@ unlock:
|
||||
diff --git a/mm/memory.c b/mm/memory.c
|
||||
index 454ad3f..a3f7ed8 100644
|
||||
--- a/mm/memory.c
|
||||
+++ b/mm/memory.c
|
||||
@@ -3444,6 +3444,7 @@ unlock:
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -141,7 +141,7 @@ Index: linux-3.2/mm/memory.c
|
|||
void pagefault_disable(void)
|
||||
{
|
||||
inc_preempt_count();
|
||||
@@ -3464,6 +3465,7 @@ void pagefault_enable(void)
|
||||
@@ -3472,6 +3473,7 @@ void pagefault_enable(void)
|
||||
preempt_check_resched();
|
||||
}
|
||||
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
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
Subject: filemap-fix-up.patch
|
||||
From 90e4703e2535c334bf845c719179075440e4fdca Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
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>
|
||||
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 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
Index: linux-3.2/mm/filemap.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/mm/filemap.c
|
||||
+++ linux-3.2/mm/filemap.c
|
||||
@@ -2044,7 +2044,7 @@ size_t iov_iter_copy_from_user_atomic(st
|
||||
diff --git a/mm/filemap.c b/mm/filemap.c
|
||||
index 03c5b0e..4a30d36 100644
|
||||
--- a/mm/filemap.c
|
||||
+++ b/mm/filemap.c
|
||||
@@ -2044,7 +2044,7 @@ size_t iov_iter_copy_from_user_atomic(struct page *page,
|
||||
char *kaddr;
|
||||
size_t copied;
|
||||
|
||||
|
@ -22,3 +23,6 @@ Index: linux-3.2/mm/filemap.c
|
|||
kaddr = kmap_atomic(page, KM_USER0);
|
||||
if (likely(i->nr_segs == 1)) {
|
||||
int left;
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,6 +1,8 @@
|
|||
From d7f4a8b96d5578399fab50795bb26568d3a4a1dc Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
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.
|
||||
|
||||
|
@ -9,11 +11,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
|||
mm/memory.c | 7 -------
|
||||
1 file changed, 7 deletions(-)
|
||||
|
||||
Index: linux-3.2/mm/memory.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/mm/memory.c
|
||||
+++ linux-3.2/mm/memory.c
|
||||
@@ -3439,7 +3439,6 @@ unlock:
|
||||
diff --git a/mm/memory.c b/mm/memory.c
|
||||
index a3f7ed8..7fa62d9 100644
|
||||
--- a/mm/memory.c
|
||||
+++ b/mm/memory.c
|
||||
@@ -3447,7 +3447,6 @@ unlock:
|
||||
#ifdef CONFIG_PREEMPT_RT_FULL
|
||||
void pagefault_disable(void)
|
||||
{
|
||||
|
@ -21,7 +23,7 @@ Index: linux-3.2/mm/memory.c
|
|||
current->pagefault_disabled++;
|
||||
/*
|
||||
* 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();
|
||||
current->pagefault_disabled--;
|
||||
|
@ -34,3 +36,6 @@ Index: linux-3.2/mm/memory.c
|
|||
}
|
||||
EXPORT_SYMBOL_GPL(pagefault_enable);
|
||||
#endif
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,22 +1,22 @@
|
|||
From 7aa88c0924519e9f412b40d1b5fe72bd7d9afff0 Mon Sep 17 00:00:00 2001
|
||||
From: Ingo Molnar <mingo@elte.hu>
|
||||
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
|
||||
which allows us to get more information about the problem.
|
||||
|
||||
Signed-off-by: Ingo Molnar <mingo@elte.hu>
|
||||
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
||||
|
||||
---
|
||||
arch/x86/mm/highmem_32.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
Index: linux-3.2/arch/x86/mm/highmem_32.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/x86/mm/highmem_32.c
|
||||
+++ linux-3.2/arch/x86/mm/highmem_32.c
|
||||
@@ -43,7 +43,7 @@ void *kmap_atomic_prot(struct page *page
|
||||
diff --git a/arch/x86/mm/highmem_32.c b/arch/x86/mm/highmem_32.c
|
||||
index f4f29b1..71bd7d6 100644
|
||||
--- a/arch/x86/mm/highmem_32.c
|
||||
+++ b/arch/x86/mm/highmem_32.c
|
||||
@@ -43,7 +43,7 @@ void *kmap_atomic_prot(struct page *page, pgprot_t prot)
|
||||
type = kmap_atomic_idx_push();
|
||||
idx = type + KM_TYPE_NR*smp_processor_id();
|
||||
vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx);
|
||||
|
@ -25,3 +25,6 @@ Index: linux-3.2/arch/x86/mm/highmem_32.c
|
|||
set_pte(kmap_pte-idx, mk_pte(page, prot));
|
||||
arch_flush_lazy_mmu_mode();
|
||||
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
From f79388c83db88b6ef89497405df9c630964b512e Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
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
|
||||
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.
|
||||
|
||||
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
||||
|
||||
---
|
||||
include/linux/kernel.h | 2 +-
|
||||
kernel/power/hibernate.c | 7 +++++++
|
||||
kernel/power/suspend.c | 4 ++++
|
||||
3 files changed, 12 insertions(+), 1 deletion(-)
|
||||
|
||||
Index: linux-3.2/include/linux/kernel.h
|
||||
===================================================================
|
||||
--- linux-3.2.orig/include/linux/kernel.h
|
||||
+++ linux-3.2/include/linux/kernel.h
|
||||
@@ -356,7 +356,7 @@ extern enum system_states {
|
||||
diff --git a/include/linux/kernel.h b/include/linux/kernel.h
|
||||
index a70783d..22bdd4b 100644
|
||||
--- a/include/linux/kernel.h
|
||||
+++ b/include/linux/kernel.h
|
||||
@@ -369,7 +369,7 @@ extern enum system_states {
|
||||
SYSTEM_HALT,
|
||||
SYSTEM_POWER_OFF,
|
||||
SYSTEM_RESTART,
|
||||
|
@ -36,11 +36,11 @@ Index: linux-3.2/include/linux/kernel.h
|
|||
} system_state;
|
||||
|
||||
#define TAINT_PROPRIETARY_MODULE 0
|
||||
Index: linux-3.2/kernel/power/hibernate.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/kernel/power/hibernate.c
|
||||
+++ linux-3.2/kernel/power/hibernate.c
|
||||
@@ -284,6 +284,8 @@ static int create_image(int platform_mod
|
||||
diff --git a/kernel/power/hibernate.c b/kernel/power/hibernate.c
|
||||
index 7c0d578..32741e2 100644
|
||||
--- a/kernel/power/hibernate.c
|
||||
+++ b/kernel/power/hibernate.c
|
||||
@@ -284,6 +284,8 @@ static int create_image(int platform_mode)
|
||||
|
||||
local_irq_disable();
|
||||
|
||||
|
@ -49,7 +49,7 @@ Index: linux-3.2/kernel/power/hibernate.c
|
|||
error = syscore_suspend();
|
||||
if (error) {
|
||||
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();
|
||||
|
||||
Enable_irqs:
|
||||
|
@ -57,7 +57,7 @@ Index: linux-3.2/kernel/power/hibernate.c
|
|||
local_irq_enable();
|
||||
|
||||
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;
|
||||
|
||||
local_irq_disable();
|
||||
|
@ -65,7 +65,7 @@ Index: linux-3.2/kernel/power/hibernate.c
|
|||
|
||||
error = syscore_suspend();
|
||||
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();
|
||||
|
||||
Enable_irqs:
|
||||
|
@ -89,11 +89,11 @@ Index: linux-3.2/kernel/power/hibernate.c
|
|||
local_irq_enable();
|
||||
enable_nonboot_cpus();
|
||||
|
||||
Index: linux-3.2/kernel/power/suspend.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/kernel/power/suspend.c
|
||||
+++ linux-3.2/kernel/power/suspend.c
|
||||
@@ -171,6 +171,8 @@ static int suspend_enter(suspend_state_t
|
||||
diff --git a/kernel/power/suspend.c b/kernel/power/suspend.c
|
||||
index 4953dc0..691f46e 100644
|
||||
--- a/kernel/power/suspend.c
|
||||
+++ b/kernel/power/suspend.c
|
||||
@@ -171,6 +171,8 @@ static int suspend_enter(suspend_state_t state, bool *wakeup)
|
||||
arch_suspend_disable_irqs();
|
||||
BUG_ON(!irqs_disabled());
|
||||
|
||||
|
@ -102,7 +102,7 @@ Index: linux-3.2/kernel/power/suspend.c
|
|||
error = syscore_suspend();
|
||||
if (!error) {
|
||||
*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();
|
||||
}
|
||||
|
||||
|
@ -111,3 +111,6 @@ Index: linux-3.2/kernel/power/suspend.c
|
|||
arch_suspend_enable_irqs();
|
||||
BUG_ON(irqs_disabled());
|
||||
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
From 417e0d7c3de36b87075e446b0920e480fb96a871 Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
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
|
||||
could be a mutex, but unfortunately it's locked from cpu hotplug
|
||||
|
@ -12,16 +13,15 @@ recursive locking pathes which allows us to convert devtree_lock to a
|
|||
read_lock.
|
||||
|
||||
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
||||
|
||||
---
|
||||
drivers/of/base.c | 93 +++++++++++++++++++++++++++++++++++++++++-------------
|
||||
drivers/of/base.c | 93 ++++++++++++++++++++++++++++++++++++++++-------------
|
||||
1 file changed, 71 insertions(+), 22 deletions(-)
|
||||
|
||||
Index: linux-3.2/drivers/of/base.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/drivers/of/base.c
|
||||
+++ linux-3.2/drivers/of/base.c
|
||||
@@ -163,16 +163,14 @@ void of_node_put(struct device_node *nod
|
||||
diff --git a/drivers/of/base.c b/drivers/of/base.c
|
||||
index 9b6588e..200f2dd 100644
|
||||
--- a/drivers/of/base.c
|
||||
+++ b/drivers/of/base.c
|
||||
@@ -163,16 +163,14 @@ void of_node_put(struct device_node *node)
|
||||
EXPORT_SYMBOL(of_node_put);
|
||||
#endif /* !CONFIG_SPARC */
|
||||
|
||||
|
@ -40,7 +40,7 @@ Index: linux-3.2/drivers/of/base.c
|
|||
for (pp = np->properties; pp != 0; pp = pp->next) {
|
||||
if (of_prop_cmp(pp->name, name) == 0) {
|
||||
if (lenp != 0)
|
||||
@@ -180,6 +178,18 @@ struct property *of_find_property(const
|
||||
@@ -180,6 +178,18 @@ struct property *of_find_property(const struct device_node *np,
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -99,7 +99,7 @@ Index: linux-3.2/drivers/of/base.c
|
|||
if (cp == NULL)
|
||||
return 0;
|
||||
while (cplen > 0) {
|
||||
@@ -244,6 +266,20 @@ int of_device_is_compatible(const struct
|
||||
@@ -244,6 +266,20 @@ int of_device_is_compatible(const struct device_node *device,
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -120,7 +120,7 @@ Index: linux-3.2/drivers/of/base.c
|
|||
EXPORT_SYMBOL(of_device_is_compatible);
|
||||
|
||||
/**
|
||||
@@ -467,7 +503,8 @@ struct device_node *of_find_compatible_n
|
||||
@@ -467,7 +503,8 @@ struct device_node *of_find_compatible_node(struct device_node *from,
|
||||
if (type
|
||||
&& !(np->type && (of_node_cmp(np->type, type) == 0)))
|
||||
continue;
|
||||
|
@ -149,7 +149,7 @@ Index: linux-3.2/drivers/of/base.c
|
|||
{
|
||||
if (!matches)
|
||||
return NULL;
|
||||
@@ -533,14 +564,32 @@ const struct of_device_id *of_match_node
|
||||
@@ -533,14 +564,32 @@ const struct of_device_id *of_match_node(const struct of_device_id *matches,
|
||||
match &= node->type
|
||||
&& !strcmp(matches->type, node->type);
|
||||
if (matches->compatible[0])
|
||||
|
@ -184,7 +184,7 @@ Index: linux-3.2/drivers/of/base.c
|
|||
EXPORT_SYMBOL(of_match_node);
|
||||
|
||||
/**
|
||||
@@ -563,7 +612,7 @@ struct device_node *of_find_matching_nod
|
||||
@@ -563,7 +612,7 @@ struct device_node *of_find_matching_node(struct device_node *from,
|
||||
read_lock(&devtree_lock);
|
||||
np = from ? from->allnext : allnodes;
|
||||
for (; np; np = np->allnext) {
|
||||
|
@ -193,3 +193,6 @@ Index: linux-3.2/drivers/of/base.c
|
|||
break;
|
||||
}
|
||||
of_node_put(from);
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -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>
|
||||
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>
|
||||
---
|
||||
arch/sparc/kernel/prom_common.c | 4 -
|
||||
drivers/of/base.c | 92 ++++++++++++++++++++++------------------
|
||||
include/linux/of.h | 2
|
||||
arch/sparc/kernel/prom_common.c | 4 +-
|
||||
drivers/of/base.c | 92 ++++++++++++++++++++++-----------------
|
||||
include/linux/of.h | 2 +-
|
||||
3 files changed, 55 insertions(+), 43 deletions(-)
|
||||
|
||||
Index: linux-3.2/arch/sparc/kernel/prom_common.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/sparc/kernel/prom_common.c
|
||||
+++ linux-3.2/arch/sparc/kernel/prom_common.c
|
||||
@@ -65,7 +65,7 @@ int of_set_property(struct device_node *
|
||||
diff --git a/arch/sparc/kernel/prom_common.c b/arch/sparc/kernel/prom_common.c
|
||||
index 741df91..ca73a28 100644
|
||||
--- a/arch/sparc/kernel/prom_common.c
|
||||
+++ b/arch/sparc/kernel/prom_common.c
|
||||
@@ -65,7 +65,7 @@ int of_set_property(struct device_node *dp, const char *name, void *val, int len
|
||||
err = -ENODEV;
|
||||
|
||||
mutex_lock(&of_set_property_mutex);
|
||||
|
@ -22,7 +23,7 @@ Index: linux-3.2/arch/sparc/kernel/prom_common.c
|
|||
prevp = &dp->properties;
|
||||
while (*prevp) {
|
||||
struct property *prop = *prevp;
|
||||
@@ -92,7 +92,7 @@ int of_set_property(struct device_node *
|
||||
@@ -92,7 +92,7 @@ int of_set_property(struct device_node *dp, const char *name, void *val, int len
|
||||
}
|
||||
prevp = &(*prevp)->next;
|
||||
}
|
||||
|
@ -31,10 +32,10 @@ Index: linux-3.2/arch/sparc/kernel/prom_common.c
|
|||
mutex_unlock(&of_set_property_mutex);
|
||||
|
||||
/* XXX Upate procfs if necessary... */
|
||||
Index: linux-3.2/drivers/of/base.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/drivers/of/base.c
|
||||
+++ linux-3.2/drivers/of/base.c
|
||||
diff --git a/drivers/of/base.c b/drivers/of/base.c
|
||||
index 200f2dd..becc6ca 100644
|
||||
--- a/drivers/of/base.c
|
||||
+++ b/drivers/of/base.c
|
||||
@@ -54,7 +54,7 @@ static DEFINE_MUTEX(of_aliases_mutex);
|
||||
/* use when traversing tree through the allnext, child, sibling,
|
||||
* or parent members of struct device_node.
|
||||
|
@ -44,7 +45,7 @@ Index: linux-3.2/drivers/of/base.c
|
|||
|
||||
int of_n_addr_cells(struct device_node *np)
|
||||
{
|
||||
@@ -187,10 +187,11 @@ struct property *of_find_property(const
|
||||
@@ -187,10 +187,11 @@ struct property *of_find_property(const struct device_node *np,
|
||||
int *lenp)
|
||||
{
|
||||
struct property *pp;
|
||||
|
@ -58,7 +59,7 @@ Index: linux-3.2/drivers/of/base.c
|
|||
|
||||
return pp;
|
||||
}
|
||||
@@ -208,13 +209,13 @@ struct device_node *of_find_all_nodes(st
|
||||
@@ -208,13 +209,13 @@ struct device_node *of_find_all_nodes(struct device_node *prev)
|
||||
{
|
||||
struct device_node *np;
|
||||
|
||||
|
@ -74,7 +75,7 @@ Index: linux-3.2/drivers/of/base.c
|
|||
return np;
|
||||
}
|
||||
EXPORT_SYMBOL(of_find_all_nodes);
|
||||
@@ -273,11 +274,12 @@ static int __of_device_is_compatible(con
|
||||
@@ -273,11 +274,12 @@ static int __of_device_is_compatible(const struct device_node *device,
|
||||
int of_device_is_compatible(const struct device_node *device,
|
||||
const char *compat)
|
||||
{
|
||||
|
@ -124,7 +125,7 @@ Index: linux-3.2/drivers/of/base.c
|
|||
return parent;
|
||||
}
|
||||
|
||||
@@ -387,14 +391,15 @@ struct device_node *of_get_next_child(co
|
||||
@@ -387,14 +391,15 @@ struct device_node *of_get_next_child(const struct device_node *node,
|
||||
struct device_node *prev)
|
||||
{
|
||||
struct device_node *next;
|
||||
|
@ -160,7 +161,7 @@ Index: linux-3.2/drivers/of/base.c
|
|||
return np;
|
||||
}
|
||||
EXPORT_SYMBOL(of_find_node_by_path);
|
||||
@@ -436,15 +442,16 @@ struct device_node *of_find_node_by_name
|
||||
@@ -436,15 +442,16 @@ struct device_node *of_find_node_by_name(struct device_node *from,
|
||||
const char *name)
|
||||
{
|
||||
struct device_node *np;
|
||||
|
@ -179,7 +180,7 @@ Index: linux-3.2/drivers/of/base.c
|
|||
return np;
|
||||
}
|
||||
EXPORT_SYMBOL(of_find_node_by_name);
|
||||
@@ -465,15 +472,16 @@ struct device_node *of_find_node_by_type
|
||||
@@ -465,15 +472,16 @@ struct device_node *of_find_node_by_type(struct device_node *from,
|
||||
const char *type)
|
||||
{
|
||||
struct device_node *np;
|
||||
|
@ -198,7 +199,7 @@ Index: linux-3.2/drivers/of/base.c
|
|||
return np;
|
||||
}
|
||||
EXPORT_SYMBOL(of_find_node_by_type);
|
||||
@@ -496,8 +504,9 @@ struct device_node *of_find_compatible_n
|
||||
@@ -496,8 +504,9 @@ struct device_node *of_find_compatible_node(struct device_node *from,
|
||||
const char *type, const char *compatible)
|
||||
{
|
||||
struct device_node *np;
|
||||
|
@ -209,7 +210,7 @@ Index: linux-3.2/drivers/of/base.c
|
|||
np = from ? from->allnext : allnodes;
|
||||
for (; np; np = np->allnext) {
|
||||
if (type
|
||||
@@ -508,7 +517,7 @@ struct device_node *of_find_compatible_n
|
||||
@@ -508,7 +517,7 @@ struct device_node *of_find_compatible_node(struct device_node *from,
|
||||
break;
|
||||
}
|
||||
of_node_put(from);
|
||||
|
@ -218,7 +219,7 @@ Index: linux-3.2/drivers/of/base.c
|
|||
return np;
|
||||
}
|
||||
EXPORT_SYMBOL(of_find_compatible_node);
|
||||
@@ -530,8 +539,9 @@ struct device_node *of_find_node_with_pr
|
||||
@@ -530,8 +539,9 @@ struct device_node *of_find_node_with_property(struct device_node *from,
|
||||
{
|
||||
struct device_node *np;
|
||||
struct property *pp;
|
||||
|
@ -229,7 +230,7 @@ Index: linux-3.2/drivers/of/base.c
|
|||
np = from ? from->allnext : allnodes;
|
||||
for (; np; np = np->allnext) {
|
||||
for (pp = np->properties; pp != 0; pp = pp->next) {
|
||||
@@ -543,7 +553,7 @@ struct device_node *of_find_node_with_pr
|
||||
@@ -543,7 +553,7 @@ struct device_node *of_find_node_with_property(struct device_node *from,
|
||||
}
|
||||
out:
|
||||
of_node_put(from);
|
||||
|
@ -238,7 +239,7 @@ Index: linux-3.2/drivers/of/base.c
|
|||
return np;
|
||||
}
|
||||
EXPORT_SYMBOL(of_find_node_with_property);
|
||||
@@ -584,10 +594,11 @@ const struct of_device_id *of_match_node
|
||||
@@ -584,10 +594,11 @@ const struct of_device_id *of_match_node(const struct of_device_id *matches,
|
||||
const struct device_node *node)
|
||||
{
|
||||
const struct of_device_id *match;
|
||||
|
@ -252,7 +253,7 @@ Index: linux-3.2/drivers/of/base.c
|
|||
return match;
|
||||
}
|
||||
EXPORT_SYMBOL(of_match_node);
|
||||
@@ -608,15 +619,16 @@ struct device_node *of_find_matching_nod
|
||||
@@ -608,15 +619,16 @@ struct device_node *of_find_matching_node(struct device_node *from,
|
||||
const struct of_device_id *matches)
|
||||
{
|
||||
struct device_node *np;
|
||||
|
@ -271,7 +272,7 @@ Index: linux-3.2/drivers/of/base.c
|
|||
return np;
|
||||
}
|
||||
EXPORT_SYMBOL(of_find_matching_node);
|
||||
@@ -659,12 +671,12 @@ struct device_node *of_find_node_by_phan
|
||||
@@ -659,12 +671,12 @@ struct device_node *of_find_node_by_phandle(phandle handle)
|
||||
{
|
||||
struct device_node *np;
|
||||
|
||||
|
@ -286,7 +287,7 @@ Index: linux-3.2/drivers/of/base.c
|
|||
return np;
|
||||
}
|
||||
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;
|
||||
|
||||
prop->next = NULL;
|
||||
|
@ -308,7 +309,7 @@ Index: linux-3.2/drivers/of/base.c
|
|||
|
||||
#ifdef CONFIG_PROC_DEVICETREE
|
||||
/* 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;
|
||||
int found = 0;
|
||||
|
||||
|
@ -317,7 +318,7 @@ Index: linux-3.2/drivers/of/base.c
|
|||
next = &np->properties;
|
||||
while (*next) {
|
||||
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;
|
||||
}
|
||||
|
@ -326,7 +327,7 @@ Index: linux-3.2/drivers/of/base.c
|
|||
|
||||
if (!found)
|
||||
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;
|
||||
int found = 0;
|
||||
|
||||
|
@ -335,7 +336,7 @@ Index: linux-3.2/drivers/of/base.c
|
|||
next = &np->properties;
|
||||
while (*next) {
|
||||
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;
|
||||
}
|
||||
|
@ -344,7 +345,7 @@ Index: linux-3.2/drivers/of/base.c
|
|||
|
||||
if (!found)
|
||||
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;
|
||||
|
||||
|
@ -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;
|
||||
unsigned long flags;
|
||||
|
||||
|
@ -368,7 +369,7 @@ Index: linux-3.2/drivers/of/base.c
|
|||
|
||||
parent = np->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);
|
||||
|
||||
out_unlock:
|
||||
|
@ -377,10 +378,10 @@ Index: linux-3.2/drivers/of/base.c
|
|||
}
|
||||
#endif /* defined(CONFIG_OF_DYNAMIC) */
|
||||
|
||||
Index: linux-3.2/include/linux/of.h
|
||||
===================================================================
|
||||
--- linux-3.2.orig/include/linux/of.h
|
||||
+++ linux-3.2/include/linux/of.h
|
||||
diff --git a/include/linux/of.h b/include/linux/of.h
|
||||
index 4948552..e87303d 100644
|
||||
--- a/include/linux/of.h
|
||||
+++ b/include/linux/of.h
|
||||
@@ -71,7 +71,7 @@ struct device_node {
|
||||
extern struct device_node *allnodes;
|
||||
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)
|
||||
{
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -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>
|
||||
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>
|
||||
---
|
||||
include/linux/list.h | 11 +++++++++++
|
||||
1 file changed, 11 insertions(+)
|
||||
|
||||
Index: linux-3.2/include/linux/list.h
|
||||
===================================================================
|
||||
--- linux-3.2.orig/include/linux/list.h
|
||||
+++ linux-3.2/include/linux/list.h
|
||||
@@ -362,6 +362,17 @@ static inline void list_splice_tail_init
|
||||
diff --git a/include/linux/list.h b/include/linux/list.h
|
||||
index cc6d2aa..7a9851b 100644
|
||||
--- a/include/linux/list.h
|
||||
+++ b/include/linux/list.h
|
||||
@@ -362,6 +362,17 @@ static inline void list_splice_tail_init(struct list_head *list,
|
||||
list_entry((ptr)->next, type, member)
|
||||
|
||||
/**
|
||||
|
@ -29,3 +30,6 @@ Index: linux-3.2/include/linux/list.h
|
|||
* list_for_each - iterate over a list
|
||||
* @pos: the &struct list_head to use as a loop cursor.
|
||||
* @head: the head for your list.
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -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>
|
||||
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>
|
||||
---
|
||||
mm/page_alloc.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
Index: linux-3.2/mm/page_alloc.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/mm/page_alloc.c
|
||||
+++ linux-3.2/mm/page_alloc.c
|
||||
@@ -625,7 +625,7 @@ static void free_pcppages_bulk(struct zo
|
||||
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
|
||||
index 485be89..3344154 100644
|
||||
--- a/mm/page_alloc.c
|
||||
+++ b/mm/page_alloc.c
|
||||
@@ -625,7 +625,7 @@ static void free_pcppages_bulk(struct zone *zone, int count,
|
||||
batch_free = to_free;
|
||||
|
||||
do {
|
||||
|
@ -20,3 +21,6 @@ Index: linux-3.2/mm/page_alloc.c
|
|||
/* must delete as __free_one_page list manipulates */
|
||||
list_del(&page->lru);
|
||||
/* MIGRATE_MOVABLE list may include MIGRATE_RESERVEs */
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -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>
|
||||
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>
|
||||
---
|
||||
mm/slab.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
Index: linux-3.2/mm/slab.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/mm/slab.c
|
||||
+++ linux-3.2/mm/slab.c
|
||||
@@ -3851,10 +3851,10 @@ void kmem_cache_free(struct kmem_cache *
|
||||
diff --git a/mm/slab.c b/mm/slab.c
|
||||
index b76905e..1fd9983 100644
|
||||
--- a/mm/slab.c
|
||||
+++ b/mm/slab.c
|
||||
@@ -3851,10 +3851,10 @@ void kmem_cache_free(struct kmem_cache *cachep, void *objp)
|
||||
{
|
||||
unsigned long flags;
|
||||
|
||||
|
@ -36,3 +37,6 @@ Index: linux-3.2/mm/slab.c
|
|||
__cache_free(c, (void *)objp, __builtin_return_address(0));
|
||||
local_irq_restore(flags);
|
||||
}
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,16 +1,17 @@
|
|||
Subject: rwsem-inlcude-fix.patch
|
||||
From dde840601c92b17bf87a3357ac64ad703ef3e7e2 Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
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>
|
||||
---
|
||||
include/linux/pid.h | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
Index: linux-3.2/include/linux/pid.h
|
||||
===================================================================
|
||||
--- linux-3.2.orig/include/linux/pid.h
|
||||
+++ linux-3.2/include/linux/pid.h
|
||||
diff --git a/include/linux/pid.h b/include/linux/pid.h
|
||||
index b152d44..7f33683 100644
|
||||
--- a/include/linux/pid.h
|
||||
+++ b/include/linux/pid.h
|
||||
@@ -2,6 +2,7 @@
|
||||
#define _LINUX_PID_H
|
||||
|
||||
|
@ -19,3 +20,6 @@ Index: linux-3.2/include/linux/pid.h
|
|||
|
||||
enum pid_type
|
||||
{
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,16 +1,17 @@
|
|||
Subject: sysctl-include-fix.patch
|
||||
From b44a025ed02cf7deb699ff642758cea3b6198cb7 Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
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>
|
||||
---
|
||||
include/linux/sysctl.h | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
Index: linux-3.2/include/linux/sysctl.h
|
||||
===================================================================
|
||||
--- linux-3.2.orig/include/linux/sysctl.h
|
||||
+++ linux-3.2/include/linux/sysctl.h
|
||||
diff --git a/include/linux/sysctl.h b/include/linux/sysctl.h
|
||||
index 703cfa33..b954c41 100644
|
||||
--- a/include/linux/sysctl.h
|
||||
+++ b/include/linux/sysctl.h
|
||||
@@ -932,6 +932,7 @@ enum
|
||||
#include <linux/list.h>
|
||||
#include <linux/rcupdate.h>
|
||||
|
@ -19,3 +20,6 @@ Index: linux-3.2/include/linux/sysctl.h
|
|||
|
||||
/* For the /proc/sys support */
|
||||
struct ctl_table;
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -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>
|
||||
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 ]
|
||||
|
@ -14,7 +15,6 @@ but task is already holding lock:
|
|||
|
||||
which lock already depends on the new lock.
|
||||
|
||||
|
||||
the existing dependency chain (in reverse order) is:
|
||||
|
||||
-> #1 (sk_lock-AF_INET){+.+...}:
|
||||
|
@ -87,17 +87,16 @@ Call Trace:
|
|||
[<ffffffff8112667a>] sys_close+0xf8/0x13d
|
||||
[<ffffffff814ae882>] system_call_fastpath+0x16/0x1b
|
||||
|
||||
|
||||
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
||||
---
|
||||
net/core/sock.c | 3 +--
|
||||
1 file changed, 1 insertion(+), 2 deletions(-)
|
||||
|
||||
Index: linux-3.2/net/core/sock.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/net/core/sock.c
|
||||
+++ linux-3.2/net/core/sock.c
|
||||
@@ -2031,12 +2031,11 @@ void lock_sock_nested(struct sock *sk, i
|
||||
diff --git a/net/core/sock.c b/net/core/sock.c
|
||||
index b23f174..a87eb16 100644
|
||||
--- a/net/core/sock.c
|
||||
+++ b/net/core/sock.c
|
||||
@@ -2031,12 +2031,11 @@ void lock_sock_nested(struct sock *sk, int subclass)
|
||||
if (sk->sk_lock.owned)
|
||||
__lock_sock(sk);
|
||||
sk->sk_lock.owned = 1;
|
||||
|
@ -111,3 +110,6 @@ Index: linux-3.2/net/core/sock.c
|
|||
}
|
||||
EXPORT_SYMBOL(lock_sock_nested);
|
||||
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -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>
|
||||
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>
|
||||
---
|
||||
|
@ -8,10 +9,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
|||
net/core/dev.c | 2 +-
|
||||
2 files changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
Index: linux-3.2/include/linux/interrupt.h
|
||||
===================================================================
|
||||
--- linux-3.2.orig/include/linux/interrupt.h
|
||||
+++ linux-3.2/include/linux/interrupt.h
|
||||
diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
|
||||
index a64b00e..21b94de 100644
|
||||
--- a/include/linux/interrupt.h
|
||||
+++ b/include/linux/interrupt.h
|
||||
@@ -454,6 +454,8 @@ struct softirq_action
|
||||
|
||||
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 softirq_init(void);
|
||||
static inline void __raise_softirq_irqoff(unsigned int nr)
|
||||
Index: linux-3.2/net/core/dev.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/net/core/dev.c
|
||||
+++ linux-3.2/net/core/dev.c
|
||||
diff --git a/net/core/dev.c b/net/core/dev.c
|
||||
index 55cd370..c28987a 100644
|
||||
--- a/net/core/dev.c
|
||||
+++ b/net/core/dev.c
|
||||
@@ -3037,7 +3037,7 @@ int netif_rx_ni(struct sk_buff *skb)
|
||||
preempt_disable();
|
||||
err = netif_rx(skb);
|
||||
|
@ -34,3 +35,6 @@ Index: linux-3.2/net/core/dev.c
|
|||
preempt_enable();
|
||||
|
||||
return err;
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -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>
|
||||
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>
|
||||
---
|
||||
kernel/softirq.c | 94 ++++++++++++++++++++++++++++++-------------------------
|
||||
kernel/softirq.c | 94 ++++++++++++++++++++++++++++++------------------------
|
||||
1 file changed, 52 insertions(+), 42 deletions(-)
|
||||
|
||||
Index: linux-3.2/kernel/softirq.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/kernel/softirq.c
|
||||
+++ linux-3.2/kernel/softirq.c
|
||||
diff --git a/kernel/softirq.c b/kernel/softirq.c
|
||||
index a8becbf..c6c5824 100644
|
||||
--- a/kernel/softirq.c
|
||||
+++ b/kernel/softirq.c
|
||||
@@ -76,6 +76,34 @@ static void wakeup_softirqd(void)
|
||||
wake_up_process(tsk);
|
||||
}
|
||||
|
@ -128,7 +129,7 @@ Index: linux-3.2/kernel/softirq.c
|
|||
#ifndef __ARCH_HAS_DO_SOFTIRQ
|
||||
|
||||
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()) {
|
||||
preempt_disable();
|
||||
|
@ -153,3 +154,6 @@ Index: linux-3.2/kernel/softirq.c
|
|||
__preempt_enable_no_resched();
|
||||
cond_resched();
|
||||
preempt_disable();
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,22 +1,23 @@
|
|||
From f6adc04c439c56acd6163820b2ac6251a138755f Mon Sep 17 00:00:00 2001
|
||||
From: Ingo Molnar <mingo@elte.hu>
|
||||
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
|
||||
migration. Do not unmask it when this is the case.
|
||||
|
||||
Signed-off-by: Ingo Molnar <mingo@elte.hu>
|
||||
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
||||
|
||||
---
|
||||
arch/x86/kernel/apic/io_apic.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
Index: linux-3.2/arch/x86/kernel/apic/io_apic.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/x86/kernel/apic/io_apic.c
|
||||
+++ linux-3.2/arch/x86/kernel/apic/io_apic.c
|
||||
@@ -2521,7 +2521,8 @@ static void ack_apic_level(struct irq_da
|
||||
diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
|
||||
index 8980555..91527bc 100644
|
||||
--- a/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_data *data)
|
||||
irq_complete_move(cfg);
|
||||
#ifdef CONFIG_GENERIC_PENDING_IRQ
|
||||
/* 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;
|
||||
mask_ioapic(cfg);
|
||||
}
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -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>
|
||||
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>
|
||||
---
|
||||
arch/x86/kernel/entry_32.S | 8 ++++++++
|
||||
1 file changed, 8 insertions(+)
|
||||
|
||||
Index: linux-3.2/arch/x86/kernel/entry_32.S
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/x86/kernel/entry_32.S
|
||||
+++ linux-3.2/arch/x86/kernel/entry_32.S
|
||||
@@ -626,7 +626,11 @@ work_notifysig: # deal with pending s
|
||||
diff --git a/arch/x86/kernel/entry_32.S b/arch/x86/kernel/entry_32.S
|
||||
index bcda816..426cf51 100644
|
||||
--- a/arch/x86/kernel/entry_32.S
|
||||
+++ b/arch/x86/kernel/entry_32.S
|
||||
@@ -629,7 +629,11 @@ work_notifysig: # deal with pending signals and
|
||||
jne work_notifysig_v86 # returning to kernel-space or
|
||||
# vm86-space
|
||||
xorl %edx, %edx
|
||||
|
@ -23,7 +24,7 @@ Index: linux-3.2/arch/x86/kernel/entry_32.S
|
|||
jmp resume_userspace_sig
|
||||
|
||||
ALIGN
|
||||
@@ -639,7 +643,11 @@ work_notifysig_v86:
|
||||
@@ -642,7 +646,11 @@ work_notifysig_v86:
|
||||
movl %esp, %eax
|
||||
#endif
|
||||
xorl %edx, %edx
|
||||
|
@ -35,3 +36,6 @@ Index: linux-3.2/arch/x86/kernel/entry_32.S
|
|||
jmp resume_userspace_sig
|
||||
END(work_pending)
|
||||
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -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>
|
||||
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
|
||||
on x86_64 because the stack in use for int3 and debug is a per CPU
|
||||
|
@ -17,16 +19,15 @@ when the stack is on the IST.
|
|||
Cc: stable-rt@vger.kernel.org
|
||||
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
|
||||
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
||||
|
||||
---
|
||||
arch/x86/kernel/traps.c | 32 +++++++++++++++++++++++---------
|
||||
1 file changed, 23 insertions(+), 9 deletions(-)
|
||||
|
||||
Index: linux-3.2/arch/x86/kernel/traps.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/x86/kernel/traps.c
|
||||
+++ linux-3.2/arch/x86/kernel/traps.c
|
||||
@@ -87,9 +87,21 @@ static inline void conditional_sti(struc
|
||||
diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c
|
||||
index 31d9d0f..cc88aec 100644
|
||||
--- a/arch/x86/kernel/traps.c
|
||||
+++ b/arch/x86/kernel/traps.c
|
||||
@@ -87,9 +87,21 @@ static inline void conditional_sti(struct pt_regs *regs)
|
||||
local_irq_enable();
|
||||
}
|
||||
|
||||
|
@ -49,7 +50,7 @@ Index: linux-3.2/arch/x86/kernel/traps.c
|
|||
if (regs->flags & X86_EFLAGS_IF)
|
||||
local_irq_enable();
|
||||
}
|
||||
@@ -100,11 +112,13 @@ static inline void conditional_cli(struc
|
||||
@@ -100,11 +112,13 @@ static inline void conditional_cli(struct pt_regs *regs)
|
||||
local_irq_disable();
|
||||
}
|
||||
|
||||
|
@ -64,7 +65,7 @@ Index: linux-3.2/arch/x86/kernel/traps.c
|
|||
}
|
||||
|
||||
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,
|
||||
12, SIGBUS) == NOTIFY_STOP)
|
||||
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)
|
||||
@@ -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;
|
||||
#endif
|
||||
|
||||
|
@ -88,7 +89,7 @@ Index: linux-3.2/arch/x86/kernel/traps.c
|
|||
}
|
||||
|
||||
#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;
|
||||
|
||||
/* 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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
if (tsk->thread.debugreg6 & (DR_STEP | DR_TRAP_BITS) || user_icebp)
|
||||
send_sigtrap(tsk, regs, error_code, si_code);
|
||||
|
@ -112,3 +113,6 @@ Index: linux-3.2/arch/x86/kernel/traps.c
|
|||
|
||||
return;
|
||||
}
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
Subject: rcu: Reduce lock section
|
||||
From e48b25d1e88f0066fc74583020ad764cd0d002f5 Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
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.
|
||||
|
||||
|
@ -11,11 +12,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
|||
kernel/rcutree_plugin.h | 14 ++++++++------
|
||||
3 files changed, 11 insertions(+), 8 deletions(-)
|
||||
|
||||
Index: linux-3.2/kernel/rcutree.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/kernel/rcutree.c
|
||||
+++ linux-3.2/kernel/rcutree.c
|
||||
@@ -1221,7 +1221,7 @@ static void __rcu_offline_cpu(int cpu, s
|
||||
diff --git a/kernel/rcutree.c b/kernel/rcutree.c
|
||||
index 6b76d81..8ef8675 100644
|
||||
--- a/kernel/rcutree.c
|
||||
+++ b/kernel/rcutree.c
|
||||
@@ -1221,7 +1221,7 @@ static void __rcu_offline_cpu(int cpu, struct rcu_state *rsp)
|
||||
else
|
||||
raw_spin_unlock_irqrestore(&rnp->lock, flags);
|
||||
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);
|
||||
}
|
||||
|
||||
Index: linux-3.2/kernel/rcutree.h
|
||||
===================================================================
|
||||
--- linux-3.2.orig/kernel/rcutree.h
|
||||
+++ linux-3.2/kernel/rcutree.h
|
||||
@@ -451,7 +451,8 @@ static void rcu_preempt_check_callbacks(
|
||||
diff --git a/kernel/rcutree.h b/kernel/rcutree.h
|
||||
index 849ce9e..dca495d 100644
|
||||
--- a/kernel/rcutree.h
|
||||
+++ b/kernel/rcutree.h
|
||||
@@ -451,7 +451,8 @@ static void rcu_preempt_check_callbacks(int cpu);
|
||||
static void rcu_preempt_process_callbacks(void);
|
||||
void call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *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) */
|
||||
static int rcu_preempt_pending(int cpu);
|
||||
static int rcu_preempt_needs_cpu(int cpu);
|
||||
Index: linux-3.2/kernel/rcutree_plugin.h
|
||||
===================================================================
|
||||
--- linux-3.2.orig/kernel/rcutree_plugin.h
|
||||
+++ linux-3.2/kernel/rcutree_plugin.h
|
||||
@@ -407,7 +407,7 @@ static noinline void rcu_read_unlock_spe
|
||||
diff --git a/kernel/rcutree_plugin.h b/kernel/rcutree_plugin.h
|
||||
index 4b9b9f8..73cab33 100644
|
||||
--- a/kernel/rcutree_plugin.h
|
||||
+++ b/kernel/rcutree_plugin.h
|
||||
@@ -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.
|
||||
*/
|
||||
if (!empty_exp && !rcu_preempted_readers_exp(rnp))
|
||||
|
@ -51,7 +52,7 @@ Index: linux-3.2/kernel/rcutree_plugin.h
|
|||
} else {
|
||||
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.
|
||||
*/
|
||||
|
@ -61,7 +62,7 @@ Index: linux-3.2/kernel/rcutree_plugin.h
|
|||
{
|
||||
unsigned long flags;
|
||||
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) {
|
||||
raw_spin_unlock_irqrestore(&rnp->lock, flags);
|
||||
|
@ -71,7 +72,7 @@ Index: linux-3.2/kernel/rcutree_plugin.h
|
|||
break;
|
||||
}
|
||||
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;
|
||||
}
|
||||
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
|
||||
* expedited RCU grace periods.
|
||||
*/
|
||||
|
@ -92,3 +93,6 @@ Index: linux-3.2/kernel/rcutree_plugin.h
|
|||
}
|
||||
|
||||
#endif /* #ifdef CONFIG_HOTPLUG_CPU */
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -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>
|
||||
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>
|
||||
---
|
||||
|
@ -11,11 +12,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
|||
kernel/cred.c | 2 +-
|
||||
5 files changed, 7 insertions(+), 7 deletions(-)
|
||||
|
||||
Index: linux-3.2/drivers/char/random.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/drivers/char/random.c
|
||||
+++ linux-3.2/drivers/char/random.c
|
||||
@@ -433,7 +433,7 @@ static struct entropy_store input_pool =
|
||||
diff --git a/drivers/char/random.c b/drivers/char/random.c
|
||||
index 786a856..026bdbb 100644
|
||||
--- a/drivers/char/random.c
|
||||
+++ b/drivers/char/random.c
|
||||
@@ -433,7 +433,7 @@ static struct entropy_store input_pool = {
|
||||
.poolinfo = &poolinfo_table[0],
|
||||
.name = "input",
|
||||
.limit = 1,
|
||||
|
@ -24,7 +25,7 @@ Index: linux-3.2/drivers/char/random.c
|
|||
.pool = input_pool_data
|
||||
};
|
||||
|
||||
@@ -442,7 +442,7 @@ static struct entropy_store blocking_poo
|
||||
@@ -442,7 +442,7 @@ static struct entropy_store blocking_pool = {
|
||||
.name = "blocking",
|
||||
.limit = 1,
|
||||
.pull = &input_pool,
|
||||
|
@ -33,7 +34,7 @@ Index: linux-3.2/drivers/char/random.c
|
|||
.pool = blocking_pool_data
|
||||
};
|
||||
|
||||
@@ -450,7 +450,7 @@ static struct entropy_store nonblocking_
|
||||
@@ -450,7 +450,7 @@ static struct entropy_store nonblocking_pool = {
|
||||
.poolinfo = &poolinfo_table[1],
|
||||
.name = "nonblocking",
|
||||
.pull = &input_pool,
|
||||
|
@ -42,10 +43,10 @@ Index: linux-3.2/drivers/char/random.c
|
|||
.pool = nonblocking_pool_data
|
||||
};
|
||||
|
||||
Index: linux-3.2/drivers/usb/gadget/ci13xxx_udc.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/drivers/usb/gadget/ci13xxx_udc.c
|
||||
+++ 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
|
||||
--- a/drivers/usb/gadget/ci13xxx_udc.c
|
||||
+++ b/drivers/usb/gadget/ci13xxx_udc.c
|
||||
@@ -819,7 +819,7 @@ static struct {
|
||||
} dbg_data = {
|
||||
.idx = 0,
|
||||
|
@ -55,10 +56,10 @@ Index: linux-3.2/drivers/usb/gadget/ci13xxx_udc.c
|
|||
};
|
||||
|
||||
/**
|
||||
Index: linux-3.2/fs/file.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/fs/file.c
|
||||
+++ linux-3.2/fs/file.c
|
||||
diff --git a/fs/file.c b/fs/file.c
|
||||
index 4c6992d..375472d 100644
|
||||
--- a/fs/file.c
|
||||
+++ b/fs/file.c
|
||||
@@ -422,7 +422,7 @@ struct files_struct init_files = {
|
||||
.close_on_exec = (fd_set *)&init_files.close_on_exec_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
|
||||
===================================================================
|
||||
--- linux-3.2.orig/include/linux/idr.h
|
||||
+++ linux-3.2/include/linux/idr.h
|
||||
diff --git a/include/linux/idr.h b/include/linux/idr.h
|
||||
index 255491c..4eaacf0 100644
|
||||
--- a/include/linux/idr.h
|
||||
+++ b/include/linux/idr.h
|
||||
@@ -136,7 +136,7 @@ struct ida {
|
||||
struct ida_bitmap *free_bitmap;
|
||||
};
|
||||
|
@ -81,10 +82,10 @@ Index: linux-3.2/include/linux/idr.h
|
|||
#define DEFINE_IDA(name) struct ida name = IDA_INIT(name)
|
||||
|
||||
int ida_pre_get(struct ida *ida, gfp_t gfp_mask);
|
||||
Index: linux-3.2/kernel/cred.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/kernel/cred.c
|
||||
+++ linux-3.2/kernel/cred.c
|
||||
diff --git a/kernel/cred.c b/kernel/cred.c
|
||||
index 48c6fd3..482a0e3 100644
|
||||
--- a/kernel/cred.c
|
||||
+++ b/kernel/cred.c
|
||||
@@ -35,7 +35,7 @@ static struct kmem_cache *cred_jar;
|
||||
static struct thread_group_cred init_tgcred = {
|
||||
.usage = ATOMIC_INIT(2),
|
||||
|
@ -94,3 +95,6 @@ Index: linux-3.2/kernel/cred.c
|
|||
};
|
||||
#endif
|
||||
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -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>
|
||||
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
|
||||
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 ++--
|
||||
2 files changed, 5 insertions(+), 4 deletions(-)
|
||||
|
||||
Index: linux-3.2/include/linux/wait.h
|
||||
===================================================================
|
||||
--- linux-3.2.orig/include/linux/wait.h
|
||||
+++ linux-3.2/include/linux/wait.h
|
||||
@@ -157,7 +157,7 @@ void __wake_up(wait_queue_head_t *q, uns
|
||||
diff --git a/include/linux/wait.h b/include/linux/wait.h
|
||||
index 3efc9f3..1e904b8 100644
|
||||
--- a/include/linux/wait.h
|
||||
+++ b/include/linux/wait.h
|
||||
@@ -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_sync_key(wait_queue_head_t *q, unsigned int mode, int nr,
|
||||
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_bit(wait_queue_head_t *, void *, int);
|
||||
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_nr(x, nr) __wake_up(x, TASK_NORMAL, nr, 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_nr(x, nr) __wake_up(x, TASK_INTERRUPTIBLE, nr, NULL)
|
||||
Index: linux-3.2/kernel/sched.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/kernel/sched.c
|
||||
+++ linux-3.2/kernel/sched.c
|
||||
diff --git a/kernel/sched.c b/kernel/sched.c
|
||||
index e35f01c..bb93b0b 100644
|
||||
--- a/kernel/sched.c
|
||||
+++ b/kernel/sched.c
|
||||
@@ -4637,9 +4637,9 @@ EXPORT_SYMBOL(__wake_up);
|
||||
/*
|
||||
* 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);
|
||||
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -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>
|
||||
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
|
||||
lock the waitqueue lock itself. That prevents the
|
||||
|
@ -12,11 +14,11 @@ Cc: stable-rt@vger.kernel.org
|
|||
drivers/pci/access.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
Index: linux-3.2/drivers/pci/access.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/drivers/pci/access.c
|
||||
+++ linux-3.2/drivers/pci/access.c
|
||||
@@ -441,7 +441,7 @@ void pci_unblock_user_cfg_access(struct
|
||||
diff --git a/drivers/pci/access.c b/drivers/pci/access.c
|
||||
index fdaa42a..1a6cc67 100644
|
||||
--- a/drivers/pci/access.c
|
||||
+++ b/drivers/pci/access.c
|
||||
@@ -441,7 +441,7 @@ void pci_unblock_user_cfg_access(struct pci_dev *dev)
|
||||
WARN_ON(!dev->block_ucfg_access);
|
||||
|
||||
dev->block_ucfg_access = 0;
|
||||
|
@ -25,3 +27,6 @@ Index: linux-3.2/drivers/pci/access.c
|
|||
raw_spin_unlock_irqrestore(&pci_lock, flags);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(pci_unblock_user_cfg_access);
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
Subject: latency-hist.patch
|
||||
From e14a7c82d8bd43fbda64e57a9cae2a4fff5cb7fb Mon Sep 17 00:00:00 2001
|
||||
From: Carsten Emde <C.Emde@osadl.org>
|
||||
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
|
||||
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: Thomas Gleixner <tglx@linutronix.de>
|
||||
|
||||
---
|
||||
Documentation/trace/histograms.txt | 186 +++++
|
||||
include/linux/sched.h | 6
|
||||
include/trace/events/hist.h | 69 ++
|
||||
include/trace/events/latency_hist.h | 30
|
||||
kernel/hrtimer.c | 11
|
||||
kernel/trace/Kconfig | 104 +++
|
||||
kernel/trace/Makefile | 4
|
||||
kernel/trace/latency_hist.c | 1170 ++++++++++++++++++++++++++++++++++++
|
||||
kernel/trace/trace_irqsoff.c | 11
|
||||
Documentation/trace/histograms.txt | 186 ++++++
|
||||
include/linux/sched.h | 6 +
|
||||
include/trace/events/hist.h | 69 +++
|
||||
include/trace/events/latency_hist.h | 30 +
|
||||
kernel/hrtimer.c | 11 +
|
||||
kernel/trace/Kconfig | 104 ++++
|
||||
kernel/trace/Makefile | 4 +
|
||||
kernel/trace/latency_hist.c | 1170 +++++++++++++++++++++++++++++++++++
|
||||
kernel/trace/trace_irqsoff.c | 11 +
|
||||
9 files changed, 1591 insertions(+)
|
||||
create mode 100644 Documentation/trace/histograms.txt
|
||||
create mode 100644 include/trace/events/hist.h
|
||||
create mode 100644 include/trace/events/latency_hist.h
|
||||
create mode 100644 kernel/trace/latency_hist.c
|
||||
|
||||
Index: linux-3.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
|
||||
+++ linux-3.2/Documentation/trace/histograms.txt
|
||||
+++ b/Documentation/trace/histograms.txt
|
||||
@@ -0,0 +1,186 @@
|
||||
+ Using the Linux Kernel Latency Histograms
|
||||
+
|
||||
|
@ -215,10 +220,10 @@ Index: linux-3.2/Documentation/trace/histograms.txt
|
|||
+is provided.
|
||||
+
|
||||
+These data are also reset when the wakeup histogram is reset.
|
||||
Index: linux-3.2/include/linux/sched.h
|
||||
===================================================================
|
||||
--- linux-3.2.orig/include/linux/sched.h
|
||||
+++ linux-3.2/include/linux/sched.h
|
||||
diff --git a/include/linux/sched.h b/include/linux/sched.h
|
||||
index 8cb4365..30ac0b5 100644
|
||||
--- a/include/linux/sched.h
|
||||
+++ b/include/linux/sched.h
|
||||
@@ -1570,6 +1570,12 @@ struct task_struct {
|
||||
unsigned long trace;
|
||||
/* bitmask and counter of trace recursion */
|
||||
|
@ -232,10 +237,11 @@ Index: linux-3.2/include/linux/sched.h
|
|||
#endif /* CONFIG_TRACING */
|
||||
#ifdef CONFIG_CGROUP_MEM_RES_CTLR /* memcg uses this to do batch job */
|
||||
struct memcg_batch_info {
|
||||
Index: linux-3.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
|
||||
+++ linux-3.2/include/trace/events/hist.h
|
||||
+++ b/include/trace/events/hist.h
|
||||
@@ -0,0 +1,69 @@
|
||||
+#undef TRACE_SYSTEM
|
||||
+#define TRACE_SYSTEM hist
|
||||
|
@ -306,10 +312,11 @@ Index: linux-3.2/include/trace/events/hist.h
|
|||
+
|
||||
+/* This part must be outside protection */
|
||||
+#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
|
||||
+++ linux-3.2/include/trace/events/latency_hist.h
|
||||
+++ b/include/trace/events/latency_hist.h
|
||||
@@ -0,0 +1,30 @@
|
||||
+#ifndef _LATENCY_HIST_H
|
||||
+#define _LATENCY_HIST_H
|
||||
|
@ -341,10 +348,10 @@ Index: linux-3.2/include/trace/events/latency_hist.h
|
|||
+
|
||||
+#endif /* _LATENCY_HIST_H */
|
||||
+
|
||||
Index: linux-3.2/kernel/hrtimer.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/kernel/hrtimer.c
|
||||
+++ linux-3.2/kernel/hrtimer.c
|
||||
diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c
|
||||
index ae34bf5..1a3695e 100644
|
||||
--- a/kernel/hrtimer.c
|
||||
+++ b/kernel/hrtimer.c
|
||||
@@ -49,6 +49,7 @@
|
||||
#include <asm/uaccess.h>
|
||||
|
||||
|
@ -353,7 +360,7 @@ Index: linux-3.2/kernel/hrtimer.c
|
|||
|
||||
/*
|
||||
* The timer bases:
|
||||
@@ -1236,6 +1237,8 @@ static void __run_hrtimer(struct hrtimer
|
||||
@@ -1236,6 +1237,8 @@ static void __run_hrtimer(struct hrtimer *timer, ktime_t *now)
|
||||
|
||||
#ifdef CONFIG_HIGH_RES_TIMERS
|
||||
|
||||
|
@ -377,10 +384,10 @@ Index: linux-3.2/kernel/hrtimer.c
|
|||
/*
|
||||
* The immediate goal for using the softexpires is
|
||||
* minimizing wakeups, not running timers at the
|
||||
Index: linux-3.2/kernel/trace/Kconfig
|
||||
===================================================================
|
||||
--- linux-3.2.orig/kernel/trace/Kconfig
|
||||
+++ linux-3.2/kernel/trace/Kconfig
|
||||
diff --git a/kernel/trace/Kconfig b/kernel/trace/Kconfig
|
||||
index cd31345..2685322 100644
|
||||
--- a/kernel/trace/Kconfig
|
||||
+++ b/kernel/trace/Kconfig
|
||||
@@ -192,6 +192,24 @@ config IRQSOFF_TRACER
|
||||
enabled. This option and the preempt-off timing option can be
|
||||
used together or separately.)
|
||||
|
@ -506,11 +513,11 @@ Index: linux-3.2/kernel/trace/Kconfig
|
|||
config ENABLE_DEFAULT_TRACERS
|
||||
bool "Trace process context switches and events"
|
||||
depends on !GENERIC_TRACER
|
||||
Index: linux-3.2/kernel/trace/Makefile
|
||||
===================================================================
|
||||
--- linux-3.2.orig/kernel/trace/Makefile
|
||||
+++ linux-3.2/kernel/trace/Makefile
|
||||
@@ -36,6 +36,10 @@ obj-$(CONFIG_FUNCTION_TRACER) += trace_f
|
||||
diff --git a/kernel/trace/Makefile b/kernel/trace/Makefile
|
||||
index 5f39a07..108a387 100644
|
||||
--- a/kernel/trace/Makefile
|
||||
+++ b/kernel/trace/Makefile
|
||||
@@ -36,6 +36,10 @@ obj-$(CONFIG_FUNCTION_TRACER) += trace_functions.o
|
||||
obj-$(CONFIG_IRQSOFF_TRACER) += trace_irqsoff.o
|
||||
obj-$(CONFIG_PREEMPT_TRACER) += trace_irqsoff.o
|
||||
obj-$(CONFIG_SCHED_TRACER) += trace_sched_wakeup.o
|
||||
|
@ -521,10 +528,11 @@ Index: linux-3.2/kernel/trace/Makefile
|
|||
obj-$(CONFIG_NOP_TRACER) += trace_nop.o
|
||||
obj-$(CONFIG_STACK_TRACER) += trace_stack.o
|
||||
obj-$(CONFIG_MMIOTRACE) += trace_mmiotrace.o
|
||||
Index: linux-3.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
|
||||
+++ linux-3.2/kernel/trace/latency_hist.c
|
||||
+++ b/kernel/trace/latency_hist.c
|
||||
@@ -0,0 +1,1170 @@
|
||||
+/*
|
||||
+ * kernel/trace/latency_hist.c
|
||||
|
@ -1696,10 +1704,10 @@ Index: linux-3.2/kernel/trace/latency_hist.c
|
|||
+}
|
||||
+
|
||||
+__initcall(latency_hist_init);
|
||||
Index: linux-3.2/kernel/trace/trace_irqsoff.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/kernel/trace/trace_irqsoff.c
|
||||
+++ 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
|
||||
--- a/kernel/trace/trace_irqsoff.c
|
||||
+++ b/kernel/trace/trace_irqsoff.c
|
||||
@@ -17,6 +17,7 @@
|
||||
#include <linux/fs.h>
|
||||
|
||||
|
@ -1722,7 +1730,7 @@ Index: linux-3.2/kernel/trace/trace_irqsoff.c
|
|||
if (preempt_trace() || irq_trace())
|
||||
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
|
||||
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())
|
||||
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())
|
||||
start_critical_timing(a0, a1);
|
||||
|
@ -1738,7 +1746,7 @@ Index: linux-3.2/kernel/trace/trace_irqsoff.c
|
|||
}
|
||||
|
||||
#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)
|
||||
{
|
||||
|
@ -1760,7 +1768,7 @@ Index: linux-3.2/kernel/trace/trace_irqsoff.c
|
|||
if (!preempt_trace() && irq_trace())
|
||||
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())
|
||||
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);
|
||||
|
||||
@@ -505,12 +514,14 @@ EXPORT_SYMBOL(trace_hardirqs_off_caller)
|
||||
@@ -505,12 +514,14 @@ EXPORT_SYMBOL(trace_hardirqs_off_caller);
|
||||
#ifdef CONFIG_PREEMPT_TRACER
|
||||
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())
|
||||
start_critical_timing(a0, a1);
|
||||
}
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,25 +1,28 @@
|
|||
Subject: hwlatdetect.patch
|
||||
From 64c6278c3b79d72e2992c767dca658f4c7f65739 Mon Sep 17 00:00:00 2001
|
||||
From: Carsten Emde <C.Emde@osadl.org>
|
||||
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
|
||||
consult Documentation/hwlat_detector.txt. It could be ported to Linux
|
||||
3.0 RT without any major change.
|
||||
|
||||
Signed-off-by: Carsten Emde <C.Emde@osadl.org>
|
||||
|
||||
---
|
||||
Documentation/hwlat_detector.txt | 64 ++
|
||||
MAINTAINERS | 9
|
||||
drivers/misc/Kconfig | 29
|
||||
drivers/misc/Makefile | 1
|
||||
drivers/misc/hwlat_detector.c | 1212 +++++++++++++++++++++++++++++++++++++++
|
||||
MAINTAINERS | 9 +
|
||||
drivers/misc/Kconfig | 29 +
|
||||
drivers/misc/Makefile | 1 +
|
||||
drivers/misc/hwlat_detector.c | 1212 ++++++++++++++++++++++++++++++++++++++
|
||||
5 files changed, 1315 insertions(+)
|
||||
create mode 100644 Documentation/hwlat_detector.txt
|
||||
create mode 100644 drivers/misc/hwlat_detector.c
|
||||
|
||||
Index: linux-3.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
|
||||
+++ linux-3.2/Documentation/hwlat_detector.txt
|
||||
+++ b/Documentation/hwlat_detector.txt
|
||||
@@ -0,0 +1,64 @@
|
||||
+Introduction:
|
||||
+-------------
|
||||
|
@ -85,10 +88,10 @@ Index: linux-3.2/Documentation/hwlat_detector.txt
|
|||
+observe any latencies that exceed the threshold (initially 100 usecs),
|
||||
+then we write to a global sample ring buffer of 8K samples, which is
|
||||
+consumed by reading from the "sample" (pipe) debugfs file interface.
|
||||
Index: linux-3.2/MAINTAINERS
|
||||
===================================================================
|
||||
--- linux-3.2.orig/MAINTAINERS
|
||||
+++ linux-3.2/MAINTAINERS
|
||||
diff --git a/MAINTAINERS b/MAINTAINERS
|
||||
index f986e7d..b257477 100644
|
||||
--- a/MAINTAINERS
|
||||
+++ b/MAINTAINERS
|
||||
@@ -3008,6 +3008,15 @@ L: linuxppc-dev@lists.ozlabs.org
|
||||
S: Odd Fixes
|
||||
F: drivers/tty/hvc/
|
||||
|
@ -105,10 +108,10 @@ Index: linux-3.2/MAINTAINERS
|
|||
HARDWARE MONITORING
|
||||
M: Jean Delvare <khali@linux-fr.org>
|
||||
M: Guenter Roeck <guenter.roeck@ericsson.com>
|
||||
Index: linux-3.2/drivers/misc/Kconfig
|
||||
===================================================================
|
||||
--- linux-3.2.orig/drivers/misc/Kconfig
|
||||
+++ linux-3.2/drivers/misc/Kconfig
|
||||
diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig
|
||||
index f3031a4..1cb530c 100644
|
||||
--- a/drivers/misc/Kconfig
|
||||
+++ b/drivers/misc/Kconfig
|
||||
@@ -140,6 +140,35 @@ config IBM_ASM
|
||||
for information on the specific driver level and support statement
|
||||
for your IBM server.
|
||||
|
@ -145,19 +148,20 @@ Index: linux-3.2/drivers/misc/Kconfig
|
|||
config PHANTOM
|
||||
tristate "Sensable PHANToM (PCI)"
|
||||
depends on PCI
|
||||
Index: linux-3.2/drivers/misc/Makefile
|
||||
===================================================================
|
||||
--- linux-3.2.orig/drivers/misc/Makefile
|
||||
+++ linux-3.2/drivers/misc/Makefile
|
||||
diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile
|
||||
index b26495a..84c4554 100644
|
||||
--- a/drivers/misc/Makefile
|
||||
+++ b/drivers/misc/Makefile
|
||||
@@ -48,3 +48,4 @@ obj-y += lis3lv02d/
|
||||
obj-y += carma/
|
||||
obj-$(CONFIG_USB_SWITCH_FSA9480) += fsa9480.o
|
||||
obj-$(CONFIG_ALTERA_STAPL) +=altera-stapl/
|
||||
+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
|
||||
+++ linux-3.2/drivers/misc/hwlat_detector.c
|
||||
+++ b/drivers/misc/hwlat_detector.c
|
||||
@@ -0,0 +1,1212 @@
|
||||
+/*
|
||||
+ * 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_exit(detector_exit);
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -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
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
Subject: early-printk-consolidate.patch
|
||||
From d6a466f7aef3ff53e864d1d0a8f5e93d61768714 Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
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>
|
||||
---
|
||||
|
@ -21,11 +22,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
|||
kernel/printk.c | 27 ++++++++++++++++++++-------
|
||||
15 files changed, 62 insertions(+), 110 deletions(-)
|
||||
|
||||
Index: linux-3.2/arch/arm/kernel/early_printk.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/arm/kernel/early_printk.c
|
||||
+++ linux-3.2/arch/arm/kernel/early_printk.c
|
||||
@@ -29,28 +29,17 @@ static void early_console_write(struct c
|
||||
diff --git a/arch/arm/kernel/early_printk.c b/arch/arm/kernel/early_printk.c
|
||||
index 85aa2b2..4307653 100644
|
||||
--- a/arch/arm/kernel/early_printk.c
|
||||
+++ b/arch/arm/kernel/early_printk.c
|
||||
@@ -29,28 +29,17 @@ static void early_console_write(struct console *con, const char *s, unsigned n)
|
||||
early_write(s, n);
|
||||
}
|
||||
|
||||
|
@ -57,11 +58,11 @@ Index: linux-3.2/arch/arm/kernel/early_printk.c
|
|||
return 0;
|
||||
}
|
||||
|
||||
Index: linux-3.2/arch/blackfin/kernel/early_printk.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/blackfin/kernel/early_printk.c
|
||||
+++ linux-3.2/arch/blackfin/kernel/early_printk.c
|
||||
@@ -25,8 +25,6 @@ extern struct console *bfin_earlyserial_
|
||||
diff --git a/arch/blackfin/kernel/early_printk.c b/arch/blackfin/kernel/early_printk.c
|
||||
index 84ed837..61fbd2d 100644
|
||||
--- a/arch/blackfin/kernel/early_printk.c
|
||||
+++ b/arch/blackfin/kernel/early_printk.c
|
||||
@@ -25,8 +25,6 @@ extern struct console *bfin_earlyserial_init(unsigned int port,
|
||||
extern struct console *bfin_jc_early_init(void);
|
||||
#endif
|
||||
|
||||
|
@ -70,10 +71,10 @@ Index: linux-3.2/arch/blackfin/kernel/early_printk.c
|
|||
/* Default console */
|
||||
#define DEFAULT_PORT 0
|
||||
#define DEFAULT_CFLAG CS8|B57600
|
||||
Index: linux-3.2/arch/microblaze/kernel/early_printk.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/microblaze/kernel/early_printk.c
|
||||
+++ 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
|
||||
--- a/arch/microblaze/kernel/early_printk.c
|
||||
+++ b/arch/microblaze/kernel/early_printk.c
|
||||
@@ -21,7 +21,6 @@
|
||||
#include <asm/setup.h>
|
||||
#include <asm/prom.h>
|
||||
|
@ -82,7 +83,7 @@ Index: linux-3.2/arch/microblaze/kernel/early_printk.c
|
|||
static u32 base_addr;
|
||||
|
||||
#ifdef CONFIG_SERIAL_UARTLITE_CONSOLE
|
||||
@@ -109,27 +108,11 @@ static struct console early_serial_uart1
|
||||
@@ -109,27 +108,11 @@ static struct console early_serial_uart16550_console = {
|
||||
};
|
||||
#endif /* CONFIG_SERIAL_8250_CONSOLE */
|
||||
|
||||
|
@ -140,11 +141,11 @@ Index: linux-3.2/arch/microblaze/kernel/early_printk.c
|
|||
- early_console_initialized = 0;
|
||||
+ early_console = NULL;
|
||||
}
|
||||
Index: linux-3.2/arch/mips/kernel/early_printk.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/mips/kernel/early_printk.c
|
||||
+++ linux-3.2/arch/mips/kernel/early_printk.c
|
||||
@@ -25,20 +25,18 @@ early_console_write(struct console *con,
|
||||
diff --git a/arch/mips/kernel/early_printk.c b/arch/mips/kernel/early_printk.c
|
||||
index 9ae813e..973c995 100644
|
||||
--- a/arch/mips/kernel/early_printk.c
|
||||
+++ b/arch/mips/kernel/early_printk.c
|
||||
@@ -25,20 +25,18 @@ early_console_write(struct console *con, const char *s, unsigned n)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -169,10 +170,10 @@ Index: linux-3.2/arch/mips/kernel/early_printk.c
|
|||
- register_console(&early_console);
|
||||
+ register_console(&early_console_prom);
|
||||
}
|
||||
Index: linux-3.2/arch/powerpc/kernel/udbg.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/powerpc/kernel/udbg.c
|
||||
+++ 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
|
||||
--- a/arch/powerpc/kernel/udbg.c
|
||||
+++ b/arch/powerpc/kernel/udbg.c
|
||||
@@ -182,15 +182,13 @@ static struct console udbg_console = {
|
||||
.index = 0,
|
||||
};
|
||||
|
@ -190,7 +191,7 @@ Index: linux-3.2/arch/powerpc/kernel/udbg.c
|
|||
return;
|
||||
|
||||
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");
|
||||
udbg_console.flags &= ~CON_BOOT;
|
||||
}
|
||||
|
@ -199,10 +200,10 @@ Index: linux-3.2/arch/powerpc/kernel/udbg.c
|
|||
register_console(&udbg_console);
|
||||
}
|
||||
|
||||
Index: linux-3.2/arch/sh/kernel/sh_bios.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/sh/kernel/sh_bios.c
|
||||
+++ 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
|
||||
--- a/arch/sh/kernel/sh_bios.c
|
||||
+++ b/arch/sh/kernel/sh_bios.c
|
||||
@@ -144,8 +144,6 @@ static struct console bios_console = {
|
||||
.index = -1,
|
||||
};
|
||||
|
@ -212,10 +213,10 @@ Index: linux-3.2/arch/sh/kernel/sh_bios.c
|
|||
static int __init setup_early_printk(char *buf)
|
||||
{
|
||||
int keep_early = 0;
|
||||
Index: linux-3.2/arch/sparc/kernel/setup_32.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/sparc/kernel/setup_32.c
|
||||
+++ 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
|
||||
--- a/arch/sparc/kernel/setup_32.c
|
||||
+++ b/arch/sparc/kernel/setup_32.c
|
||||
@@ -221,6 +221,7 @@ void __init setup_arch(char **cmdline_p)
|
||||
|
||||
boot_flags_init(*cmdline_p);
|
||||
|
@ -224,11 +225,11 @@ Index: linux-3.2/arch/sparc/kernel/setup_32.c
|
|||
register_console(&prom_early_console);
|
||||
|
||||
/* Set sparc_cpu_model */
|
||||
Index: linux-3.2/arch/sparc/kernel/setup_64.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/sparc/kernel/setup_64.c
|
||||
+++ linux-3.2/arch/sparc/kernel/setup_64.c
|
||||
@@ -487,6 +487,12 @@ static void __init init_sparc64_elf_hwca
|
||||
diff --git a/arch/sparc/kernel/setup_64.c b/arch/sparc/kernel/setup_64.c
|
||||
index a854a1c..b85d039 100644
|
||||
--- a/arch/sparc/kernel/setup_64.c
|
||||
+++ b/arch/sparc/kernel/setup_64.c
|
||||
@@ -487,6 +487,12 @@ static void __init init_sparc64_elf_hwcap(void)
|
||||
popc_patch();
|
||||
}
|
||||
|
||||
|
@ -250,11 +251,11 @@ Index: linux-3.2/arch/sparc/kernel/setup_64.c
|
|||
|
||||
if (tlb_type == hypervisor)
|
||||
printk("ARCH: SUN4V\n");
|
||||
Index: linux-3.2/arch/tile/kernel/early_printk.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/tile/kernel/early_printk.c
|
||||
+++ linux-3.2/arch/tile/kernel/early_printk.c
|
||||
@@ -32,25 +32,8 @@ static struct console early_hv_console =
|
||||
diff --git a/arch/tile/kernel/early_printk.c b/arch/tile/kernel/early_printk.c
|
||||
index 493a0e6..ba2ac00 100644
|
||||
--- a/arch/tile/kernel/early_printk.c
|
||||
+++ b/arch/tile/kernel/early_printk.c
|
||||
@@ -32,25 +32,8 @@ static struct console early_hv_console = {
|
||||
};
|
||||
|
||||
/* Direct interface for emergencies */
|
||||
|
@ -296,7 +297,7 @@ Index: linux-3.2/arch/tile/kernel/early_printk.c
|
|||
register_console(early_console);
|
||||
|
||||
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)
|
||||
{
|
||||
early_console_complete = 1;
|
||||
|
@ -320,11 +321,11 @@ Index: linux-3.2/arch/tile/kernel/early_printk.c
|
|||
return;
|
||||
early_printk("\
|
||||
Machine shutting down before console output is fully initialized.\n\
|
||||
Index: linux-3.2/arch/um/kernel/early_printk.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/um/kernel/early_printk.c
|
||||
+++ linux-3.2/arch/um/kernel/early_printk.c
|
||||
@@ -16,7 +16,7 @@ static void early_console_write(struct c
|
||||
diff --git a/arch/um/kernel/early_printk.c b/arch/um/kernel/early_printk.c
|
||||
index ec649bf..183060f 100644
|
||||
--- a/arch/um/kernel/early_printk.c
|
||||
+++ b/arch/um/kernel/early_printk.c
|
||||
@@ -16,7 +16,7 @@ static void early_console_write(struct console *con, const char *s, unsigned int
|
||||
um_early_printk(s, n);
|
||||
}
|
||||
|
||||
|
@ -346,11 +347,11 @@ Index: linux-3.2/arch/um/kernel/early_printk.c
|
|||
return 0;
|
||||
}
|
||||
|
||||
Index: linux-3.2/arch/unicore32/kernel/early_printk.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/unicore32/kernel/early_printk.c
|
||||
+++ linux-3.2/arch/unicore32/kernel/early_printk.c
|
||||
@@ -33,21 +33,17 @@ static struct console early_ocd_console
|
||||
diff --git a/arch/unicore32/kernel/early_printk.c b/arch/unicore32/kernel/early_printk.c
|
||||
index 3922255..9be0d5d 100644
|
||||
--- a/arch/unicore32/kernel/early_printk.c
|
||||
+++ b/arch/unicore32/kernel/early_printk.c
|
||||
@@ -33,21 +33,17 @@ static struct console early_ocd_console = {
|
||||
.index = -1,
|
||||
};
|
||||
|
||||
|
@ -376,11 +377,11 @@ Index: linux-3.2/arch/unicore32/kernel/early_printk.c
|
|||
|
||||
if (keep_early)
|
||||
early_console->flags &= ~CON_BOOT;
|
||||
Index: linux-3.2/arch/x86/kernel/early_printk.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/x86/kernel/early_printk.c
|
||||
+++ linux-3.2/arch/x86/kernel/early_printk.c
|
||||
@@ -169,25 +169,9 @@ static struct console early_serial_conso
|
||||
diff --git a/arch/x86/kernel/early_printk.c b/arch/x86/kernel/early_printk.c
|
||||
index cd28a35..5f3d9c5 100644
|
||||
--- a/arch/x86/kernel/early_printk.c
|
||||
+++ b/arch/x86/kernel/early_printk.c
|
||||
@@ -169,25 +169,9 @@ static struct console early_serial_console = {
|
||||
.index = -1,
|
||||
};
|
||||
|
||||
|
@ -407,7 +408,7 @@ Index: linux-3.2/arch/x86/kernel/early_printk.c
|
|||
printk(KERN_CRIT "ERROR: earlyprintk= %s already used\n",
|
||||
con->name);
|
||||
return;
|
||||
@@ -207,9 +191,8 @@ static int __init setup_early_printk(cha
|
||||
@@ -207,9 +191,8 @@ static int __init setup_early_printk(char *buf)
|
||||
if (!buf)
|
||||
return 0;
|
||||
|
||||
|
@ -418,10 +419,10 @@ Index: linux-3.2/arch/x86/kernel/early_printk.c
|
|||
|
||||
keep = (strstr(buf, "keep") != NULL);
|
||||
|
||||
Index: linux-3.2/include/linux/console.h
|
||||
===================================================================
|
||||
--- linux-3.2.orig/include/linux/console.h
|
||||
+++ linux-3.2/include/linux/console.h
|
||||
diff --git a/include/linux/console.h b/include/linux/console.h
|
||||
index 7453cfd..e5b5dc0 100644
|
||||
--- a/include/linux/console.h
|
||||
+++ b/include/linux/console.h
|
||||
@@ -133,6 +133,7 @@ struct console {
|
||||
for (con = console_drivers; con != NULL; con = con->next)
|
||||
|
||||
|
@ -430,10 +431,10 @@ Index: linux-3.2/include/linux/console.h
|
|||
|
||||
extern int add_preferred_console(char *name, int idx, char *options);
|
||||
extern int update_console_cmdline(char *name, int idx, char *name_new, int idx_new, char *options);
|
||||
Index: linux-3.2/include/linux/printk.h
|
||||
===================================================================
|
||||
--- linux-3.2.orig/include/linux/printk.h
|
||||
+++ linux-3.2/include/linux/printk.h
|
||||
diff --git a/include/linux/printk.h b/include/linux/printk.h
|
||||
index f0e22f7..be10455 100644
|
||||
--- a/include/linux/printk.h
|
||||
+++ b/include/linux/printk.h
|
||||
@@ -88,8 +88,13 @@ int no_printk(const char *fmt, ...)
|
||||
return 0;
|
||||
}
|
||||
|
@ -448,10 +449,10 @@ Index: linux-3.2/include/linux/printk.h
|
|||
|
||||
extern int printk_needs_cpu(int cpu);
|
||||
extern void printk_tick(void);
|
||||
Index: linux-3.2/kernel/printk.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/kernel/printk.c
|
||||
+++ linux-3.2/kernel/printk.c
|
||||
diff --git a/kernel/printk.c b/kernel/printk.c
|
||||
index 7982a0a..b7aa50e 100644
|
||||
--- a/kernel/printk.c
|
||||
+++ b/kernel/printk.c
|
||||
@@ -44,13 +44,6 @@
|
||||
|
||||
#include <asm/uaccess.h>
|
||||
|
@ -466,7 +467,7 @@ Index: linux-3.2/kernel/printk.c
|
|||
#define __LOG_BUF_LEN (1 << CONFIG_LOG_BUF_SHIFT)
|
||||
|
||||
/* 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 __init ignore_loglevel_setup(char *str)
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
Subject: printk-kill.patch
|
||||
From 91869f3a1488dba10d311b5892e4555e94f67353 Mon Sep 17 00:00:00 2001
|
||||
From: Ingo Molnar <mingo@elte.hu>
|
||||
Date: Fri, 22 Jul 2011 17:58:40 +0200
|
||||
Subject: [PATCH 074/267] printk-kill.patch
|
||||
|
||||
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
||||
---
|
||||
|
@ -9,10 +10,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
|||
kernel/watchdog.c | 15 +++++++++++++--
|
||||
3 files changed, 48 insertions(+), 3 deletions(-)
|
||||
|
||||
Index: linux-3.2/include/linux/printk.h
|
||||
===================================================================
|
||||
--- linux-3.2.orig/include/linux/printk.h
|
||||
+++ linux-3.2/include/linux/printk.h
|
||||
diff --git a/include/linux/printk.h b/include/linux/printk.h
|
||||
index be10455..a53adf6 100644
|
||||
--- a/include/linux/printk.h
|
||||
+++ b/include/linux/printk.h
|
||||
@@ -91,9 +91,11 @@ int no_printk(const char *fmt, ...)
|
||||
#ifdef CONFIG_EARLY_PRINTK
|
||||
extern asmlinkage __printf(1, 2)
|
||||
|
@ -25,7 +26,7 @@ Index: linux-3.2/include/linux/printk.h
|
|||
#endif
|
||||
|
||||
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__)
|
||||
extern bool printk_timed_ratelimit(unsigned long *caller_jiffies,
|
||||
unsigned int interval_msec);
|
||||
|
@ -33,11 +34,11 @@ Index: linux-3.2/include/linux/printk.h
|
|||
extern int printk_delay_msec;
|
||||
extern int dmesg_restrict;
|
||||
extern int kptr_restrict;
|
||||
Index: linux-3.2/kernel/printk.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/kernel/printk.c
|
||||
+++ linux-3.2/kernel/printk.c
|
||||
@@ -532,6 +532,32 @@ asmlinkage void early_printk(const char
|
||||
diff --git a/kernel/printk.c b/kernel/printk.c
|
||||
index b7aa50e..96ee3cd 100644
|
||||
--- a/kernel/printk.c
|
||||
+++ b/kernel/printk.c
|
||||
@@ -532,6 +532,32 @@ asmlinkage void early_printk(const char *fmt, ...)
|
||||
early_vprintk(fmt, ap);
|
||||
va_end(ap);
|
||||
}
|
||||
|
@ -70,7 +71,7 @@ Index: linux-3.2/kernel/printk.c
|
|||
#endif
|
||||
|
||||
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;
|
||||
char special;
|
||||
|
||||
|
@ -84,11 +85,11 @@ Index: linux-3.2/kernel/printk.c
|
|||
boot_delay_msec();
|
||||
printk_delay();
|
||||
|
||||
Index: linux-3.2/kernel/watchdog.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/kernel/watchdog.c
|
||||
+++ linux-3.2/kernel/watchdog.c
|
||||
@@ -201,6 +201,8 @@ static int is_softlockup(unsigned long t
|
||||
diff --git a/kernel/watchdog.c b/kernel/watchdog.c
|
||||
index 1d7bca7..c7e2a2f 100644
|
||||
--- a/kernel/watchdog.c
|
||||
+++ b/kernel/watchdog.c
|
||||
@@ -201,6 +201,8 @@ static int is_softlockup(unsigned long touch_ts)
|
||||
|
||||
#ifdef CONFIG_HARDLOCKUP_DETECTOR
|
||||
|
||||
|
@ -97,7 +98,7 @@ Index: linux-3.2/kernel/watchdog.c
|
|||
static struct perf_event_attr wd_hw_attr = {
|
||||
.type = PERF_TYPE_HARDWARE,
|
||||
.config = PERF_COUNT_HW_CPU_CYCLES,
|
||||
@@ -235,10 +237,19 @@ static void watchdog_overflow_callback(s
|
||||
@@ -235,10 +237,19 @@ static void watchdog_overflow_callback(struct perf_event *event,
|
||||
if (__this_cpu_read(hard_watchdog_warn) == true)
|
||||
return;
|
||||
|
||||
|
@ -119,3 +120,6 @@ Index: linux-3.2/kernel/watchdog.c
|
|||
|
||||
__this_cpu_write(hard_watchdog_warn, true);
|
||||
return;
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,10 +1,8 @@
|
|||
Subject: printk: %27force_early_printk%27 boot param to help with debugging
|
||||
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 7e09744cd7ca0c94a940049f7557916e764ef9ea Mon Sep 17 00:00:00 2001
|
||||
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
|
||||
says.
|
||||
|
@ -17,11 +15,11 @@ Link: http://lkml.kernel.org/n/tip-ykb97nsfmobq44xketrxs977@git.kernel.org
|
|||
kernel/printk.c | 7 +++++++
|
||||
1 file changed, 7 insertions(+)
|
||||
|
||||
Index: linux-3.2/kernel/printk.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/kernel/printk.c
|
||||
+++ linux-3.2/kernel/printk.c
|
||||
@@ -541,6 +541,13 @@ asmlinkage void early_printk(const char
|
||||
diff --git a/kernel/printk.c b/kernel/printk.c
|
||||
index 96ee3cd..1f06626 100644
|
||||
--- a/kernel/printk.c
|
||||
+++ b/kernel/printk.c
|
||||
@@ -541,6 +541,13 @@ asmlinkage void early_printk(const char *fmt, ...)
|
||||
*/
|
||||
static int __read_mostly printk_killswitch;
|
||||
|
||||
|
@ -35,3 +33,6 @@ Index: linux-3.2/kernel/printk.c
|
|||
void printk_kill(void)
|
||||
{
|
||||
printk_killswitch = 1;
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -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>
|
||||
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>
|
||||
---
|
||||
kernel/Kconfig.preempt | 19 +++++++++++++++++--
|
||||
1 file changed, 17 insertions(+), 2 deletions(-)
|
||||
|
||||
Index: linux-3.2/kernel/Kconfig.preempt
|
||||
===================================================================
|
||||
--- linux-3.2.orig/kernel/Kconfig.preempt
|
||||
+++ linux-3.2/kernel/Kconfig.preempt
|
||||
diff --git a/kernel/Kconfig.preempt b/kernel/Kconfig.preempt
|
||||
index 24e7cb0..35c6f20 100644
|
||||
--- a/kernel/Kconfig.preempt
|
||||
+++ b/kernel/Kconfig.preempt
|
||||
@@ -1,3 +1,10 @@
|
||||
+config PREEMPT
|
||||
+ bool
|
||||
|
@ -49,3 +50,6 @@ Index: linux-3.2/kernel/Kconfig.preempt
|
|||
endchoice
|
||||
|
||||
config PREEMPT_COUNT
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,18 +1,18 @@
|
|||
From 7258f0c5442a0dde07c06e12f431134e4b9bff47 Mon Sep 17 00:00:00 2001
|
||||
From: Ingo Molnar <mingo@elte.hu>
|
||||
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: Thomas Gleixner <tglx@linutronix.de>
|
||||
|
||||
---
|
||||
include/asm-generic/bug.h | 18 ++++++++++++++++++
|
||||
1 file changed, 18 insertions(+)
|
||||
|
||||
Index: linux-3.2/include/asm-generic/bug.h
|
||||
===================================================================
|
||||
--- linux-3.2.orig/include/asm-generic/bug.h
|
||||
+++ 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
|
||||
--- a/include/asm-generic/bug.h
|
||||
+++ b/include/asm-generic/bug.h
|
||||
@@ -3,6 +3,10 @@
|
||||
|
||||
#include <linux/compiler.h>
|
||||
|
@ -24,7 +24,7 @@ Index: linux-3.2/include/asm-generic/bug.h
|
|||
#ifdef CONFIG_BUG
|
||||
|
||||
#ifdef CONFIG_GENERIC_BUG
|
||||
@@ -202,4 +206,18 @@ extern void warn_slowpath_null(const cha
|
||||
@@ -202,4 +206,18 @@ extern void warn_slowpath_null(const char *file, const int line);
|
||||
# define WARN_ON_SMP(x) ({0;})
|
||||
#endif
|
||||
|
||||
|
@ -43,3 +43,6 @@ Index: linux-3.2/include/asm-generic/bug.h
|
|||
+#endif
|
||||
+
|
||||
#endif
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,23 +1,23 @@
|
|||
From 7ff90eac6ba7e1e5fefaf931f42ec83ed6534a7c Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
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
|
||||
interrupt disabled sections on PREEMPT_RT or to explicitely disable
|
||||
interrupts on PREEMPT_RT.
|
||||
|
||||
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
||||
|
||||
---
|
||||
include/linux/interrupt.h | 2 +-
|
||||
include/linux/irqflags.h | 19 +++++++++++++++++++
|
||||
2 files changed, 20 insertions(+), 1 deletion(-)
|
||||
|
||||
Index: linux-3.2/include/linux/interrupt.h
|
||||
===================================================================
|
||||
--- linux-3.2.orig/include/linux/interrupt.h
|
||||
+++ linux-3.2/include/linux/interrupt.h
|
||||
@@ -219,7 +219,7 @@ extern void devm_free_irq(struct device
|
||||
diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
|
||||
index 21b94de..ddd6b2a 100644
|
||||
--- a/include/linux/interrupt.h
|
||||
+++ b/include/linux/interrupt.h
|
||||
@@ -219,7 +219,7 @@ extern void devm_free_irq(struct device *dev, unsigned int irq, void *dev_id);
|
||||
#ifdef CONFIG_LOCKDEP
|
||||
# define local_irq_enable_in_hardirq() do { } while (0)
|
||||
#else
|
||||
|
@ -26,10 +26,10 @@ Index: linux-3.2/include/linux/interrupt.h
|
|||
#endif
|
||||
|
||||
extern void disable_irq_nosync(unsigned int irq);
|
||||
Index: linux-3.2/include/linux/irqflags.h
|
||||
===================================================================
|
||||
--- linux-3.2.orig/include/linux/irqflags.h
|
||||
+++ linux-3.2/include/linux/irqflags.h
|
||||
diff --git a/include/linux/irqflags.h b/include/linux/irqflags.h
|
||||
index d176d65..37b13c4 100644
|
||||
--- a/include/linux/irqflags.h
|
||||
+++ b/include/linux/irqflags.h
|
||||
@@ -147,4 +147,23 @@
|
||||
|
||||
#endif /* CONFIG_TRACE_IRQFLAGS_SUPPORT */
|
||||
|
@ -54,3 +54,6 @@ Index: linux-3.2/include/linux/irqflags.h
|
|||
+#endif
|
||||
+
|
||||
#endif
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,20 +1,20 @@
|
|||
From b114ea4baca627525d85c109fefcb2ba3de55ffa Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
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
|
||||
otherwise. Implement variants to avoid #ifdeffery.
|
||||
|
||||
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
||||
|
||||
---
|
||||
include/linux/preempt.h | 20 ++++++++++++++++++--
|
||||
1 file changed, 18 insertions(+), 2 deletions(-)
|
||||
|
||||
Index: linux-3.2/include/linux/preempt.h
|
||||
===================================================================
|
||||
--- linux-3.2.orig/include/linux/preempt.h
|
||||
+++ linux-3.2/include/linux/preempt.h
|
||||
diff --git a/include/linux/preempt.h b/include/linux/preempt.h
|
||||
index 227b0f5..29db25f 100644
|
||||
--- a/include/linux/preempt.h
|
||||
+++ b/include/linux/preempt.h
|
||||
@@ -54,11 +54,15 @@ do { \
|
||||
dec_preempt_count(); \
|
||||
} while (0)
|
||||
|
@ -52,3 +52,6 @@ Index: linux-3.2/include/linux/preempt.h
|
|||
#ifdef CONFIG_PREEMPT_NOTIFIERS
|
||||
|
||||
struct preempt_notifier;
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,22 +1,23 @@
|
|||
From 8568db0e556b5159c9c7d85ce78f66d1df5d50ee Mon Sep 17 00:00:00 2001
|
||||
From: Steven Rostedt <srostedt@redhat.com>
|
||||
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.
|
||||
|
||||
Signed-off-by: Steven Rostedt <srostedt@redhat.com>
|
||||
Signed-off-by: Ingo Molnar <mingo@elte.hu>
|
||||
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
||||
|
||||
---
|
||||
drivers/ata/libata-sff.c | 12 ++++++------
|
||||
1 file changed, 6 insertions(+), 6 deletions(-)
|
||||
|
||||
Index: linux-3.2/drivers/ata/libata-sff.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/drivers/ata/libata-sff.c
|
||||
+++ linux-3.2/drivers/ata/libata-sff.c
|
||||
@@ -678,9 +678,9 @@ unsigned int ata_sff_data_xfer_noirq(str
|
||||
diff --git a/drivers/ata/libata-sff.c b/drivers/ata/libata-sff.c
|
||||
index 4cadfa2..100f85c 100644
|
||||
--- a/drivers/ata/libata-sff.c
|
||||
+++ b/drivers/ata/libata-sff.c
|
||||
@@ -678,9 +678,9 @@ unsigned int ata_sff_data_xfer_noirq(struct ata_device *dev, unsigned char *buf,
|
||||
unsigned long flags;
|
||||
unsigned int consumed;
|
||||
|
||||
|
@ -28,7 +29,7 @@ Index: linux-3.2/drivers/ata/libata-sff.c
|
|||
|
||||
return consumed;
|
||||
}
|
||||
@@ -719,7 +719,7 @@ static void ata_pio_sector(struct ata_qu
|
||||
@@ -719,7 +719,7 @@ static void ata_pio_sector(struct ata_queued_cmd *qc)
|
||||
unsigned long flags;
|
||||
|
||||
/* FIXME: use a bounce buffer */
|
||||
|
@ -37,7 +38,7 @@ Index: linux-3.2/drivers/ata/libata-sff.c
|
|||
buf = kmap_atomic(page, KM_IRQ0);
|
||||
|
||||
/* do the actual data transfer */
|
||||
@@ -727,7 +727,7 @@ static void ata_pio_sector(struct ata_qu
|
||||
@@ -727,7 +727,7 @@ static void ata_pio_sector(struct ata_queued_cmd *qc)
|
||||
do_write);
|
||||
|
||||
kunmap_atomic(buf, KM_IRQ0);
|
||||
|
@ -64,3 +65,6 @@ Index: linux-3.2/drivers/ata/libata-sff.c
|
|||
} else {
|
||||
buf = page_address(page);
|
||||
consumed = ap->ops->sff_data_xfer(dev, buf + offset,
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,12 +1,12 @@
|
|||
From 56ffc28ceb835c0eb0bff7fb3395cd66ba0860b0 Mon Sep 17 00:00:00 2001
|
||||
From: Ingo Molnar <mingo@elte.hu>
|
||||
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.
|
||||
|
||||
Signed-off-by: Ingo Molnar <mingo@elte.hu>
|
||||
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
||||
|
||||
---
|
||||
drivers/ide/alim15x3.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 +++---
|
||||
7 files changed, 16 insertions(+), 16 deletions(-)
|
||||
|
||||
Index: linux-3.2/drivers/ide/alim15x3.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/drivers/ide/alim15x3.c
|
||||
+++ linux-3.2/drivers/ide/alim15x3.c
|
||||
@@ -234,7 +234,7 @@ static int init_chipset_ali15x3(struct p
|
||||
diff --git a/drivers/ide/alim15x3.c b/drivers/ide/alim15x3.c
|
||||
index 2c8016a..6fd6037 100644
|
||||
--- a/drivers/ide/alim15x3.c
|
||||
+++ b/drivers/ide/alim15x3.c
|
||||
@@ -234,7 +234,7 @@ static int init_chipset_ali15x3(struct pci_dev *dev)
|
||||
|
||||
isa_dev = pci_get_device(PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M1533, NULL);
|
||||
|
||||
|
@ -39,11 +39,11 @@ Index: linux-3.2/drivers/ide/alim15x3.c
|
|||
return 0;
|
||||
}
|
||||
|
||||
Index: linux-3.2/drivers/ide/hpt366.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/drivers/ide/hpt366.c
|
||||
+++ linux-3.2/drivers/ide/hpt366.c
|
||||
@@ -1241,7 +1241,7 @@ static int __devinit init_dma_hpt366(ide
|
||||
diff --git a/drivers/ide/hpt366.c b/drivers/ide/hpt366.c
|
||||
index 58c51cd..d2a4059 100644
|
||||
--- a/drivers/ide/hpt366.c
|
||||
+++ b/drivers/ide/hpt366.c
|
||||
@@ -1241,7 +1241,7 @@ static int __devinit init_dma_hpt366(ide_hwif_t *hwif,
|
||||
|
||||
dma_old = inb(base + 2);
|
||||
|
||||
|
@ -52,7 +52,7 @@ Index: linux-3.2/drivers/ide/hpt366.c
|
|||
|
||||
dma_new = dma_old;
|
||||
pci_read_config_byte(dev, hwif->channel ? 0x4b : 0x43, &masterdma);
|
||||
@@ -1252,7 +1252,7 @@ static int __devinit init_dma_hpt366(ide
|
||||
@@ -1252,7 +1252,7 @@ static int __devinit init_dma_hpt366(ide_hwif_t *hwif,
|
||||
if (dma_new != dma_old)
|
||||
outb(dma_new, base + 2);
|
||||
|
||||
|
@ -61,11 +61,11 @@ Index: linux-3.2/drivers/ide/hpt366.c
|
|||
|
||||
printk(KERN_INFO " %s: BM-DMA at 0x%04lx-0x%04lx\n",
|
||||
hwif->name, base, base + 7);
|
||||
Index: linux-3.2/drivers/ide/ide-io-std.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/drivers/ide/ide-io-std.c
|
||||
+++ linux-3.2/drivers/ide/ide-io-std.c
|
||||
@@ -175,7 +175,7 @@ void ide_input_data(ide_drive_t *drive,
|
||||
diff --git a/drivers/ide/ide-io-std.c b/drivers/ide/ide-io-std.c
|
||||
index 1976397..4169433 100644
|
||||
--- a/drivers/ide/ide-io-std.c
|
||||
+++ b/drivers/ide/ide-io-std.c
|
||||
@@ -175,7 +175,7 @@ void ide_input_data(ide_drive_t *drive, struct ide_cmd *cmd, void *buf,
|
||||
unsigned long uninitialized_var(flags);
|
||||
|
||||
if ((io_32bit & 2) && !mmio) {
|
||||
|
@ -74,7 +74,7 @@ Index: linux-3.2/drivers/ide/ide-io-std.c
|
|||
ata_vlb_sync(io_ports->nsect_addr);
|
||||
}
|
||||
|
||||
@@ -186,7 +186,7 @@ void ide_input_data(ide_drive_t *drive,
|
||||
@@ -186,7 +186,7 @@ void ide_input_data(ide_drive_t *drive, struct ide_cmd *cmd, void *buf,
|
||||
insl(data_addr, buf, words);
|
||||
|
||||
if ((io_32bit & 2) && !mmio)
|
||||
|
@ -83,7 +83,7 @@ Index: linux-3.2/drivers/ide/ide-io-std.c
|
|||
|
||||
if (((len + 1) & 3) < 2)
|
||||
return;
|
||||
@@ -219,7 +219,7 @@ void ide_output_data(ide_drive_t *drive,
|
||||
@@ -219,7 +219,7 @@ void ide_output_data(ide_drive_t *drive, struct ide_cmd *cmd, void *buf,
|
||||
unsigned long uninitialized_var(flags);
|
||||
|
||||
if ((io_32bit & 2) && !mmio) {
|
||||
|
@ -92,7 +92,7 @@ Index: linux-3.2/drivers/ide/ide-io-std.c
|
|||
ata_vlb_sync(io_ports->nsect_addr);
|
||||
}
|
||||
|
||||
@@ -230,7 +230,7 @@ void ide_output_data(ide_drive_t *drive,
|
||||
@@ -230,7 +230,7 @@ void ide_output_data(ide_drive_t *drive, struct ide_cmd *cmd, void *buf,
|
||||
outsl(data_addr, buf, words);
|
||||
|
||||
if ((io_32bit & 2) && !mmio)
|
||||
|
@ -101,11 +101,11 @@ Index: linux-3.2/drivers/ide/ide-io-std.c
|
|||
|
||||
if (((len + 1) & 3) < 2)
|
||||
return;
|
||||
Index: linux-3.2/drivers/ide/ide-io.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/drivers/ide/ide-io.c
|
||||
+++ linux-3.2/drivers/ide/ide-io.c
|
||||
@@ -659,7 +659,7 @@ void ide_timer_expiry (unsigned long dat
|
||||
diff --git a/drivers/ide/ide-io.c b/drivers/ide/ide-io.c
|
||||
index 177db6d..079ae6b 100644
|
||||
--- a/drivers/ide/ide-io.c
|
||||
+++ b/drivers/ide/ide-io.c
|
||||
@@ -659,7 +659,7 @@ void ide_timer_expiry (unsigned long data)
|
||||
/* disable_irq_nosync ?? */
|
||||
disable_irq(hwif->irq);
|
||||
/* local CPU only, as if we were handling an interrupt */
|
||||
|
@ -114,11 +114,11 @@ Index: linux-3.2/drivers/ide/ide-io.c
|
|||
if (hwif->polling) {
|
||||
startstop = handler(drive);
|
||||
} else if (drive_is_ready(drive)) {
|
||||
Index: linux-3.2/drivers/ide/ide-iops.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/drivers/ide/ide-iops.c
|
||||
+++ linux-3.2/drivers/ide/ide-iops.c
|
||||
@@ -129,12 +129,12 @@ int __ide_wait_stat(ide_drive_t *drive,
|
||||
diff --git a/drivers/ide/ide-iops.c b/drivers/ide/ide-iops.c
|
||||
index 376f2dc..f014dd1 100644
|
||||
--- a/drivers/ide/ide-iops.c
|
||||
+++ b/drivers/ide/ide-iops.c
|
||||
@@ -129,12 +129,12 @@ int __ide_wait_stat(ide_drive_t *drive, u8 good, u8 bad,
|
||||
if ((stat & ATA_BUSY) == 0)
|
||||
break;
|
||||
|
||||
|
@ -133,11 +133,11 @@ Index: linux-3.2/drivers/ide/ide-iops.c
|
|||
}
|
||||
/*
|
||||
* Allow status to settle, then read it again.
|
||||
Index: linux-3.2/drivers/ide/ide-probe.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/drivers/ide/ide-probe.c
|
||||
+++ linux-3.2/drivers/ide/ide-probe.c
|
||||
@@ -196,10 +196,10 @@ static void do_identify(ide_drive_t *dri
|
||||
diff --git a/drivers/ide/ide-probe.c b/drivers/ide/ide-probe.c
|
||||
index 068cef0..38e69e1 100644
|
||||
--- a/drivers/ide/ide-probe.c
|
||||
+++ b/drivers/ide/ide-probe.c
|
||||
@@ -196,10 +196,10 @@ static void do_identify(ide_drive_t *drive, u8 cmd, u16 *id)
|
||||
int bswap = 1;
|
||||
|
||||
/* local CPU only; some systems need this */
|
||||
|
@ -150,11 +150,11 @@ Index: linux-3.2/drivers/ide/ide-probe.c
|
|||
|
||||
drive->dev_flags |= IDE_DFLAG_ID_READ;
|
||||
#ifdef DEBUG
|
||||
Index: linux-3.2/drivers/ide/ide-taskfile.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/drivers/ide/ide-taskfile.c
|
||||
+++ linux-3.2/drivers/ide/ide-taskfile.c
|
||||
@@ -251,7 +251,7 @@ void ide_pio_bytes(ide_drive_t *drive, s
|
||||
diff --git a/drivers/ide/ide-taskfile.c b/drivers/ide/ide-taskfile.c
|
||||
index 5bc2839..da861a6 100644
|
||||
--- a/drivers/ide/ide-taskfile.c
|
||||
+++ b/drivers/ide/ide-taskfile.c
|
||||
@@ -251,7 +251,7 @@ void ide_pio_bytes(ide_drive_t *drive, struct ide_cmd *cmd,
|
||||
|
||||
page_is_high = PageHighMem(page);
|
||||
if (page_is_high)
|
||||
|
@ -163,7 +163,7 @@ Index: linux-3.2/drivers/ide/ide-taskfile.c
|
|||
|
||||
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);
|
||||
|
||||
if (page_is_high)
|
||||
|
@ -172,7 +172,7 @@ Index: linux-3.2/drivers/ide/ide-taskfile.c
|
|||
|
||||
len -= nr_bytes;
|
||||
}
|
||||
@@ -415,7 +415,7 @@ static ide_startstop_t pre_task_out_intr
|
||||
@@ -415,7 +415,7 @@ static ide_startstop_t pre_task_out_intr(ide_drive_t *drive,
|
||||
}
|
||||
|
||||
if ((drive->dev_flags & IDE_DFLAG_UNMASK) == 0)
|
||||
|
@ -181,3 +181,6 @@ Index: linux-3.2/drivers/ide/ide-taskfile.c
|
|||
|
||||
ide_set_handler(drive, &task_pio_intr, WAIT_WORSTCASE);
|
||||
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,6 +1,8 @@
|
|||
From cd9cb9fbaf1df154b72fa6be9a3665ba7ad81433 Mon Sep 17 00:00:00 2001
|
||||
From: Sven-Thorsten Dietrich <sdietrich@novell.com>
|
||||
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
|
||||
Kernel.
|
||||
|
@ -13,16 +15,15 @@ changes."
|
|||
Signed-off-by: Sven-Thorsten Dietrich <sven@thebigcorporation.com>
|
||||
Signed-off-by: Ingo Molnar <mingo@elte.hu>
|
||||
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
||||
|
||||
---
|
||||
drivers/infiniband/ulp/ipoib/ipoib_multicast.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
Index: linux-3.2/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
|
||||
+++ linux-3.2/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
|
||||
@@ -806,7 +806,7 @@ void ipoib_mcast_restart_task(struct wor
|
||||
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
|
||||
index e5069b4..2683192 100644
|
||||
--- a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
|
||||
+++ b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
|
||||
@@ -799,7 +799,7 @@ void ipoib_mcast_restart_task(struct work_struct *work)
|
||||
|
||||
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);
|
||||
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);
|
||||
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 */
|
||||
list_for_each_entry_safe(mcast, tmcast, &remove_list, list) {
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,21 +1,22 @@
|
|||
From 359b7e30fef466df9d38227b1f570e21fcb37b5e Mon Sep 17 00:00:00 2001
|
||||
From: Ingo Molnar <mingo@elte.hu>
|
||||
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.
|
||||
|
||||
Signed-off-by: Ingo Molnar <mingo@elte.hu>
|
||||
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
||||
|
||||
---
|
||||
drivers/input/gameport/gameport.c | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
Index: linux-3.2/drivers/input/gameport/gameport.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/drivers/input/gameport/gameport.c
|
||||
+++ linux-3.2/drivers/input/gameport/gameport.c
|
||||
@@ -87,12 +87,12 @@ static int gameport_measure_speed(struct
|
||||
diff --git a/drivers/input/gameport/gameport.c b/drivers/input/gameport/gameport.c
|
||||
index c351aa4..1ecaf60 100644
|
||||
--- a/drivers/input/gameport/gameport.c
|
||||
+++ b/drivers/input/gameport/gameport.c
|
||||
@@ -87,12 +87,12 @@ static int gameport_measure_speed(struct gameport *gameport)
|
||||
tx = 1 << 30;
|
||||
|
||||
for(i = 0; i < 50; i++) {
|
||||
|
@ -30,7 +31,7 @@ Index: linux-3.2/drivers/input/gameport/gameport.c
|
|||
udelay(i * 10);
|
||||
if ((t = DELTA(t2,t1) - DELTA(t3,t2)) < tx) tx = t;
|
||||
}
|
||||
@@ -111,11 +111,11 @@ static int gameport_measure_speed(struct
|
||||
@@ -111,11 +111,11 @@ static int gameport_measure_speed(struct gameport *gameport)
|
||||
tx = 1 << 30;
|
||||
|
||||
for(i = 0; i < 50; i++) {
|
||||
|
@ -44,3 +45,6 @@ Index: linux-3.2/drivers/input/gameport/gameport.c
|
|||
udelay(i * 10);
|
||||
if (t2 - t1 < tx) tx = t2 - t1;
|
||||
}
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,19 +1,19 @@
|
|||
From 6bd3fc45f9c1bd877a0fd6776610ca5658dae3b1 Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
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.
|
||||
|
||||
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
||||
|
||||
---
|
||||
arch/x86/include/asm/acpi.h | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
Index: linux-3.2/arch/x86/include/asm/acpi.h
|
||||
===================================================================
|
||||
--- linux-3.2.orig/arch/x86/include/asm/acpi.h
|
||||
+++ 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
|
||||
--- a/arch/x86/include/asm/acpi.h
|
||||
+++ b/arch/x86/include/asm/acpi.h
|
||||
@@ -51,8 +51,8 @@
|
||||
|
||||
#define ACPI_ASM_MACROS
|
||||
|
@ -25,3 +25,6 @@ Index: linux-3.2/arch/x86/include/asm/acpi.h
|
|||
#define ACPI_FLUSH_CPU_CACHE() wbinvd()
|
||||
|
||||
int __acpi_acquire_global_lock(unsigned int *lock);
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,20 +1,21 @@
|
|||
From 1e9f1cee0ada298f8ffa264a72156c25d9e1b5c1 Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
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
|
||||
is serialized by the locks. No need to disable interrupts.
|
||||
|
||||
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
||||
|
||||
---
|
||||
kernel/user.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
Index: linux-3.2/kernel/user.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/kernel/user.c
|
||||
+++ linux-3.2/kernel/user.c
|
||||
diff --git a/kernel/user.c b/kernel/user.c
|
||||
index 71dd236..b831e51 100644
|
||||
--- a/kernel/user.c
|
||||
+++ b/kernel/user.c
|
||||
@@ -129,11 +129,11 @@ void free_uid(struct user_struct *up)
|
||||
if (!up)
|
||||
return;
|
||||
|
@ -29,3 +30,6 @@ Index: linux-3.2/kernel/user.c
|
|||
}
|
||||
|
||||
struct user_struct *alloc_uid(struct user_namespace *ns, uid_t uid)
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,6 +1,8 @@
|
|||
From fadf7cb3af643dd7aa4ad2322df4916621e09e03 Mon Sep 17 00:00:00 2001
|
||||
From: Ingo Molnar <mingo@elte.hu>
|
||||
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:
|
||||
|
||||
|
@ -41,16 +43,15 @@ So replace it with _nort(). This code needs a second look.
|
|||
Reported-by: Frederic Weisbecker <fweisbec@gmail.com>
|
||||
Signed-off-by: Ingo Molnar <mingo@elte.hu>
|
||||
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
||||
|
||||
---
|
||||
kernel/res_counter.c | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
Index: linux-3.2/kernel/res_counter.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/kernel/res_counter.c
|
||||
+++ linux-3.2/kernel/res_counter.c
|
||||
@@ -43,7 +43,7 @@ int res_counter_charge(struct res_counte
|
||||
diff --git a/kernel/res_counter.c b/kernel/res_counter.c
|
||||
index 34683ef..21e9ec4 100644
|
||||
--- a/kernel/res_counter.c
|
||||
+++ b/kernel/res_counter.c
|
||||
@@ -43,7 +43,7 @@ int res_counter_charge(struct res_counter *counter, unsigned long val,
|
||||
struct res_counter *c, *u;
|
||||
|
||||
*limit_fail_at = NULL;
|
||||
|
@ -68,7 +69,7 @@ Index: linux-3.2/kernel/res_counter.c
|
|||
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;
|
||||
struct res_counter *c;
|
||||
|
||||
|
@ -84,3 +85,6 @@ Index: linux-3.2/kernel/res_counter.c
|
|||
}
|
||||
|
||||
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,22 +1,22 @@
|
|||
From aede9f913c631a8c15d7e4bc1898eb7021dc234c Mon Sep 17 00:00:00 2001
|
||||
From: Steven Rostedt <srostedt@redhat.com>
|
||||
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 ]
|
||||
|
||||
Signed-off-by: Steven Rostedt <srostedt@redhat.com>
|
||||
Signed-off-by: Ingo Molnar <mingo@elte.hu>
|
||||
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
||||
|
||||
---
|
||||
drivers/usb/core/hcd.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
Index: linux-3.2/drivers/usb/core/hcd.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/drivers/usb/core/hcd.c
|
||||
+++ linux-3.2/drivers/usb/core/hcd.c
|
||||
@@ -2145,7 +2145,7 @@ irqreturn_t usb_hcd_irq (int irq, void *
|
||||
diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c
|
||||
index 8cb9304..32dfd76 100644
|
||||
--- a/drivers/usb/core/hcd.c
|
||||
+++ b/drivers/usb/core/hcd.c
|
||||
@@ -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
|
||||
* 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))) {
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -34,3 +34,6 @@ Index: linux-3.2/drivers/usb/core/hcd.c
|
|||
return rc;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(usb_hcd_irq);
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
From 6dabd1ea3f534ed222bd7fb1391308d5e5ffc844 Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
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:
|
||||
|
||||
|
@ -20,16 +21,15 @@ Call Trace:
|
|||
....
|
||||
|
||||
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
||||
|
||||
---
|
||||
drivers/tty/tty_ldisc.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
Index: linux-3.2/drivers/tty/tty_ldisc.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/drivers/tty/tty_ldisc.c
|
||||
+++ linux-3.2/drivers/tty/tty_ldisc.c
|
||||
@@ -71,7 +71,7 @@ static void put_ldisc(struct tty_ldisc *
|
||||
diff --git a/drivers/tty/tty_ldisc.c b/drivers/tty/tty_ldisc.c
|
||||
index 8e0924f..820f7dc 100644
|
||||
--- a/drivers/tty/tty_ldisc.c
|
||||
+++ b/drivers/tty/tty_ldisc.c
|
||||
@@ -71,7 +71,7 @@ static void put_ldisc(struct tty_ldisc *ld)
|
||||
* We really want an "atomic_dec_and_lock_irqsave()",
|
||||
* but we don't have it, so this does it by hand.
|
||||
*/
|
||||
|
@ -38,7 +38,7 @@ Index: linux-3.2/drivers/tty/tty_ldisc.c
|
|||
if (atomic_dec_and_lock(&ld->users, &tty_ldisc_lock)) {
|
||||
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);
|
||||
return;
|
||||
}
|
||||
|
@ -47,3 +47,6 @@ Index: linux-3.2/drivers/tty/tty_ldisc.c
|
|||
wake_up(&tty_ldisc_idle);
|
||||
}
|
||||
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,17 +1,18 @@
|
|||
From 2d38de27401078dc4dce8c56993479d6e1dac21c Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
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>
|
||||
---
|
||||
lib/scatterlist.c | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
Index: linux-3.2/lib/scatterlist.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/lib/scatterlist.c
|
||||
+++ linux-3.2/lib/scatterlist.c
|
||||
@@ -423,7 +423,7 @@ void sg_miter_stop(struct sg_mapping_ite
|
||||
diff --git a/lib/scatterlist.c b/lib/scatterlist.c
|
||||
index 4ceb05d..181f364 100644
|
||||
--- a/lib/scatterlist.c
|
||||
+++ b/lib/scatterlist.c
|
||||
@@ -423,7 +423,7 @@ void sg_miter_stop(struct sg_mapping_iter *miter)
|
||||
flush_kernel_dcache_page(miter->page);
|
||||
|
||||
if (miter->__flags & SG_MITER_ATOMIC) {
|
||||
|
@ -20,7 +21,7 @@ Index: linux-3.2/lib/scatterlist.c
|
|||
kunmap_atomic(miter->addr, KM_BIO_SRC_IRQ);
|
||||
} else
|
||||
kunmap(miter->page);
|
||||
@@ -463,7 +463,7 @@ static size_t sg_copy_buffer(struct scat
|
||||
@@ -463,7 +463,7 @@ static size_t sg_copy_buffer(struct scatterlist *sgl, unsigned int nents,
|
||||
|
||||
sg_miter_start(&miter, sgl, nents, sg_flags);
|
||||
|
||||
|
@ -29,7 +30,7 @@ Index: linux-3.2/lib/scatterlist.c
|
|||
|
||||
while (sg_miter_next(&miter) && offset < buflen) {
|
||||
unsigned int len;
|
||||
@@ -480,7 +480,7 @@ static size_t sg_copy_buffer(struct scat
|
||||
@@ -480,7 +480,7 @@ static size_t sg_copy_buffer(struct scatterlist *sgl, unsigned int nents,
|
||||
|
||||
sg_miter_stop(&miter);
|
||||
|
||||
|
@ -38,3 +39,6 @@ Index: linux-3.2/lib/scatterlist.c
|
|||
return offset;
|
||||
}
|
||||
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -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>
|
||||
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>
|
||||
---
|
||||
kernel/signal.c | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
Index: linux-3.2/kernel/signal.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/kernel/signal.c
|
||||
+++ linux-3.2/kernel/signal.c
|
||||
@@ -1362,12 +1362,12 @@ struct sighand_struct *__lock_task_sigha
|
||||
diff --git a/kernel/signal.c b/kernel/signal.c
|
||||
index c8b1bc1..739c2e4 100644
|
||||
--- a/kernel/signal.c
|
||||
+++ b/kernel/signal.c
|
||||
@@ -1362,12 +1362,12 @@ struct sighand_struct *__lock_task_sighand(struct task_struct *tsk,
|
||||
struct sighand_struct *sighand;
|
||||
|
||||
for (;;) {
|
||||
|
@ -26,7 +27,7 @@ Index: linux-3.2/kernel/signal.c
|
|||
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);
|
||||
rcu_read_unlock();
|
||||
|
@ -35,3 +36,6 @@ Index: linux-3.2/kernel/signal.c
|
|||
}
|
||||
|
||||
return sighand;
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -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>
|
||||
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>
|
||||
---
|
||||
net/mac80211/rx.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
Index: linux-3.2/net/mac80211/rx.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/net/mac80211/rx.c
|
||||
+++ linux-3.2/net/mac80211/rx.c
|
||||
@@ -2958,7 +2958,7 @@ void ieee80211_rx(struct ieee80211_hw *h
|
||||
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
|
||||
index 064d20f..642d96c 100644
|
||||
--- a/net/mac80211/rx.c
|
||||
+++ b/net/mac80211/rx.c
|
||||
@@ -2958,7 +2958,7 @@ void ieee80211_rx(struct ieee80211_hw *hw, struct sk_buff *skb)
|
||||
struct ieee80211_supported_band *sband;
|
||||
struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb);
|
||||
|
||||
|
@ -20,3 +21,6 @@ Index: linux-3.2/net/mac80211/rx.c
|
|||
|
||||
if (WARN_ON(status->band < 0 ||
|
||||
status->band >= IEEE80211_NUM_BANDS))
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,20 +1,20 @@
|
|||
From d553f4dded23aedcf07184908178b715c78cc492 Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
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.
|
||||
|
||||
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
||||
|
||||
---
|
||||
include/linux/page_cgroup.h | 28 ++++++++++++++++++++++++++++
|
||||
mm/page_cgroup.c | 1 +
|
||||
2 files changed, 29 insertions(+)
|
||||
|
||||
Index: linux-3.2/include/linux/page_cgroup.h
|
||||
===================================================================
|
||||
--- linux-3.2.orig/include/linux/page_cgroup.h
|
||||
+++ 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
|
||||
--- a/include/linux/page_cgroup.h
|
||||
+++ b/include/linux/page_cgroup.h
|
||||
@@ -30,6 +30,10 @@ enum {
|
||||
*/
|
||||
struct page_cgroup {
|
||||
|
@ -26,7 +26,7 @@ Index: linux-3.2/include/linux/page_cgroup.h
|
|||
struct mem_cgroup *mem_cgroup;
|
||||
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.
|
||||
* 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
|
||||
Index: linux-3.2/mm/page_cgroup.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/mm/page_cgroup.c
|
||||
+++ linux-3.2/mm/page_cgroup.c
|
||||
@@ -17,6 +17,7 @@ static void __meminit init_page_cgroup(s
|
||||
diff --git a/mm/page_cgroup.c b/mm/page_cgroup.c
|
||||
index 2d123f9..2e0d18d 100644
|
||||
--- a/mm/page_cgroup.c
|
||||
+++ b/mm/page_cgroup.c
|
||||
@@ -17,6 +17,7 @@ static void __meminit init_page_cgroup(struct page_cgroup *pc, unsigned long id)
|
||||
set_page_cgroup_array_id(pc, id);
|
||||
pc->mem_cgroup = NULL;
|
||||
INIT_LIST_HEAD(&pc->lru);
|
||||
|
@ -93,3 +93,6 @@ Index: linux-3.2/mm/page_cgroup.c
|
|||
}
|
||||
static unsigned long total_usage;
|
||||
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
From 0d6994d78eab6e6ebe324aa490ad10ddd2fc4e31 Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
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
|
||||
replacements with a real spinlock.
|
||||
|
@ -12,11 +13,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
|||
include/linux/buffer_head.h | 34 ++++++++++++++++++++++++++++++++++
|
||||
3 files changed, 44 insertions(+), 21 deletions(-)
|
||||
|
||||
Index: linux-3.2/fs/buffer.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/fs/buffer.c
|
||||
+++ linux-3.2/fs/buffer.c
|
||||
@@ -331,8 +331,7 @@ static void end_buffer_async_read(struct
|
||||
diff --git a/fs/buffer.c b/fs/buffer.c
|
||||
index 19d8eb7..32c4680 100644
|
||||
--- a/fs/buffer.c
|
||||
+++ b/fs/buffer.c
|
||||
@@ -331,8 +331,7 @@ static void end_buffer_async_read(struct buffer_head *bh, int uptodate)
|
||||
* decide that the page is now completely done.
|
||||
*/
|
||||
first = page_buffers(page);
|
||||
|
@ -26,7 +27,7 @@ Index: linux-3.2/fs/buffer.c
|
|||
clear_buffer_async_read(bh);
|
||||
unlock_buffer(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;
|
||||
} 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
|
||||
@@ -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;
|
||||
|
||||
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);
|
||||
|
@ -57,7 +58,7 @@ Index: linux-3.2/fs/buffer.c
|
|||
|
||||
clear_buffer_async_write(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;
|
||||
}
|
||||
|
@ -75,7 +76,7 @@ Index: linux-3.2/fs/buffer.c
|
|||
}
|
||||
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);
|
||||
if (ret) {
|
||||
INIT_LIST_HEAD(&ret->b_assoc_buffers);
|
||||
|
@ -83,11 +84,11 @@ Index: linux-3.2/fs/buffer.c
|
|||
preempt_disable();
|
||||
__this_cpu_inc(bh_accounting.nr);
|
||||
recalc_bh_state();
|
||||
Index: linux-3.2/fs/ntfs/aops.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/fs/ntfs/aops.c
|
||||
+++ linux-3.2/fs/ntfs/aops.c
|
||||
@@ -108,8 +108,7 @@ static void ntfs_end_buffer_async_read(s
|
||||
diff --git a/fs/ntfs/aops.c b/fs/ntfs/aops.c
|
||||
index 0b1e885b..7fb7f1b 100644
|
||||
--- a/fs/ntfs/aops.c
|
||||
+++ b/fs/ntfs/aops.c
|
||||
@@ -108,8 +108,7 @@ static void ntfs_end_buffer_async_read(struct buffer_head *bh, int uptodate)
|
||||
"0x%llx.", (unsigned long long)bh->b_blocknr);
|
||||
}
|
||||
first = page_buffers(page);
|
||||
|
@ -97,7 +98,7 @@ Index: linux-3.2/fs/ntfs/aops.c
|
|||
clear_buffer_async_read(bh);
|
||||
unlock_buffer(bh);
|
||||
tmp = bh;
|
||||
@@ -124,8 +123,7 @@ static void ntfs_end_buffer_async_read(s
|
||||
@@ -124,8 +123,7 @@ static void ntfs_end_buffer_async_read(struct buffer_head *bh, int uptodate)
|
||||
}
|
||||
tmp = tmp->b_this_page;
|
||||
} while (tmp != bh);
|
||||
|
@ -107,7 +108,7 @@ Index: linux-3.2/fs/ntfs/aops.c
|
|||
/*
|
||||
* If none of the buffers had errors then we can set the page uptodate,
|
||||
* but we first have to perform the post read mst fixups, if the
|
||||
@@ -160,9 +158,7 @@ static void ntfs_end_buffer_async_read(s
|
||||
@@ -160,9 +158,7 @@ static void ntfs_end_buffer_async_read(struct buffer_head *bh, int uptodate)
|
||||
unlock_page(page);
|
||||
return;
|
||||
still_busy:
|
||||
|
@ -118,10 +119,10 @@ Index: linux-3.2/fs/ntfs/aops.c
|
|||
}
|
||||
|
||||
/**
|
||||
Index: linux-3.2/include/linux/buffer_head.h
|
||||
===================================================================
|
||||
--- linux-3.2.orig/include/linux/buffer_head.h
|
||||
+++ 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
|
||||
--- a/include/linux/buffer_head.h
|
||||
+++ b/include/linux/buffer_head.h
|
||||
@@ -72,8 +72,42 @@ struct buffer_head {
|
||||
struct address_space *b_assoc_map; /* mapping this buffer is
|
||||
associated with */
|
||||
|
@ -165,3 +166,6 @@ Index: linux-3.2/include/linux/buffer_head.h
|
|||
/*
|
||||
* macro tricks to expand the set_buffer_foo(), clear_buffer_foo()
|
||||
* and buffer_foo() functions.
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,6 +1,8 @@
|
|||
From c9293d9a9b626e39108b276a74a6d4794374a973 Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
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.
|
||||
|
||||
|
@ -12,11 +14,15 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
|||
include/linux/buffer_head.h | 10 ++++++++++
|
||||
include/linux/jbd_common.h | 24 ++++++++++++++++++++++++
|
||||
2 files changed, 34 insertions(+)
|
||||
---
|
||||
include/linux/buffer_head.h | 10 ++++++++++
|
||||
include/linux/jbd_common.h | 24 ++++++++++++++++++++++++
|
||||
2 files changed, 34 insertions(+)
|
||||
|
||||
Index: linux-3.2/include/linux/buffer_head.h
|
||||
===================================================================
|
||||
--- linux-3.2.orig/include/linux/buffer_head.h
|
||||
+++ 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
|
||||
--- a/include/linux/buffer_head.h
|
||||
+++ b/include/linux/buffer_head.h
|
||||
@@ -74,6 +74,11 @@ struct buffer_head {
|
||||
atomic_t b_count; /* users using this buffer_head */
|
||||
#ifdef CONFIG_PREEMPT_RT_BASE
|
||||
|
@ -29,7 +35,7 @@ Index: linux-3.2/include/linux/buffer_head.h
|
|||
#endif
|
||||
};
|
||||
|
||||
@@ -105,6 +110,11 @@ static inline void buffer_head_init_lock
|
||||
@@ -105,6 +110,11 @@ static inline void buffer_head_init_locks(struct buffer_head *bh)
|
||||
{
|
||||
#ifdef CONFIG_PREEMPT_RT_BASE
|
||||
spin_lock_init(&bh->b_uptodate_lock);
|
||||
|
@ -41,11 +47,11 @@ Index: linux-3.2/include/linux/buffer_head.h
|
|||
#endif
|
||||
}
|
||||
|
||||
Index: linux-3.2/include/linux/jbd_common.h
|
||||
===================================================================
|
||||
--- linux-3.2.orig/include/linux/jbd_common.h
|
||||
+++ linux-3.2/include/linux/jbd_common.h
|
||||
@@ -37,32 +37,56 @@ static inline struct journal_head *bh2jh
|
||||
diff --git a/include/linux/jbd_common.h b/include/linux/jbd_common.h
|
||||
index 6230f85..11c313e 100644
|
||||
--- a/include/linux/jbd_common.h
|
||||
+++ b/include/linux/jbd_common.h
|
||||
@@ -37,32 +37,56 @@ static inline struct journal_head *bh2jh(struct buffer_head *bh)
|
||||
|
||||
static inline void jbd_lock_bh_state(struct buffer_head *bh)
|
||||
{
|
||||
|
@ -102,3 +108,6 @@ Index: linux-3.2/include/linux/jbd_common.h
|
|||
}
|
||||
|
||||
#endif
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,16 +1,17 @@
|
|||
From 5b808390bbd3ef32efd5d44116bd0e5a17860200 Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
Date: Sun, 18 Mar 2011 10:22:04 +0100
|
||||
Subject: genirq: Disable DEBUG_SHIRQ for rt
|
||||
Date: Fri, 18 Mar 2011 10:22:04 +0100
|
||||
Subject: [PATCH 095/267] genirq: Disable DEBUG_SHIRQ for rt
|
||||
|
||||
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
||||
---
|
||||
lib/Kconfig.debug | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
Index: linux-3.2/lib/Kconfig.debug
|
||||
===================================================================
|
||||
--- linux-3.2.orig/lib/Kconfig.debug
|
||||
+++ linux-3.2/lib/Kconfig.debug
|
||||
diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
|
||||
index 82928f5..c347db3 100644
|
||||
--- a/lib/Kconfig.debug
|
||||
+++ b/lib/Kconfig.debug
|
||||
@@ -151,7 +151,7 @@ config DEBUG_KERNEL
|
||||
|
||||
config DEBUG_SHIRQ
|
||||
|
@ -20,3 +21,6 @@ Index: linux-3.2/lib/Kconfig.debug
|
|||
help
|
||||
Enable this to generate a spurious interrupt as soon as a shared
|
||||
interrupt handler is registered, and just before one is deregistered.
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,21 +1,21 @@
|
|||
From f190b6f8506745170cbb3754f21ab36267847483 Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
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
|
||||
unused. Disable it for -rt.
|
||||
|
||||
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
||||
|
||||
---
|
||||
kernel/irq/handle.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
Index: linux-3.2/kernel/irq/handle.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/kernel/irq/handle.c
|
||||
+++ linux-3.2/kernel/irq/handle.c
|
||||
@@ -156,8 +156,11 @@ handle_irq_event_percpu(struct irq_desc
|
||||
diff --git a/kernel/irq/handle.c b/kernel/irq/handle.c
|
||||
index 470d08c..634620c 100644
|
||||
--- a/kernel/irq/handle.c
|
||||
+++ b/kernel/irq/handle.c
|
||||
@@ -156,8 +156,11 @@ handle_irq_event_percpu(struct irq_desc *desc, struct irqaction *action)
|
||||
action = action->next;
|
||||
} while (action);
|
||||
|
||||
|
@ -27,3 +27,6 @@ Index: linux-3.2/kernel/irq/handle.c
|
|||
|
||||
if (!noirqdebug)
|
||||
note_interrupt(irq, desc, retval);
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,21 +1,21 @@
|
|||
From c52440d3a3faff677bbba7d09e44222de48b6cf2 Mon Sep 17 00:00:00 2001
|
||||
From: Ingo Molnar <mingo@elte.hu>
|
||||
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
|
||||
|
||||
Signed-off-by: Ingo Molnar <mingo@elte.hu>
|
||||
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
||||
|
||||
---
|
||||
kernel/irq/spurious.c | 10 ++++++++++
|
||||
1 file changed, 10 insertions(+)
|
||||
|
||||
Index: linux-3.2/kernel/irq/spurious.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/kernel/irq/spurious.c
|
||||
+++ linux-3.2/kernel/irq/spurious.c
|
||||
@@ -341,6 +341,11 @@ MODULE_PARM_DESC(noirqdebug, "Disable ir
|
||||
diff --git a/kernel/irq/spurious.c b/kernel/irq/spurious.c
|
||||
index dc813a9..d09e0f5 100644
|
||||
--- a/kernel/irq/spurious.c
|
||||
+++ b/kernel/irq/spurious.c
|
||||
@@ -341,6 +341,11 @@ MODULE_PARM_DESC(noirqdebug, "Disable irq lockup detection when true");
|
||||
|
||||
static int __init irqfixup_setup(char *str)
|
||||
{
|
||||
|
@ -39,3 +39,6 @@ Index: linux-3.2/kernel/irq/spurious.c
|
|||
irqfixup = 2;
|
||||
printk(KERN_WARNING "Misrouted IRQ fixup and polling support "
|
||||
"enabled\n");
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
Subject: genirq-force-threading.patch
|
||||
From 63d0b60e274fb76c5b8b1a2fd74a5d93eacc656a Mon Sep 17 00:00:00 2001
|
||||
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>
|
||||
---
|
||||
|
@ -8,11 +9,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
|||
kernel/irq/manage.c | 2 ++
|
||||
2 files changed, 8 insertions(+), 2 deletions(-)
|
||||
|
||||
Index: linux-3.2/include/linux/interrupt.h
|
||||
===================================================================
|
||||
--- linux-3.2.orig/include/linux/interrupt.h
|
||||
+++ linux-3.2/include/linux/interrupt.h
|
||||
@@ -396,9 +396,13 @@ static inline int disable_irq_wake(unsig
|
||||
diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
|
||||
index ddd6b2a..b9162dc 100644
|
||||
--- a/include/linux/interrupt.h
|
||||
+++ b/include/linux/interrupt.h
|
||||
@@ -396,9 +396,13 @@ static inline int disable_irq_wake(unsigned int irq)
|
||||
|
||||
|
||||
#ifdef CONFIG_IRQ_FORCED_THREADING
|
||||
|
@ -28,10 +29,10 @@ Index: linux-3.2/include/linux/interrupt.h
|
|||
#endif
|
||||
|
||||
#ifndef __ARCH_SET_SOFTIRQ_PENDING
|
||||
Index: linux-3.2/kernel/irq/manage.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/kernel/irq/manage.c
|
||||
+++ linux-3.2/kernel/irq/manage.c
|
||||
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c
|
||||
index 7600092..b3e6228 100644
|
||||
--- a/kernel/irq/manage.c
|
||||
+++ b/kernel/irq/manage.c
|
||||
@@ -18,6 +18,7 @@
|
||||
#include "internals.h"
|
||||
|
||||
|
@ -40,7 +41,7 @@ Index: linux-3.2/kernel/irq/manage.c
|
|||
__read_mostly bool force_irqthreads;
|
||||
|
||||
static int __init setup_forced_irqthreads(char *arg)
|
||||
@@ -26,6 +27,7 @@ static int __init setup_forced_irqthread
|
||||
@@ -26,6 +27,7 @@ static int __init setup_forced_irqthreads(char *arg)
|
||||
return 0;
|
||||
}
|
||||
early_param("threadirqs", setup_forced_irqthreads);
|
||||
|
@ -48,3 +49,6 @@ Index: linux-3.2/kernel/irq/manage.c
|
|||
#endif
|
||||
|
||||
/**
|
||||
--
|
||||
1.7.10
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
From 91639026470adfb7ab98a86b62dfefedb485e3a4 Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
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
|
||||
optimization. The reason is that the softirq thread is rescheduling
|
||||
|
@ -10,7 +11,6 @@ monoplize the CPU and livelock on UP systems.
|
|||
Remove it.
|
||||
|
||||
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
||||
|
||||
---
|
||||
drivers/net/ethernet/atheros/atl1c/atl1c_main.c | 6 +-----
|
||||
drivers/net/ethernet/atheros/atl1e/atl1e_main.c | 3 +--
|
||||
|
@ -21,11 +21,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
|||
drivers/net/rionet.c | 6 +-----
|
||||
7 files changed, 10 insertions(+), 31 deletions(-)
|
||||
|
||||
Index: linux-3.2/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
|
||||
+++ linux-3.2/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
|
||||
@@ -2236,11 +2236,7 @@ static netdev_tx_t atl1c_xmit_frame(stru
|
||||
diff --git a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
|
||||
index eccdcff..ee8d8a2 100644
|
||||
--- a/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(struct sk_buff *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) {
|
||||
/* no enough descriptor, just stop queue */
|
||||
Index: linux-3.2/drivers/net/ethernet/atheros/atl1e/atl1e_main.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/drivers/net/ethernet/atheros/atl1e/atl1e_main.c
|
||||
+++ linux-3.2/drivers/net/ethernet/atheros/atl1e/atl1e_main.c
|
||||
@@ -1819,8 +1819,7 @@ static netdev_tx_t atl1e_xmit_frame(stru
|
||||
diff --git a/drivers/net/ethernet/atheros/atl1e/atl1e_main.c b/drivers/net/ethernet/atheros/atl1e/atl1e_main.c
|
||||
index 95483bc..eaf84e9 100644
|
||||
--- a/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(struct sk_buff *skb,
|
||||
return NETDEV_TX_OK;
|
||||
}
|
||||
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) {
|
||||
/* no enough descriptor, just stop queue */
|
||||
Index: linux-3.2/drivers/net/ethernet/chelsio/cxgb/sge.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/drivers/net/ethernet/chelsio/cxgb/sge.c
|
||||
+++ linux-3.2/drivers/net/ethernet/chelsio/cxgb/sge.c
|
||||
@@ -1678,8 +1678,7 @@ static int t1_sge_tx(struct sk_buff *skb
|
||||
diff --git a/drivers/net/ethernet/chelsio/cxgb/sge.c b/drivers/net/ethernet/chelsio/cxgb/sge.c
|
||||
index f9b6023..6d7412a 100644
|
||||
--- a/drivers/net/ethernet/chelsio/cxgb/sge.c
|
||||
+++ b/drivers/net/ethernet/chelsio/cxgb/sge.c
|
||||
@@ -1678,8 +1678,7 @@ static int t1_sge_tx(struct sk_buff *skb, struct adapter *adapter,
|
||||
struct cmdQ *q = &sge->cmdQ[qid];
|
||||
unsigned int credits, pidx, genbit, count, use_sched_skb = 0;
|
||||
|
||||
|
@ -66,11 +66,11 @@ Index: linux-3.2/drivers/net/ethernet/chelsio/cxgb/sge.c
|
|||
|
||||
reclaim_completed_tx(sge, q);
|
||||
|
||||
Index: linux-3.2/drivers/net/ethernet/neterion/s2io.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/drivers/net/ethernet/neterion/s2io.c
|
||||
+++ linux-3.2/drivers/net/ethernet/neterion/s2io.c
|
||||
@@ -4090,12 +4090,7 @@ static netdev_tx_t s2io_xmit(struct sk_b
|
||||
diff --git a/drivers/net/ethernet/neterion/s2io.c b/drivers/net/ethernet/neterion/s2io.c
|
||||
index c27fb3d..4624278 100644
|
||||
--- a/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_buff *skb, struct net_device *dev)
|
||||
[skb->priority & (MAX_TX_FIFOS - 1)];
|
||||
fifo = &mac_control->fifos[queue];
|
||||
|
||||
|
@ -84,11 +84,11 @@ Index: linux-3.2/drivers/net/ethernet/neterion/s2io.c
|
|||
|
||||
if (sp->config.multiq) {
|
||||
if (__netif_subqueue_stopped(dev, fifo->fifo_no)) {
|
||||
Index: linux-3.2/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/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
|
||||
@@ -1931,10 +1931,9 @@ static int pch_gbe_xmit_frame(struct sk_
|
||||
diff --git a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
|
||||
index 43c7b25..c084bea 100644
|
||||
--- a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
|
||||
+++ b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
|
||||
@@ -1937,10 +1937,9 @@ static int pch_gbe_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
|
||||
adapter->stats.tx_length_errors++;
|
||||
return NETDEV_TX_OK;
|
||||
}
|
||||
|
@ -102,11 +102,11 @@ Index: linux-3.2/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
|
|||
if (unlikely(!PCH_GBE_DESC_UNUSED(tx_ring))) {
|
||||
netif_stop_queue(netdev);
|
||||
spin_unlock_irqrestore(&tx_ring->tx_lock, flags);
|
||||
Index: linux-3.2/drivers/net/ethernet/tehuti/tehuti.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/drivers/net/ethernet/tehuti/tehuti.c
|
||||
+++ linux-3.2/drivers/net/ethernet/tehuti/tehuti.c
|
||||
@@ -1605,13 +1605,8 @@ static netdev_tx_t bdx_tx_transmit(struc
|
||||
diff --git a/drivers/net/ethernet/tehuti/tehuti.c b/drivers/net/ethernet/tehuti/tehuti.c
|
||||
index 3a90af6..e2e930e 100644
|
||||
--- a/drivers/net/ethernet/tehuti/tehuti.c
|
||||
+++ b/drivers/net/ethernet/tehuti/tehuti.c
|
||||
@@ -1605,13 +1605,8 @@ static netdev_tx_t bdx_tx_transmit(struct sk_buff *skb,
|
||||
unsigned long flags;
|
||||
|
||||
ENTER;
|
||||
|
@ -122,11 +122,11 @@ Index: linux-3.2/drivers/net/ethernet/tehuti/tehuti.c
|
|||
|
||||
/* build tx descriptor */
|
||||
BDX_ASSERT(f->m.wptr >= f->m.memsz); /* started with valid wptr */
|
||||
Index: linux-3.2/drivers/net/rionet.c
|
||||
===================================================================
|
||||
--- linux-3.2.orig/drivers/net/rionet.c
|
||||
+++ linux-3.2/drivers/net/rionet.c
|
||||
@@ -176,11 +176,7 @@ static int rionet_start_xmit(struct sk_b
|
||||
diff --git a/drivers/net/rionet.c b/drivers/net/rionet.c
|
||||
index 7145714..2a1ed18 100644
|
||||
--- a/drivers/net/rionet.c
|
||||
+++ b/drivers/net/rionet.c
|
||||
@@ -176,11 +176,7 @@ static int rionet_start_xmit(struct sk_buff *skb, struct net_device *ndev)
|
||||
u16 destid;
|
||||
unsigned long flags;
|
||||
|
||||
|
@ -139,3 +139,6 @@ Index: linux-3.2/drivers/net/rionet.c
|
|||
|
||||
if ((rnet->tx_cnt + 1) > RIONET_TX_RING_SIZE) {
|
||||
netif_stop_queue(ndev);
|
||||
--
|
||||
1.7.10
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue