public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
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.
--

  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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox