提交 aac0aadf 编写于 作者: D David S. Miller 提交者: David S. Miller

[SPARC64]: Fix bugs in SMP TLB context version expiration handling.

1) We must flush the TLB, duh.

2) Even if the sw context was seen to be valid, the local cpu's
   hw context can be out of date, so reload it unconditionally.
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 6889331a
......@@ -909,14 +909,18 @@ void smp_receive_signal_client(int irq, struct pt_regs *regs)
*/
mm = current->active_mm;
if (likely(mm)) {
if (unlikely(!CTX_VALID(mm->context))) {
unsigned long flags;
unsigned long flags;
spin_lock_irqsave(&mm->context.lock, flags);
spin_lock_irqsave(&mm->context.lock, flags);
if (unlikely(!CTX_VALID(mm->context)))
get_new_mmu_context(mm);
load_secondary_context(mm);
spin_unlock_irqrestore(&mm->context.lock, flags);
}
load_secondary_context(mm);
__flush_tlb_mm(CTX_HWBITS(mm->context),
SECONDARY_CONTEXT);
spin_unlock_irqrestore(&mm->context.lock, flags);
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册