diff options
Diffstat (limited to 'mm/percpu.c')
-rw-r--r-- | mm/percpu.c | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/mm/percpu.c b/mm/percpu.c index 19dd83b5cbdc..fc6babe6e554 100644 --- a/mm/percpu.c +++ b/mm/percpu.c | |||
@@ -1207,7 +1207,6 @@ static struct page * __init pcpue_get_page(unsigned int cpu, int pageno) | |||
1207 | * @static_size: the size of static percpu area in bytes | 1207 | * @static_size: the size of static percpu area in bytes |
1208 | * @reserved_size: the size of reserved percpu area in bytes | 1208 | * @reserved_size: the size of reserved percpu area in bytes |
1209 | * @dyn_size: free size for dynamic allocation in bytes, -1 for auto | 1209 | * @dyn_size: free size for dynamic allocation in bytes, -1 for auto |
1210 | * @unit_size: unit size in bytes, must be multiple of PAGE_SIZE, -1 for auto | ||
1211 | * | 1210 | * |
1212 | * This is a helper to ease setting up embedded first percpu chunk and | 1211 | * This is a helper to ease setting up embedded first percpu chunk and |
1213 | * can be called where pcpu_setup_first_chunk() is expected. | 1212 | * can be called where pcpu_setup_first_chunk() is expected. |
@@ -1219,9 +1218,9 @@ static struct page * __init pcpue_get_page(unsigned int cpu, int pageno) | |||
1219 | * page size. | 1218 | * page size. |
1220 | * | 1219 | * |
1221 | * When @dyn_size is positive, dynamic area might be larger than | 1220 | * When @dyn_size is positive, dynamic area might be larger than |
1222 | * specified to fill page alignment. Also, when @dyn_size is auto, | 1221 | * specified to fill page alignment. When @dyn_size is auto, |
1223 | * @dyn_size does not fill the whole first chunk but only what's | 1222 | * @dyn_size is just big enough to fill page alignment after static |
1224 | * necessary for page alignment after static and reserved areas. | 1223 | * and reserved areas. |
1225 | * | 1224 | * |
1226 | * If the needed size is smaller than the minimum or specified unit | 1225 | * If the needed size is smaller than the minimum or specified unit |
1227 | * size, the leftover is returned to the bootmem allocator. | 1226 | * size, the leftover is returned to the bootmem allocator. |
@@ -1231,7 +1230,7 @@ static struct page * __init pcpue_get_page(unsigned int cpu, int pageno) | |||
1231 | * percpu access on success, -errno on failure. | 1230 | * percpu access on success, -errno on failure. |
1232 | */ | 1231 | */ |
1233 | ssize_t __init pcpu_embed_first_chunk(size_t static_size, size_t reserved_size, | 1232 | ssize_t __init pcpu_embed_first_chunk(size_t static_size, size_t reserved_size, |
1234 | ssize_t dyn_size, ssize_t unit_size) | 1233 | ssize_t dyn_size) |
1235 | { | 1234 | { |
1236 | size_t chunk_size; | 1235 | size_t chunk_size; |
1237 | unsigned int cpu; | 1236 | unsigned int cpu; |
@@ -1242,12 +1241,7 @@ ssize_t __init pcpu_embed_first_chunk(size_t static_size, size_t reserved_size, | |||
1242 | if (dyn_size != 0) | 1241 | if (dyn_size != 0) |
1243 | dyn_size = pcpue_size - static_size - reserved_size; | 1242 | dyn_size = pcpue_size - static_size - reserved_size; |
1244 | 1243 | ||
1245 | if (unit_size >= 0) { | 1244 | pcpue_unit_size = max_t(size_t, pcpue_size, PCPU_MIN_UNIT_SIZE); |
1246 | BUG_ON(unit_size < pcpue_size); | ||
1247 | pcpue_unit_size = unit_size; | ||
1248 | } else | ||
1249 | pcpue_unit_size = max_t(size_t, pcpue_size, PCPU_MIN_UNIT_SIZE); | ||
1250 | |||
1251 | chunk_size = pcpue_unit_size * num_possible_cpus(); | 1245 | chunk_size = pcpue_unit_size * num_possible_cpus(); |
1252 | 1246 | ||
1253 | pcpue_ptr = __alloc_bootmem_nopanic(chunk_size, PAGE_SIZE, | 1247 | pcpue_ptr = __alloc_bootmem_nopanic(chunk_size, PAGE_SIZE, |
@@ -1304,7 +1298,7 @@ void __init setup_per_cpu_areas(void) | |||
1304 | * what the legacy allocator did. | 1298 | * what the legacy allocator did. |
1305 | */ | 1299 | */ |
1306 | unit_size = pcpu_embed_first_chunk(static_size, PERCPU_MODULE_RESERVE, | 1300 | unit_size = pcpu_embed_first_chunk(static_size, PERCPU_MODULE_RESERVE, |
1307 | PERCPU_DYNAMIC_RESERVE, -1); | 1301 | PERCPU_DYNAMIC_RESERVE); |
1308 | if (unit_size < 0) | 1302 | if (unit_size < 0) |
1309 | panic("Failed to initialized percpu areas."); | 1303 | panic("Failed to initialized percpu areas."); |
1310 | 1304 | ||