Switching modes safely
S2·E5It is one parameter, how long can it take · Change-advisory call, Thursday afternoon, then the caged row
Builds on: Modes of operation: DPU, NIC, Zero-Trust, The MFT toolbox: read-only vs mutating, Out-of-band: BMC, Redfish, and the BlueField-4 path
Before you read: what do you already know?
3 quick questions. Wrong answers are fine and expected; trying first makes the lesson stick.
After this lesson you can
- Run a mode change as a safety procedure: pre-flight inventory, out-of-band access, window, apply, verify, rollback.
- Issue the exact commands for DPU to NIC, NIC to DPU, DPU to Zero-Trust and back on BlueField-3, and state the reset each needs.
- Analyse a failed or half-applied switch from its symptoms (host PFs, tmfifo, mlxconfig output) and choose the rollback.
- Apply the four hard refusals of the hardware-safety workflow to a real change request.
Episode 5 — It is one parameter, how long can it take
The change request says: flip the four storage nodes from DPU mode to NIC mode, fifteen minutes, no window required, so Friday’s throughput number has no Arm in the path. The network lead wrote it himself: he wants a counter with nothing on the card left to argue about. The change manager reads your estimate back and asks, not unreasonably, why one mlxconfig line needs a maintenance window, a rollback plan and an out-of-band path. The SE, whose spreadsheet still says fifteen minutes, studies his coffee.
Because of what that parameter does. In DPU mode the embedded Arm system runs services that manage the NIC resources and the data path; in NIC mode on BlueField-3 the Arm cores are inactive and the device functions as a ConnectX network adapter.[1] The flip does not tune the card, it removes a computer from the server, and with it the Arm-side tools you would use to undo the change. The configuration takes effect only after the Arm and NIC components reset, and a power cycle is what NVIDIA recommends.[1]
The modes exist because one piece of silicon serves two customers: one that wants infrastructure services offloaded onto the card, one that wants a fast NIC and nothing else. Zero Trust is the third position, where the host administrator is deliberately locked out of the card in his own server.[1]
A mode change is not a setting; it is a hardware change you make with a keyboard.
You ask for one thing before agreeing to anything: their BEFORE state.[3] Segment 1 recaps the knob.
1Three modes, one knob, one privilege
Lesson 1.4 defined the modes; this lesson is about changing them without losing the server. Quick recap from the 3.5.0 modes page: in DPU mode “the embedded Arm system runs services that manage the NIC resources and data path”; Zero Trust is “a specialized variation of DPU Mode” that stops the host administrator from reaching the card; in NIC mode on BlueField-3 “the Arm cores of BlueField are inactive, and the device functions as an NVIDIA ConnectX network adapter”.[1] DPU SKUs ship in DPU mode, SuperNIC SKUs in NIC mode.[1]
On BlueField-3 the mode is one firmware parameter. sudo mlxconfig -d /dev/mst/<device> q INTERNAL_CPU_OFFLOAD_ENGINE prints ENABLED(0) for DPU mode and DISABLED(1) for NIC mode; an RO flag on the line means Zero Trust has made it read-only from the host.[1] Zero Trust is a separate privilege, set from the Arm with mlxprivhost, whose official purpose is to “restrict the hosts from configuring the NIC”; it can individually deny port ownership, hardware counters, the tracer, the RShim interface and firmware flashing from the host.[1][9]
Three restrictions shape every plan: “Multi-host is not supported when BlueField is operating in NIC Mode”; “Socket Direct is not supported when BlueField is operating in DPU Mode”; and “Operating in NIC Mode with Zero Trust (Restricted) configuration is not supported and may lead to undefined behavior”.[1] The last one gives the order rule: “Move from DPU Mode with Zero Trust to DPU Mode first, and then from DPU Mode to NIC Mode”, with “a system-level reset when moving from Zero Trust to DPU Mode before configuring NIC Mode”.[1]
1. Host sends on the PF netdev
Same start as any transmit. Nothing on the host says "this goes to the Arm".
sudo mlxconfig -d /dev/mst/<device> q INTERNAL_CPU_OFFLOAD_ENGINE # ENABLED(0) = DPU mode sudo mlxconfig -d /dev/mst/<device> s INTERNAL_CPU_OFFLOAD_ENGINE=0
NIC → DPU on BlueField-3 (host side). BlueField-2 additionally needs INTERNAL_CPU_PAGE_SUPPLIER=0 INTERNAL_CPU_ESWITCH_MANAGER=0 INTERNAL_CPU_IB_VPORT0=0.
- "For the configuration to take effect, Arm and NIC components must undergo a reset. Power cycle is recommended."
- Default for DPU SKUs B3240 / B3220 / B3210 / B3210E.
- Socket Direct is not supported in DPU mode.
2Pre-flight: the BEFORE state and the out-of-band path
The hardware-safety skill’s workflow is “pre-flight inventory → out-of-band path → window → apply → verify → rollback”, and it refuses to proceed in four cases: no documented rollback, a link-breaking change with no out-of-band access, no explicit time-boxed maintenance window, and a change that was not rehearsed on a representative non-production replica.[2] A mode flip is on its list of operations that trigger the full workflow.[2]
The BEFORE state is a specific set of reads, run from the host before anything changes:[3]
lspci -d 15b3: -nn > before-lspci.txt
sudo mlxconfig -d /dev/mst/mt41692_pciconf0 q > before-mlxconfig.txt # query only
sudo flint -d /dev/mst/mt41692_pciconf0 q > before-flint.txt
cat /dev/rshim*/misc > before-rshim.txt
dmesg > before-dmesg.txtThe skill’s phrasing: “without a BEFORE state, ‘rollback’ is a phrase, not a thing the operator can do”.[3] Add the Arm release (ssh ubuntu@192.168.100.2 cat /etc/mlnx-release) while the Arm is still reachable.[3]
Out-of-band means a path to the server that does not depend on the card. On a PowerEdge that is the iDRAC virtual console for the host and the power-cycle control, plus the card’s BMC (Redfish) or the rshim console for the Arm side.[5][11] Going to NIC mode removes the Arm, so tmfifo SSH and Arm-side mlxprivhost disappear; the way back is host mlxconfig or BMC Redfish.[1][5] Going to Zero Trust removes the host’s ability to change firmware configuration, so the way back is the Arm or the BMC.[1] Confirm the path you will need afterwards works before you start.
3Apply: exact commands for each transition
All commands verbatim from the 3.5.0 modes page; host side unless marked.[1]
# DPU -> NIC (BlueField-3), host
sudo mlxconfig -d /dev/mst/<device> s INTERNAL_CPU_OFFLOAD_ENGINE=1
# NIC -> DPU (BlueField-3), host
sudo mlxconfig -d /dev/mst/<device> s INTERNAL_CPU_OFFLOAD_ENGINE=0
# DPU -> NIC (BlueField-2), host: four parameters
sudo mlxconfig -d /dev/mst/<device> s INTERNAL_CPU_PAGE_SUPPLIER=1 INTERNAL_CPU_ESWITCH_MANAGER=1 INTERNAL_CPU_IB_VPORT0=1 INTERNAL_CPU_OFFLOAD_ENGINE=1
# NIC -> DPU (BlueField-2), host
sudo mlxconfig -d /dev/mst/<device> s INTERNAL_CPU_PAGE_SUPPLIER=0 INTERNAL_CPU_ESWITCH_MANAGER=0 INTERNAL_CPU_IB_VPORT0=0 INTERNAL_CPU_OFFLOAD_ENGINE=0
# DPU -> Zero Trust, run on the ARM OS
sudo mlxprivhost -d /dev/mst/<device> r --disable_rshim --disable_tracer --disable_counter_rd --disable_port_owner
# Zero Trust -> DPU, run on the ARM OS
sudo mlxprivhost -d /dev/mst/<device> pThen the reset: “For the configuration to take effect, Arm and NIC components must undergo a reset. Power cycle is recommended.”[1] The safety skill’s “mlxconfig cold-power-cycle rule” treats a warm reboot as insufficient; Dell’s KB 000300192 documents the fatal PCIe error you get on a PowerEdge when a DPU firmware change is followed by a warm reboot instead of a power cycle.[2][10]
Two alternatives to the host path. From the BMC: POST /redfish/v1/Systems/Bluefield/Oem/Nvidia/Actions/Mode.Set with NicMode or DpuMode (“Two consecutive Arm reboots are required”), and PATCH .../HostPrivilegeConfig/Settings with PrivilegeMode Restricted or Privileged (“Power cycle is required”).[5] From UEFI, the menu depends on which side you are on. External host UEFI: select BlueField Internal Cpu Configuration and set Internal Cpu Offload Engine to Disabled for NIC mode or Enabled for DPU mode. Arm UEFI (press Esc twice on the console): Device Manager -> System Configuration -> BlueField Modes, set the NIC Mode option to NicMode or DpuMode, exit and save, then “Issue power cycle to apply new configuration”.[1]
VMware adds a step. Broadcom KB 379391 states that “When you switch BlueField-3 from NIC mode to VMware Distributed Services Engine enabled DPU mode, you must re-install ESXi”, in both directions, on vSphere 8.0 U3b and later; the card leaves the factory in DPU mode with DSE disabled.[7] NVIDIA’s own ESXi procedure is /opt/mellanox/bin/mlxconfig -d mt41692_pciconf0 set INTERNAL_CPU_OFFLOAD_ENGINE=1, then “Power cycle the system after switching to NIC mode”, then verify with mlxconfig -d mt41692_pciconf0 q | grep -i offload showing DISABLED.[8]
DPU stuck / not back after a mode change (DPU ↔ NIC ↔ Zero-Trust)
4Verify, then roll back if you must
Verification is the same set of reads as the BEFORE state, compared line by line. The decisive one: sudo mlxconfig -d /dev/mst/<device> q INTERNAL_CPU_OFFLOAD_ENGINE must show the value you intended, ENABLED(0) for DPU, DISABLED(1) for NIC, and no RO unless you meant Zero Trust.[1] Then lspci -d 15b3: against ip link to confirm the host PFs are bound and up; then, in DPU mode, cat /etc/mlnx-release on the Arm after ip route get 192.168.100.2 reports dev tmfifo_net0 or dev tm-br.[3][4] In NIC mode the Arm checks are skipped by design; the host and BMC reads are the whole verification.[1]
Rollback is the inverse write plus the same power cycle: mlxconfig s INTERNAL_CPU_OFFLOAD_ENGINE=0 returns a BlueField-3 to DPU mode; mlxprivhost -d <device> p from the Arm, or the Redfish Privileged PATCH from the BMC, undoes Zero Trust.[1][5] The BEFORE files tell you when you are back.
One Dell-specific symptom belongs in the plan. On PowerEdge R660, R760, R760XA and XE9680 with CPLD 1.1.5 or 1.1.7, iDRAC 7.10.50.00 and BlueField-3 firmware 32.40.1000, a card in DPU mode can make POST show “No Memory Found”; the server waits about a minute and reboots on its own, after which memory is seen normally. The B3140H “comes set in Super NIC mode. If it is changed to DPU Mode, it can also encounter this event.”[6] If you switch a card to DPU mode on that combination, budget the extra reboot and do not treat it as a failed change.
Card: BlueField-3 B3220 at /dev/mst/mt41692_pciconf0, currently ENABLED(0). Host management is on the LOM through iDRAC; the card’s ports carry only test traffic. Window: 30 minutes, agreed. Replica: the same flip was run last week on the second lab R760.
- BEFORE state: the five reads from Segment 2 into
before-*.txt, plusssh ubuntu@192.168.100.2 cat /etc/mlnx-release.[3] - OOB check: open the iDRAC virtual console and confirm you can issue a power cycle from it; open
screen /dev/rshim0/console 115200and confirm you see the Arm login prompt.[11] - Refusal check: rollback documented (step 8), OOB works (step 2), window agreed, replica done. Proceed.[2]
- Apply:
sudo mlxconfig -d /dev/mst/mt41692_pciconf0 s INTERNAL_CPU_OFFLOAD_ENGINE=1. Answer the confirmation prompt.[1] - Power cycle from iDRAC. Not
reboot.[1][2] - Verify:
sudo mst start; sudo mlxconfig -d /dev/mst/mt41692_pciconf0 q INTERNAL_CPU_OFFLOAD_ENGINEshowsDISABLED(1);lspci -d 15b3: -nnstill lists the functions;ip linkshows the two PFs.[1][3] - Expected losses: no tmfifo SSH, no Arm console login. Record them as expected, not as faults.[1]
- Rollback (if step 6 fails or the customer changes their mind):
sudo mlxconfig -d /dev/mst/mt41692_pciconf0 s INTERNAL_CPU_OFFLOAD_ENGINE=0, power cycle from iDRAC, re-run step 1’s reads and diff againstbefore-*.txt.[1]
- BEFORE state:
lspci -d ____ -nn,mlxconfig -d <dev> ____,flint -d <dev> ____,cat /dev/rshim*/____,____into files; add the Arm’s/etc/____. - OOB check: confirm a power cycle is possible from ____ and the Arm console is readable at
/dev/rshim0/____. - Refusal check: rollback ____, OOB ____, window ____, replica ____.
- Apply:
sudo mlxconfig -d /dev/mst/mt41692_pciconf0 s ____=1. - ____ cycle, not reboot.
- Verify:
mlxconfig qshows____(1);lspciandip linkshow the PFs. - Expected losses in NIC mode: ____ and ____.
- Rollback:
s INTERNAL_CPU_OFFLOAD_ENGINE=____, power cycle, diff against the BEFORE files.
A customer’s BlueField-3 is in Zero Trust mode; mlxconfig q from the host shows INTERNAL_CPU_OFFLOAD_ENGINE with an RO flag. They want NIC mode. Their host management rides on the BlueField’s own ports, and they have BMC access to the card. Write the full plan: where you run each command (host, Arm, BMC), the resets between steps, the verification after each, and the rollback for each step. Acceptance: your plan applies the order rule and includes a system-level reset before the NIC step; it names the out-of-band path and either fixes the management-network problem or refuses; the Zero Trust exit uses the Arm or the BMC, not the host; the final verification shows DISABLED(1) with no RO.
End of Episode 5 — Thirty minutes, and the way back
The window is agreed at thirty minutes. The BEFORE files are captured, iDRAC proves it can power-cycle the chassis over a path that does not ride the card’s ports, and the flip goes: write, cold power cycle, then mlxconfig q INTERNAL_CPU_OFFLOAD_ENGINE reading DISABLED(1) on all four.[1][3] One node takes the extra automatic reboot the Dell KB describes, and nobody panics, because it was in the plan.[6]
What you say to the change manager: “The command takes a second. The window is for the power cycle, the verification and the way back.”[2]
At 06:00 the operator calls from the far end of the row: three cards, three different symptoms, one replacement request covering all three, three hours before the demo.
Lab
Do this only on the Dell-lab R760 during a booked window, with the iDRAC virtual console open. Every mutating step names its rollback.
- Pre-flight (read-only): the five reads into
before-*.txtandssh ubuntu@192.168.100.2 cat /etc/mlnx-release.[3] Confirm the card isENABLED(0); if it showsRO, stop and plan a Zero Trust exit first.[1] - OOB check (read-only): power-cycle control visible in iDRAC;
screen /dev/rshim0/console 115200shows the Arm prompt. If either fails, refuse the change.[2] - Apply:
sudo mlxconfig -d /dev/mst/mt41692_pciconf0 s INTERNAL_CPU_OFFLOAD_ENGINE=1. Rollback:s INTERNAL_CPU_OFFLOAD_ENGINE=0before the power cycle leaves the card as it was, since nothing applies until the reset.[1] - Power cycle from iDRAC (not
reboot). Rollback: if the host does not POST cleanly within a few minutes, check for the “No Memory Found” auto-reboot described in Segment 4 before acting; after POST, run step 3’s rollback and power-cycle again.[1][6] - Verify (read-only):
sudo mst start; sudo mlxconfig -d /dev/mst/mt41692_pciconf0 q INTERNAL_CPU_OFFLOAD_ENGINEreadsDISABLED(1);lspci -d 15b3: -nnandip linkshow the PFs; note thatssh 192.168.100.2fails by design.[1][3] - Diff:
diff before-lspci.txt <(lspci -d 15b3: -nn)anddiff before-flint.txt <(sudo flint -d /dev/mst/mt41692_pciconf0 q). Expected: no firmware change, same functions. Anything else is a finding.[3] - Return the lab card to DPU mode:
sudo mlxconfig -d /dev/mst/mt41692_pciconf0 s INTERNAL_CPU_OFFLOAD_ENGINE=0, power cycle from iDRAC. Rollback of the rollback: repeat step 3 and 4. VerifyENABLED(0), thenip route get 192.168.100.2showsdev tmfifo_net0ordev tm-brandssh ubuntu@192.168.100.2 cat /etc/mlnx-releasematches your pre-flight value.[1][4] - Save
before-*.txt, the after reads and the timestamps of both power cycles in the lab notes.
- Open the PacketPathExplorer above in DPU mode, step a host-to-Arm packet, then switch to NIC mode and step again. Write down every element that disappeared. Expected: the Arm side, its representors and the tmfifo management path.[1]
- Write a one-page change plan for “switch the two B3220s in an R760 to NIC mode” with the six workflow stages as headings. Expected: pre-flight lists the five reads plus
/etc/mlnx-release; OOB names iDRAC and the card BMC; apply has the exactmlxconfig sline; verify showsDISABLED(1); rollback is=0plus power cycle.[2][3] - Run the four refusals against these requests and mark each accept or refuse: (a) “flip to NIC tonight, we have a 2-hour window, iDRAC works, we did it on the staging box”; (b) “flip to NIC now, management is on the BF ports, no iDRAC”; (c) “flip to NIC, window agreed, iDRAC works, never tried it anywhere”. Expected: accept, refuse (no OOB), refuse (no rehearsal).[2]
- Write the transition sequence for Zero Trust to NIC with the location (host, Arm, BMC) of every command. Expected:
mlxprivhost pon the Arm or RedfishPrivileged, reset,mlxconfig s ...=1on the host, power cycle.[1][5] - Classify these post-change observations as expected or fault, with the reason: (a) no SSH to 192.168.100.2 after going to NIC; (b)
mlxconfig qstillENABLED(0)afterreboot; (c)ROstill present aftermlxprivhost pwithout a reset. Expected: expected (Arm inactive), fault (warm reboot, needs power cycle), fault (system-level reset missing).[1]
Retrieval check
10 questions from memory. Answer before looking anything up; misses become flashcards.
Explain it to a Dell SE
Explain to a Dell SE, in five sentences, how you would switch a customer's BlueField-3 from DPU mode to NIC mode without risking a truck roll.
Sources
Facts in this lesson were checked against DOCA 3.5.0 BlueField Modes of Operation, BlueField BMC 26.04 Modes Configuration, NVIDIA/skills doca-hardware-safety and doca-bf3-deployment, Dell KB 000227031, Broadcom KB 379391, 2026-09-06. Dates are when each page was fetched.
- BlueField Modes of Operation · fetched 2026-09-06 · DOCA 3.5.0
- NVIDIA/skills: doca-hardware-safety SKILL (workflow, hard refusals, cold power-cycle rule) · fetched 2026-09-06
- NVIDIA/skills: doca-bf3-deployment TASKS (pre-flight capture, verification) · fetched 2026-09-06
- NVIDIA/skills: doca-bf3-deployment CAPABILITIES (tmfifo route check) · fetched 2026-09-06
- BlueField BMC 26.04: Modes of Operation Configuration (Redfish) · fetched 2026-09-06
- Dell KB 000227031: 'No Memory Found' event on BlueField-3 enabled PowerEdge during POST · fetched 2026-09-06
- Broadcom KB 379391: Configuring BlueField-3 into DPU mode for vSphere DSE or NIC mode · fetched 2026-09-06
- HowTo Configure NVIDIA BlueField-3 to NIC Mode on VMware vSphere 8.0 · fetched 2026-09-06
- MFT 4.34.1-18 LTS: General Information (mlxprivhost) · fetched 2026-09-06
- Dell KB 000300192: XE9680L, a power cycle is required after updating DPU firmware · fetched 2026-09-06
- BlueField Platform Software Troubleshooting Guide: SoC Management Interface (console, SW_RESET) · fetched 2026-09-06
The same idea elsewhere
Other lessons that cover this ground, sometimes from another course's angle.
- Modes of operation: DPU, NIC, Zero-TrustElsewhere in this course · Same ground: zerotrust, modes and mlxconfig
- Security: Argus, App Shield, and zero trustElsewhere in this course · Same ground: zerotrust, mlxconfig and modes
- E-switch, representors, and switchdevElsewhere in this course · Same ground: mlxconfig, modes and DPU