pmap of amd64

Joerg Sonnenberger joerg at britannica.bec.de
Mon Oct 15 04:24:44 PDT 2007


On Sat, Oct 13, 2007 at 04:24:53PM -0700, Matthew Dillon wrote:
> 
> :On Fri, Oct 12, 2007 at 07:54:16PM -0700, Matthew Dillon wrote:
> :>     (1) We can map a page containing the address of the per-cpu globaldata
> :>         structure and use %fs in the trap code:
> :>  
> :>         movq	$SOME_FIXED_CONSTANT_ADDRESS,%fs
> :
> :You don't have to play such games on AMD64 -- the swapgs instruction is
> :normally used by traps and system calls to load a well-defined address
> :base for that. Note that gs is expected to be used for, but that is a
> :minor detail.
> :
> :Joerg
> 
>     I don't think we can use swapgs.  The problem with swapgs is that it's
>     a swap, not a load, which means it can only be used at the syscall
>     interface and can't be used at the interrupt or exception interface.

You can check the stack frame for the RIP and if it is alreday in the
kernel, you can skip the swapgs. Given that you have to do more work for
traps from userland anyway, that's a relatively cheap change.

Joerg





More information about the Kernel mailing list