diff options
author | Paul Gortmaker <paul.gortmaker@windriver.com> | 2011-01-29 17:15:42 -0500 |
---|---|---|
committer | Paul Gortmaker <paul.gortmaker@windriver.com> | 2011-01-29 17:15:42 -0500 |
commit | 1b126ef0737daf5fe9a0a708357c352b8b0e056e (patch) | |
tree | d76a147f27305923d22a7d297745f2e1d14c0ef5 | |
parent | e6d0a09b1f5f4ce304238ad34302ca20a2e3a7ba (diff) | |
download | rt-patches-1b126ef0737daf5fe9a0a708357c352b8b0e056e.tar.gz |
trivial refresh
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
-rw-r--r-- | sched-mmdrop-needs-to-be-delayed-on-rt.patch | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/sched-mmdrop-needs-to-be-delayed-on-rt.patch b/sched-mmdrop-needs-to-be-delayed-on-rt.patch index 7247499..bf6b222 100644 --- a/sched-mmdrop-needs-to-be-delayed-on-rt.patch +++ b/sched-mmdrop-needs-to-be-delayed-on-rt.patch @@ -1,4 +1,4 @@ -From 5035536761d8462d69dc7aed51fb54e5d8a875c5 Mon Sep 17 00:00:00 2001 +From 7dddfdccc04483b47fcd03e393e4717f7170269e Mon Sep 17 00:00:00 2001 From: Ingo Molnar <mingo@elte.hu> Date: Fri, 3 Jul 2009 08:30:05 -0500 Subject: [PATCH] sched: mmdrop needs to be delayed on -rt @@ -49,7 +49,7 @@ index c66e373..f342f61 100644 extern void mmput(struct mm_struct *); /* Grab a reference to a task's mm, if it is not already going away */ diff --git a/kernel/fork.c b/kernel/fork.c -index 334ebe7..5e880bd 100644 +index c12e53a..c49f839 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -38,6 +38,7 @@ @@ -69,9 +69,9 @@ index 334ebe7..5e880bd 100644 #include <asm/pgtable.h> #include <asm/pgalloc.h> -@@ -91,6 +94,14 @@ DEFINE_RWLOCK(tasklist_lock); /* outer */ - __cacheline_aligned DEFINE_RWLOCK(tasklist_lock); /* outer */ +@@ -92,6 +95,14 @@ __cacheline_aligned DEFINE_RWLOCK(tasklist_lock); /* outer */ #endif + EXPORT_SYMBOL_GPL(tasklist_lock); +/* + * Delayed mmdrop. In the PREEMPT_RT case we @@ -84,7 +84,7 @@ index 334ebe7..5e880bd 100644 int nr_processes(void) { int cpu; -@@ -184,6 +195,8 @@ void __put_task_struct(struct task_struct *tsk) +@@ -185,6 +196,8 @@ void __put_task_struct(struct task_struct *tsk) void __init fork_init(unsigned long mempages) { @@ -93,7 +93,7 @@ index 334ebe7..5e880bd 100644 #ifndef __HAVE_ARCH_TASK_STRUCT_ALLOCATOR #ifndef ARCH_MIN_TASKALIGN #define ARCH_MIN_TASKALIGN L1_CACHE_BYTES -@@ -214,6 +227,9 @@ void __init fork_init(unsigned long mempages) +@@ -215,6 +228,9 @@ void __init fork_init(unsigned long mempages) init_task.signal->rlim[RLIMIT_NPROC].rlim_max = max_threads/2; init_task.signal->rlim[RLIMIT_SIGPENDING] = init_task.signal->rlim[RLIMIT_NPROC]; @@ -103,7 +103,7 @@ index 334ebe7..5e880bd 100644 } int __attribute__((weak)) arch_dup_task_struct(struct task_struct *dst, -@@ -299,6 +315,7 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm) +@@ -300,6 +316,7 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm) mm->locked_vm = 0; mm->mmap = NULL; mm->mmap_cache = NULL; @@ -111,7 +111,7 @@ index 334ebe7..5e880bd 100644 mm->free_area_cache = oldmm->mmap_base; mm->cached_hole_size = ~0UL; mm->map_count = 0; -@@ -1301,7 +1318,9 @@ static struct task_struct *copy_process(unsigned long clone_flags, +@@ -1302,7 +1319,9 @@ static struct task_struct *copy_process(unsigned long clone_flags, attach_pid(p, PIDTYPE_SID, task_session(current)); list_add_tail(&p->sibling, &p->real_parent->children); list_add_tail_rcu(&p->tasks, &init_task.tasks); @@ -121,7 +121,7 @@ index 334ebe7..5e880bd 100644 } attach_pid(p, PIDTYPE_PID, pid); nr_threads++; -@@ -1775,3 +1794,138 @@ int unshare_files(struct files_struct **displaced) +@@ -1776,3 +1795,138 @@ int unshare_files(struct files_struct **displaced) task_unlock(task); return 0; } @@ -261,10 +261,10 @@ index 334ebe7..5e880bd 100644 + return 0; +} diff --git a/kernel/sched.c b/kernel/sched.c -index 9efdbe4..e96ac22 100644 +index 198f08b..cbc617c 100644 --- a/kernel/sched.c +++ b/kernel/sched.c -@@ -2929,8 +2929,12 @@ static void finish_task_switch(struct rq *rq, struct task_struct *prev) +@@ -2934,8 +2934,12 @@ static void finish_task_switch(struct rq *rq, struct task_struct *prev) finish_lock_switch(rq, prev); fire_sched_in_preempt_notifiers(current); @@ -278,7 +278,7 @@ index 9efdbe4..e96ac22 100644 if (unlikely(prev_state == TASK_DEAD)) { /* * Remove function-return probe instances associated with this -@@ -7733,7 +7737,11 @@ void idle_task_exit(void) +@@ -7738,7 +7742,11 @@ void idle_task_exit(void) if (mm != &init_mm) switch_mm(mm, &init_mm, current); @@ -291,5 +291,5 @@ index 9efdbe4..e96ac22 100644 /* called under rq->lock with disabled interrupts */ -- -1.7.1.1 +1.7.1 |