Getting familiar with BlueField-2¶
I wanted to familiarize myself with DPUs and found the NVIDIA / Mellanox
BlueField-2 DPU on ebay with model number BF2H532C
.
For debugging it seems like it would be good to get a hold of:
MBF35-DKIT
Host HW¶
Assemble parts
Physically install the
Host FW/OS¶
Disable Secure Boot
Install Ubuntu 24.04
You can manually load the drivers with mst start
or set on boot via:
systemctl enable mst.service
systemctl start mst.service
I would recommend doing the above, otherwise the boot-process will be hanging until timeout. With messages such as:
Now that the drivers are loaded, i see:
10:00.0 Ethernet controller: Mellanox Technologies MT42822 BlueField-2 integrated ConnectX-6 Dx network controller (rev 01)
10:00.1 Ethernet controller: Mellanox Technologies MT42822 BlueField-2 integrated ConnectX-6 Dx network controller (rev 01)
10:00.2 Ethernet controller: Mellanox Technologies BlueField DPU Family Auxiliary Communication Channel [BlueField Family] (rev 01)
10:00.3 DMA controller: Mellanox Technologies MT42822 BlueField-2 SoC Management Interface (rev 01)
That is, now there is this new device:
10:00.2 Ethernet controller: Mellanox Technologies BlueField DPU Family Auxiliary Communication Channel [BlueField Family] (rev 01)
Which is probably what is needed.
Then ensure that the Mellanox drivers are loaded:
mst start
Now devices pop up:
ls /dev/mst/
mt41686_pciconf0 mt41686_pciconf0.1 mt49873_pciconf0.2
Should be possible to get a login using:
screen /dev/rshim0/console 115200
DPU¶
Default login is ubuntu
/ ubuntu
.
Change the password to something else upon first login. E.g. Mellanox.321!
Check the version:
cat /etc/mlnx-release
cat /etc/lsb-release
bfb-info
I got:
DOCA_2.0.2_BSP_4.0.3_Ubuntu_22.04-11.23-04.prod
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=22.04
DISTRIB_CODENAME=jammy
DISTRIB_DESCRIPTION="Ubuntu 22.04.3 LTS"
And the bfb-info:
Versions:
ATF: v2.2(release):4.0.2-37-g6b2609f
UEFI: 4.0.2-15-g0613586
BSP: mlxbf-bootimages <none>
DOCA Base (OFED): 23.04-0.5.3.0
MFT: 4.24.0-72
DOCA: 2.0.2027-1
Firmware:
BF2 FW: 24.36.7506
mlnx-dpdk: 'MLNX_DPDK 22.11.1.4.2'
mlx-regex 1.2-ubuntu1
virtio-net-controller 1.5.18-1
collectx-clxapi 1.13.2
libvma 9.8.20-1
libxlio 3.0.2-1.2304053
dpcp 1.1.39-1.2304053
SNAP3:
- mlnx-libsnap 1.5.2-5
- mlnx-snap 3.7.2-8
- spdk 23.01-6
DOCA:
- doca-apps 2.0.2027-1
- doca-apps-dev 2.0.2027-1
- doca-grpc 2.0.2027-1
- doca-grpc-dev 2.0.2027-1
- doca-libs 2.0.2027-1
- doca-prime-runtime 2.0.2027-1
- doca-prime-sdk 2.0.2027-1
- doca-prime-tools 2.0.2027-1
- doca-runtime 2.0.2027-1.23.04.0.5.3.0.bf.4.0.2.12679.11.23
- doca-runtime-kernel 2.0.2027-1.23.04.0.5.3.0.bf.4.0.2.12679.11.23
- doca-runtime-user 2.0.2027-1.23.04.0.5.3.0.bf.4.0.2.12679.11.23
- doca-samples 2.0.2027-1
- doca-sdk 2.0.2027-1.23.04.0.5.3.0.bf.4.0.2.12679.11.23
- doca-sdk-kernel 2.0.2027-1.23.04.0.5.3.0.bf.4.0.2.12679.11.23
- doca-sdk-user 2.0.2027-1.23.04.0.5.3.0.bf.4.0.2.12679.11.23
- doca-services 2.0.2027-1
- doca-tools 2.0.2027-1.23.04.0.5.3.0.bf.4.0.2.12679.11.23
- dpa-compiler 1.4.0
- dpacc 1.4.0
- flexio 23.4.1494
- libdoca-libs-dev 2.0.2027-1
- librxpcompiler-dev 23.04.1
- librxpcompiler-dev 23.04.1
- rxp-compiler 23.04.1
- rxpbench 23.04.0
OFED:
dpcp 1.1.39-1.2304053
ibacm 2304mlnx44-1.2304053
ibutils2 2.1.1-0.162.MLNX20230417.g738750f2.2304053
ibverbs-providers:arm64 2304mlnx44-1.2304053
ibverbs-utils 2304mlnx44-1.2304053
infiniband-diags 2304mlnx44-1.2304053
libibmad5:arm64 2304mlnx44-1.2304053
libibmad-dev:arm64 2304mlnx44-1.2304053
libibnetdisc5:arm64 2304mlnx44-1.2304053
libibumad3:arm64 2304mlnx44-1.2304053
libibumad-dev:arm64 2304mlnx44-1.2304053
libibverbs1:arm64 2304mlnx44-1.2304053
libibverbs-dev:arm64 2304mlnx44-1.2304053
libopensm 5.15.0.MLNX20230417.d84ecf64-0.1.2304053
libopensm-devel 5.15.0.MLNX20230417.d84ecf64-0.1.2304053
libopenvswitch:arm64 2.17.7-1.2304053
librdmacm1:arm64 2304mlnx44-1.2304053
librdmacm-dev:arm64 2304mlnx44-1.2304053
libvma 9.8.20-1
libvma-dev 9.8.20-1
libvma-utils 9.8.20-1
libxlio 3.0.2-1.2304053
libxlio-dev 3.0.2-1.2304053
libxlio-utils 3.0.2-1.2304053
mlnx-dpdk 22.11.0-1.4.2.23040530.1.4.2
mlnx-dpdk-dev:arm64 22.11.0-1.4.2.23040530.1.4.2
mlnx-ethtool 6.0-1.2304053
mlnx-iproute2 6.2.0-1.2304053
mlnx-ofed-kernel-utils 23.04-OFED.23.04.0.5.3.1.bf.kver.5.15.0-1015-bluefield
mlnx-tools 23.04-0.2304053
mstflint 4.16.1-2.2304053
opensm 5.15.0.MLNX20230417.d84ecf64-0.1.2304053
openvswitch-common 2.17.7-1.2304053
openvswitch-common 2.17.7-1.2304053
openvswitch-ipsec 2.17.7-1.2304053
openvswitch-ipsec 2.17.7-1.2304053
openvswitch-switch 2.17.7-1.2304053
openvswitch-switch 2.17.7-1.2304053
perftest 23.04.0-0.23.g63e250f.2304053
python3-openvswitch 2.17.7-1.2304053
python3-pyverbs:arm64 2304mlnx44-1.2304053
rdmacm-utils 2304mlnx44-1.2304053
rdma-core 2304mlnx44-1.2304053
srptools 2304mlnx44-1.2304053
ucx 1.15.0-1.2304053
PCI devices:¶
DEVICE_TYPE MST PCI RDMA NET NUMA BlueField2(rev:1) /dev/mst/mt41686_pciconf0 10:00.0 -1
BlueField2(rev:1) /dev/mst/mt41686_pciconf0.1 10:00.1 -1
BlueField2(rev:1) /dev/mst/mt49873_pciconf0.2 10:00.2 -1
BF Config¶
DOCA_2.0.2_BSP_4.0.3_Ubuntu_22.04-11.23-04.prod
Content of bf.cfg
:
ubuntu_PASSWORD='$1$tFWHnhQf$vn2b7vms6Apf287uZi75./'
The password is created with openssl passwd -1 and the input ‘Odus.321’
Download the latest DOCA and install it with:
bfb-install --bfb bf-bundle-2.10.0-147_25.01_ubuntu-22.04_prod.bfb --rshim rshim0
Resulted in:
Checking if local host has root access...
Checking if rshim driver is running locally...
Pushing bfb
192KiB 0:00:05 [23.3KiB/s] [ <=> ]
1.62MiB 0:00:21 [93.1KiB/s] [ <=> ]
13.6MiB 0:00:31 [4.96MiB/s] [ <=> ]
1.25GiB 0:02:01 [10.6MiB/s] [ <=> ]
Collecting BlueField booting status. Press Ctrl+C to stop…
INFO[BL2]: start
INFO[BL2]: boot mode (rshim)
INFO[BL2]: DDR POST passed
INFO[BL2]: UEFI loaded
INFO[BL31]: start
INFO[BL31]: lifecycle GA Secured
INFO[BL31]: runtime
INFO[UEFI]: UPVS valid
INFO[UEFI]: eMMC init
INFO[UEFI]: eMMC probed
INFO[UEFI]: PMI: updates started
INFO[UEFI]: PMI: total updates: 1
INFO[UEFI]: PMI: updates completed, status 0
INFO[UEFI]: PCIe enum start
INFO[UEFI]: PCIe enum end
INFO[UEFI]: UEFI Secure Boot (enabled)
INFO[UEFI]: Redfish enabled
WARN[UEFI]: UPVS reclaim start
WARN[UEFI]: UPVS reclaim done
INFO[UEFI]: exit Boot Service
INFO[MISC]: Erasing eMMC drive: /dev/mmcblk0
INFO[MISC]: Ubuntu installation started
INFO[MISC]: Installing OS image
INFO[MISC]: Ubuntu installation completed
INFO[MISC]: Installed NIC Firmware is the same as provided. Skipping NIC Firmware update.
INFO[MISC]: Installation finished
Then doing cat /dev/rshim0/misc
:
DISPLAY_LEVEL 2 (0:basic, 1:advanced, 2:log)
BOOT_MODE 1 (0:rshim, 1:emmc, 2:emmc-boot-swap)
BOOT_TIMEOUT 300 (seconds)
USB_TIMEOUT 40 (seconds)
DROP_MODE 0 (0:normal, 1:drop)
SW_RESET 0 (1: reset)
DEV_NAME pcie-0000:10:00.3
DEV_INFO BlueField-2(Rev 1)
OPN_STR N/A
FORCE_CMD 0 (1: send Force command)
---------------------------------------
Log Messages
---------------------------------------
INFO[BL2]: start
INFO[BL2]: boot mode (emmc)
INFO[BL2]: DDR POST passed
INFO[BL2]: UEFI loaded
INFO[BL31]: start
INFO[BL31]: lifecycle GA Secured
INFO[BL31]: runtime
INFO[UEFI]: UPVS valid
INFO[UEFI]: eMMC init
INFO[UEFI]: eMMC probed
INFO[UEFI]: PCIe enum start
INFO[UEFI]: PCIe enum end
INFO[UEFI]: PMI: updates started
INFO[UEFI]: PMI: total updates: 1
INFO[UEFI]: PMI: updates completed, status 0
INFO[UEFI]: PMI: updates started
INFO[UEFI]: PMI: total updates: 6
INFO[UEFI]: PMI: updates completed, status 0
INFO[UEFI]: UEFI Secure Boot (enabled)
INFO[UEFI]: Redfish enabled
INFO[UEFI]: RF DHCPv6 failed
WARN[UEFI]: UPVS reclaim start
WARN[UEFI]: UPVS reclaim done
INFO[UEFI]: exit Boot Service
INFO[MISC]: Linux up
INFO[MISC]: DPU is ready
INFO[MISC]: : DPU is ready
disable tmfifo_net0 as it is grabbing the gateway / route…
Host System¶
Hardware¶
…
BIOS/UEFI Setup¶
Disable Secure Boot
To allow running unsigned drivers / kernel
Enable SR-IOV
Host System Setup¶
Install Ubuntu 24.04
This seems to be the simplest to get the DOCA SDK running
- An Ubuntu variant of BFB (BlueField-Bundle) came pre-installed, thus, went
with this version when upgrade the BFB and assumed the simplest would be to use the same Linux distribution on the host as well