Re: [PATCH 2/5] x86/jump-label: Do not bother updating nops if theyare correct

From: Andrew Morton
Date: Fri Jan 27 2012 - 15:34:37 EST


On Fri, 27 Jan 2012 15:14:44 -0500
Steven Rostedt <rostedt@xxxxxxxxxxx> 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);
> }
--
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/