lkml.org 
[lkml]   [2009]   [Jul]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
SubjectRe: [BUG] set_mempolicy(MPOL_INTERLEAV) cause kernel panic
Date
> On Wed, 2009-07-15 at 18:48 +0900, KOSAKI Motohiro wrote:
> > Hi
> >
> > On 2.6.31-rc3, following test makes kernel panic immediately.
> >
> > numactl --interleave=all echo
> >
> > Panic message is below. I don't think commit 58568d2a8 is correct patch.
> >
> > old behavior:
> > do_set_mempolicy
> > mpol_new
> > cpuset_update_task_memory_state
> > guarantee_online_mems
> > nodes_and(cs->mems_allowed, node_states[N_HIGH_MEMORY]);
> >
> > but new code doesn't consider N_HIGH_MEMORY. Then, the userland program
> > passing non-online node bit makes crash, I guess.
> >
> > Miao, What do you think?
>
> This looks similar to the problem I tried to fix in:
>
> http://marc.info/?l=linux-mm&m=124140637722309&w=4
>
> Miao pointed out that the patch needs more work to track hot plug of
> nodes. I've not had time to get back to this.
>
> Interestingly, on ia64, the top cpuset mems_allowed gets set to all
> possible nodes, while on x86_64, it gets set to on-line nodes [or nodes
> with memory]. Maybe this is a to support hot-plug?

Maybe.

task->mems_allowed of the init process is initialized by node_possible_map.
if the system doesn't have memory hot-plug capability, node_possible_map
is equal to node_online_map.


-------------------------------------------------
@@ -867,6 +866,11 @@ static noinline int init_post(void)
static int __init kernel_init(void * unused)
{
lock_kernel();
+
+ /*
+ * init can allocate pages on any node
+ */
+ set_mems_allowed(node_possible_map);





\
 
 \ /
  Last update: 2009-07-16 03:03    [W:0.667 / U:0.244 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site