linux-mips
[Top] [All Lists]

Re: [PATCH] MIPS: clear idle task mm pointer when hotplugging cpu

To: maksim.rayskiy@gmail.com
Subject: Re: [PATCH] MIPS: clear idle task mm pointer when hotplugging cpu
From: Ralf Baechle <ralf@linux-mips.org>
Date: Wed, 9 Feb 2011 13:02:09 +0100
Cc: linux-mips@linux-mips.org, Maksim Rayskiy <mrayskiy@broadcom.com>
In-reply-to: <1297210687-14589-1-git-send-email-maksim.rayskiy@gmail.com>
Original-recipient: rfc822;linux-mips@linux-mips.org
References: <1297210687-14589-1-git-send-email-maksim.rayskiy@gmail.com>
Sender: linux-mips-bounce@linux-mips.org
User-agent: Mutt/1.5.21 (2010-09-15)
On Tue, Feb 08, 2011 at 04:18:07PM -0800, maksim.rayskiy@gmail.com wrote:

> If kernel starts with maxcpus= option which does not bring all
> available cpus online at boot time, idle tasks for offline cpus
> are not created. If later offline cpus are hotplugged through sysfs,
> __cpu_up is called in the context of the user task, and fork_idle
> copies its non-zero mm pointer.  This causes BUG() in per_cpu_trap_init.
> 
> To avoid this, release mm for idle task and reset the pointer after
> fork_idle().

Nice catch, applied.

x86 avoid this problem by forking the idle threads in a worker thread which
also avoids other potencial issues; we probably should take the same
path.

  Ralf

<Prev in Thread] Current Thread [Next in Thread>