linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Linus Torvalds <torvalds@linux-foundation.org>
To: "H. Peter Anvin" <hpa@zytor.com>
Cc: Andi Kleen <andi@firstfloor.org>,
	linux@sandersweb.net, linux-kernel@vger.kernel.org,
	the arch/x86 maintainers <x86@kernel.org>,
	Andi Kleen <andi-suse@firstfloor.org>
Subject: Re: [BUG] x86 kenel won't boot under Virtual PC
Date: Mon, 8 Sep 2008 10:38:08 -0700 (PDT)	[thread overview]
Message-ID: <alpine.LFD.1.10.0809081028590.3117@nehalem.linux-foundation.org> (raw)
In-Reply-To: <48C55C0A.7070203@zytor.com>



On Mon, 8 Sep 2008, H. Peter Anvin wrote:
> Linus Torvalds wrote:
> > 
> > Peter - does gcc actually use NOPL in _32-bit_ code too? It really seems to
> > be a stupid decision to make a binary not run on other CPU's over something
> > as trivial as that. That's something I'd expect out of an Intel compiler
> > just to mess with AMD, not out of gcc.
> > 
> 
> Yes, it does:
> 
>   /* We need to decide which NOP sequence to use for 32bit and
>      64bit. When -mtune= is used:
> 
>      1. For PROCESSOR_I386, PROCESSOR_I486, PROCESSOR_PENTIUM and
>      PROCESSOR_GENERIC32, f32_patt will be used.
>      2. For PROCESSOR_PENTIUMPRO, PROCESSOR_PENTIUM4, PROCESSOR_NOCONA,
>      PROCESSOR_CORE, PROCESSOR_CORE2, and PROCESSOR_GENERIC64,
>      alt_long_patt will be used.
>      3. For PROCESSOR_ATHLON, PROCESSOR_K6, PROCESSOR_K8 and
>      PROCESSOR_AMDFAM10, alt_short_patt will be used.
> 
>      When -mtune= isn't used, alt_long_patt will be used if
>      cpu_arch_isa_flags has Cpu686. Otherwise, f32_patt will
>      be used.
> 
> "alt_long_patt" uses NOPL and its variants.

That is A TOTAL PIECE OF SH*T, and against gcc's own documentation.

"-mtune=x" is very much defined to be a performance _tuning_ option, not 
an "architectural" option. 

Quite frankly, this is a gcc bug. Plain and simple. 

Look at the gcc man-pages. It very much says:

       -mtune=cpu_type
           Set only the instruction scheduling parameters for machine type
           cpu_type.  The instruction set is not changed.

(in various different formats - it says the same things with different 
words for different architectures. For example, for 386/x86-64 it 
_specifically_ says:

       -mtune=cpu-type
           Tune to cpu-type everything applicable about the generated code,
           except for the ABI and the set of available instructions.  The
           choices for cpu-type are:

note the "except for the ABI and the set of available instructions".

Qutie frankly, I think this is a *much* bigger bug than any possible 
VirtualPC idiocy. It's expressly against the whole idea of "-mtune".

Of course, we do set "-march=i686" too, so maybe the gcc people will claim 
that that means "Intel CPU's only". But quite frankly, if they really 
claim that, then they are lying pond-scum:

           i686
               Same as "generic", but when used as "march" option, PentiumPro
               instruction set will be used, so the code will run on all i686
               family chips.

which any sane x86 person would claim includes all the various clone 
manufacturers too. Saying that NOPL is so important that "i686" should 
suddenly be Intel-only is dishonest and totally stupid.

IOW, somebody who has a gcc bugzilla login should just create a bug-report 
on this. There is no question but that this is a bug, plain and simple.

			Linus

  parent reply	other threads:[~2008-09-08 17:39 UTC|newest]

Thread overview: 61+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-08-31 18:22 [BUG] x86 kenel won't boot under Virtual PC David Sanders
2008-08-31 18:47 ` Linus Torvalds
2008-08-31 19:27   ` Arjan van de Ven
2008-08-31 19:39     ` Linus Torvalds
2008-09-05 15:38       ` David Sanders
2008-09-05 16:15         ` Jan Beulich
2008-09-05 16:39           ` Linus Torvalds
2008-09-05 18:43             ` Ingo Molnar
2008-09-05 20:06               ` H. Peter Anvin
2008-09-05 19:08             ` Jeremy Fitzhardinge
2008-09-05 20:12           ` H. Peter Anvin
2008-09-05 16:30         ` Linus Torvalds
2008-09-05 17:55           ` Andi Kleen
2008-08-31 20:03   ` David Sanders
2008-09-01 20:23     ` David Sanders
2008-09-01 22:22       ` Linus Torvalds
2008-09-02 12:08         ` David Sanders
2008-09-02 18:12           ` Linus Torvalds
2008-09-02 18:44             ` David Sanders
2008-09-03 11:09               ` Peter Zijlstra
2008-09-03 11:20                 ` David Sanders
     [not found] ` <48C1C156.9080003@zytor.com>
2008-09-07 20:07   ` David Sanders
2008-09-07 23:22     ` David Sanders
2008-09-08  1:48       ` H. Peter Anvin
2008-09-08  2:49         ` David Sanders
2008-09-08  4:04           ` H. Peter Anvin
2008-09-08  9:42             ` Andi Kleen
2008-09-08 13:25             ` David Sanders
2008-09-08 15:09             ` Linus Torvalds
2008-09-08 15:23               ` Ingo Molnar
2008-09-08 15:36                 ` H. Peter Anvin
2008-09-08 15:38                 ` David Sanders
2008-09-08 15:38                 ` H. Peter Anvin
2008-09-08 15:45               ` Andi Kleen
2008-09-08 15:43                 ` H. Peter Anvin
2008-09-08 15:50                   ` H. Peter Anvin
2008-09-08 15:50                   ` Andi Kleen
2008-09-08 15:50                     ` H. Peter Anvin
2008-09-08 15:57                       ` Andi Kleen
2008-09-08 15:54                         ` H. Peter Anvin
2008-09-08 16:07                   ` Linus Torvalds
2008-09-08 16:13                     ` H. Peter Anvin
2008-09-08 16:15                       ` H. Peter Anvin
2008-09-08 16:26                         ` David Sanders
2008-09-08 16:20                       ` Linus Torvalds
2008-09-08 16:32                         ` H. Peter Anvin
2008-09-08 17:02                           ` Ingo Molnar
2008-09-08 16:34                         ` david
2008-09-08 16:42                           ` H. Peter Anvin
2008-09-08 18:51                             ` david
2008-09-08 16:59                           ` Linus Torvalds
2008-09-08 17:00                         ` Andi Kleen
2008-09-08 17:04                           ` Linus Torvalds
2008-09-08 17:08                             ` H. Peter Anvin
2008-09-08 17:12                               ` H. Peter Anvin
2008-09-08 17:41                                 ` Linus Torvalds
2008-09-08 17:38                               ` Linus Torvalds [this message]
2008-09-08 17:59                                 ` H. Peter Anvin
2008-09-08 19:09                                 ` H. Peter Anvin
2008-09-08 22:42                                   ` Linus Torvalds
2008-09-08 17:18                             ` Andi Kleen

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=alpine.LFD.1.10.0809081028590.3117@nehalem.linux-foundation.org \
    --to=torvalds@linux-foundation.org \
    --cc=andi-suse@firstfloor.org \
    --cc=andi@firstfloor.org \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@sandersweb.net \
    --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;
as well as URLs for NNTP newsgroup(s).