diff --git a/linux-ramdump-parser-v2/ramdump.py b/linux-ramdump-parser-v2/ramdump.py
index 6badffc6521d17447a92a010767adb13581371ca..a0cdaa9f4ae1a31bc082c1049f6efccc726eb5ae 100644
--- a/linux-ramdump-parser-v2/ramdump.py
+++ b/linux-ramdump-parser-v2/ramdump.py
@@ -612,7 +612,7 @@ class RamDump():
         first_mem = open(first_mem_path, 'rb')
         # put some dummy data in for now
         self.ebi_files = [(first_mem, 0, 0xffff0000, first_mem_path)]
-        if not self.get_hw_id():
+        if not self.get_hw_id(add_offset=False):
             return False
         first_mem_end = self.ebi_start + os.path.getsize(first_mem_path) - 1
         self.ebi_files = [
@@ -705,7 +705,7 @@ class RamDump():
         else:
             return self.read_word(self.tz_addr, False)
 
-    def get_hw_id(self):
+    def get_hw_id(self, add_offset=True):
         heap_toc_offset = self.field_offset('struct smem_shared', 'heap_toc')
         if heap_toc_offset is None:
             print_out_str(
@@ -734,6 +734,8 @@ class RamDump():
                     print_out_str('smem_addr = {0:x}'.format(board.smem_addr))
 
                 socinfo_start_addr = board.smem_addr + heap_toc_offset + smem_heap_entry_size * SMEM_HW_SW_BUILD_ID + offset_offset
+                if add_offset:
+                    socinfo_start_addr += board.ram_start
                 soc_start = self.read_int(socinfo_start_addr, False)
                 if trace is True:
                     print_out_str('Read from {0:x}'.format(socinfo_start_addr))
@@ -745,6 +747,8 @@ class RamDump():
                     continue
 
                 socinfo_start = board.smem_addr + soc_start
+                if add_offset:
+                    socinfo_start += board.ram_start
                 if trace:
                     print_out_str('socinfo_start {0:x}'.format(socinfo_start))