| From 748310623a1ad724ea0e9c4a3d6d282d27b66da8 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> |
| |
| 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 e7714f3..469f223 100644 |
| --- a/arch/arm/kernel/signal.c |
| +++ b/arch/arm/kernel/signal.c |
| @@ -607,6 +607,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 9d4da6a..9108680 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.1.1 |
| |