linux/arch/parisc/kernel
John David Anglin f8dae00684 parisc: Ensure full cache coherency for kmap/kunmap
Helge Deller noted a few weeks ago problems with the AIO support on
parisc. This change is the result of numerous iterations on how best to
deal with this problem.

The solution adopted here is to provide full cache coherency in a
uniform manner on all parisc systems. This involves calling
flush_dcache_page() on kmap operations and flush_kernel_dcache_page() on
kunmap operations. As a result, the copy_user_page() and
clear_user_page() functions can be removed and the overall code is
simpler.

The change ensures that both userspace and kernel aliases to a mapped
page are invalidated and flushed. This is necessary for the correct
operation of PA8800 and PA8900 based systems which do not support
inequivalent aliases.

With this change, I have observed no cache related issues on c8000 and
rp3440. It is now possible for example to do kernel builds with "-j64"
on four way systems.

On systems using XFS file systems, the patch recently posted by Mikulas
Patocka to "fix crash using XFS on loopback" is needed to avoid a hang
caused by an uninitialized lock passed to flush_dcache_page() in the
page struct.

Signed-off-by: John David Anglin <dave.anglin@bell.net>
Cc: stable@vger.kernel.org # v3.9+
Signed-off-by: Helge Deller <deller@gmx.de>
2014-01-08 23:02:57 +01:00
..
.gitignore
Makefile parisc: add kernel audit feature 2013-11-07 22:27:20 +01:00
asm-offsets.c
audit.c parisc: add kernel audit feature 2013-11-07 22:27:20 +01:00
binfmt_elf32.c
cache.c parisc: Ensure full cache coherency for kmap/kunmap 2014-01-08 23:02:57 +01:00
compat_audit.c parisc: add kernel audit feature 2013-11-07 22:27:20 +01:00
drivers.c
entry.S
firmware.c
ftrace.c
hardware.c parisc: add some more machine names to hardware database 2013-11-30 21:00:14 +01:00
head.S parisc: fix kernel memory layout in vmlinux.ld.S 2013-11-30 22:09:21 +01:00
hpmc.S
inventory.c
irq.c Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2013-11-12 10:02:59 +09:00
module.c mm/arch: use NUMA_NO_NODE 2013-11-13 12:09:05 +09:00
pa7300lc.c
pacache.S
parisc_ksyms.c
pci-dma.c
pci.c
pdc_chassis.c
pdc_cons.c
perf.c
perf_asm.S
perf_images.h
process.c
processor.c
ptrace.c parisc: add kernel audit feature 2013-11-07 22:27:20 +01:00
real2.S
setup.c parisc: correctly display number of active CPUs 2013-11-07 22:29:05 +01:00
signal.c
signal32.c constify copy_siginfo_to_user{,32}() 2013-11-09 00:16:29 -05:00
signal32.h constify copy_siginfo_to_user{,32}() 2013-11-09 00:16:29 -05:00
smp.c parisc: do not count IPI calls twice 2013-11-07 22:28:54 +01:00
stacktrace.c
sys_parisc.c parisc: fix mmap(MAP_FIXED|MAP_SHARED) to already mmapped address 2013-11-30 20:57:50 +01:00
sys_parisc32.c
syscall.S parisc: provide macro to create exception table entries 2013-11-07 22:25:33 +01:00
syscall_table.S
time.c
topology.c
traps.c parisc: fix interruption handler to respect pagefault_disable() 2013-10-13 17:45:20 +02:00
unaligned.c
unwind.c parisc: use kernel_text_address() in unwind functions 2013-11-30 22:08:54 +01:00
vmlinux.lds.S parisc: fix kernel memory layout in vmlinux.ld.S 2013-11-30 22:09:21 +01:00