All of lore.kernel.org
 help / color / mirror / Atom feed
From: "H. Peter Anvin" <hpa@zytor.com>
To: Borislav Petkov <bp@alien8.de>
Cc: X86 ML <x86@kernel.org>, LKML <linux-kernel@vger.kernel.org>,
	Borislav Petkov <bp@suse.de>
Subject: Re: [PATCH 2/5 -v2.1] x86: Detect CPUID support early at boot
Date: Sat, 09 Feb 2013 20:34:53 -0800	[thread overview]
Message-ID: <5117236D.5000607@zytor.com> (raw)
In-Reply-To: <1360451762-10175-1-git-send-email-bp@alien8.de>

On 02/09/2013 03:16 PM, Borislav Petkov wrote:
> From: Borislav Petkov <bp@suse.de>
>
> We detect CPUID function support on each CPU and save it for later use,
> obviating the need to play the toggle EFLAGS.ID game every time. C code
> is looking at ->cpuid_level anyway.
>
> Signed-off-by: Borislav Petkov <bp@suse.de>
> ---
>   arch/x86/kernel/head_32.S | 48 +++++++++++++++++++++++------------------------
>   1 file changed, 23 insertions(+), 25 deletions(-)
>
> diff --git a/arch/x86/kernel/head_32.S b/arch/x86/kernel/head_32.S
> index f4d919e2cd2b..534397ba226c 100644
> --- a/arch/x86/kernel/head_32.S
> +++ b/arch/x86/kernel/head_32.S
> @@ -318,30 +318,37 @@ default_entry:
>   	movl %eax,%cr0
>
>   /*
> - *	New page tables may be in 4Mbyte page mode and may
> - *	be using the global pages.
> + * Initialize EFLAGS. Some BIOSes leave bits like NT set. This would confuse the
> + * debugger if this code is traced. Best to initialize before switching to
> + * protected mode. As a side effect, we clear DF too because GCC expects it so.
> + */
> +	pushl $0
> +	popfl
> +

I wouldn't really call it a "side effect".  Perhaps the right thing here 
is to say something like "we want to start out with %eflags 
unambiguously clear".

(Note also we have had to CLD earlier because we have already copied the 
command line.)

	-hpa

-- 
H. Peter Anvin, Intel Open Source Technology Center
I work for Intel.  I don't speak on their behalf.


  reply	other threads:[~2013-02-10  4:36 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-02-09 19:52 [PATCH 0/5] x86, head_32: Some cleanups, -v2 Borislav Petkov
2013-02-09 19:52 ` [PATCH 1/5] x86, head_32: Remove i386 pieces Borislav Petkov
2013-02-09 19:52 ` [PATCH 2/5] x86: Detect CPUID support early at boot Borislav Petkov
2013-02-09 19:52 ` [PATCH 3/5] x86, head_32: Remove second CPUID detection from default_entry Borislav Petkov
2013-02-09 19:52 ` [PATCH 4/5] x86, head_32: Give the 6 label a real name Borislav Petkov
2013-02-09 19:52 ` [PATCH 5/5] x86, head_32: Remove an old gcc2 fix Borislav Petkov
2013-02-09 20:51   ` H. Peter Anvin
2013-02-09 20:52   ` H. Peter Anvin
2013-02-09 21:23     ` Borislav Petkov
2013-02-09 22:08       ` [PATCH 5/5 -v2] x86, head_32: Clear DF much earlier Borislav Petkov
2013-02-09 22:23       ` [PATCH 5/5] x86, head_32: Remove an old gcc2 fix H. Peter Anvin
2013-02-09 23:13         ` Borislav Petkov
2013-02-09 23:16           ` [PATCH 2/5 -v2.1] x86: Detect CPUID support early at boot Borislav Petkov
2013-02-10  4:34             ` H. Peter Anvin [this message]
2013-02-10  8:36               ` Borislav Petkov
2013-02-10 15:10                 ` 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=5117236D.5000607@zytor.com \
    --to=hpa@zytor.com \
    --cc=bp@alien8.de \
    --cc=bp@suse.de \
    --cc=linux-kernel@vger.kernel.org \
    --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.