Re: [PATCH RFC V2 3/5] jump_label: if a key has already been initialized, don't nop it out

Steven Rostedt
2011-10-03T15:47:36Z

On Mon, 2011-10-03 at 11:02 -0400, Jason Baron wrote:

> if (!enabled)
> arch_jump_label_transform(iter, JUMP_LABEL_DISABLE);
>
>
> > + if (iterk == key)
> > continue;
> >
> > - key = (struct jump_label_key *)(unsigned long)iter->key;
> > - atomic_set(&key->enabled, 0);
> > + key = iterk;
> > key->entries = iter;
> > #ifdef CONFIG_MODULES
> > key->next = NULL;
> > @@ -212,7 +208,7 @@ void jump_label_apply_nops(struct module *mod)
> > return;
> >
> > for (iter = iter_start; iter < iter_stop; iter++)
> > - arch_jump_label_text_poke_early(iter->code);
> > + arch_jump_label_transform(iter, JUMP_LABEL_DISABLE);
> > }
> >
> > static int jump_label_add_module(struct module *mod)
> > --
> > 1.7.6.2
> >
>
> hmmm...this is used on module load in smp - so this would introduce a number of
> calls to stop_machine() where we didn't have them before. Yes, module
> load is a very slow path to begin with, but I think its at least worth
> pointing out...

And it is a good point to point out. As stop_machine becomes noticeable
by users on large scale CPU boxes. Ideally, we want to avoid stopmachine
when we do not need it.

-- Steve