diff --git a/linux-ramdump-parser-v2/parsers/pagetracking.py b/linux-ramdump-parser-v2/parsers/pagetracking.py index 89d51eff3cd3f11f466ecdbddae5bd9431818537..3f5046e51b148fb85cbf0d13a46e7c5fe04ffec4 100644 --- a/linux-ramdump-parser-v2/parsers/pagetracking.py +++ b/linux-ramdump-parser-v2/parsers/pagetracking.py @@ -77,6 +77,20 @@ class PageTracking(RamParser): out_frequency = self.ramdump.open_file('page_frequency.txt') sorted_pages = {} + ''' + Following based upon definition in include/linux/mmzone.h + + #ifndef CONFIG_FORCE_MAX_ZONEORDER + #define MAX_ORDER 11 + #else + #define MAX_ORDER CONFIG_FORCE_MAX_ZONEORDER + #endif + ''' + try: + max_order = int(self.ramdump.get_config_val("CONFIG_FORCE_MAX_ZONEORDER")) + except: + max_order = 11 + for pfn in for_each_pfn(self.ramdump): page = pfn_to_page(self.ramdump, pfn) order = 0 @@ -152,6 +166,11 @@ class PageTracking(RamParser): if nr_trace_entries <= 0 or nr_trace_entries > 16: continue + if order >= max_order: + out_tracking.write('PFN 0x{:x} page 0x{:x} skip as order 0x{:x}\n'.format( + pfn, page, order)) + continue + out_tracking.write('PFN 0x{:x}-0x{:x} page 0x{:x}\n'.format( pfn, pfn + (1 << order) - 1, page))