diff options
-rw-r--r-- | mm/page_alloc.c | 37 |
1 files changed, 20 insertions, 17 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 8f4f27841b71..595d0ac211e2 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c | |||
@@ -3292,31 +3292,34 @@ static void setup_pagelist_highmark(struct per_cpu_pageset *p, | |||
3292 | pcp->batch = PAGE_SHIFT * 8; | 3292 | pcp->batch = PAGE_SHIFT * 8; |
3293 | } | 3293 | } |
3294 | 3294 | ||
3295 | static __meminit void setup_zone_pageset(struct zone *zone) | ||
3296 | { | ||
3297 | int cpu; | ||
3298 | |||
3299 | zone->pageset = alloc_percpu(struct per_cpu_pageset); | ||
3300 | |||
3301 | for_each_possible_cpu(cpu) { | ||
3302 | struct per_cpu_pageset *pcp = per_cpu_ptr(zone->pageset, cpu); | ||
3303 | |||
3304 | setup_pageset(pcp, zone_batchsize(zone)); | ||
3305 | |||
3306 | if (percpu_pagelist_fraction) | ||
3307 | setup_pagelist_highmark(pcp, | ||
3308 | (zone->present_pages / | ||
3309 | percpu_pagelist_fraction)); | ||
3310 | } | ||
3311 | } | ||
3312 | |||
3295 | /* | 3313 | /* |
3296 | * Allocate per cpu pagesets and initialize them. | 3314 | * Allocate per cpu pagesets and initialize them. |
3297 | * Before this call only boot pagesets were available. | 3315 | * Before this call only boot pagesets were available. |
3298 | * Boot pagesets will no longer be used by this processorr | ||
3299 | * after setup_per_cpu_pageset(). | ||
3300 | */ | 3316 | */ |
3301 | void __init setup_per_cpu_pageset(void) | 3317 | void __init setup_per_cpu_pageset(void) |
3302 | { | 3318 | { |
3303 | struct zone *zone; | 3319 | struct zone *zone; |
3304 | int cpu; | ||
3305 | 3320 | ||
3306 | for_each_populated_zone(zone) { | 3321 | for_each_populated_zone(zone) |
3307 | zone->pageset = alloc_percpu(struct per_cpu_pageset); | 3322 | setup_zone_pageset(zone); |
3308 | |||
3309 | for_each_possible_cpu(cpu) { | ||
3310 | struct per_cpu_pageset *pcp = per_cpu_ptr(zone->pageset, cpu); | ||
3311 | |||
3312 | setup_pageset(pcp, zone_batchsize(zone)); | ||
3313 | |||
3314 | if (percpu_pagelist_fraction) | ||
3315 | setup_pagelist_highmark(pcp, | ||
3316 | (zone->present_pages / | ||
3317 | percpu_pagelist_fraction)); | ||
3318 | } | ||
3319 | } | ||
3320 | } | 3323 | } |
3321 | 3324 | ||
3322 | static noinline __init_refok | 3325 | static noinline __init_refok |