Skip to content
  • Tejun Heo's avatar
    2f39e637
    percpu: allow non-linear / sparse cpu -> unit mapping · 2f39e637
    Tejun Heo authored
    
    
    Currently cpu and unit are always identity mapped.  To allow more
    efficient large page support on NUMA and lazy allocation for possible
    but offline cpus, cpu -> unit mapping needs to be non-linear and/or
    sparse.  This can be easily implemented by adding a cpu -> unit
    mapping array and using it whenever looking up the matching unit for a
    cpu.
    
    The only unusal conversion is in pcpu_chunk_addr_search().  The passed
    in address is unit0 based and unit0 might not be in use so it needs to
    be converted to address of an in-use unit.  This is easily done by
    adding the unit offset for the current processor.
    
    [ Impact: allows non-linear/sparse cpu -> unit mapping, no visible change yet ]
    
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Cc: Ingo Molnar <mingo@elte.hu>
    Cc: David Miller <davem@davemloft.net>
    2f39e637
    percpu: allow non-linear / sparse cpu -> unit mapping
    Tejun Heo authored
    
    
    Currently cpu and unit are always identity mapped.  To allow more
    efficient large page support on NUMA and lazy allocation for possible
    but offline cpus, cpu -> unit mapping needs to be non-linear and/or
    sparse.  This can be easily implemented by adding a cpu -> unit
    mapping array and using it whenever looking up the matching unit for a
    cpu.
    
    The only unusal conversion is in pcpu_chunk_addr_search().  The passed
    in address is unit0 based and unit0 might not be in use so it needs to
    be converted to address of an in-use unit.  This is easily done by
    adding the unit offset for the current processor.
    
    [ Impact: allows non-linear/sparse cpu -> unit mapping, no visible change yet ]
    
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Cc: Ingo Molnar <mingo@elte.hu>
    Cc: David Miller <davem@davemloft.net>
Loading