[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20120127123437.481791ba.akpm@linux-foundation.org>
Date: Fri, 27 Jan 2012 12:34:37 -0800
From: Andrew Morton <akpm@...ux-foundation.org>
To: Steven Rostedt <rostedt@...dmis.org>
Cc: linux-kernel@...r.kernel.org, Ingo Molnar <mingo@...e.hu>,
Jason Baron <jbaron@...hat.com>,
"H. Peter Anvin" <hpa@...or.com>,
Frederic Weisbecker <fweisbec@...il.com>
Subject: Re: [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@...dmis.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);
> }
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists