Re: [RFC 00/15] x86_64: Optimize percpu accesses

From: H. Peter Anvin
Date: Wed Jul 09 2008 - 20:27:20 EST


Eric W. Biederman wrote:
Jeremy Fitzhardinge <jeremy@xxxxxxxx> writes:

Which means that my idea of using the technique we use on x86_32 will not
work.

No, the compiler memory model we use guarantees that everything will be within
2G of each other. The linker will spew loudly if that's not the case.

The per cpu area is at least theoretically dynamically allocated. And we
really want to put it in cpu local memory. Which means on any reasonable
NUMA machine the per cpu areas should be all over the box.

So there is no guarantee that with an arbitrary 64bit address in %gs of anything.


That doesn't matter in the slightest.

Grr. Except you are correct. We have to guarantee that the offsets we have
chosen at compile time still work. And we know all of the compile time offsets
will be in the -2G range. So they are all 32bit numbers. Negative 32bit
numbers to be sure. That trivially leaves us with everything working except
the nasty hard coded decimal 40.

The *offsets* have to be in the proper range, but the %gs_base is an arbitrary 64-bit number.

-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/