pmap of amd64

Matthew Dillon dillon at apollo.backplane.com
Fri Oct 12 20:02:12 PDT 2007


    I should add a clarification regarding the per-cpu info.  I think the
    distinction should be as a separate PML4 entry and not a PDP entry.  This
    way the kernel can have a single PDP/PD hierarchy that is shared across
    all cpus.
 
    The per-cpu magic can be statically hardwired for each cpu via a PML4
    entry and maybe a few other pages (per-cpu) creating a PDP/PD
    hierarchy.   There are two ways to do it.
 
    (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
 
    (2) We can map the actual per-cpu globaldata to a fixed address and access
        it directly.

    Either way will work.  I will note that the system code expects 'mycpu'
    to be a variable kernel space address representing the location of the
    globaldata structure in kernel space and it will get confusde if
    'mycpu' returns the same fixed address on every cpu.  So the %fs method
    may be the best way to go so we don't have to run through all the system
    code changing the expectations for 'mycpu'.

							-Matt





More information about the Kernel mailing list