Hello. Maksim Rayskiy wrote:
I hope this one does not get mangled.
It seems OK.
The thing is I do not know how to control it in gmail web client.
Such remarks should follow the --- tear line.
From 9a03661a40407e14ee75295f5541f371f0a7cdda Mon Sep 17 00:00:00 2001 From: Maksim Rayskiy <maksim.rayskiy@xxxxxxxxx> Date: Tue, 30 Nov 2010 11:34:31 -0800 Subject: [PATCH] MIPS: Add local_flush_tlb_all_mm to clear all mm contexts on calling cpu
Don't include this header in the patch, as it will have to be hand edited out of it by the maintainer.
When hotplug removing a cpu, all mm context TLB entries must be cleared to avoid ASID conflict when cpu is restarted. New functions local_flush_tlb_all_mm() and all-cpu version flush_tlb_all_mm() are added. To function properly, local_flush_tlb_all_mm() must be called when mm_cpumask for all mm context on given cpu is cleared.
Signed-off-by: Maksim Rayskiy <maksim.rayskiy@xxxxxxxxx>
[...]
diff --git a/arch/mips/mm/tlb-r4k.c b/arch/mips/mm/tlb-r4k.c index c618eed..5c03218 100644 --- a/arch/mips/mm/tlb-r4k.c +++ b/arch/mips/mm/tlb-r4k.c @@ -66,6 +66,18 @@ extern void build_tlb_refill_handler(void); #endif +/* This function will clear all mm contexts on calling cpu + * To produce desired effect it must be called + * when mm_cpumask for all mm contexts is cleared + */ +void local_flush_tlb_all_mm(void) +{ + struct task_struct *p;
An empty line wouldn't hurt here.
+ for_each_process(p) + if (p->mm) + local_flush_tlb_mm(p->mm); +} + void local_flush_tlb_all(void) { unsigned long flags;
WBR, Sergei