Re: Potential race in TLB flush batching?
From: Andy Lutomirski <luto@kernel.org>
Date: 2017-07-13 17:15:38
On Thu, Jul 13, 2017 at 10:07 AM, Mel Gorman [off-list ref] wrote:
On Thu, Jul 13, 2017 at 09:08:21AM -0700, Andrew Lutomirski wrote:quoted
On Wed, Jul 12, 2017 at 11:07 PM, Mel Gorman [off-list ref] wrote:quoted
--- a/arch/x86/mm/tlb.c +++ b/arch/x86/mm/tlb.c@@ -455,6 +455,39 @@ void arch_tlbbatch_flush(struct arch_tlbflush_unmap_batch *batch) put_cpu(); } +/* + * Ensure that any arch_tlbbatch_add_mm calls on this mm are up to date whens/are up to date/have flushed the TLBs/ perhaps? Can you update this comment in arch/x86/include/asm/tlbflush.h: * - Fully flush a single mm. .mm will be set, .end will be * TLB_FLUSH_ALL, and .new_tlb_gen will be the tlb_gen to * which the IPI sender is trying to catch us up. by adding something like: This can also happen due to arch_tlbflush_flush_one_mm(), in which case it's quite likely that most or all CPUs are already up to date.No problem, thanks. Care to ack the patch below? If so, I'll send it to Ingo with x86 and linux-mm cc'd after some tests complete (hopefully successfully). It's fairly x86 specific and makes sense to go in with the rest of the pcid and mm tlb_gen stuff rather than via Andrew's tree even through it touches core mm.
Acked-by: Andy Lutomirski <luto@kernel.org> # for the x86 parts When you send to Ingo, you might want to change arch_tlbbatch_flush_one_mm to arch_tlbbatch_flush_one_mm(), because otherwise he'll probably do it for you :) -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>