summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Gortmaker <paul.gortmaker@windriver.com>2016-12-26 03:45:53 -0500
committerPaul Gortmaker <paul.gortmaker@windriver.com>2016-12-26 03:45:53 -0500
commit3deb98d8343c7b9274226d3d9c863858161abe4a (patch)
tree7325cba0e8bc2ab7e6c46a2d6796000ca5b18c1d
parent95e891e8bea5a5cfac379288c14ff72e881bdbc5 (diff)
download4.9-rt-patches-3deb98d8343c7b9274226d3d9c863858161abe4a.tar.gz
tasklet: import refresh for __latent_entropy annotations
-rw-r--r--patches/tasklet-rt-prevent-tasklets-from-going-into-infinite-spin-in-rt.patch20
1 files changed, 10 insertions, 10 deletions
diff --git a/patches/tasklet-rt-prevent-tasklets-from-going-into-infinite-spin-in-rt.patch b/patches/tasklet-rt-prevent-tasklets-from-going-into-infinite-spin-in-rt.patch
index 803a0bd02b1b4..808d6cd4947e5 100644
--- a/patches/tasklet-rt-prevent-tasklets-from-going-into-infinite-spin-in-rt.patch
+++ b/patches/tasklet-rt-prevent-tasklets-from-going-into-infinite-spin-in-rt.patch
@@ -43,7 +43,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- a/include/linux/interrupt.h
+++ b/include/linux/interrupt.h
-@@ -500,8 +500,9 @@ static inline struct task_struct *this_c
+@@ -508,8 +508,9 @@ static inline struct task_struct *this_c
to be executed on some cpu at least once after this.
* If the tasklet is already scheduled, but its execution is still not
started, it will be executed only once.
@@ -55,7 +55,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
* Tasklet is strictly serialized wrt itself, but not
wrt another tasklets. If client needs some intertask synchronization,
he makes it with spinlocks.
-@@ -526,27 +527,36 @@ struct tasklet_struct name = { NULL, 0,
+@@ -534,27 +535,36 @@ struct tasklet_struct name = { NULL, 0,
enum
{
TASKLET_STATE_SCHED, /* Tasklet is scheduled for execution */
@@ -98,7 +98,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
#define tasklet_unlock_wait(t) do { } while (0)
#define tasklet_unlock(t) do { } while (0)
#endif
-@@ -595,12 +605,7 @@ static inline void tasklet_disable(struc
+@@ -603,12 +613,7 @@ static inline void tasklet_disable(struc
smp_mb();
}
@@ -122,7 +122,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
#include <linux/ftrace.h>
#include <linux/smp.h>
#include <linux/smpboot.h>
-@@ -446,15 +447,45 @@ struct tasklet_head {
+@@ -460,15 +461,45 @@ struct tasklet_head {
static DEFINE_PER_CPU(struct tasklet_head, tasklet_vec);
static DEFINE_PER_CPU(struct tasklet_head, tasklet_hi_vec);
@@ -172,7 +172,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
local_irq_restore(flags);
}
EXPORT_SYMBOL(__tasklet_schedule);
-@@ -464,10 +495,7 @@ void __tasklet_hi_schedule(struct taskle
+@@ -478,10 +509,7 @@ void __tasklet_hi_schedule(struct taskle
unsigned long flags;
local_irq_save(flags);
@@ -184,7 +184,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
local_irq_restore(flags);
}
EXPORT_SYMBOL(__tasklet_hi_schedule);
-@@ -476,82 +504,122 @@ void __tasklet_hi_schedule_first(struct
+@@ -490,82 +518,122 @@ void __tasklet_hi_schedule_first(struct
{
BUG_ON(!irqs_disabled());
@@ -195,7 +195,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
}
EXPORT_SYMBOL(__tasklet_hi_schedule_first);
--static void tasklet_action(struct softirq_action *a)
+-static __latent_entropy void tasklet_action(struct softirq_action *a)
+void tasklet_enable(struct tasklet_struct *t)
{
- struct tasklet_struct *list;
@@ -316,7 +316,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
+ __tasklet_action(a, list);
+}
+
- static void tasklet_hi_action(struct softirq_action *a)
+ static __latent_entropy void tasklet_hi_action(struct softirq_action *a)
{
struct tasklet_struct *list;
@@ -356,7 +356,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
}
void tasklet_init(struct tasklet_struct *t,
-@@ -572,7 +640,7 @@ void tasklet_kill(struct tasklet_struct
+@@ -586,7 +654,7 @@ void tasklet_kill(struct tasklet_struct
while (test_and_set_bit(TASKLET_STATE_SCHED, &t->state)) {
do {
@@ -365,7 +365,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
} while (test_bit(TASKLET_STATE_SCHED, &t->state));
}
tasklet_unlock_wait(t);
-@@ -646,6 +714,23 @@ void __init softirq_init(void)
+@@ -660,6 +728,23 @@ void __init softirq_init(void)
open_softirq(HI_SOFTIRQ, tasklet_hi_action);
}