diff options
author | Peter Zijlstra <peterz@infradead.org> | 2011-07-28 10:43:51 +0200 |
---|---|---|
committer | Sebastian Andrzej Siewior <bigeasy@linutronix.de> | 2019-12-17 22:00:27 +0100 |
commit | 93234f6354d31d88d8987e374ca877979c7dbc15 (patch) | |
tree | ed925053bf36fdf2cd88a75ab08a16d23997906f /mm/highmem.c | |
parent | 95c50e7fcaa1ebe6e9f8c98b385dcc10653781e9 (diff) | |
download | linux-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.c | 6 |
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; |