| From 16d23492a78a16d42f7d22de63290f80ed97459a Mon Sep 17 00:00:00 2001 |
| From: Thomas Gleixner <tglx@linutronix.de> |
| Date: Thu, 14 Jul 2011 09:56:44 +0200 |
| Subject: [PATCH 130/262] cond-resched-softirq-fix.patch |
| |
| Signed-off-by: Thomas Gleixner <tglx@linutronix.de> |
| --- |
| include/linux/sched.h | 4 ++++ |
| kernel/sched/core.c | 2 ++ |
| 2 files changed, 6 insertions(+) |
| |
| diff --git a/include/linux/sched.h b/include/linux/sched.h |
| index 3dc5b7c..ce14075 100644 |
| --- a/include/linux/sched.h |
| +++ b/include/linux/sched.h |
| @@ -2711,12 +2711,16 @@ extern int __cond_resched_lock(spinlock_t *lock); |
| __cond_resched_lock(lock); \ |
| }) |
| |
| +#ifndef CONFIG_PREEMPT_RT_FULL |
| extern int __cond_resched_softirq(void); |
| |
| #define cond_resched_softirq() ({ \ |
| __might_sleep(__FILE__, __LINE__, SOFTIRQ_DISABLE_OFFSET); \ |
| __cond_resched_softirq(); \ |
| }) |
| +#else |
| +# define cond_resched_softirq() cond_resched() |
| +#endif |
| |
| /* |
| * Does a critical section need to be broken due to another |
| diff --git a/kernel/sched/core.c b/kernel/sched/core.c |
| index ae50ab0..2419836 100644 |
| --- a/kernel/sched/core.c |
| +++ b/kernel/sched/core.c |
| @@ -4742,6 +4742,7 @@ int __cond_resched_lock(spinlock_t *lock) |
| } |
| EXPORT_SYMBOL(__cond_resched_lock); |
| |
| +#ifndef CONFIG_PREEMPT_RT_FULL |
| int __sched __cond_resched_softirq(void) |
| { |
| BUG_ON(!in_softirq()); |
| @@ -4755,6 +4756,7 @@ int __sched __cond_resched_softirq(void) |
| return 0; |
| } |
| EXPORT_SYMBOL(__cond_resched_softirq); |
| +#endif |
| |
| /** |
| * yield - yield the current processor to other threads. |
| -- |
| 1.7.10.4 |
| |