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

From: Jeremy Fitzhardinge
Date: Thu Jul 10 2008 - 13:22:32 EST


Christoph Lameter wrote:
H. Peter Anvin wrote:
Christoph Lameter wrote:
H. Peter Anvin wrote:

No, since the *addresses* can be arbitrary. The current issue is about
*offsets.*
Well those are intimately connected.
Not really, since gs_base is an arbitrary 64-bit pointer.

The current scheme ties the offsets to kernel code addresses.

This is getting very frustrating. We've been going around and around on this point, what, 5 or 6 times at least.

The base address of the percpu area and the offsets from that base are completely independent values.

The offset is limited to 2G. The 2G limit applies regardless of how you compute your effective address. It doesn't matter if its absolute. It doesn't matter if it's rip-relative. It doesn't matter if it's zero-based. Small absolute addresses generate exactly the same form as large absolute addresses. There is no 8-bit or 16-bit address mode.

The base is arbitrary. It can be any canonical address at all. It has no effect on how you compute your offset.

The addressing modes:

* ABS
* off(%rip)

Are exactly equivalent in what offsets they can generate, so long as *at link time* the percpu *symbols* are within 2G of the code addressing them. *After* the addressing mode has generated an effective address (by whatever means it likes), the %gs: override applies the segment base, which can therefore offset the effective address to anywhere at all.

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