diff --git a/linux-ramdump-parser-v2/aarch64iommulib.py b/linux-ramdump-parser-v2/aarch64iommulib.py
index 7ad1a576fc1b5e2dac62bd70388ff2114795d6f9..baea7ab076b9f16cc779bf10359a09c662c3f817 100644
--- a/linux-ramdump-parser-v2/aarch64iommulib.py
+++ b/linux-ramdump-parser-v2/aarch64iommulib.py
@@ -154,6 +154,7 @@ def add_flat_mapping(mappings, fl_idx, sl_idx, tl_idx, ll_idx, phy_addr,
     elif map_type == LL_AP_PR_RO:
         map_type_str = '[P RO]'
 
+    shareability_str = 'N/A'
     if shareability != -1:
         if shareability == SH_NON_SHARE:
             shareability_str = 'Non-Shareable'
@@ -163,9 +164,8 @@ def add_flat_mapping(mappings, fl_idx, sl_idx, tl_idx, ll_idx, phy_addr,
             shareability_str = 'Outer-Shareable'
         if shareability == SH_INNER_SHARE:
             shareability_str = 'Inner-Shareable'
-    else:
-        shareability_str = 'N/A'
 
+    attr_indx_str = 'N/A'
     if attr_indx != -1:
         if attr_indx == ATTR_IDX_NONCACHED:
             attr_indx_str = 'Non-Cached'
@@ -173,8 +173,6 @@ def add_flat_mapping(mappings, fl_idx, sl_idx, tl_idx, ll_idx, phy_addr,
             attr_indx_str = 'Cached'
         if attr_indx == ATTR_IDX_DEV:
             attr_indx_str = 'Device'
-    else:
-        attr_indx_str = 'N/A'
 
     if xn_bit == 1:
         execute_never_str = 'True'
@@ -431,7 +429,7 @@ def parse_aarch64_tables(ramdump, d, domain_num):
         iommu_context = iommu_context or 'None attached'
 
         outfile.write(
-            'IOMMU Contextttt: %s. Domain: %s'
+            'IOMMU Context: %s. Domain: %s'
             '[L2 cache redirect for page tables is %s]\n' % (
                 iommu_context, d.client_name, redirect))
         outfile.write(
diff --git a/linux-ramdump-parser-v2/iommulib.py b/linux-ramdump-parser-v2/iommulib.py
index edfbe3c1fba5b220de5f7c2013311916587e89a0..2a772a0c4e351ef9d3c992111d21ebbaf10d4cce 100644
--- a/linux-ramdump-parser-v2/iommulib.py
+++ b/linux-ramdump-parser-v2/iommulib.py
@@ -1,4 +1,4 @@
-# Copyright (c) 2014-2016, The Linux Foundation. All rights reserved.
+# Copyright (c) 2014-2017, 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
@@ -76,13 +76,24 @@ class IommuLib(object):
 
         arm_smmu_ops = self.ramdump.address_of('arm_smmu_ops')
 
-        dev_ptr = self.ramdump.read_structure_field(
-            node, 'struct iommu_debug_attachment', 'dev')
-
-        kobj_ptr = dev_ptr + self.ramdump.field_offset('struct device', 'kobj')
-
-        client_name = self.ramdump.read_structure_cstring(
-            kobj_ptr, 'struct kobject', 'name')
+        ptr = self.ramdump.read_structure_field(
+            node, 'struct iommu_debug_attachment', 'group')
+        if ptr is not None:
+            dev_list = ptr + self.ramdump.field_offset(
+                'struct iommu_group', 'devices')
+            dev = self.ramdump.read_structure_field(
+                dev_list, 'struct list_head', 'next')
+            client_name = self.ramdump.read_structure_cstring(
+                dev, 'struct iommu_device', 'name')
+        else:
+            """Older kernel versions have the field 'dev'
+           instead of 'iommu_group'.
+            """
+            ptr = self.ramdump.read_structure_field(
+                node, 'struct iommu_debug_attachment', 'dev')
+            kobj_ptr = ptr + self.ramdump.field_offset('struct device', 'kobj')
+            client_name = self.ramdump.read_structure_cstring(
+                kobj_ptr, 'struct kobject', 'name')
 
         iommu_domain_ops = self.ramdump.read_structure_field(
             domain_ptr, 'struct iommu_domain', 'ops')