]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - mm/vmstat.c
MIPS: Loongson: Remove ad-hoc cmdline default
[mv-sheeva.git] / mm / vmstat.c
index bc0f095791b4ff026279c54cf667f50da410ad05..0c3b5048773e6d486f43343a859ebf785161036e 100644 (file)
@@ -83,7 +83,7 @@ EXPORT_SYMBOL(vm_stat);
 
 #ifdef CONFIG_SMP
 
-static int calculate_pressure_threshold(struct zone *zone)
+int calculate_pressure_threshold(struct zone *zone)
 {
        int threshold;
        int watermark_distance;
@@ -107,7 +107,7 @@ static int calculate_pressure_threshold(struct zone *zone)
        return threshold;
 }
 
-static int calculate_threshold(struct zone *zone)
+int calculate_normal_threshold(struct zone *zone)
 {
        int threshold;
        int mem;        /* memory in 128 MB units */
@@ -166,7 +166,7 @@ static void refresh_zone_stat_thresholds(void)
        for_each_populated_zone(zone) {
                unsigned long max_drift, tolerate_drift;
 
-               threshold = calculate_threshold(zone);
+               threshold = calculate_normal_threshold(zone);
 
                for_each_online_cpu(cpu)
                        per_cpu_ptr(zone->pageset, cpu)->stat_threshold
@@ -185,46 +185,24 @@ static void refresh_zone_stat_thresholds(void)
        }
 }
 
-void reduce_pgdat_percpu_threshold(pg_data_t *pgdat)
+void set_pgdat_percpu_threshold(pg_data_t *pgdat,
+                               int (*calculate_pressure)(struct zone *))
 {
        struct zone *zone;
        int cpu;
        int threshold;
        int i;
 
-       get_online_cpus();
-       for (i = 0; i < pgdat->nr_zones; i++) {
-               zone = &pgdat->node_zones[i];
-               if (!zone->percpu_drift_mark)
-                       continue;
-
-               threshold = calculate_pressure_threshold(zone);
-               for_each_online_cpu(cpu)
-                       per_cpu_ptr(zone->pageset, cpu)->stat_threshold
-                                                       = threshold;
-       }
-       put_online_cpus();
-}
-
-void restore_pgdat_percpu_threshold(pg_data_t *pgdat)
-{
-       struct zone *zone;
-       int cpu;
-       int threshold;
-       int i;
-
-       get_online_cpus();
        for (i = 0; i < pgdat->nr_zones; i++) {
                zone = &pgdat->node_zones[i];
                if (!zone->percpu_drift_mark)
                        continue;
 
-               threshold = calculate_threshold(zone);
-               for_each_online_cpu(cpu)
+               threshold = (*calculate_pressure)(zone);
+               for_each_possible_cpu(cpu)
                        per_cpu_ptr(zone->pageset, cpu)->stat_threshold
                                                        = threshold;
        }
-       put_online_cpus();
 }
 
 /*
@@ -902,6 +880,7 @@ static const char * const vmstat_text[] = {
        "numa_local",
        "numa_other",
 #endif
+       "nr_anon_transparent_hugepages",
        "nr_dirty_threshold",
        "nr_dirty_background_threshold",