Re: [BUG] set_mempolicy(MPOL_INTERLEAV) cause kernel panic

From: David Rientjes
Date: Mon Jul 27 2009 - 20:38:54 EST


On Tue, 28 Jul 2009, KAMEZAWA Hiroyuki wrote:

> Because we dont' update, task->mems_allowed need to be initilaized as
> N_POSSIBLE_NODES. At usual thinking, it should be N_HIGH_MEMORY or
> N_ONLINE_NODES, as my patch does.
>

On MEM_OFFLINE, cpusets calls scan_for_empty_cpusets() which will
intersect each system cpuset's mems_allowed with N_HIGH_MEMORY. It then
calls update_tasks_nodemask() which will update task->mems_allowed for
each task assigned to those cpusets. This has a callback into the
mempolicy code to rebind the policy with the new mems.

So there's no apparent issue with memory hotplug in dealing with cpuset
mems, although I suggested that this be done for MEM_GOING_OFFLINE instead
of waiting until the mem is actually offline.

The problem originally reported here doesn't appear to have anything to do
with hotplug, it looks like it is the result of Lee's observation that
ia64 defaults top_cpuset's mems to N_POSSIBLE, which _should_ have been
updated by cpuset_init_smp(). So it makes me believe that N_HIGH_MEMORY
isn't actually ready by the time do_basic_setup() is called to be useful.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/