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

From: H. Peter Anvin
Date: Wed Jul 09 2008 - 18:30:41 EST


Eric W. Biederman wrote:

CONFIG_PHYSICAL_START rather. And no, it can't be zero! Realistically we
should make it 16 MB by default (currently 2 MB), to keep the DMA zone clear.

Also on x86_64 CONFIG_PHYSICAL_START is irrelevant as the kernel text segment
is liked at a fixed address -2G and the option only determines the virtual
to physical address mapping.


No, it's not irrelevant; we currently base the kernel at virtual address -2 GB (KERNEL_IMAGE_START) + CONFIG_PHYSICAL_START, in order to have the proper alignment for large pages.

Now, it probably wouldn't hurt moving KERNEL_IMAGE_START up a bit to have low positive values safer to use.

That said the idea may not be too far off.

Potentially we could put the percpu area at our fixed -2G address and then
we have a constant (instead of an address) we could subtract from this address.

We can't put it at -2 GB since the offset +40 for the stack sentinel is hard-coded into gcc. This leaves growing upward from +48 (or another small positive number), or growing down from zero (or +40) as realistic options.

Unfortunately, GNU ld handles grow-down not at all.

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