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