lkml.org 
[lkml]   [2012]   [Jan]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH 2/5] x86/jump-label: Do not bother updating nops if they are correct
On Fri, 27 Jan 2012 15:14:44 -0500
Steven Rostedt <rostedt@goodmis.org> wrote:

> --- a/arch/x86/kernel/jump_label.c
> +++ b/arch/x86/kernel/jump_label.c
> @@ -53,7 +53,25 @@ void arch_jump_label_transform(struct jump_entry *entry,
> void arch_jump_label_transform_static(struct jump_entry *entry,
> enum jump_label_type type)
> {
> - __jump_label_transform(entry, type, text_poke_early);
> + static int once;
> + static int update;
> +
> + /*
> + * This function is called at boot up and when modules are
> + * first loaded. Check if the default nop, the one that is
> + * inserted at compile time, is the ideal nop. If it is, then
> + * we do not need to update the nop, and we can leave it as is.
> + * If it is not, then we need to update the nop to the ideal nop.
> + */
> + if (!once) {
> + unsigned char default_nop[] = { JUMP_LABEL_INIT_NOP };

const. It generates less code. With my compiler version, at least.
That was a bit dumb of it, given that memcmp() is declared to take
const args.

> + const unsigned char *ideal_nop = ideal_nops[NOP_ATOMIC5];
> + once++;
> + if (memcmp(ideal_nop, default_nop, 5) != 0)
> + update = 1;
> + }
> + if (update)
> + __jump_label_transform(entry, type, text_poke_early);
> }


\
 
 \ /
  Last update: 2012-01-27 21:37    [from the cache]
©2003-2011 Jasper Spaans