• Aneesh Kumar K.V's avatar
    powerpc/mm/radix: Optimise tlbiel flush all case · a5998fcb
    Aneesh Kumar K.V authored
    _tlbiel_pid() is called with a ric (Radix Invalidation Control) argument of
    either RIC_FLUSH_TLB or RIC_FLUSH_ALL.
    
    RIC_FLUSH_ALL says to invalidate the entire TLB and the Page Walk Cache (PWC).
    
    To flush the whole TLB, we have to iterate over each set (congruence class) of
    the TLB. Currently we do that and pass RIC_FLUSH_ALL each time. That is not
    incorrect but it means we flush the PWC 128 times, when once would suffice.
    
    Fix it by doing the first flush with the ric value we're passed, and then if it
    was RIC_FLUSH_ALL, we downgrade it to RIC_FLUSH_TLB, because we know we have
    just flushed the PWC and don't need to do it again.
    Signed-off-by: default avatarAneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
    [mpe: Split out of combined patch, tweak logic, rewrite change log]
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    a5998fcb
tlb-radix.c 12.2 KB