From 3aa49913a155bc66fdea76eb2ff0a0b06fc86ff4 Mon Sep 17 00:00:00 2001 From: Avinash Jain <jainavinash@codeaurora.org> Date: Mon, 17 Oct 2016 18:41:50 +0530 Subject: [PATCH] lrdp_v2: config value changes Config value is changed from CONFIG_ARM64_PGTABLE_LEVELS to CONFIG_PGTABLE_LEVELS in 3.18. vmemmap is shifted to base addr (0x80000000): commit ab754494cbe4dd44a9e1354b3d93c8d5d5139aad Change-Id: Ib6fa6e1b780db5117f8a750003216794d9cedeea --- linux-ramdump-parser-v2/mm.py | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) mode change 100755 => 100644 linux-ramdump-parser-v2/mm.py diff --git a/linux-ramdump-parser-v2/mm.py b/linux-ramdump-parser-v2/mm.py old mode 100755 new mode 100644 index c679076..02fa7aa --- a/linux-ramdump-parser-v2/mm.py +++ b/linux-ramdump-parser-v2/mm.py @@ -1,4 +1,4 @@ -# Copyright (c) 2013-2015, The Linux Foundation. All rights reserved. +# Copyright (c) 2013-2016, 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 @@ -24,6 +24,7 @@ def get_debug_flags(ramdump, page): flagval = ramdump.read_word(page + debug_flag_offset) return flagval + def page_zonenum(page_flags): # save this in a variable somewhere... return (page_flags >> 26) & 3 @@ -134,7 +135,11 @@ def get_vmemmap(ramdump): # See: include/asm-generic/pgtable-nopud.h, # arch/arm64/include/asm/pgtable-hwdef.h, # arch/arm64/include/asm/pgtable.h - nlevels = int(ramdump.get_config_val("CONFIG_ARM64_PGTABLE_LEVELS")) + if (ramdump.kernel_version < (3, 18, 0)): + nlevels = int(ramdump.get_config_val("CONFIG_ARM64_PGTABLE_LEVELS")) + else: + nlevels = int(ramdump.get_config_val("CONFIG_PGTABLE_LEVELS")) + if ramdump.is_config_defined("CONFIG_ARM64_64K_PAGES"): page_shift = 16 else: @@ -146,7 +151,15 @@ def get_vmemmap(ramdump): spsize = ramdump.sizeof('struct page') vmemmap_size = bitops.align((1 << (va_bits - page_shift)) * spsize, pud_size) - vmalloc_end = ramdump.page_offset - pud_size - vmemmap_size + if (ramdump.kernel_version < (3, 18, 31)): + vmalloc_end = ramdump.page_offset - pud_size - vmemmap_size + # vmalloc_end = 0xFFFFFFBC00000000 + else: + # for version >= 3.18.31, + # vmemmap is shifted to base addr (0x80000000) pfn. + pfn_offset = (ramdump.phys_offset >> page_shift) + offset = pfn_offset * spsize + vmalloc_end = ramdump.page_offset - pud_size - vmemmap_size - offset return vmalloc_end -- GitLab