Re: [git pull] x86 fixes

From: H. Peter Anvin
Date: Mon Sep 08 2008 - 14:22:47 EST


Linus Torvalds wrote:

On Mon, 8 Sep 2008, H. Peter Anvin wrote:
config X86_GENERIC
- bool "Generic x86 support"
+ bool "Generic x86 support" if EMBEDDED

Ok, so after having realized that this seems to be more about a bug with gcc, I'm really not as convinced any more.

As far as I can tell, there are three issues:

- "-mtune=core/core2/pentium4/.." is buggy in some gas/gcc versions on x86-32, and makes architectural choices.

Any actual _released_ versions? Maybe it's just a current SVN issue?

binutils-2.18.50.0.6-5, which is the current version on Fedora 9, does this.

Workaround: don't use it. And yes, X86_GENERIC=y will do that, although quite frankly that seems to be dubious in itself. But quite frankly, it's a gcc bug, and we should see it as such.

The better workaround may well be "-Wa,-mtune=generic" as you pointed out.

- We do the CONFIG_P6_NOPL thing ourselves, and we should just stop doing that on 32-bit. There simply isn't a good enough reason to do so. I already posteed the Kconfig.cpu patch to just stop doing it.

As far as I can tell, -Wa,-mtune=generic *should* work. It doesn't look to me as if cc1 will generate the long NOPs. That one we can do unconditionally, of course.

- X86_GENERIC means _other_ things too, like doing a 128-bit cacheline just so that it won't suck horribly on P4's even if it's otherwise tuned for a good microarchitecture.

And they really do seem to be _separate_ issues. Do we really want to tie these things together under X86_GENERIC?

Well, the argument in favour would be that if you want a kernel that can cross between different microarchitectures, then you want the "don't suck horribly on any of them". We can, of course, divide them down further, but is it useful?

The "ideal" way to do any of this would probably to have checkboxes for all the CPUs you want to support and then a drop-down box for the CPU to optimize for. However, the combinatorics of that would be horrible, and it would be very unlikely we would avoid bugs.

-hpa
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/