|
@@ -4104,22 +4104,25 @@ static void setup_pagelist_highmark(struct per_cpu_pageset *p,
|
|
|
pageset_update(&p->pcp, high, batch);
|
|
|
}
|
|
|
|
|
|
+static void __meminit zone_pageset_init(struct zone *zone, int cpu)
|
|
|
+{
|
|
|
+ struct per_cpu_pageset *pcp = per_cpu_ptr(zone->pageset, cpu);
|
|
|
+
|
|
|
+ pageset_init(pcp);
|
|
|
+ if (percpu_pagelist_fraction)
|
|
|
+ setup_pagelist_highmark(pcp,
|
|
|
+ (zone->managed_pages /
|
|
|
+ percpu_pagelist_fraction));
|
|
|
+ else
|
|
|
+ pageset_set_batch(pcp, zone_batchsize(zone));
|
|
|
+}
|
|
|
+
|
|
|
static void __meminit 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->managed_pages /
|
|
|
- percpu_pagelist_fraction));
|
|
|
- }
|
|
|
+ for_each_possible_cpu(cpu)
|
|
|
+ zone_pageset_init(zone, cpu);
|
|
|
}
|
|
|
|
|
|
/*
|