Description
Recent Dell BIOS versions return UEFI HTTP boot-option display names with an appended adapter, MAC address, and protocol suffix.
libredfish constructs the expected name from the network-device description:
HTTP Device 1: NIC in Slot 4 Port 1 Partition 1
Dell now reports:
HTTP Device 1: NIC in Slot 4 Port 1 Partition 1 - Nvidia Network Adapter - <MAC> - IPv4
The Dell implementation compares these names using exact equality. The comparison fails even though the correct boot option exists.
set_boot_order_dpu_first() consequently returns:
No such boot option HTTP Device 1: NIC in Slot 4 Port 1 Partition 1
Downstream, infra-controller repeatedly retries SetBootOrder, leaving the host stuck in ingestion.
Identified systems
The extended display-name format has been confirmed on:
- Dell PowerEdge R670
- Dell PowerEdge R760xd2
- Dell PowerEdge R770
- Dell PowerEdge XE9680
Other Dell models or BIOS versions may also be affected.
The issue occurs with the current libredfish main/v0.44.18 code.
Root cause
Exact boot-option name comparisons are performed in three Dell paths:
machine_setup_status
set_boot_order_dpu_first
is_boot_order_setup
The expected name remains valid, but newer Dell firmware appends a " - "-delimited suffix.
Expected behavior
libredfish should recognize both:
- The legacy exact boot-option name.
- The newer name containing the Dell-provided descriptive suffix.
Matching must remain bounded. An expected name ending in Partition 1 must not match an unrelated option such as Partition 10.
Proposed fix
Use a shared matcher equivalent to:
fn boot_option_name_matches(expected: &str, actual: &str) -> bool {
actual == expected
|| actual
.strip_prefix(expected)
.is_some_and(|suffix| suffix.starts_with(" - "))
}
Use the matcher in all three Dell boot-option comparison paths.
Regression coverage
Add unit tests covering:
- Legacy exact name: match
- Extended Dell name: match
Partition 1 versus Partition 10: no match
- Different port: no match
- Arbitrary suffix without the expected
" - " delimiter: no match
Existing Dell integration tests should continue to pass for the legacy format.
Related PR
Description
Recent Dell BIOS versions return UEFI HTTP boot-option display names with an appended adapter, MAC address, and protocol suffix.
libredfish constructs the expected name from the network-device description:
Dell now reports:
The Dell implementation compares these names using exact equality. The comparison fails even though the correct boot option exists.
set_boot_order_dpu_first()consequently returns:Downstream, infra-controller repeatedly retries
SetBootOrder, leaving the host stuck in ingestion.Identified systems
The extended display-name format has been confirmed on:
Other Dell models or BIOS versions may also be affected.
The issue occurs with the current libredfish
main/v0.44.18code.Root cause
Exact boot-option name comparisons are performed in three Dell paths:
machine_setup_statusset_boot_order_dpu_firstis_boot_order_setupThe expected name remains valid, but newer Dell firmware appends a
" - "-delimited suffix.Expected behavior
libredfish should recognize both:
Matching must remain bounded. An expected name ending in
Partition 1must not match an unrelated option such asPartition 10.Proposed fix
Use a shared matcher equivalent to:
Use the matcher in all three Dell boot-option comparison paths.
Regression coverage
Add unit tests covering:
Partition 1versusPartition 10: no match" - "delimiter: no matchExisting Dell integration tests should continue to pass for the legacy format.
Related PR