Re: [GIT PULL] Additional x86 fixes for 2.6.31-rc5

H. Peter Anvin
2009-08-01T22:37:57Z

On 08/01/2009 03:04 PM, Linus Torvalds wrote:
>
> On Sat, 1 Aug 2009, H. Peter Anvin wrote:
>> This is clearly better... now the semi-obvious question becomes if there
>> is any way we can get compiler support to do better and migrate to that
>> as the compiler allows.
>
> Well, even if we had compiler support, we'd have to basically then wait
> forever to make sure everybody has a supported compiler. So I think we're
> better off not worrying too much about that - it's not going to happen any
> time in the near future.
>

Well, we'd have to do something like:

#if __GNUC__ < version
/* current code */
#else
/* new code */
#endif

> I've now tested my patch, and it seems to result in a working kernel too.
>
>> In particular, if I remember right the problem with using __thread for
>> percpu was exactly that the current cpuness can change almost anywhere,
>> unless preemption is disabled.
>
> That shouldn't matter. If it uses '%gs', it should all just work
> automatically. But if gcc does something different for thread-local, it's
> basically useless.
>

gcc uses %fs by default for __thread (on x86-64) but that can be
overridden. I believe someone tried to use it, but found that gcc made
the assumption that none of the values could change underneath it, which
caused trouble. That wouldn't be an issue for variables like "current".

As I said, in the meantime I really do like your patch.

-hpa

--
H. Peter Anvin, Intel Open Source Technology Center
I work for Intel. I don't speak on their behalf.