Version
Affected versions:
- v2.1.0-rc.19 through v2.1.0-rc.21 — libredfish v0.47.3
- v2.2.0-rc.1 — libredfish v0.47.3
- Current main — libredfish v0.47.4
v2.1.0-rc.18, which uses libredfish v0.46.5, works.
Describe the bug
Supermicro GB300 trays with the Redfish model GB NVL become stuck in:
HostInitializing/WaitingForPlatformConfiguration
During machine_setup, libredfish incorrectly selects the non-Supermicro BIOS attributes and sends:
PATCH /redfish/v1/Systems/System_0/Bios/Settings
including:
{
"Attributes": {
"TPM": "Enabled",
"EmbeddedUefiShell": "Disabled"
}
}
The Supermicro GB300 BIOS does not expose TPM or EmbeddedUefiShell; it uses SecurityDeviceSupport for TPM control. The BMC rejects the request:
HTTP 400 Bad Request
Base.1.18.1.PropertyValueNotInList
The value 'EmbeddedUefiShell' for the property Attributes is not in the list of acceptable values.
NICo handles the machine_setup failure as a possible UEFI-POST/BMC race and enters its host reboot/retry path. BiosConfigOutcome::WaitingForReboot returns Wait without advancing the BIOS configuration stage or its retry counter.
The generic reboot helper eventually reports that manual intervention is required, but the machine does not transition to a terminal failed state. It remains in HostInitializing/WaitingForPlatformConfiguration, exceeding its SLA while the controller continues processing the same failure.
Root cause
libredfish v0.46.5 classified GB300 by checking whether any member of /redfish/v1/Systems had a model containing GB300:
systems.members.iter().any(|system| {
system
.model
.as_deref()
.is_some_and(|model| model.contains("GB300"))
})
dsx-ai-factory/libredfish#129 changed this to require Manufacturer: Supermicro and a model containing GB300 on the same ComputerSystem record:
systems.iter().any(|system| {
system
.manufacturer
.as_deref()
.is_some_and(|manufacturer| manufacturer.eq_ignore_ascii_case("supermicro"))
&& system
.model
.as_deref()
.is_some_and(|model| model.contains("GB300"))
})
The affected tray splits this information across Redfish system records:
- Host system:
Manufacturer: Supermicro, Model: GB NVL
- HGX system: model contains
GB300, but its manufacturer is not Supermicro
No single record satisfies both parts of the new predicate. Consequently, systems_are_supermicro_gb300() returns false and machine_setup selects the wrong BIOS attributes.
The change was introduced in libredfish v0.47.1 and is present in v0.47.3 and v0.47.4. NICo release v2.1.0-rc.19 picked it up when #5755 changed the libredfish pin from v0.46.5 to v0.47.3.
Expected behavior
Supermicro GB300 trays should be identified from the complete /Systems collection and configured with:
{
"Attributes": {
"SecurityDeviceSupport": "Enabled"
}
}
They should not receive TPM or EmbeddedUefiShell.
Suggested fix
Evaluate the manufacturer and GB300 model independently across the complete system collection:
let is_supermicro = systems.iter().any(|system| {
system
.manufacturer
.as_deref()
.is_some_and(|value| value.eq_ignore_ascii_case("supermicro"))
});
let is_gb300 = systems.iter().any(|system| {
system
.model
.as_deref()
.is_some_and(|value| value.contains("GB300"))
});
is_supermicro && is_gb300
Add a regression test representing the actual split-system metadata:
System_0: Supermicro / GB NVL
- HGX system: model containing
GB300
Publish a corrected libredfish version and update the v2.1 and v2.2/main pins.
Scope
This affects Supermicro GB300 trays with this Redfish system layout whenever they enter a provisioning flow that calls machine_setup.
Hosts already settled in Assigned/Ready are not immediately affected because that path does not normally call machine_setup.
NICo's BMC Explorer mapping is already correct: the Supermicro GB300 infinite-boot attribute is None, and its expected BIOS attributes exclude TPM and EmbeddedUefiShell. That independent classification does not control libredfish's later machine_setup path.
Interim workaround
Pin NICo to v2.1.0-rc.18, the last v2.1 release candidate using libredfish v0.46.5.
Related work
Version
Affected versions:
v2.1.0-rc.18, which uses libredfish v0.46.5, works.
Describe the bug
Supermicro GB300 trays with the Redfish model
GB NVLbecome stuck in:HostInitializing/WaitingForPlatformConfigurationDuring
machine_setup, libredfish incorrectly selects the non-Supermicro BIOS attributes and sends:including:
{ "Attributes": { "TPM": "Enabled", "EmbeddedUefiShell": "Disabled" } }The Supermicro GB300 BIOS does not expose
TPMorEmbeddedUefiShell; it usesSecurityDeviceSupportfor TPM control. The BMC rejects the request:NICo handles the
machine_setupfailure as a possible UEFI-POST/BMC race and enters its host reboot/retry path.BiosConfigOutcome::WaitingForRebootreturnsWaitwithout advancing the BIOS configuration stage or its retry counter.The generic reboot helper eventually reports that manual intervention is required, but the machine does not transition to a terminal failed state. It remains in
HostInitializing/WaitingForPlatformConfiguration, exceeding its SLA while the controller continues processing the same failure.Root cause
libredfish v0.46.5 classified GB300 by checking whether any member of
/redfish/v1/Systemshad a model containingGB300:dsx-ai-factory/libredfish#129 changed this to require
Manufacturer: Supermicroand a model containingGB300on the sameComputerSystemrecord:The affected tray splits this information across Redfish system records:
Manufacturer: Supermicro,Model: GB NVLGB300, but its manufacturer is notSupermicroNo single record satisfies both parts of the new predicate. Consequently,
systems_are_supermicro_gb300()returns false andmachine_setupselects the wrong BIOS attributes.The change was introduced in libredfish v0.47.1 and is present in v0.47.3 and v0.47.4. NICo release v2.1.0-rc.19 picked it up when #5755 changed the libredfish pin from v0.46.5 to v0.47.3.
Expected behavior
Supermicro GB300 trays should be identified from the complete
/Systemscollection and configured with:{ "Attributes": { "SecurityDeviceSupport": "Enabled" } }They should not receive
TPMorEmbeddedUefiShell.Suggested fix
Evaluate the manufacturer and GB300 model independently across the complete system collection:
Add a regression test representing the actual split-system metadata:
System_0:Supermicro/GB NVLGB300Publish a corrected libredfish version and update the v2.1 and v2.2/main pins.
Scope
This affects Supermicro GB300 trays with this Redfish system layout whenever they enter a provisioning flow that calls
machine_setup.Hosts already settled in Assigned/Ready are not immediately affected because that path does not normally call
machine_setup.NICo's BMC Explorer mapping is already correct: the Supermicro GB300 infinite-boot attribute is
None, and its expected BIOS attributes excludeTPMandEmbeddedUefiShell. That independent classification does not control libredfish's latermachine_setuppath.Interim workaround
Pin NICo to v2.1.0-rc.18, the last v2.1 release candidate using libredfish v0.46.5.
Related work