lkml.org 
[lkml]   [2008]   [Jul]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [RFC 00/15] x86_64: Optimize percpu accesses
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


\
 
 \ /
  Last update: 2008-07-10 19:27    [W:0.129 / U:0.032 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site