All of lore.kernel.org
 help / color / mirror / Atom feed
From: "H. Peter Anvin" <hpa@zytor.com>
To: Ben Hutchings <ben@decadent.org.uk>
Cc: x86@kernel.org, linux-kernel@vger.kernel.org,
	Richard Kettlewell <rjk@terraraq.org.uk>
Subject: Re: [PATCH] x86: Fix code patching for paravirt-alternatives on 486
Date: Tue, 08 Sep 2009 17:31:51 -0700	[thread overview]
Message-ID: <4AA6F777.2080103@zytor.com> (raw)
In-Reply-To: <1252452228.3423.121.camel@localhost>

On 09/08/2009 04:23 PM, Ben Hutchings wrote:
> 
> diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h
> index c776826..74ddfce 100644
> --- a/arch/x86/include/asm/processor.h
> +++ b/arch/x86/include/asm/processor.h
> @@ -708,6 +708,12 @@ static inline void sync_core(void)
>  {
>  	int tmp;
>  
> +#if defined(CONFIG_M386) || defined(CONFIG_M486)
> +	/* This is unnecessary on 386- and 486-class processors, most of
> +	   which don't even implement CPUID. */
> +	if (boot_cpu_data.x86 < 5)
> +		return;
> +#endif
>  	asm volatile("cpuid" : "=a" (tmp) : "0" (1)
>  		     : "ebx", "ecx", "edx", "memory");
>  }
> diff --git a/arch/x86/kernel/alternative.c b/arch/x86/kernel/alternative.c
> index 4869351..330ab89 100644
> --- a/arch/x86/kernel/alternative.c
> +++ b/arch/x86/kernel/alternative.c
> @@ -498,6 +498,9 @@ static void *__init_or_module text_poke_early(void *addr, const void *opcode,
>  	unsigned long flags;
>  	local_irq_save(flags);
>  	memcpy(addr, opcode, len);
> +	/* Force 486-class processors to flush prefetched instructions,
> +	   since we may have just patched local_irq_restore(). */
> +	asm volatile("jmp 1f\n1:\n" ::: "memory");
>  	local_irq_restore(flags);
>  	sync_core();
>  	/* Could also do a CLFLUSH here to speed up CPU recovery; but

I'm wondering if it wouldn't be cleaner to fold the jump into
sync_core() and moving the sync_core() up before local_irq_restore().

	-hpa

  reply	other threads:[~2009-09-09  0:34 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-09-08 23:23 [PATCH] x86: Fix code patching for paravirt-alternatives on 486 Ben Hutchings
2009-09-09  0:31 ` H. Peter Anvin [this message]
2009-09-09  0:46   ` Ben Hutchings
2009-09-09  1:00     ` H. Peter Anvin

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=4AA6F777.2080103@zytor.com \
    --to=hpa@zytor.com \
    --cc=ben@decadent.org.uk \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rjk@terraraq.org.uk \
    --cc=x86@kernel.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.