xref: /dpdk/doc/guides/platform/bluefield.rst (revision 68a03efeed657e6e05f281479b33b51102797e15)
1..  SPDX-License-Identifier: BSD-3-Clause
2    Copyright 2019 Mellanox Technologies, Ltd
3
4Mellanox BlueField Board Support Package
5========================================
6
7This document has information about steps to setup Mellanox BlueField platform
8and common offload HW drivers of **Mellanox BlueField** family SoC.
9
10
11Supported BlueField family SoCs
12-------------------------------
13
14- `BlueField <https://docs.mellanox.com/category/bluefieldsnic>`_
15
16
17Supported BlueField Platforms
18-----------------------------
19
20- `BlueField-1 <https://docs.mellanox.com/display/bluefieldsniceth/Introduction>`_
21- `BlueField-2 <https://docs.mellanox.com/display/BlueField2DPUENUG/Introduction>`_
22
23
24Common Offload HW Drivers
25-------------------------
26
271. **NIC Driver**
28
29   See :doc:`../nics/mlx5` for Mellanox mlx5 NIC driver information.
30
312. **Cryptodev Driver**
32
33   This is based on the crypto extension support of armv8. See
34   :doc:`../cryptodevs/armv8` for armv8 crypto driver information.
35
36.. note::
37
38   BlueField has a variant having no armv8 crypto extension support.
39
40
41Steps To Setup Platform
42-----------------------
43
44Toolchains, OS and drivers can be downloaded and installed individually
45from the web, but it is recommended to follow instructions at:
46
47- `Mellanox BlueField-1 Software Website <https://docs.mellanox.com/display/BlueFieldSWv31011424/SmartNIC+Bring-Up+and+Driver+Installation>`_
48- `Mellanox BlueField-2 Software Website <https://docs.mellanox.com/display/NVIDIABlueField2DPUQSG#NVIDIABlueField2DPUSoftwareQuickStartGuide-Post-installationProcedurePost-installationProcedure>`_
49
50
51Compile DPDK
52------------
53
54DPDK can be compiled either natively on BlueField platforms or cross-compiled on
55an x86 based platform.
56
57Native Compilation
58~~~~~~~~~~~~~~~~~~
59
60Refer to :doc:`../nics/mlx5` for prerequisites. Either Mellanox OFED/EN or
61rdma-core library with corresponding kernel drivers is required.
62
63.. code-block:: console
64
65        meson build
66        ninja -C build
67
68Cross Compilation
69~~~~~~~~~~~~~~~~~
70
71Refer to :doc:`../linux_gsg/cross_build_dpdk_for_arm64` to install the cross
72toolchain for ARM64. Base on that, additional header files and libraries are
73required:
74
75   - libibverbs
76   - libmlx5
77   - libnl-3
78   - libnl-route-3
79
80Such header files and libraries can be cross-compiled and installed
81in the cross toolchain environment.
82They can also be simply copied from the filesystem of a working BlueField platform.
83The following script can be run on a BlueField platform in order to create
84a supplementary tarball for the cross toolchain.
85
86.. code-block:: console
87
88        mkdir -p aarch64-linux-gnu/libc
89        pushd $PWD
90        cd aarch64-linux-gnu/libc
91
92        # Copy libraries
93        mkdir -p lib64
94        cp -a /lib64/libibverbs* lib64/
95        cp -a /lib64/libmlx5* lib64/
96        cp -a /lib64/libnl-3* lib64/
97        cp -a /lib64/libnl-route-3* lib64/
98
99        # Copy header files
100        mkdir -p usr/include/infiniband
101        cp -a /usr/include/infiniband/ib_user_ioctl_verbs.h usr/include/infiniband/
102        cp -a /usr/include/infiniband/mlx5*.h usr/include/infiniband/
103        cp -a /usr/include/infiniband/tm_types.h usr/include/infiniband/
104        cp -a /usr/include/infiniband/verbs*.h usr/include/infiniband/
105
106        # Create supplementary tarball
107        popd
108        tar cf aarch64-linux-gnu-mlx.tar aarch64-linux-gnu/
109
110Then, untar the tarball at the cross toolchain directory on the x86 host.
111
112.. code-block:: console
113
114        cd $(dirname $(which aarch64-linux-gnu-gcc))/..
115        tar xf aarch64-linux-gnu-mlx.tar
116
117.. code-block:: console
118
119        meson build --cross-file config/arm/arm64_bluefield_linux_gcc
120        ninja -C build
121