Messages in this thread | | | Date | Thu, 10 Jul 2008 12:31:47 -0500 | From | Christoph Lameter <> | Subject | Re: [RFC 00/15] x86_64: Optimize percpu accesses |
| |
Jeremy Fitzhardinge wrote: > > The base address of the percpu area and the offsets from that base are > completely independent values.
Definitely.
> 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.
Right. The problem is with the percpu area handled by the linker. That percpu area is used by the boot cpu and later we setup other additional per cpu areas. Those can be placed in an arbitrary way if one goes through a table of pointers to these areas.
However, that does not work if one calculates the virtual address instead of looking up a physical address.
| |