Re: [RFC][PATCH 4/6] arm, mm: Convert arm to generic tlb
From: Catalin Marinas <catalin.marinas@arm.com>
Date: 2012-05-17 16:00:36
Also in:
linux-mm, lkml
From: Catalin Marinas <catalin.marinas@arm.com>
Date: 2012-05-17 16:00:36
Also in:
linux-mm, lkml
On Thu, May 17, 2012 at 12:28:06PM +0100, Peter Zijlstra wrote:
On Thu, 2012-05-17 at 10:51 +0100, Russell King wrote:quoted
On Thu, May 17, 2012 at 10:30:23AM +0100, Catalin Marinas wrote:quoted
Another minor thing is that on newer ARM processors (Cortex-A15) we need the TLB shootdown even on UP systems, so tlb_fast_mode should always return 0. Something like below (untested):No Catalin, we need this for virtually all ARMv7 CPUs whether they're UP or SMP, not just for A15, because of the speculative prefetch which can re-load TLB entries from the page tables at _any_ time.Hmm,. so this is mostly because of the confusion/coupling between tlb_remove_page() and tlb_remove_table() I guess. Since I don't see the freeing of the actual pages being a problem with speculative TLB reloads, just the page-tables. Should we introduce a tlb_remove_table() regardless of HAVE_RCU_TABLE_FREE which always queues the tables regardless of tlb_fast_mode()?
BTW, looking at your tlb-unify branch, does tlb_remove_table() call tlb_flush/tlb_flush_mmu before freeing the tables? I can only see tlb_remove_page() doing this. On ARM, even UP, we need the TLB flushing after clearing the pmd and before freeing the pte page table (and ideally doing it less often than at every pte_free_tlb() call). -- Catalin