• L
    mmu_gather: fix over-eager tlb_flush_mmu_free() calling · f045bbb9
    Linus Torvalds 提交于
    Dave Hansen reports that commit fb7332a9 ("mmu_gather: move minimal
    range calculations into generic code") caused a performance problem:
    
      "tlb_finish_mmu() goes up about 9x in the profiles (~0.4%->3.6%) and
       tlb_flush_mmu_free() takes about 3.1% of CPU time with the patch
       applied, but does not show up at all on the commit before"
    
    and the reason is that Will moved the test for whether we need to flush
    from tlb_flush_mmu() into tlb_flush_mmu_tlbonly().  But that meant that
    tlb_flush_mmu_free() basically lost that check.
    
    Move it back into tlb_flush_mmu() where it belongs, so that it covers
    both tlb_flush_mmu_tlbonly() _and_ tlb_flush_mmu_free().
    Reported-and-tested-by: NDave Hansen <dave@sr71.net>
    Acked-by: NWill Deacon <will.deacon@arm.com>
    Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
    f045bbb9
memory.c 102.1 KB