diff --git a/ironic/drivers/modules/redfish/bios.py b/ironic/drivers/modules/redfish/bios.py
index bee868e385..44742795e1 100644
--- a/ironic/drivers/modules/redfish/bios.py
+++ b/ironic/drivers/modules/redfish/bios.py
@@ -54,20 +54,23 @@ class RedfishBIOS(base.BIOSInterface):
                 driver='redfish',
                 reason=_("Unable to import the sushy library"))
 
-    def _parse_allowable_values(self, allowable_values):
+    def _parse_allowable_values(self, node, allowable_values):
         """Convert the BIOS registry allowable_value list to expected strings
 
         :param allowable_values: list of dicts of valid values for enumeration
         :returns: list containing only allowable value names
         """
 
-        # Get name from ValueName if it exists, otherwise use DisplayValueName
+        # Get name from ValueName if it exists, otherwise use ValueDisplayName
         new_list = []
         for dic in allowable_values:
-            for key in dic:
-                if key == 'ValueName' or key == 'DisplayValueName':
-                    new_list.append(dic[key])
-                    break
+            key = dic.get('ValueName') or dic.get('ValueDisplayName')
+            if key:
+                new_list.append(key)
+            else:
+                LOG.warning('Cannot detect the value name for enumeration '
+                            'item %(item)s for node %(node)s',
+                            {'item': dic, 'node': node.uuid})
 
         return new_list
 
@@ -129,7 +132,8 @@ class RedfishBIOS(base.BIOSInterface):
                     setting[k] = getattr(reg, k, None)
                     if k == "allowable_values" and isinstance(setting[k],
                                                               list):
-                        setting[k] = self._parse_allowable_values(setting[k])
+                        setting[k] = self._parse_allowable_values(
+                            task.node, setting[k])
 
         LOG.debug('Cache BIOS settings for node %(node_uuid)s',
                   {'node_uuid': task.node.uuid})
diff --git a/ironic/tests/unit/drivers/modules/redfish/test_bios.py b/ironic/tests/unit/drivers/modules/redfish/test_bios.py
index f9146f3b67..2ff3235fd9 100644
--- a/ironic/tests/unit/drivers/modules/redfish/test_bios.py
+++ b/ironic/tests/unit/drivers/modules/redfish/test_bios.py
@@ -597,7 +597,8 @@ class RedfishBiosRegistryTestCase(db_base.DbTestCase):
         self.registry.registry_entries.attributes[1].read_only = False
         self.registry.registry_entries.attributes[1].allowable_values =\
             [{'ValueName': 'Enabled', 'ValueDisplayName': 'Enabled'},
-             {'ValueName': 'Disabled', 'ValueDisplayName': 'Disabled'}]
+             {'ValueDisplayName': 'Disabled'},
+             {'Invalid': 'banana'}]
         self.registry.registry_entries.attributes[2].name = "BootDelay"
         self.registry.registry_entries.attributes[2].attribute_type = "Integer"
         self.registry.registry_entries.attributes[2].lower_bound = 5
diff --git a/releasenotes/notes/ValueDisplayName-13837c653277ff08.yaml b/releasenotes/notes/ValueDisplayName-13837c653277ff08.yaml
new file mode 100644
index 0000000000..6abac74c6e
--- /dev/null
+++ b/releasenotes/notes/ValueDisplayName-13837c653277ff08.yaml
@@ -0,0 +1,5 @@
+---
+fixes:
+  - |
+    Fixes detecting of allowable values for a BIOS settings enumeration in
+    the ``redfish`` BIOS interface when only ``ValueDisplayName`` is provided.