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