All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Morton <akpm@linux-foundation.org>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: linux-kernel@vger.kernel.org, Ingo Molnar <mingo@elte.hu>,
	Jason Baron <jbaron@redhat.com>, "H. Peter Anvin" <hpa@zytor.com>,
	Frederic Weisbecker <fweisbec@gmail.com>
Subject: Re: [PATCH 2/5] x86/jump-label: Do not bother updating nops if they are correct
Date: Fri, 27 Jan 2012 12:34:37 -0800	[thread overview]
Message-ID: <20120127123437.481791ba.akpm@linux-foundation.org> (raw)
In-Reply-To: <20120127202031.234193929@goodmis.org>

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);
>  }

  reply	other threads:[~2012-01-27 20:34 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-01-27 20:14 [PATCH 0/5] [GIT PULL] x86/jump label: Paranoid checks and 2 or 5 byte nops Steven Rostedt
2012-01-27 20:14 ` [PATCH 1/5] x86/jump-label: Use best default nops for inital jump label calls Steven Rostedt
2012-01-27 20:27   ` H. Peter Anvin
2012-01-27 20:49     ` Steven Rostedt
2012-01-27 20:50       ` H. Peter Anvin
2012-01-27 21:00         ` Steven Rostedt
2012-01-30 21:05       ` Michal Marek
2012-01-27 20:14 ` [PATCH 2/5] x86/jump-label: Do not bother updating nops if they are correct Steven Rostedt
2012-01-27 20:34   ` Andrew Morton [this message]
2012-01-27 20:42     ` Steven Rostedt
2012-01-27 20:14 ` [PATCH 3/5] x86/jump-label: Add safety checks to jump label conversions Steven Rostedt
2012-01-27 20:14 ` [PATCH 4/5] jump labels: Add infrastructure to update jump labels at compile time Steven Rostedt
2012-01-27 20:14 ` [PATCH 5/5] jump labels/x86: Use etiher 5 byte or 2 byte jumps Steven Rostedt
2012-01-27 21:47   ` Steven Rostedt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20120127123437.481791ba.akpm@linux-foundation.org \
    --to=akpm@linux-foundation.org \
    --cc=fweisbec@gmail.com \
    --cc=hpa@zytor.com \
    --cc=jbaron@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=rostedt@goodmis.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.