trivial refresh of posix-timers-thread-posix-cpu-timers-on-rt.patch
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
diff --git a/patches/posix-timers-thread-posix-cpu-timers-on-rt.patch b/patches/posix-timers-thread-posix-cpu-timers-on-rt.patch
index 20226ae..4ae3343 100644
--- a/patches/posix-timers-thread-posix-cpu-timers-on-rt.patch
+++ b/patches/posix-timers-thread-posix-cpu-timers-on-rt.patch
@@ -1,6 +1,7 @@
+From 4cf66eb291dd8ba905e24b01bfff812cdec98f9c Mon Sep 17 00:00:00 2001
From: John Stultz <johnstul@us.ibm.com>
Date: Fri, 3 Jul 2009 08:29:58 -0500
-Subject: posix-timers: Thread posix-cpu-timers on -rt
+Subject: [PATCH] posix-timers: Thread posix-cpu-timers on -rt
posix-cpu-timer code takes non -rt safe locks in hard irq
context. Move it to a thread.
@@ -10,16 +11,11 @@
Signed-off-by: John Stultz <johnstul@us.ibm.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
----
- include/linux/init_task.h | 7 +
- include/linux/sched.h | 3
- kernel/fork.c | 3
- kernel/time/posix-cpu-timers.c | 157 +++++++++++++++++++++++++++++++++++++++--
- 4 files changed, 166 insertions(+), 4 deletions(-)
-
+diff --git a/include/linux/init_task.h b/include/linux/init_task.h
+index 8f4636155401..cf5322d75d65 100644
--- a/include/linux/init_task.h
+++ b/include/linux/init_task.h
-@@ -167,6 +167,12 @@ extern struct cred init_cred;
+@@ -168,6 +168,12 @@ extern struct cred init_cred;
# define INIT_PERF_EVENTS(tsk)
#endif
@@ -31,8 +27,8 @@
+
#ifdef CONFIG_VIRT_CPU_ACCOUNTING_GEN
# define INIT_VTIME(tsk) \
- .vtime_seqcount = SEQCNT_ZERO(tsk.vtime_seqcount), \
-@@ -269,6 +275,7 @@ extern struct cred init_cred;
+ .vtime.seqcount = SEQCNT_ZERO(tsk.vtime.seqcount), \
+@@ -283,6 +289,7 @@ extern struct cred init_cred;
INIT_CPU_TIMERS(tsk) \
.pi_lock = __RAW_SPIN_LOCK_UNLOCKED(tsk.pi_lock), \
.timer_slack_ns = 50000, /* 50 usec default slack */ \
@@ -40,9 +36,11 @@
.pids = { \
[PIDTYPE_PID] = INIT_PID_LINK(PIDTYPE_PID), \
[PIDTYPE_PGID] = INIT_PID_LINK(PIDTYPE_PGID), \
+diff --git a/include/linux/sched.h b/include/linux/sched.h
+index 941abd947b83..b2852afe0dcc 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
-@@ -710,6 +710,9 @@ struct task_struct {
+@@ -719,6 +719,9 @@ struct task_struct {
#ifdef CONFIG_POSIX_TIMERS
struct task_cputime cputime_expires;
struct list_head cpu_timers[3];
@@ -52,9 +50,11 @@
#endif
/* Process credentials: */
+diff --git a/kernel/fork.c b/kernel/fork.c
+index 20e77d9aacea..6d08ff4e1bba 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
-@@ -1451,6 +1451,9 @@ static void rt_mutex_init_task(struct ta
+@@ -1469,6 +1469,9 @@ static void rt_mutex_init_task(struct task_struct *p)
*/
static void posix_cpu_timers_init(struct task_struct *tsk)
{
@@ -64,6 +64,8 @@
tsk->cputime_expires.prof_exp = 0;
tsk->cputime_expires.virt_exp = 0;
tsk->cputime_expires.sched_exp = 0;
+diff --git a/kernel/time/posix-cpu-timers.c b/kernel/time/posix-cpu-timers.c
+index d2a1e6dd0291..ebab42522ce8 100644
--- a/kernel/time/posix-cpu-timers.c
+++ b/kernel/time/posix-cpu-timers.c
@@ -2,8 +2,10 @@
@@ -85,7 +87,7 @@
/*
* Called after updating RLIMIT_CPU to run cpu timer and update
-@@ -590,7 +593,7 @@ static int posix_cpu_timer_set(struct k_
+@@ -590,7 +593,7 @@ static int posix_cpu_timer_set(struct k_itimer *timer, int timer_flags,
/*
* Disarm any old timer after extracting its expiry time.
*/
@@ -94,7 +96,7 @@
ret = 0;
old_incr = timer->it.cpu.incr;
-@@ -1014,7 +1017,7 @@ void posix_cpu_timer_schedule(struct k_i
+@@ -1027,7 +1030,7 @@ void posix_cpu_timer_schedule(struct k_itimer *timer)
/*
* Now re-arm for the new expiry time.
*/
@@ -103,7 +105,7 @@
arm_timer(timer);
unlock_task_sighand(p, &flags);
-@@ -1103,13 +1106,13 @@ static inline int fastpath_timer_check(s
+@@ -1116,13 +1119,13 @@ static inline int fastpath_timer_check(struct task_struct *tsk)
* already updated our counts. We need to check if any timers fire now.
* Interrupts are disabled.
*/
@@ -119,7 +121,7 @@
/*
* The fast path checks that there are no expired thread or thread
-@@ -1163,6 +1166,152 @@ void run_posix_cpu_timers(struct task_st
+@@ -1176,6 +1179,152 @@ void run_posix_cpu_timers(struct task_struct *tsk)
}
}
@@ -272,3 +274,6 @@
/*
* Set one of the process-wide special case CPU timers or RLIMIT_CPU.
* The tsk->sighand->siglock must be held by the caller.
+--
+2.1.4
+