linux/lib
Haavard Skinnemoen db71daabad [PATCH] Generic ioremap_page_range: flush_cache_vmap
The existing implementation of ioremap_page_range(), which was taken
from i386, does this:

	flush_cache_all();
	/* modify page tables */
	flush_tlb_all();

I think this is a bit defensive, so this patch changes the generic
implementation to do:

	/* modify page tables */
	flush_cache_vmap(start, end);

instead, which is similar to what vmalloc() does. This should still
be correct because we never modify existing PTEs. According to
James Bottomley:

The problem the flush_tlb_all() is trying to solve is to avoid stale tlb
entries in the ioremap area.  We're just being conservative by flushing
on both map and unmap.  Technically what vmalloc/vfree does (only flush
the tlb on unmap) is just fine because it means that the only tlb
entries in the remap area must belong to in-use mappings.

Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
Cc: Richard Henderson <rth@twiddle.net>
Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
Cc: Russell King <rmk@arm.linux.org.uk>
Cc: Mikael Starvik <starvik@axis.com>
Cc: Andi Kleen <ak@suse.de>
Cc: <linux-m32r@ml.linux-m32r.org>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: Kyle McMartin <kyle@parisc-linux.org>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: Paul Mundt <lethal@linux-sh.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-10-01 00:39:31 -07:00
..
reed_solomon
zlib_deflate
zlib_inflate
.gitignore
audit.c
bitmap.c
bust_spinlocks.c
cmdline.c
cpumask.c
crc16.c
crc32.c
crc32defs.h
crc-ccitt.c
ctype.c
debug_locks.c
dec_and_lock.c
div64.c
dump_stack.c
errno.c
extable.c
find_next_bit.c
gen_crc32table.c
genalloc.c
halfmd4.c
hweight.c [PATCH] optimize hweight64 for x86_64 2006-09-26 10:52:38 +02:00
idr.c
inflate.c
int_sqrt.c
iomap_copy.c
iomap.c
ioremap.c [PATCH] Generic ioremap_page_range: flush_cache_vmap 2006-10-01 00:39:31 -07:00
Kconfig
Kconfig.debug [PATCH] Debug variants of linked list macros 2006-09-29 09:18:05 -07:00
kernel_lock.c
klist.c Driver core: Don't call put methods while holding a spinlock 2006-09-25 21:08:40 -07:00
kobject_uevent.c
kobject.c kobject: must_check fixes 2006-09-25 21:08:39 -07:00
kref.c
libcrc32c.c
list_debug.c [PATCH] list_del-debug fix 2006-10-01 00:39:17 -07:00
locking-selftest-hardirq.h
locking-selftest-mutex.h
locking-selftest-rlock-hardirq.h
locking-selftest-rlock-softirq.h
locking-selftest-rlock.h
locking-selftest-rsem.h
locking-selftest-softirq.h
locking-selftest-spin-hardirq.h
locking-selftest-spin-softirq.h
locking-selftest-spin.h
locking-selftest-wlock-hardirq.h
locking-selftest-wlock-softirq.h
locking-selftest-wlock.h
locking-selftest-wsem.h
locking-selftest.c
Makefile [PATCH] Generic ioremap_page_range: implementation 2006-10-01 00:39:31 -07:00
parser.c
percpu_counter.c
plist.c
prio_tree.c
radix-tree.c
rbtree.c [PATCH] rbtree: fixed reversed RB_EMPTY_NODE and rb_next/prev 2006-09-30 20:26:56 +02:00
rwsem-spinlock.c
rwsem.c [PATCH] lib/rwsem.c: un-inline rwsem_down_failed_common() 2006-09-29 09:18:22 -07:00
semaphore-sleepers.c
sha1.c
smp_processor_id.c
sort.c
spinlock_debug.c [PATCH] spinlock_debug: don't recompute (jiffies_per_loop * HZ) in spinloop 2006-09-29 09:18:06 -07:00
string.c
swiotlb.c
textsearch.c
ts_bm.c
ts_fsm.c [PATCH] lib/ts_fsm.c: constify structs 2006-09-29 09:18:23 -07:00
ts_kmp.c
vsprintf.c