| Subject: x86/32: Use kmap switch for non highmem as well |
| From: Thomas Gleixner <tglx@linutronix.de> |
| Date: Wed, 13 Feb 2013 10:59:53 +0100 |
| |
| Even with CONFIG_HIGHMEM=n we need to take care of the "atomic" |
| mappings which are installed via iomap_atomic. |
| |
| Signed-off-by: Thomas Gleixner <tglx@linutronix.de> |
| Cc: stable-rt@vger.kernel.org |
| --- |
| arch/x86/kernel/process_32.c | 2 +- |
| include/linux/sched.h | 4 +++- |
| 2 files changed, 4 insertions(+), 2 deletions(-) |
| |
| Index: linux-stable/arch/x86/kernel/process_32.c |
| =================================================================== |
| --- linux-stable.orig/arch/x86/kernel/process_32.c |
| +++ linux-stable/arch/x86/kernel/process_32.c |
| @@ -277,7 +277,7 @@ __switch_to(struct task_struct *prev_p, |
| task_thread_info(next_p)->flags & _TIF_WORK_CTXSW_NEXT)) |
| __switch_to_xtra(prev_p, next_p, tss); |
| |
| -#if defined CONFIG_PREEMPT_RT_FULL && defined CONFIG_HIGHMEM |
| +#ifdef CONFIG_PREEMPT_RT_FULL |
| /* |
| * Save @prev's kmap_atomic stack |
| */ |
| Index: linux-stable/include/linux/sched.h |
| =================================================================== |
| --- linux-stable.orig/include/linux/sched.h |
| +++ linux-stable/include/linux/sched.h |
| @@ -1621,9 +1621,11 @@ struct task_struct { |
| int softirq_nestcnt; |
| unsigned int softirqs_raised; |
| #endif |
| -#if defined CONFIG_PREEMPT_RT_FULL && defined CONFIG_HIGHMEM |
| +#ifdef CONFIG_PREEMPT_RT_FULL |
| +# if defined CONFIG_HIGHMEM || defined CONFIG_X86_32 |
| int kmap_idx; |
| pte_t kmap_pte[KM_TYPE_NR]; |
| +# endif |
| #endif |
| |
| #ifdef CONFIG_DEBUG_PREEMPT |