From: Borislav Petkov <bp@alien8.de>
To: Chris Bainbridge <chris.bainbridge@gmail.com>
Cc: Andreas Mohr <andi@lisas.de>, Dennis Mungai <dmngaie@gmail.com>,
"H. Peter Anvin" <hpa@zytor.com>,
x86@kernel.org, Dave Jones <davej@redhat.com>,
linux-kernel@vger.kernel.org, devzero@web.de
Subject: Re: Re: [PATCH] x86: set Pentium M as PAE capable
Date: Mon, 3 Mar 2014 20:29:39 +0100 [thread overview]
Message-ID: <20140303192939.GD31265@pd.tnic> (raw)
In-Reply-To: <20140303080432.GA25489@localhost>
On Mon, Mar 03, 2014 at 03:04:35PM +0700, Chris Bainbridge wrote:
> On 3 March 2014 02:05, Roland Kletzing <devzero@web.de> wrote:
> > i would recommend adding the newly introduced param to
> > Documentation/kernel-
> > parameters.txt , though.
>
> Done.
>
> Signed-off-by: Chris Bainbridge <chris.bainbridge@gmail.com>
> ---
> diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
> index b9e9bd8..388b5e9 100644
> --- a/Documentation/kernel-parameters.txt
> +++ b/Documentation/kernel-parameters.txt
> @@ -962,6 +962,13 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
> parameter will force ia64_sal_cache_flush to call
> ia64_pal_cache_flush instead of SAL_CACHE_FLUSH.
>
> + forcepae [X86-32]
> + Forcefully enable Physical Address Extension (PAE).
> + Many Pentium M systems disable PAE but may have a
> + functionally usable PAE implementation.
> + Note: This parameter is unsupported, may cause unknown
What does "unsupported" mean here exactly?
> + problems, and will taint the kernel.
> +
> ftrace=[tracer]
> [FTRACE] will set and start the specified tracer
> as early as possible in order to facilitate early
> diff --git a/arch/x86/boot/cpucheck.c b/arch/x86/boot/cpucheck.c
> index 4d3ff03..93ba160 100644
> --- a/arch/x86/boot/cpucheck.c
> +++ b/arch/x86/boot/cpucheck.c
> @@ -69,6 +69,13 @@ static int is_transmeta(void)
> cpu_vendor[2] == A32('M', 'x', '8', '6');
> }
>
> +static int is_intel(void)
> +{
> + return cpu_vendor[0] == A32('G', 'e', 'n', 'u') &&
> + cpu_vendor[1] == A32('i', 'n', 'e', 'I') &&
> + cpu_vendor[2] == A32('n', 't', 'e', 'l');
> +}
> +
> static int has_fpu(void)
> {
> u16 fcw = -1, fsw = -1;
> @@ -239,6 +246,24 @@ int check_cpu(int *cpu_level_ptr, int *req_level_ptr, u32 **err_flags_ptr)
> asm("wrmsr" : : "a" (eax), "d" (edx), "c" (ecx));
>
> err = check_flags();
> + } else if (err == 0x01 &&
> + !(err_flags[0] & ~(1 << X86_FEATURE_PAE)) &&
> + is_intel() && cpu.level == 6 &&
> + (cpu.model == 9 || cpu.model == 13)) {
> + /* PAE is disabled on this Pentium M but can be forced */
> + if (cmdline_find_option_bool("forcepae")) {
> + puts("WARNING: Forcing PAE in CPU flags\n");
> + set_bit(X86_FEATURE_PAE, cpu.flags);
> + err = check_flags();
This function is called check_cpuflags() now. You probably want to redo
your patch against tip/master, i.e.:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git#master
> + }
> + else {
> + puts("ERROR: PAE is disabled on this Pentium M\n"
> + "(PAE can potentially be enabled with "
> + "kernel parameter\n"
> + "\"forcepae\" - this is unsupported, may "
> + "cause unknown\n"
> + "problems, and will taint the kernel)\n");
This string could definitely violate the 80 cols rule so that it is much
more readable:
}
else
puts("WARNING: PAE disabled. Use \"forcepae\" to enable at your own risk!\n");
I've shortened it to the most relevant info only. No need to say we're
tainting the kernel because LOCKDEP_NOW_UNRELIABLE will cause that
anyway below.
> + }
> }
>
> if (err_flags_ptr)
> diff --git a/arch/x86/kernel/cpu/intel.c b/arch/x86/kernel/cpu/intel.c
> index bbe1b8b..271686d 100644
> --- a/arch/x86/kernel/cpu/intel.c
> +++ b/arch/x86/kernel/cpu/intel.c
> @@ -196,6 +196,14 @@ static void intel_smp_check(struct cpuinfo_x86 *c)
> }
> }
>
> +static int forcepae;
> +static int __init forcepae_setup(char *__unused)
> +{
> + forcepae = 1;
> + return 1;
> +}
> +__setup("forcepae", forcepae_setup);
Yeah, why not simply call it "pae"? It is smaller and the letter
combination is not used yet and it means the same.
> +
> static void intel_workarounds(struct cpuinfo_x86 *c)
> {
> unsigned long lo, hi;
> @@ -226,6 +234,17 @@ static void intel_workarounds(struct cpuinfo_x86 *c)
> clear_cpu_cap(c, X86_FEATURE_SEP);
>
> /*
> + * PAE CPUID issue: many Pentium M report no PAE but may have a
> + * functionally usable PAE implementation.
> + * Forcefully enable PAE if kernel parameter "forcepae" is present.
> + */
> + if (forcepae) {
> + printk(KERN_WARNING "PAE forced!\n");
> + set_cpu_cap(c, X86_FEATURE_PAE);
> + add_taint(TAINT_CPU_OUT_OF_SPEC, LOCKDEP_NOW_UNRELIABLE);
Right, this implies Dave's patch is preceding yours. I guess hpa can
fish it out from the thread when applying.
--
Regards/Gruss,
Boris.
Sent from a fat crate under my desk. Formatting is fine.
--
next prev parent reply other threads:[~2014-03-03 19:29 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-25 6:01 [PATCH] x86: set Pentium M as PAE capable Chris Bainbridge
2014-02-25 10:45 ` H. Peter Anvin
2014-02-25 11:35 ` Borislav Petkov
2014-02-25 12:06 ` Peter Hurley
2014-02-25 12:07 ` One Thousand Gnomes
2014-02-25 16:26 ` Dave Jones
2014-02-25 17:16 ` H. Peter Anvin
2014-02-26 12:12 ` Chris Bainbridge
2014-02-26 13:18 ` Borislav Petkov
2014-02-26 15:49 ` Dave Jones
2014-02-26 17:18 ` Borislav Petkov
2014-02-26 17:20 ` Dave Jones
2014-02-26 17:28 ` Borislav Petkov
2014-02-28 7:30 ` Chris Bainbridge
[not found] ` <CAKKYfmFgVjYwvThpB0FBB+ggOwULWKLpz7ADT1eojno_KtD9yw@mail.gmail.com>
2014-02-28 14:00 ` Chris Bainbridge
2014-03-02 20:56 ` Andreas Mohr
2014-03-02 20:59 ` H. Peter Anvin
2014-03-02 21:02 ` Dave Jones
2014-03-02 21:04 ` Borislav Petkov
2014-03-02 21:13 ` Andreas Mohr
2014-03-02 21:42 ` Gene Heskett
2014-03-03 12:31 ` One Thousand Gnomes
2014-03-03 8:04 ` Chris Bainbridge
2014-03-03 19:29 ` Borislav Petkov [this message]
2014-03-04 5:01 ` Chris Bainbridge
2014-03-04 5:04 ` H. Peter Anvin
2014-03-04 6:06 ` Chris Bainbridge
2014-03-04 10:44 ` Borislav Petkov
2014-03-05 4:17 ` Chris Bainbridge
2014-03-07 11:40 ` [PATCH] x86: Add forcepae parameter for booting PAE kernels on PAE-disabled Pentium M Chris Bainbridge
2014-03-10 10:25 ` Borislav Petkov
2014-03-20 23:30 ` [tip:x86/cpu] x86, cpu: " tip-bot for Chris Bainbridge
2014-03-20 23:33 ` tip-bot for Chris Bainbridge
2014-03-20 23:30 ` [tip:x86/cpu] Rename TAINT_UNSAFE_SMP to TAINT_CPU_OUT_OF_SPEC tip-bot for Dave Jones
2014-02-26 16:46 ` [PATCH] x86: set Pentium M as PAE capable H. Peter Anvin
2014-02-26 16:44 ` Matthew Garrett
2014-02-26 16:45 ` H. Peter Anvin
2014-02-26 17:10 ` Matthew Garrett
2014-02-26 17:57 ` H. Peter Anvin
2014-03-03 0:11 ` 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=20140303192939.GD31265@pd.tnic \
--to=bp@alien8.de \
--cc=andi@lisas.de \
--cc=chris.bainbridge@gmail.com \
--cc=davej@redhat.com \
--cc=devzero@web.de \
--cc=dmngaie@gmail.com \
--cc=hpa@zytor.com \
--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.