aboutsummaryrefslogtreecommitdiffstats
path: root/mm/percpu.c
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2009-08-14 02:00:49 -0400
committerTejun Heo <tj@kernel.org>2009-08-14 02:00:49 -0400
commit08fc45806103e59a37418e84719b878f9bb32540 (patch)
tree8b39b7769fd42457bdb2950ce02d9893f39c0b7d /mm/percpu.c
parent00ae4064b1445524752575dd84df227c0687c99d (diff)
percpu: build first chunk allocators selectively
There's no need to build unused first chunk allocators in. Define CONFIG_NEED_PER_CPU_*_FIRST_CHUNK and let archs enable them selectively. Signed-off-by: Tejun Heo <tj@kernel.org>
Diffstat (limited to 'mm/percpu.c')
-rw-r--r--mm/percpu.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/mm/percpu.c b/mm/percpu.c
index 6feac7934904..7971997de310 100644
--- a/mm/percpu.c
+++ b/mm/percpu.c
@@ -1414,8 +1414,9 @@ size_t __init pcpu_setup_first_chunk(size_t static_size, size_t reserved_size,
1414 return pcpu_unit_size; 1414 return pcpu_unit_size;
1415} 1415}
1416 1416
1417static size_t pcpu_calc_fc_sizes(size_t static_size, size_t reserved_size, 1417static inline size_t pcpu_calc_fc_sizes(size_t static_size,
1418 ssize_t *dyn_sizep) 1418 size_t reserved_size,
1419 ssize_t *dyn_sizep)
1419{ 1420{
1420 size_t size_sum; 1421 size_t size_sum;
1421 1422
@@ -1427,6 +1428,8 @@ static size_t pcpu_calc_fc_sizes(size_t static_size, size_t reserved_size,
1427 return size_sum; 1428 return size_sum;
1428} 1429}
1429 1430
1431#if defined(CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK) || \
1432 !defined(CONFIG_HAVE_SETUP_PER_CPU_AREA)
1430/** 1433/**
1431 * pcpu_embed_first_chunk - embed the first percpu chunk into bootmem 1434 * pcpu_embed_first_chunk - embed the first percpu chunk into bootmem
1432 * @static_size: the size of static percpu area in bytes 1435 * @static_size: the size of static percpu area in bytes
@@ -1495,7 +1498,10 @@ ssize_t __init pcpu_embed_first_chunk(size_t static_size, size_t reserved_size,
1495 return pcpu_setup_first_chunk(static_size, reserved_size, dyn_size, 1498 return pcpu_setup_first_chunk(static_size, reserved_size, dyn_size,
1496 unit_size, base, NULL); 1499 unit_size, base, NULL);
1497} 1500}
1501#endif /* CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK ||
1502 !CONFIG_HAVE_SETUP_PER_CPU_AREA */
1498 1503
1504#ifdef CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK
1499/** 1505/**
1500 * pcpu_page_first_chunk - map the first chunk using PAGE_SIZE pages 1506 * pcpu_page_first_chunk - map the first chunk using PAGE_SIZE pages
1501 * @static_size: the size of static percpu area in bytes 1507 * @static_size: the size of static percpu area in bytes
@@ -1598,12 +1604,9 @@ out_free_ar:
1598 free_bootmem(__pa(pages), pages_size); 1604 free_bootmem(__pa(pages), pages_size);
1599 return ret; 1605 return ret;
1600} 1606}
1607#endif /* CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK */
1601 1608
1602/* 1609#ifdef CONFIG_NEED_PER_CPU_LPAGE_FIRST_CHUNK
1603 * Large page remapping first chunk setup helper
1604 */
1605#ifdef CONFIG_NEED_MULTIPLE_NODES
1606
1607/** 1610/**
1608 * pcpu_lpage_build_unit_map - build unit_map for large page remapping 1611 * pcpu_lpage_build_unit_map - build unit_map for large page remapping
1609 * @static_size: the size of static percpu area in bytes 1612 * @static_size: the size of static percpu area in bytes
@@ -1982,7 +1985,7 @@ void *pcpu_lpage_remapped(void *kaddr)
1982 1985
1983 return NULL; 1986 return NULL;
1984} 1987}
1985#endif 1988#endif /* CONFIG_NEED_PER_CPU_LPAGE_FIRST_CHUNK */
1986 1989
1987/* 1990/*
1988 * Generic percpu area setup. 1991 * Generic percpu area setup.