• Benjamin Herrenschmidt's avatar
    [POWERPC] Small fixes & cleanups in segment page size demotion · 16f1c746
    Benjamin Herrenschmidt authored
    The code for demoting segments to 4K had some issues, like for example,
    when using _PAGE_4K_PFN flag, the first CPU to hit it would do the
    demotion, but other CPUs hitting the same page wouldn't properly flush
    their SLBs if mmu_ci_restriction isn't set.  There are also potential
    issues with hash_preload not handling _PAGE_4K_PFN.  All of these are
    non issues on current hardware but might bite us in the future.
    
    This patch thus fixes it by:
    
     - Taking the test comparing the mm and current CPU context page
    sizes to decide to flush SLBs out of the mmu_ci_restrictions test
    since that can also be triggered by _PAGE_4K_PFN pages
    
     - Due to the above being done all the time, demote_segment_4k
    doesn't need update the context and flush the SLB
    
     - demote_segment_4k can be static and doesn't need an EXPORT_SYMBOL
    
     - Making hash_preload ignore anything that has either _PAGE_4K_PFN
    or _PAGE_NO_CACHE set, thus avoiding duplication of the complicated
    logic in hash_page() (and possibly making hash_preload a little bit
    faster for the normal case).
    Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
    Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
    16f1c746
hash_utils_64.c 24.1 KB