summaryrefslogtreecommitdiff
path: root/mm/highmem.c
diff options
context:
space:
mode:
authorPeter Zijlstra <peterz@infradead.org>2011-07-28 10:43:51 +0200
committerSebastian Andrzej Siewior <bigeasy@linutronix.de>2019-12-17 22:00:27 +0100
commit93234f6354d31d88d8987e374ca877979c7dbc15 (patch)
treeed925053bf36fdf2cd88a75ab08a16d23997906f /mm/highmem.c
parent95c50e7fcaa1ebe6e9f8c98b385dcc10653781e9 (diff)
downloadlinux-rt-93234f6354d31d88d8987e374ca877979c7dbc15.tar.gz
mm, rt: kmap_atomic scheduling
In fact, with migrate_disable() existing one could play games with kmap_atomic. You could save/restore the kmap_atomic slots on context switch (if there are any in use of course), this should be esp easy now that we have a kmap_atomic stack. Something like the below.. it wants replacing all the preempt_disable() stuff with pagefault_disable() && migrate_disable() of course, but then you can flip kmaps around like below. Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> [dvhart@linux.intel.com: build fix] Link: http://lkml.kernel.org/r/1311842631.5890.208.camel@twins [tglx@linutronix.de: Get rid of the per cpu variable and store the idx and the pte content right away in the task struct. Shortens the context switch code. ]
Diffstat (limited to 'mm/highmem.c')
-rw-r--r--mm/highmem.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/mm/highmem.c b/mm/highmem.c
index 107b10f9878e..c7d81eaf48f7 100644
--- a/mm/highmem.c
+++ b/mm/highmem.c
@@ -30,9 +30,11 @@
#include <linux/kgdb.h>
#include <asm/tlbflush.h>
-
+#ifndef CONFIG_PREEMPT_RT
#if defined(CONFIG_HIGHMEM) || defined(CONFIG_X86_32)
DEFINE_PER_CPU(int, __kmap_atomic_idx);
+EXPORT_PER_CPU_SYMBOL(__kmap_atomic_idx);
+#endif
#endif
/*
@@ -108,8 +110,6 @@ static inline wait_queue_head_t *get_pkmap_wait_queue_head(unsigned int color)
atomic_long_t _totalhigh_pages __read_mostly;
EXPORT_SYMBOL(_totalhigh_pages);
-EXPORT_PER_CPU_SYMBOL(__kmap_atomic_idx);
-
unsigned int nr_free_highpages (void)
{
struct zone *zone;