diff options
author | Tejun Heo <tj@kernel.org> | 2009-03-10 03:27:48 -0400 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2009-03-10 03:27:48 -0400 |
commit | 6074d5b0a319fe8400ff079a3c289406ca024321 (patch) | |
tree | 465ad1ae2ba2a35ee2b67772e188f6a1f5ac189d /arch/x86/kernel/setup_percpu.c | |
parent | e01009833e22dc87075d770554b34d797843ed23 (diff) |
percpu: more flexibility for @dyn_size of pcpu_setup_first_chunk()
Impact: cleanup, more flexibility for first chunk init
Non-negative @dyn_size used to be allowed iff @unit_size wasn't auto.
This restriction stemmed from implementation detail and made things a
bit less intuitive. This patch allows @dyn_size to be specified
regardless of @unit_size and swaps the positions of @dyn_size and
@unit_size so that the parameter order makes more sense (static,
reserved and dyn sizes followed by enclosing unit_size).
While at it, add @unit_size >= PCPU_MIN_UNIT_SIZE sanity check.
Signed-off-by: Tejun Heo <tj@kernel.org>
Diffstat (limited to 'arch/x86/kernel/setup_percpu.c')
-rw-r--r-- | arch/x86/kernel/setup_percpu.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/arch/x86/kernel/setup_percpu.c b/arch/x86/kernel/setup_percpu.c index efa615f2bf43..e41c51f6ada1 100644 --- a/arch/x86/kernel/setup_percpu.c +++ b/arch/x86/kernel/setup_percpu.c | |||
@@ -233,8 +233,8 @@ proceed: | |||
233 | "%zu bytes\n", vm.addr, static_size); | 233 | "%zu bytes\n", vm.addr, static_size); |
234 | 234 | ||
235 | ret = pcpu_setup_first_chunk(pcpur_get_page, static_size, | 235 | ret = pcpu_setup_first_chunk(pcpur_get_page, static_size, |
236 | PERCPU_FIRST_CHUNK_RESERVE, | 236 | PERCPU_FIRST_CHUNK_RESERVE, dyn_size, |
237 | PMD_SIZE, dyn_size, vm.addr, NULL); | 237 | PMD_SIZE, vm.addr, NULL); |
238 | goto out_free_ar; | 238 | goto out_free_ar; |
239 | 239 | ||
240 | enomem: | 240 | enomem: |
@@ -315,9 +315,8 @@ static ssize_t __init setup_pcpu_embed(size_t static_size) | |||
315 | pcpue_size >> PAGE_SHIFT, pcpue_ptr, static_size); | 315 | pcpue_size >> PAGE_SHIFT, pcpue_ptr, static_size); |
316 | 316 | ||
317 | return pcpu_setup_first_chunk(pcpue_get_page, static_size, | 317 | return pcpu_setup_first_chunk(pcpue_get_page, static_size, |
318 | PERCPU_FIRST_CHUNK_RESERVE, | 318 | PERCPU_FIRST_CHUNK_RESERVE, dyn_size, |
319 | pcpue_unit_size, dyn_size, | 319 | pcpue_unit_size, pcpue_ptr, NULL); |
320 | pcpue_ptr, NULL); | ||
321 | } | 320 | } |
322 | 321 | ||
323 | /* | 322 | /* |
@@ -375,8 +374,8 @@ static ssize_t __init setup_pcpu_4k(size_t static_size) | |||
375 | pcpu4k_nr_static_pages, static_size); | 374 | pcpu4k_nr_static_pages, static_size); |
376 | 375 | ||
377 | ret = pcpu_setup_first_chunk(pcpu4k_get_page, static_size, | 376 | ret = pcpu_setup_first_chunk(pcpu4k_get_page, static_size, |
378 | PERCPU_FIRST_CHUNK_RESERVE, -1, -1, NULL, | 377 | PERCPU_FIRST_CHUNK_RESERVE, -1, |
379 | pcpu4k_populate_pte); | 378 | -1, NULL, pcpu4k_populate_pte); |
380 | goto out_free_ar; | 379 | goto out_free_ar; |
381 | 380 | ||
382 | enomem: | 381 | enomem: |