diff --git a/lib/pldm_utils.py b/lib/pldm_utils.py
index 9008d57..e22af25 100644
--- a/lib/pldm_utils.py
+++ b/lib/pldm_utils.py
@@ -44,3 +44,63 @@
 
     stdout, stderr, rc = bsu.bmc_execute_command('pldmtool ' + option_string, **bsu_options)
     return json.loads(stdout)
+
+
+def GenerateBIOSAttrHandleValueDict(attr_val_table_data):
+    """
+    From pldmtool bios GetBIOSTable of AttributeValueTable generate dictionary of
+    for BIOS attribute and its value.
+
+    Description of argument(s):
+    attr_val_table_data     pldmtool output from GetBIOSTable table type AttributeValueTable
+                             e.g.
+                            [{
+                                  "AttributeHandle": 20,
+                                  "AttributeNameHandle": "23(pvm-pcie-error-inject)",
+                                  "AttributeType": "BIOSEnumeration",
+                                  "NumberOfPossibleValues": 2,
+                                  "PossibleValueStringHandle[0]": "3(Disabled)",
+                                  "PossibleValueStringHandle[1]": "4(Enabled)",
+                                  "NumberOfDefaultValues": 1,
+                                  "DefaultValueStringHandleIndex[0]": 1,
+                                  "StringHandle": "4(Enabled)"
+                             },
+                             {
+                                  "AttributeHandle": 26,
+                                  "AttributeNameHandle": "28(pvm_fw_boot_side)",
+                                  "AttributeType": "BIOSEnumeration",
+                                  "NumberOfPossibleValues": 2,
+                                  "PossibleValueStringHandle[0]": "11(Perm)",
+                                  "PossibleValueStringHandle[1]": "15(Temp)",
+                                  "NumberOfDefaultValues": 1,
+                                  "DefaultValueStringHandleIndex[0]": 1,
+                                  "StringHandle": "15(Temp)"
+                             }]
+
+    @return                  Dictionary of BIOS attribute and its value.
+                             e.g. {
+                                   'pvm_pcie_error_inject': ['Disabled', 'Enabled'],
+                                   'pvm-fw-boot-side': ['Perm', 'Temp']
+                                  }
+    """
+
+    attr_val_data_dict = {}
+    for item in attr_val_table_data:
+        for attr in item:
+            if (attr == "NumberOfPossibleValues"):
+                value_list = []
+                for i in range(0, int(item[attr])):
+                    attr_values = item["PossibleValueStringHandle[" + str(i) + "]"]
+                    value = re.search(r'\((.*?)\)', attr_values).group(1)
+                    if value:
+                        # Example:
+                        # value = '"Power Off"'
+                        if ' ' in value:
+                            value = '"' + value + '"'
+                        value_list.append(value)
+                    else:
+                        value_list.append('')
+
+                attr_handle = re.findall(r'\(.*?\)', item["AttributeNameHandle"])
+                attr_val_data_dict[attr_handle[0][1:-1]] = value_list
+    return attr_val_data_dict
