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

From: H. Peter Anvin
Date: Wed Jul 09 2008 - 17:19:39 EST


Jeremy Fitzhardinge wrote:
H. Peter Anvin wrote:
1. it means pda references are invalid if their offsets are ever more than CONFIG_PHYSICAL_BASE (which I do not think is likely, but still...)

Why?

As an aside, could we solve the problems by making CONFIG_PHYSICAL_BASE 0 - putting the percpu variables as the first thing in the kernel - and relocating on load? That would avoid having to make a special PT_LOAD segment at 0. Hm, would that result in the pda and the boot params getting mushed together?


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.

Either way, I really suspect that the right thing to do is to use negative offsets, with the possible exception of a handful of things (40 bytes or less, perhaps like current) which can get small positive offsets and end up in the "super hot" cacheline.

The sucky part is that I don't believe GNU ld has native support for a "hanging down" section (one which has a fixed endpoint rather than a starting point), so it requires extra magic around the link (or finding some way to do it with linker script functions.) Let me see if I can cook up something in linker script that would actually work.

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