diff options
author | Scott Wood <scottwood@freescale.com> | 2014-05-14 18:19:12 (GMT) |
---|---|---|
committer | Scott Wood <scottwood@freescale.com> | 2014-05-14 18:37:18 (GMT) |
commit | 86ba38e6f5f2fbfe9b49e153ea89593b26482019 (patch) | |
tree | f99d2906b0eafca507f37289e68052fc105cc2dc /kernel/irq_work.c | |
parent | 07c8b57b111585a617b2b456497fc9b33c00743c (diff) | |
download | linux-fsl-qoriq-86ba38e6f5f2fbfe9b49e153ea89593b26482019.tar.xz |
Reset to 3.12.19
Diffstat (limited to 'kernel/irq_work.c')
-rw-r--r-- | kernel/irq_work.c | 27 |
1 files changed, 4 insertions, 23 deletions
diff --git a/kernel/irq_work.c b/kernel/irq_work.c index 35d21f9..55fcce6 100644 --- a/kernel/irq_work.c +++ b/kernel/irq_work.c @@ -20,9 +20,6 @@ static DEFINE_PER_CPU(struct llist_head, irq_work_list); -#ifdef CONFIG_PREEMPT_RT_FULL -static DEFINE_PER_CPU(struct llist_head, hirq_work_list); -#endif static DEFINE_PER_CPU(int, irq_work_raised); /* @@ -51,11 +48,7 @@ static bool irq_work_claim(struct irq_work *work) return true; } -#ifdef CONFIG_PREEMPT_RT_FULL -void arch_irq_work_raise(void) -#else void __weak arch_irq_work_raise(void) -#endif { /* * Lame architectures will get the timer tick callback @@ -77,12 +70,8 @@ void irq_work_queue(struct irq_work *work) /* Queue the entry and raise the IPI if needed. */ preempt_disable(); -#ifdef CONFIG_PREEMPT_RT_FULL - if (work->flags & IRQ_WORK_HARD_IRQ) - llist_add(&work->llnode, &__get_cpu_var(hirq_work_list)); - else -#endif - llist_add(&work->llnode, &__get_cpu_var(irq_work_list)); + llist_add(&work->llnode, &__get_cpu_var(irq_work_list)); + /* * If the work is not "lazy" or the tick is stopped, raise the irq * work interrupt (if supported by the arch), otherwise, just wait @@ -126,18 +115,12 @@ static void __irq_work_run(void) __this_cpu_write(irq_work_raised, 0); barrier(); -#ifdef CONFIG_PREEMPT_RT_FULL - if (in_irq()) - this_list = &__get_cpu_var(hirq_work_list); - else -#endif - this_list = &__get_cpu_var(irq_work_list); + this_list = &__get_cpu_var(irq_work_list); if (llist_empty(this_list)) return; -#ifndef CONFIG_PREEMPT_RT_FULL BUG_ON(!irqs_disabled()); -#endif + llnode = llist_del_all(this_list); while (llnode != NULL) { work = llist_entry(llnode, struct irq_work, llnode); @@ -169,9 +152,7 @@ static void __irq_work_run(void) */ void irq_work_run(void) { -#ifndef CONFIG_PREEMPT_RT_FULL BUG_ON(!in_irq()); -#endif __irq_work_run(); } EXPORT_SYMBOL_GPL(irq_work_run); |