linux-mips
[Top] [All Lists]

Re: [PATCH] MIPS: ASID conflict after CPU hotplug

To: Maksim Rayskiy <maksim.rayskiy@gmail.com>
Subject: Re: [PATCH] MIPS: ASID conflict after CPU hotplug
From: Sergei Shtylyov <sshtylyov@mvista.com>
Date: Wed, 01 Dec 2010 14:51:03 +0300
Cc: "Kevin D. Kissell" <kevink@paralogos.com>, Ralf Baechle <ralf@linux-mips.org>, linux-mips@linux-mips.org
In-reply-to: <AANLkTinQKfeYockOBYQOasJ0-C3T106Qe95hV23pfqKg@mail.gmail.com>
Original-recipient: rfc822;linux-mips@linux-mips.org
References: <AANLkTi=yHm72=sM=QwLpm=aDRnxVf7ZM5=W6eNzgVoTN@mail.gmail.com> <20101122034141.GA13138@linux-mips.org> <4CEAE1EE.9020406@paralogos.com> <AANLkTimuJLxG2KoibRxzcHkX3LoKsTWqJSF_e=ouFi+b@mail.gmail.com> <4CEE877C.7020309@paralogos.com> <AANLkTinUSjvjwHVJoRW-Fr75WDfheq3hSM_hEBMsEUXK@mail.gmail.com> <4CF46741.9060902@paralogos.com> <AANLkTikb32T_c7iu6aa0mXDDqC4ncsV9iQAqyVKHy1_y@mail.gmail.com> <4CF4CC6B.9090603@paralogos.com> <AANLkTinQKfeYockOBYQOasJ0-C3T106Qe95hV23pfqKg@mail.gmail.com>
Sender: linux-mips-bounce@linux-mips.org
User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.2.12) Gecko/20101027 Thunderbird/3.1.6
Hello.

On 30-11-2010 22:49, Maksim Rayskiy wrote:

From 9a03661a40407e14ee75295f5541f371f0a7cdda Mon Sep 17 00:00:00 2001
From: Maksim Rayskiy<maksim.rayskiy@gmail.com>
Date: Tue, 30 Nov 2010 11:34:31 -0800
Subject: [PATCH] MIPS: Added local_flush_tlb_all_mm to clear all mm
contexts on calling cpu

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@gmail.com>
[...]

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);
+}
+

WBR, Sergei

<Prev in Thread] Current Thread [Next in Thread>
  • Re: [PATCH] MIPS: ASID conflict after CPU hotplug, Sergei Shtylyov <=