xref: /dpdk/doc/guides/platform/bluefield.rst (revision 200bc52e5aa0d72e70464c9cd22b55cf536ed13c)
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 <http://www.mellanox.com/page/products_dyn?product_family=256&mtag=soc_overview>`_
15
16
17Supported BlueField Platforms
18-----------------------------
19
20- `BlueField SmartNIC <http://www.mellanox.com/page/products_dyn?product_family=275&mtag=bluefield_smart_nic>`_
21- `BlueField Reference Platforms <http://www.mellanox.com/page/products_dyn?product_family=286&mtag=bluefield_platforms>`_
22- `BlueField Controller Card <http://www.mellanox.com/page/products_dyn?product_family=288&mtag=bluefield_controller_card>`_
23
24
25Common Offload HW Drivers
26-------------------------
27
281. **NIC Driver**
29
30   See :doc:`../nics/mlx5` for Mellanox mlx5 NIC driver information.
31
322. **Cryptodev Driver**
33
34   This is based on the crypto extension support of armv8. See
35   :doc:`../cryptodevs/armv8` for armv8 crypto driver information.
36
37.. note::
38
39   BlueField has a variant having no armv8 crypto extension support.
40
41
42Steps To Setup Platform
43-----------------------
44
45Toolchains, OS and drivers can be downloaded and installed individually from the
46Web. But it is recommended to follow instructions at
47`Mellanox BlueField Software Website
48<http://www.mellanox.com/page/products_dyn?product_family=279&mtag=bluefield_software>`_.
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
63make build
64^^^^^^^^^^
65
66.. code-block:: console
67
68        make config T=arm64-bluefield-linux-gcc
69        make -j
70
71meson build
72^^^^^^^^^^^
73
74.. code-block:: console
75
76        meson build
77        ninja -C build
78
79Cross Compilation
80~~~~~~~~~~~~~~~~~
81
82Refer to :doc:`../linux_gsg/cross_build_dpdk_for_arm64` to install the cross
83toolchain for ARM64. Base on that, additional header files and libraries are
84required:
85
86   - libibverbs
87   - libmnl
88   - libmlx5
89   - libnl-3
90   - libnl-route-3
91
92Such header files and libraries can be cross-compiled and installed on to the
93cross toolchain directory like depicted in
94:ref:`arm_cross_build_getting_the_prerequisite_library`, but those can also be
95simply copied from the filesystem of a working BlueField platform. The following
96script can be run on a BlueField platform in order to create a supplementary
97tarball for the cross toolchain.
98
99.. code-block:: console
100
101        mkdir -p aarch64-linux-gnu/libc
102        pushd $PWD
103        cd aarch64-linux-gnu/libc
104
105        # Copy libraries
106        mkdir -p lib64
107        cp -a /lib64/libibverbs* lib64/
108        cp -a /lib64/libmnl* lib64/
109        cp -a /lib64/libmlx5* lib64/
110        cp -a /lib64/libnl-3* lib64/
111        cp -a /lib64/libnl-route-3* lib64/
112
113        # Copy header files
114        mkdir -p usr/include/infiniband
115        mkdir -p usr/include/libmnl
116        cp -a /usr/include/infiniband/ib_user_ioctl_verbs.h usr/include/infiniband/
117        cp -a /usr/include/infiniband/mlx5*.h usr/include/infiniband/
118        cp -a /usr/include/infiniband/tm_types.h usr/include/infiniband/
119        cp -a /usr/include/infiniband/verbs*.h usr/include/infiniband/
120        cp -a /usr/include/libmnl/libmnl.h usr/include/libmnl/
121
122        # Create supplementary tarball
123        popd
124        tar cf aarch64-linux-gnu-mlx.tar aarch64-linux-gnu/
125
126Then, untar the tarball at the cross toolchain directory on the x86 host.
127
128.. code-block:: console
129
130        cd $(dirname $(which aarch64-linux-gnu-gcc))/..
131        tar xf aarch64-linux-gnu-mlx.tar
132
133make build
134^^^^^^^^^^
135
136.. code-block:: console
137
138        make config T=arm64-bluefield-linux-gcc
139        make -j CROSS=aarch64-linux-gnu- CONFIG_RTE_KNI_KMOD=n CONFIG_RTE_EAL_IGB_UIO=n
140
141meson build
142^^^^^^^^^^^
143
144.. code-block:: console
145
146        meson build --cross-file config/arm/arm64_bluefield_linux_gcc
147        ninja -C build
148