percpu: make embedding first chunk allocator check vmalloc space size
authorTejun Heo <tj@kernel.org>
Thu, 24 Sep 2009 09:46:01 +0000 (18:46 +0900)
committerTejun Heo <tj@kernel.org>
Tue, 29 Sep 2009 00:17:57 +0000 (09:17 +0900)
commit6ea529a2037ce662fc6bfa572b46d47407d08805
treeb9e8721eb4edc563ae0e40500a58dfa053ceed39
parenta70c691376c7c7f94af41395848066f59501fffd
percpu: make embedding first chunk allocator check vmalloc space size

Embedding first chunk allocator maintains the distances between units
in the vmalloc area and thus needs vmalloc space to be larger than the
maximum distances between units; otherwise, it wouldn't be able to
create any dynamic chunks.  This patch makes the embedding first chunk
allocator check vmalloc space size and if the maximum distance between
units is larger than 75% of it, print warning and, if page mapping
allocator is available, fail initialization so that the system falls
back onto it.

This should work around percpu allocation failure problems on certain
sparc64 configurations where distances between NUMA nodes are larger
than the vmalloc area and makes percpu allocator more robust for
future configurations.

Signed-off-by: Tejun Heo <tj@kernel.org>
mm/percpu.c