[POWERPC] Small fixes & cleanups in segment page size demotion
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>
Tue, 8 May 2007 06:27:27 +0000 (16:27 +1000)
committerPaul Mackerras <paulus@samba.org>
Wed, 9 May 2007 06:35:00 +0000 (16:35 +1000)
commit16f1c746755836aa823658000493cdab8ce7b098
tree32f534c771b69400839f5795f979c47eac51f923
parentb15f792fafb7e0524907ddd9e035d73dddeed89c
[POWERPC] Small fixes & cleanups in segment page size demotion

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: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
arch/powerpc/mm/hash_utils_64.c