| From 739f10892ed5dcb3e9be2768bfb5e9ee557d6c5a Mon Sep 17 00:00:00 2001 | |
| From: Thomas Gleixner <tglx@linutronix.de> | |
| Date: Fri, 3 Jul 2009 08:44:46 -0500 | |
| Subject: [PATCH] ARM: RT support | |
| commit d0aa7f953917613cf85b1ba7b8c68688a98137fc in tip. | |
| Signed-off-by: Thomas Gleixner <tglx@linutronix.de> | |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> | |
| --- | |
| arch/arm/include/asm/system.h | 2 ++ | |
| arch/arm/include/asm/tlb.h | 13 +++---------- | |
| arch/arm/kernel/signal.c | 8 ++++++++ | |
| arch/arm/mm/mmu.c | 2 -- | |
| 4 files changed, 13 insertions(+), 12 deletions(-) | |
| diff --git a/arch/arm/include/asm/system.h b/arch/arm/include/asm/system.h | |
| index 4ace45e..b973987 100644 | |
| --- a/arch/arm/include/asm/system.h | |
| +++ b/arch/arm/include/asm/system.h | |
| @@ -62,6 +62,8 @@ | |
| #include <asm/outercache.h> | |
| +#include <asm/memory.h> | |
| + | |
| #define __exception __attribute__((section(".exception.text"))) | |
| struct thread_info; | |
| diff --git a/arch/arm/include/asm/tlb.h b/arch/arm/include/asm/tlb.h | |
| index f41a6f5..dd667f2 100644 | |
| --- a/arch/arm/include/asm/tlb.h | |
| +++ b/arch/arm/include/asm/tlb.h | |
| @@ -40,17 +40,12 @@ struct mmu_gather { | |
| unsigned long range_end; | |
| }; | |
| -DECLARE_PER_CPU(struct mmu_gather, mmu_gathers); | |
| - | |
| -static inline struct mmu_gather * | |
| -tlb_gather_mmu(struct mm_struct *mm, unsigned int full_mm_flush) | |
| +static inline void | |
| +tlb_gather_mmu(struct mmu_gather *tlb, struct mm_struct *mm, | |
| + unsigned int full_mm_flush) | |
| { | |
| - struct mmu_gather *tlb = &get_cpu_var(mmu_gathers); | |
| - | |
| tlb->mm = mm; | |
| tlb->fullmm = full_mm_flush; | |
| - | |
| - return tlb; | |
| } | |
| static inline void | |
| @@ -61,8 +56,6 @@ tlb_finish_mmu(struct mmu_gather *tlb, unsigned long start, unsigned long end) | |
| /* keep the page table cache within bounds */ | |
| check_pgt_cache(); | |
| - | |
| - put_cpu_var(mmu_gathers); | |
| } | |
| /* | |
| diff --git a/arch/arm/kernel/signal.c b/arch/arm/kernel/signal.c | |
| index 907d5a6..0e7cddd 100644 | |
| --- a/arch/arm/kernel/signal.c | |
| +++ b/arch/arm/kernel/signal.c | |
| @@ -692,6 +692,14 @@ static void do_signal(struct pt_regs *regs, int syscall) | |
| siginfo_t info; | |
| int signr; | |
| +#ifdef CONFIG_PREEMPT_RT | |
| + /* | |
| + * Fully-preemptible kernel does not need interrupts disabled: | |
| + */ | |
| + local_irq_enable(); | |
| + preempt_check_resched(); | |
| +#endif | |
| + | |
| /* | |
| * We want the common case to go fast, which | |
| * is why we may in certain cases get here from | |
| diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c | |
| index 241c24a..9560e13 100644 | |
| --- a/arch/arm/mm/mmu.c | |
| +++ b/arch/arm/mm/mmu.c | |
| @@ -30,8 +30,6 @@ | |
| #include "mm.h" | |
| -DEFINE_PER_CPU(struct mmu_gather, mmu_gathers); | |
| - | |
| /* | |
| * empty_zero_page is a special page that is used for | |
| * zero-initialized data and COW. | |
| -- | |
| 1.7.0.4 | |