lkml.org 
[lkml]   [2009]   [Jul]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [BUG] set_mempolicy(MPOL_INTERLEAV) cause kernel panic
    On Fri, 24 Jul 2009 15:51:51 -0700 (PDT)
    David Rientjes <rientjes@google.com> wrote:

    > On Thu, 16 Jul 2009, David Rientjes wrote:
    >
    > > numactl --interleave=all simply passes a nodemask with all bits set, so if
    > > cpuset_current_mems_allowed includes offline nodes from node_possible_map,
    > > then mpol_set_nodemask() doesn't mask them off.
    > >
    > > Seems like we could handle this strictly in mempolicies without worrying
    > > about top_cpuset like in the following?
    > > ---
    > > diff --git a/mm/mempolicy.c b/mm/mempolicy.c
    > > --- a/mm/mempolicy.c
    > > +++ b/mm/mempolicy.c
    > > @@ -194,6 +194,7 @@ static int mpol_new_bind(struct mempolicy *pol, const nodemask_t *nodes)
    > > static int mpol_set_nodemask(struct mempolicy *pol, const nodemask_t *nodes)
    > > {
    > > nodemask_t cpuset_context_nmask;
    > > + nodemask_t mems_allowed;
    > > int ret;
    > >
    > > /* if mode is MPOL_DEFAULT, pol is NULL. This is right. */
    > > @@ -201,20 +202,21 @@ static int mpol_set_nodemask(struct mempolicy *pol, const nodemask_t *nodes)
    > > return 0;
    > >
    > > VM_BUG_ON(!nodes);
    > > + nodes_and(mems_allowed, cpuset_current_mems_allowed,
    > > + node_states[N_HIGH_MEMORY]);
    > > if (pol->mode == MPOL_PREFERRED && nodes_empty(*nodes))
    > > nodes = NULL; /* explicit local allocation */
    > > else {
    > > if (pol->flags & MPOL_F_RELATIVE_NODES)
    > > mpol_relative_nodemask(&cpuset_context_nmask, nodes,
    > > - &cpuset_current_mems_allowed);
    > > + &mems_allowed);
    > > else
    > > nodes_and(cpuset_context_nmask, *nodes,
    > > - cpuset_current_mems_allowed);
    > > + mems_allowed);
    > > if (mpol_store_user_nodemask(pol))
    > > pol->w.user_nodemask = *nodes;
    > > else
    > > - pol->w.cpuset_mems_allowed =
    > > - cpuset_current_mems_allowed;
    > > + pol->w.cpuset_mems_allowed = mems_allowed;
    > > }
    > >
    > > ret = mpol_ops[pol->mode].create(pol,
    > >
    >
    > Should this patch be added to 2.6.31-rc4 to prevent the kernel panic while
    > hotplug notifiers are being added to mempolicies?

    afaik we don't have a final patch for this. I asked Motohiro-san about
    this and he's proposing that we revert the offending change (which one
    was it?) if nothing gets fixed soon - the original author is on a
    lengthy vacation.


    If we _do_ have a patch then can we start again? Someone send out the patch
    and let's take a look at it.


    \
     
     \ /
      Last update: 2009-07-25 01:13    [W:0.024 / U:60.564 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site