• J
    parisc: fixes and cleanups in page cache flushing (1/4) · 76334539
    John David Anglin 提交于
    This is the first patch in a series of 4, with which the page cache flushing of
    parisc will gets fixed and enhanced. This even fixes the nasty "minifail" bug
    (http://wiki.parisc-linux.org/TestCases?highlight=%28minifail%29) which
    prevented parisc to stay an official debian port.  Basically the flush in
    copy_user_page together with the TLB patch from commit
    7139bc15 is what fixes the minifail bug.
    
    This patch still uses the TMPALIAS approach.  The new copy_user_page
    implementation calls flush_dcache_page_asm to flush the user dcache page
    (crucial for minifail fix) via a kernel TMPALIAS mapping.  After that, it just
    copies the page using the kernel mapping.  It does a final flush if needed.
    Generally it is hard to avoid doing some cache flushes using the kernel mapping
    (e.g., copy_to_user_page and copy_from_user_page).
    
    This patch depends on a subsequent change to pacache.S implementing
    clear_page_asm and copy_page_asm.  These are optimized routines to clear and
    copy a page.  The calls in clear_user_page and copy_user_page could be replaced
    by calls to memset and memcpy, respectively.  I tested prefetch optimizations
    in clear_page_asm and copy_page_asm but didn't see any significant performance
    improvement on rp3440.  I'm not sure if these are routines are significantly
    faster than memset and/or memcpy, but they are there for further performance
    evaluation.
    Signed-off-by: NJohn David Anglin <dave.anglin@bell.net>
    Signed-off-by: NHelge Deller <deller@gmx.de>
    76334539
parisc_ksyms.c 4.4 KB