• Andrew Morton's avatar
    [PATCH] s390: rmap optimization. · 83b41646
    Andrew Morton authored
    From: Martin Schwidefsky <schwidefsky@de.ibm.com>
    
    while working on my mm patch for s390 I played with rmap a bit, adding
    BUG statements and the like. While doing so I noticed some room for
    improvement in rmap. Its minor stuff but anyway... 
    
    The first observation is that the pte chain array doesn't have holes,
    meaning that from the pte_chain_idx() of the first array every slot of
    all following pte chain arrays are full. That is there can't be NULL
    pointers. The "if (!pte_paddr)" check in try_to_unmap() can be removed
    and if the loop in page_referenced() is started from pte_chain_idx(pc)
    then the "if (!pte_paddr)" in page_referenced() can be removed as well.
    
    The second observation is that the first pte array of a pte chain has
    at least one entry. Empty pte chain arrays are always freed immediatly
    after the last entry was removed. Because of that victim_i can be
    calculated in a simpler way. Instead of setting victim_i to -1 and then
    check in each loop iteration against -1 victim_i can just be set to
    the pte_chain_idx of the first pte chain array.
    83b41646
rmap.c 13.6 KB