|
@@ -3292,31 +3292,34 @@ static void setup_pagelist_highmark(struct per_cpu_pageset *p,
|
|
|
pcp->batch = PAGE_SHIFT * 8;
|
|
|
}
|
|
|
|
|
|
+static __meminit void setup_zone_pageset(struct zone *zone)
|
|
|
+{
|
|
|
+ int cpu;
|
|
|
+
|
|
|
+ zone->pageset = alloc_percpu(struct per_cpu_pageset);
|
|
|
+
|
|
|
+ for_each_possible_cpu(cpu) {
|
|
|
+ struct per_cpu_pageset *pcp = per_cpu_ptr(zone->pageset, cpu);
|
|
|
+
|
|
|
+ setup_pageset(pcp, zone_batchsize(zone));
|
|
|
+
|
|
|
+ if (percpu_pagelist_fraction)
|
|
|
+ setup_pagelist_highmark(pcp,
|
|
|
+ (zone->present_pages /
|
|
|
+ percpu_pagelist_fraction));
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
/*
|
|
|
* Allocate per cpu pagesets and initialize them.
|
|
|
* Before this call only boot pagesets were available.
|
|
|
- * Boot pagesets will no longer be used by this processorr
|
|
|
- * after setup_per_cpu_pageset().
|
|
|
*/
|
|
|
void __init setup_per_cpu_pageset(void)
|
|
|
{
|
|
|
struct zone *zone;
|
|
|
- int cpu;
|
|
|
|
|
|
- for_each_populated_zone(zone) {
|
|
|
- zone->pageset = alloc_percpu(struct per_cpu_pageset);
|
|
|
-
|
|
|
- for_each_possible_cpu(cpu) {
|
|
|
- struct per_cpu_pageset *pcp = per_cpu_ptr(zone->pageset, cpu);
|
|
|
-
|
|
|
- setup_pageset(pcp, zone_batchsize(zone));
|
|
|
-
|
|
|
- if (percpu_pagelist_fraction)
|
|
|
- setup_pagelist_highmark(pcp,
|
|
|
- (zone->present_pages /
|
|
|
- percpu_pagelist_fraction));
|
|
|
- }
|
|
|
- }
|
|
|
+ for_each_populated_zone(zone)
|
|
|
+ setup_zone_pageset(zone);
|
|
|
}
|
|
|
|
|
|
static noinline __init_refok
|