percpu: add pcpu_unit_offsets[]
authorTejun Heo <tj@kernel.org>
Fri, 14 Aug 2009 06:00:51 +0000 (15:00 +0900)
committerTejun Heo <tj@kernel.org>
Fri, 14 Aug 2009 06:00:51 +0000 (15:00 +0900)
commitfb435d5233f8b6f9b93c11d6304d8e98fed03234
tree76a210c3895b9db5dc7e1f185ee0a60744fef99a
parentfd1e8a1fe2b54df6c185b4fa65f181f50b9c4d4e
percpu: add pcpu_unit_offsets[]

Currently units are mapped sequentially into address space.  This
patch adds pcpu_unit_offsets[] which allows units to be mapped to
arbitrary offsets from the chunk base address.  This is necessary to
allow sparse embedding which might would need to allocate address
ranges and memory areas which aren't aligned to unit size but
allocation atom size (page or large page size).  This also simplifies
things a bit by removing the need to calculate offset from unit
number.

With this change, there's no need for the arch code to know
pcpu_unit_size.  Update pcpu_setup_first_chunk() and first chunk
allocators to return regular 0 or -errno return code instead of unit
size or -errno.

Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: David S. Miller <davem@davemloft.net>
arch/sparc/kernel/smp_64.c
arch/x86/kernel/setup_percpu.c
include/linux/percpu.h
mm/percpu.c