• John David Anglin's avatar
    parisc: Ensure full cache coherency for kmap/kunmap · f8dae006
    John David Anglin authored
    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: default avatarJohn David Anglin <dave.anglin@bell.net>
    Cc: stable@vger.kernel.org # v3.9+
    Signed-off-by: default avatarHelge Deller <deller@gmx.de>
    f8dae006
cache.c 16.7 KB