From 6cef78cdf4a909dc61bf520c69aa7e6e38f3351b Mon Sep 17 00:00:00 2001
From: Patrick Daly <pdaly@codeaurora.org>
Date: Thu, 18 May 2017 17:14:20 -0700
Subject: [PATCH] lrdp: Add phys_to_virt

Support for kernels older than 4.4 will be added as required.

Change-Id: I0b876303f6f258dedc6133dcfa2b23f5185b69bb
---
 linux-ramdump-parser-v2/mm.py | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/linux-ramdump-parser-v2/mm.py b/linux-ramdump-parser-v2/mm.py
index b626981..b6633d4 100644
--- a/linux-ramdump-parser-v2/mm.py
+++ b/linux-ramdump-parser-v2/mm.py
@@ -1,4 +1,4 @@
-# Copyright (c) 2013-2017, The Linux Foundation. All rights reserved.
+# Copyright (c) 2013-2018, 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
@@ -309,6 +309,16 @@ def page_address(ramdump, page):
         if pam == start:
             return None
 
+def phys_to_virt(ramdump, phys):
+    if not ramdump.arm64:
+        return phys - ramdump.phys_offset + ramdump.page_offset
+
+    if ramdump.kernel_version < (4, 4, 0):
+        return None
+
+    memstart_addr = ramdump.read_s64('memstart_addr')
+    val = (phys - memstart_addr) | ramdump.page_offset
+    return val
 
 def for_each_pfn(ramdump):
     """ creates a generator for looping through valid pfn
-- 
GitLab