Re: [rfc 08/45] cpu alloc: x86 support

From: H. Peter Anvin
Date: Tue Nov 20 2007 - 16:06:41 EST


Christoph Lameter wrote:
On Tue, 20 Nov 2007, Andi Kleen wrote:

This limitation shouldn't apply to the percpu area, since gs_base can be pointed anywhere in the address space -- in effect we're always indirect.
The initial reference copy of the percpu area has to be addressed by
the linker.

Right that is important for the percpu references that can be folded by the linker in order to avoid address calculations.

Hmm, in theory since it is not actually used by itself I suppose you could move it into positive space.

But the positive space is reserved for a processes memory.


But you wouldn't actually *use* this address space. It's just for the linker to know what address to tag the references with; it gets relocated by gs_base down into proper kernel space. The linker can stash the initialized reference copy at any address (LMA) which can be different from what it will be used at (VMA); that is not an issue.

To use %rip references, though, which are more efficient, you probably want to use offsets that are just below .text (at -2 GB); presumably
-2 GB-[max size of percpu section]. Again, however, no CPU actually needs to have its data stashed in that particular location; it's just an offset.

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