• D
    sparc64: Eliminate PTE table memory wastage. · c460bec7
    David Miller 提交于
    We've split up the PTE tables so that they take up half a page instead of
    a full page.  This is in order to facilitate transparent huge page
    support, which works much better if our PMDs cover 4MB instead of 8MB.
    
    What we do is have a one-behind cache for PTE table allocations in the
    mm struct.
    
    This logic triggers only on allocations.  For example, we don't try to
    keep track of free'd up page table blocks in the style that the s390 port
    does.
    
    There were only two slightly annoying aspects to this change:
    
    1) Changing pgtable_t to be a "pte_t *".  There's all of this special
       logic in the TLB free paths that needed adjustments, as did the
       PMD populate interfaces.
    
    2) init_new_context() needs to zap the pointer, since the mm struct
       just gets copied from the parent on fork.
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Gerald Schaefer <gerald.schaefer@de.ibm.com>
    Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
    c460bec7
init_64.c 62.3 KB