From: Kevin Winchester <kjwinchester@gmail.com>
To: Mikael Pettersson <mikpe@it.uu.se>
Cc: Borislav Petkov <borislav.petkov@amd.com>,
Borislav Petkov <petkovbb@googlemail.com>,
Ingo Molnar <mingo@elte.hu>, LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v3] x86: clear incorrectly forced X86_FEATURE_LAHF_LM flag
Date: Tue, 11 Aug 2009 11:56:05 -0300 [thread overview]
Message-ID: <d1af83620908110756h6c9782b5tbc03470f7d33153e@mail.gmail.com> (raw)
In-Reply-To: <19073.33348.459260.456740@pilspetsen.it.uu.se>
2009/8/11 Mikael Pettersson <mikpe@it.uu.se>:
> Kevin Winchester writes:
> > Due to an erratum with certain AMD Athlon 64 processors, the BIOS may
> > need to force enable the LAHF_LM capability. Unfortunately, in at
> > least one case, the BIOS does this even for processors that do not
> > support the functionality.
> >
> > Add a specific check that will clear the feature bit for processors
> > known not to support the LAHF/SAHF instructions.
> >
> > Signed-off-by: Kevin Winchester <kjwinchester@gmail.com>
> > ---
> > arch/x86/kernel/cpu/amd.c | 7 +++++++
> > 1 files changed, 7 insertions(+), 0 deletions(-)
> >
> > diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c
> > index e2485b0..63fddcd 100644
> > --- a/arch/x86/kernel/cpu/amd.c
> > +++ b/arch/x86/kernel/cpu/amd.c
> > @@ -400,6 +400,13 @@ static void __cpuinit init_amd(struct cpuinfo_x86 *c)
> > level = cpuid_eax(1);
> > if((level >= 0x0f48 && level < 0x0f50) || level >= 0x0f58)
> > set_cpu_cap(c, X86_FEATURE_REP_GOOD);
> > +
> > + /*
> > + * Some BIOSes incorrectly force this feature, but only K8
> > + * revision D (model = 0x14) and later actually support it.
> > + */
> > + if (c->x86_model < 0x14)
> > + clear_cpu_cap(c, X86_FEATURE_LAHF_LM);
> > }
> > if (c->x86 == 0x10 || c->x86 == 0x11)
> > set_cpu_cap(c, X86_FEATURE_REP_GOOD);
>
> But this only fixes /proc/cpuinfo, right?
>
> Since the BIOS apparently wrote some MSR to get LAHF_LM incorrectly
> reported by CPUID, would it be possible to also correct that MSR so
> that applications that execute CPUID get the correct feature flags?
>
Yes, this does only fix /proc/cpuinfo. The problem I was experiencing was
related to the 64-bit Adobe Flash plugin, which always uses the LAHF
instruction, regardless of the capabilities of the processor. Gentoo has
a special additional browser plugin that will basically emulate the LAHF
instruction when it gets an illegal instruction signal, but that plugin is not
installed if /proc/cpuinfo indicates that LAHF is supported.
Thus this patch precisely fixes my problem.
Other options would be, as you mention, to correct the MSR value, or even
to have the kernel emulate the instruction (if that is possible).
I would be happy to implement any other solution instead if it would
help others,
while continuing to solve my problem - but this was the simplest answer I had.
--
Kevin Winchester
next prev parent reply other threads:[~2009-08-11 14:56 UTC|newest]
Thread overview: 80+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-08-08 11:53 [PATCH] " Kevin Winchester
2009-08-08 15:20 ` Borislav Petkov
2009-08-08 15:42 ` Ingo Molnar
2009-08-08 16:15 ` Ingo Molnar
2009-08-08 22:06 ` Kevin Winchester
2009-08-08 23:17 ` [PATCH v2] " Kevin Winchester
2009-08-10 13:12 ` Borislav Petkov
2009-08-10 22:56 ` [PATCH v3] " Kevin Winchester
2009-08-11 9:44 ` Borislav Petkov
2009-08-11 11:36 ` [tip:x86/urgent] x86: Clear " tip-bot for Kevin Winchester
2009-08-11 14:37 ` [PATCH v3] x86: clear " Mikael Pettersson
2009-08-11 14:56 ` Kevin Winchester [this message]
2009-08-11 15:51 ` Borislav Petkov
2009-08-11 15:55 ` Kevin Winchester
2009-08-11 16:01 ` Borislav Petkov
2009-08-12 0:15 ` Kevin Winchester
2009-08-12 11:40 ` Borislav Petkov
2009-08-12 23:02 ` Kevin Winchester
2009-08-13 12:23 ` Borislav Petkov
2009-08-13 12:31 ` [PATCH 1/2] x86, msr: Add an AMD wrmsr with exception handling Borislav Petkov
2009-08-13 12:31 ` [PATCH 2/2] x86: Clear incorrectly forced X86_FEATURE_LAHF_LM flag Borislav Petkov
2009-08-13 14:21 ` Brian Gerst
2009-08-13 14:54 ` Kevin Winchester
2009-08-13 15:55 ` Brian Gerst
2009-08-13 16:18 ` Borislav Petkov
2009-08-13 22:45 ` Kevin Winchester
2009-08-13 15:54 ` Borislav Petkov
2009-08-13 14:57 ` [PATCH v3] x86: clear " Kevin Winchester
2009-08-13 23:24 ` Kevin Winchester
2009-08-14 12:00 ` Borislav Petkov
2009-08-14 12:06 ` [PATCH 1/2] x86, msr: Add a AMD wrmsr with exception handling Borislav Petkov
2009-08-15 17:06 ` [tip:x86/urgent] " tip-bot for Borislav Petkov
2009-08-14 12:06 ` [PATCH 2/2] x86, AMD: Disable wrongly set X86_FEATURE_LAHF_LM CPUID bit Borislav Petkov
2009-08-15 17:06 ` [tip:x86/urgent] " tip-bot for Borislav Petkov
2009-08-16 6:41 ` Ingo Molnar
2009-08-16 20:10 ` Kevin Winchester
2009-08-16 20:51 ` Ingo Molnar
2009-08-16 21:49 ` Borislav Petkov
2009-08-21 17:40 ` H. Peter Anvin
2009-08-22 16:37 ` Borislav Petkov
2009-08-24 20:34 ` H. Peter Anvin
2009-08-25 5:52 ` Borislav Petkov
2009-08-25 6:44 ` H. Peter Anvin
2009-08-30 11:43 ` Borislav Petkov
2009-08-30 11:50 ` [PATCH 1/3] x86, msr: add rd/wrmsr interfaces with preset registers Borislav Petkov
2009-08-30 11:50 ` [PATCH 2/3] x86, msr: rewrite AMD rd/wrmsr variants Borislav Petkov
2009-08-30 20:03 ` H. Peter Anvin
2009-08-30 20:46 ` Borislav Petkov
2009-08-30 20:04 ` H. Peter Anvin
2009-08-30 11:50 ` [PATCH 3/3] x86, AMD: Disable wrongly set X86_FEATURE_LAHF_LM CPUID bit Borislav Petkov
2009-08-30 19:22 ` H. Peter Anvin
2009-08-30 19:30 ` Borislav Petkov
2009-08-30 20:02 ` H. Peter Anvin
2009-08-30 20:29 ` Borislav Petkov
2009-08-30 20:48 ` H. Peter Anvin
2009-08-31 7:34 ` Borislav Petkov
2009-08-31 7:50 ` [PATCH 1/3] x86, msr: add rd/wrmsr interfaces with preset registers Borislav Petkov
2009-08-31 23:37 ` [tip:x86/cpu] x86, msr: Add " tip-bot for Borislav Petkov
2009-09-01 11:05 ` Ingo Molnar
2009-09-01 13:06 ` Borislav Petkov
2009-09-04 14:08 ` Ingo Molnar
2009-09-04 16:26 ` H. Peter Anvin
2009-09-04 17:06 ` [tip:x86/cpu] x86, msr: change msr-reg.o to obj-y, and export its symbols tip-bot for H. Peter Anvin
2009-09-05 9:57 ` Borislav Petkov
2009-09-06 4:41 ` H. Peter Anvin
2009-08-31 23:38 ` [tip:x86/cpu] x86, msr: CFI annotations, cleanups for msr-reg.S tip-bot for H. Peter Anvin
2009-09-03 22:55 ` [PATCH 1/3] x86, msr: add rd/wrmsr interfaces with preset registers Andrew Morton
2009-09-03 22:57 ` H. Peter Anvin
2009-09-03 23:14 ` Andrew Morton
2009-09-03 23:22 ` H. Peter Anvin
2009-09-04 6:39 ` Ingo Molnar
2009-09-04 8:27 ` Borislav Petkov
2009-08-31 7:50 ` [PATCH 2/3] x86, msr: rewrite AMD rd/wrmsr variants Borislav Petkov
2009-08-31 23:37 ` [tip:x86/cpu] x86, msr: Rewrite " tip-bot for Borislav Petkov
2009-08-31 7:50 ` [PATCH 3/3] x86, AMD: Disable wrongly set X86_FEATURE_LAHF_LM CPUID bit Borislav Petkov
2009-08-31 23:37 ` [tip:x86/cpu] " tip-bot for Borislav Petkov
2009-08-31 8:14 ` [PATCH 3/3] " Borislav Petkov
2009-08-31 18:03 ` H. Peter Anvin
2009-08-30 17:07 ` [tip:x86/urgent] " H. Peter Anvin
2009-08-30 19:17 ` Borislav Petkov
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=d1af83620908110756h6c9782b5tbc03470f7d33153e@mail.gmail.com \
--to=kjwinchester@gmail.com \
--cc=borislav.petkov@amd.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mikpe@it.uu.se \
--cc=mingo@elte.hu \
--cc=petkovbb@googlemail.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®