diff --git a/linux-ramdump-parser-v2/parsers/pagetypeinfo.py b/linux-ramdump-parser-v2/parsers/pagetypeinfo.py
index 2a633f0432a938976e18acbb3fd9004ba7be4de0..5ccb6bcf2671d1bf0f529bd20fddfa8d78014bb6 100644
--- a/linux-ramdump-parser-v2/parsers/pagetypeinfo.py
+++ b/linux-ramdump-parser-v2/parsers/pagetypeinfo.py
@@ -1,4 +1,4 @@
-# Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
+# Copyright (c) 2012-2014, The Linux Foundation. All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License version 2 and
@@ -28,6 +28,9 @@ class Pagetypeinfo(RamParser):
         zname = ramdump.read_cstring(zname_addr, 12)
         is_corrupt = False
         total_bytes = 0
+        total_pages = 0
+        total_orders = [0]*11
+        total_orders_str = 'Total pages:                    '
 
         for mtype in range(0, migrate_types):
             mname_addr = ramdump.read_word(migratetype_names + mtype * 4)
@@ -35,6 +38,7 @@ class Pagetypeinfo(RamParser):
             pageinfo = ('zone {0:8} type {1:12} '.format(zname, mname))
             nums = ''
             total_type_bytes = 0
+            total_type_pages = 0
             for order in range(0, 11):
 
                 area = zone + free_area_offset + order * free_area_size
@@ -57,12 +61,18 @@ class Pagetypeinfo(RamParser):
                 nums = nums + ('{0:6}'.format(pg_count))
                 total_type_bytes = total_type_bytes + \
                     pg_count * 4096 * (2 ** order)
+                total_type_pages = total_type_pages + pg_count * (2 ** order)
+                total_orders[order] += pg_count
             print_out_str(pageinfo + nums +
-                          ' = {0} MB'.format(total_type_bytes / (1024 * 1024)))
+                          ' = {0} MB {1} pages'.format(total_type_bytes / (1024 * 1024), total_type_pages))
             total_bytes = total_bytes + total_type_bytes
+            total_pages = total_pages + total_type_pages
+        for order in range(0, 11):
+            total_orders_str += '{0:6}'.format(total_orders[order])
+        print_out_str(total_orders_str)
 
-        print_out_str('Approximate total for zone {0}: {1} MB\n'.format(
-            zname, total_bytes / (1024 * 1024)))
+        print_out_str('Approximate total for zone {0}: {1} MB, {2} pages\n'.format(
+            zname, total_bytes / (1024 * 1024), total_pages))
         if is_corrupt:
             print_out_str(
                 '!!! Numbers may not be accurate due to list corruption!')
diff --git a/linux-ramdump-parser-v2/parsers/vmstat.py b/linux-ramdump-parser-v2/parsers/vmstat.py
index 49cf501388b726b3a3be0ba226496d890b5b0177..568bd488452769784f39d8fc9ab091fb0979d35b 100644
--- a/linux-ramdump-parser-v2/parsers/vmstat.py
+++ b/linux-ramdump-parser-v2/parsers/vmstat.py
@@ -1,4 +1,4 @@
-# Copyright (c) 2013, The Linux Foundation. All rights reserved.
+# Copyright (c) 2013-2014, The Linux Foundation. All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License version 2 and
@@ -66,3 +66,4 @@ class ZoneInfo(RamParser):
         for i in xrange(0, max_zone_stats):
             print_out_str('{0:30}: {1:8}'.format(vmstat_names[i], self.ramdump.read_word(
                 self.ramdump.array_index(vmstats_addr, 'atomic_long_t', i))))
+        print_out_str('Total system pages: {0}'.format(self.ramdump.read_word(self.ramdump.addr_lookup('totalram_pages'))))