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
next prev 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).