DPU Firmware Updates
DPU firmware is updated as part of DPU reprovisioning. NICo does not upload a separate package for each DPU component. Instead, it installs or boots the site’s BlueField Bundle (BFB), power-cycles the platform, and then checks the firmware reported by the DPU BMC.
Keep two kinds of configuration separate:
dpu_nic_firmware_update_versionsdetermines whether DPU NIC drift should automatically start reprovisioning.dpu_modelscontains the BMC, ERoT/CEC, and NIC versions that NICo expects after the BFB has been applied.
These values and the BFB must describe the same release. Refer to DPU firmware before enabling automatic updates.
Components covered
The classic, non-DPF reprovisioning path uses the following Redfish inventory:
The distinction matters: BMC or ERoT/CEC drift alone does not make Machine Update Manager select a DPU. A NIC mismatch starts the workflow; applying the BFB is expected to bring the other verified components to the corresponding baseline.
DPU NIC firmware
Drift detection
Machine Update Manager periodically reads the DPU NIC version discovered for
each managed DPU. It trims surrounding whitespace and checks for an exact
match in dpu_config.dpu_nic_firmware_update_versions.
For example:
A DPU reporting either listed version is compliant. A DPU reporting
32.42.1000 is drifted. The list does not identify which version NICo will
install; the deployed BFB determines the resulting firmware versions.
Setting dpu_nic_firmware_reprovision_update_enabled = false removes the DPU
NIC module from Machine Update Manager. NICo then stops detecting and
scheduling classic DPU NIC drift automatically. It does not disable DPU
reprovisioning requested through the API.
Eligibility and scheduling
Drift is evaluated per DPU, but scheduling and disruption are managed per host. If several DPUs attached to one host are drifted, NICo groups them into one host update and counts that host once against the shared machine-update limit.
NICo automatically selects a host only when all of the following are true:
When the host is eligible, Machine Update Manager creates a reprovisioning
request on each drifted DPU. The managed-host controller adds a
HostUpdateInProgress health alert with PreventAllocations, restarts the
selected DPUs, and enters DPU reprovisioning.
Reprovisioning and verification
The installation mechanism depends on how the DPU is managed and on platform capabilities:
dpu_config.dpu_enable_secure_boot controls the classic installation branch
and defaults to false:
- When it is
false, NICo uses the UEFI HTTP network-install path. - When it is
true, NICo uses Redfish BFB installation only when every attached DPU reports BMC firmware24.10or newer. If one DPU does not meet that requirement or has no reported BMC version, NICo uses network installation. - DPF-managed provisioning takes precedence and does not use this classic secure-boot decision.
This setting chooses how NICo applies the BFB. It does not enable automatic DPU selection and does not choose the BFB or component target versions.
For the classic path, version verification uses exact string equality. NICo checks BMC, ERoT/CEC, and NIC in that order. It waits when an inventory entry is missing, has no version, or reports a different version. DPU UEFI is not in this verification loop.
For DPF-managed DPUs, Machine Update Manager asks DPF for devices whose
installed BFB or DPU flavor differs from the active DPUDeployment. DPF drift
can therefore trigger the same host-level scheduling flow without consulting
the classic NIC accepted-version list. DPF owns reprovisioning, and NICo skips
the classic Redfish component comparison afterward.
Assigned hosts and operator requests
An assigned host is not eligible for automatic DPU NIC selection. Its drift
contributes to the unavailable count until the host returns to top-level
Ready.
An operator can
request DPU reprovisioning explicitly.
The API requires a HostUpdateInProgress health alert with
PreventAllocations; the CLI’s --update-message option creates that alert
before sending the request:
Passing a host ID requests reprovisioning for all attached DPUs. Passing a DPU
ID requests it only for that DPU. On an unassigned Ready host, the controller
can start the request directly. On an assigned host, the request waits for
tenant reboot approval or the configured instance_autoreboot_period, as
described in
Assigned hosts need reboot approval.
The CLI still accepts --update-firmware, but the current DPU state machine
does not branch on that value. Every classic DPU reprovision follows the same
BFB installation or network-install path and firmware verification.
Monitor an update
Show the versions reported for all DPUs:
The output includes DPU NIC, BMC, BIOS/UEFI, HBN, and DPU agent versions. Do
not use dpu versions --updates-only as the authoritative drift list: the
current implementation reads an empty legacy expected-version map and can
return all DPUs instead of only drifted ones.
List pending and active DPU reprovisioning requests, then inspect the managed-host substate for a particular host:
The following metrics provide the site-wide view:
Recover a stalled update
Start with dpu reprovision list and managed-host show. The substate usually
separates an installation problem from a post-install health or configuration
problem.
Restart an active or failed reprovisioning flow for all requested DPUs on a host:
Clear a request only when it has not started:
For DPU OS installation, networking, and health details beyond firmware, refer to DPU Lifecycle Management.
Current limitations
dpu_nic_firmware_initial_update_enableddoes not currently suppress BFB installation or firmware verification during initial DPU setup; the machine controller only logs the value.- The machine controller stores
dpu_nic_firmware_reprovision_update_enabled, but does not consult that field while executing a reprovisioning request. The setting controls automatic selection through Machine Update Manager. - The
update_firmwarevalue stored on a DPU reprovisioning request is used by status and metrics, but does not select a different execution path. - Automatic completion emits no
carbide_firmware_updates_totalevent withphase="completed"for thedpu_nictarget. Use reprovisioning state, the running gauge, and resulting inventory for completion monitoring. - Classic post-reprovision verification does not compare
DPU_UEFI, even though the DPU model catalog contains a UEFI entry.