diff options
Diffstat (limited to 'mm/page_alloc.c')
-rw-r--r-- | mm/page_alloc.c | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 2793ce50f316..ee6fe7faabad 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c | |||
@@ -4104,22 +4104,25 @@ static void setup_pagelist_highmark(struct per_cpu_pageset *p, | |||
4104 | pageset_update(&p->pcp, high, batch); | 4104 | pageset_update(&p->pcp, high, batch); |
4105 | } | 4105 | } |
4106 | 4106 | ||
4107 | static void __meminit zone_pageset_init(struct zone *zone, int cpu) | ||
4108 | { | ||
4109 | struct per_cpu_pageset *pcp = per_cpu_ptr(zone->pageset, cpu); | ||
4110 | |||
4111 | pageset_init(pcp); | ||
4112 | if (percpu_pagelist_fraction) | ||
4113 | setup_pagelist_highmark(pcp, | ||
4114 | (zone->managed_pages / | ||
4115 | percpu_pagelist_fraction)); | ||
4116 | else | ||
4117 | pageset_set_batch(pcp, zone_batchsize(zone)); | ||
4118 | } | ||
4119 | |||
4107 | static void __meminit setup_zone_pageset(struct zone *zone) | 4120 | static void __meminit setup_zone_pageset(struct zone *zone) |
4108 | { | 4121 | { |
4109 | int cpu; | 4122 | int cpu; |
4110 | |||
4111 | zone->pageset = alloc_percpu(struct per_cpu_pageset); | 4123 | zone->pageset = alloc_percpu(struct per_cpu_pageset); |
4112 | 4124 | for_each_possible_cpu(cpu) | |
4113 | for_each_possible_cpu(cpu) { | 4125 | zone_pageset_init(zone, cpu); |
4114 | struct per_cpu_pageset *pcp = per_cpu_ptr(zone->pageset, cpu); | ||
4115 | |||
4116 | setup_pageset(pcp, zone_batchsize(zone)); | ||
4117 | |||
4118 | if (percpu_pagelist_fraction) | ||
4119 | setup_pagelist_highmark(pcp, | ||
4120 | (zone->managed_pages / | ||
4121 | percpu_pagelist_fraction)); | ||
4122 | } | ||
4123 | } | 4126 | } |
4124 | 4127 | ||
4125 | /* | 4128 | /* |