• Stars
    star
    114
  • Rank 307,028 (Top 7 %)
  • Language
    C
  • License
    Other
  • Created almost 8 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Mstflint - an open source version of MFT (Mellanox Firmware Tools)
Mellanox Technologies - www.mellanox.com
****************************************

MSTFLINT Package - Firmware Burning and Diagnostics Tools

1) Overview
    This package contains a burning tool and diagnostic tools for Mellanox
    manufactured HCA/NIC cards. It also provides access to the relevant source
    code. Please see the file LICENSE for licensing details.
	This package is based on a subset of the Mellanox Firmware Tools (MFT) package.
	For a full documentation of the MFT package, please refer to the downloads page
	in Mellanox web site.

    ----------------------------------------------------------------------------
    NOTES:
    As of mstflint-4.8.0 ./configure --enable-cs will be deprecated, instead need to use
    ./configure --enable-openssl which will enable all open SSL features including CS.

    As of mstflint-4.6.0 hca_self_test.ofed will not be a part of msflint package,
    it will be found in ofed-scripts  provided by mellanox OFED package.

    This burning tool should be used only with Mellanox-manufactured
    HCA/NIC cards. Using it with cards manufactured by other vendors
    may be harmful  to  the cards (due to different configurations).
    Using the diagnostic tools is normally safe for all HCAs/NICs.
    ----------------------------------------------------------------------------

2) Package Contents
    a) mstflint source code
    b) mflash lib
       This lib provides low level Flash access through Mellanox HCAs.
    c) mtcr lib (implemented in mtcr.h file)
       This lib enables access to HCA hardware registers.
    d) mstregdump utility
       This utility dumps hardware registers from Mellanox hardware
       for later analysis by Mellanox.
    e) mstvpd
       This utility dumps the on-card VPD.
    f) mstmcra
       This debug utility reads/writes a to/from the device configuration register space.
    g) mstconfig
       This tool sets or queries non-volatile configurable options for Mellanox HCAs.
    h) mstfwmanager
       Mellanox firmware update and query utility which scans the system for available Mellanox devices (only mst
       PCI devices) and performs the necessary firmware updates.
    i) mstreg
       The mlxreg utility allows users to obtain information regarding supported access registers, such as their fields and
       attributes.
    j) mstfwtrace
       The mstfwtrace utility extracts and prints trace messages generated by the firmware running on 5th generation
       devices iRISCs. This tool supports secure FW flow only.
    k) mstlink
       The mstlink tool is used to check and debug link status and issues related to them.

3) Installation
    a) Build the mstflint utility. This package is built using a standard
       autotools method.

	   NOTE: if you are trying to build from the GitHub repository, need to run ./autogen.sh first.

       Example:
       > ./configure
       > make
       > make install

       - Run "configure --help" for custom configuration options.
       - Typically, root privileges are required to run "make install"

    b) Installation on DEB based OS. This package is using Debian package development tools.

       Example:
       > dpkg-buildpackage -uc -us
       > dpkg -i ../mstflint_<version>_<arch>.deb
       > dpkg -i ../mstflint-dkms_<version>_all.deb

4) Hardware Access Device Names
   The tools in this package require a device name in the command
   line. The device name is the identifier of the target CA.
   This section describes the device name formats and the HW access flow.

   a) The devices can be accessed by their PCI ID as displayed by lspci
      (bus:dev.fn).
      Example:
      # List all Mellanox devices
      > /sbin/lspci -d 15b3:
        02:00.0 Ethernet controller: Mellanox Technologies MT25448 [ConnectX EN 10GigE, PCIe 2.0 2.5GT/s] (rev a0)

      # Use mstflint tool to query the firmware on this device
      > mstflint -d 02:00.0 q

    b) When the IB driver (mlx4 or mthca) is loaded, the devices can be accessed
       by their IB device name.
       Example:
       # List the IB devices
       > ibv_devinfo | grep hca_id
         hca_id: mlx4_0

       # Use mstvpd tool to dump the VPD of this device
       > mstvpd mlx4_0

    c) PCI configuration access
       In examples a and b above, the device is accessed via PCI Memory Mapping.
       The device can also be accessed by PCI configuration cycles.
       PCI configuration access is slower and less safe than memory access --
       use it only if methods a and b above do not work.

       To force configuration access, use device names in the following format:
       /proc/bus/pci/<bus>/<dev.fn>

       Example:
       # List all Mellanox devices
       > /sbin/lspci -d 15b3:
         02:00.0 Ethernet controller: Mellanox Technologies MT25448 [ConnectX EN 10GigE, PCIe 2.0 2.5GT/s] (rev a0)

       # Use mstregdump to dump HW registers, using PCI config cycles
       > mstregdump /proc/bus/pci/02/00.0 > crdump.log

       Note: Typically, you will need root privileges for hardware access

	d) Accessing a multi-function device:

	   In some configuration, the CA device identifies as a multi-function device on PCI. E.G.:
	   > /sbin/lspci -d 15b3:
	   07:00.0 Ethernet controller: Mellanox Technologies MT26468 [ConnectX EN 10GigE, PCIe 2.0 5GT/s] (rev b0)
	   07:00.1 Ethernet controller: Mellanox Technologies MT26468 [ConnectX EN 10GigE, PCIe 2.0 5GT/s] (rev b0)
	   07:00.2 Ethernet controller: Mellanox Technologies MT26468 [ConnectX EN 10GigE, PCIe 2.0 5GT/s] (rev b0)
	   07:00.3 Ethernet controller: Mellanox Technologies MT26468 [ConnectX EN 10GigE, PCIe 2.0 5GT/s] (rev b0)
	   07:00.4 Ethernet controller: Mellanox Technologies MT26468 [ConnectX EN 10GigE, PCIe 2.0 5GT/s] (rev b0)
	   07:00.5 Ethernet controller: Mellanox Technologies MT26468 [ConnectX EN 10GigE, PCIe 2.0 5GT/s] (rev b0)
	   07:00.6 Ethernet controller: Mellanox Technologies MT26468 [ConnectX EN 10GigE, PCIe 2.0 5GT/s] (rev b0)
	   07:00.7 Ethernet controller: Mellanox Technologies MT26468 [ConnectX EN 10GigE, PCIe 2.0 5GT/s] (rev b0)

	   These multiple "logical" devices are actually a single physical device, so firmware update or "physical"
	   diagnostics should be run only on one of the functions.

	   When the device driver is loaded, only the primary physical function of the device can be accessed.
	   In Linux that would typically be function 0. This function can be accessed using memory mapping, as
	   described in sub section a) above. E.G.:
	   > mstflint -d 07:00.0 q

	   When the device driver is not loaded, all the functions can be accessed using configuration cycles, as
	   described in sub section c) above. It is recommended to use function 0 for FW update or diagnostics, E.G.:
	   > mstflint -d /proc/bus/pci/07/00.0 q

5) Usage (mstflint):
       Read mstflint usage. Enter "./mstflint -h" for a short help message, or
       "./mstflint -hh" for a detailed help message.

       Obtaining firmware files:
       If you purchased your card from Mellanox Technologies, please use the
       Mellanox website (www.mellanox.com, under 'Firmware' downloads) to
       download the firmware for your card.
       If you purchased your card from a vendor other than Mellanox, get a
       specific firmware configuration (INI) file from your HCA card vendor and
       generate the binary image.

       Use mstflint to burn a device according to the burning instructions in
       "mstflint -hh" and in Mellanox web site firmware page.

6) Usage (mstregdump):
       An internal register dump is displayed to the standard output.
       Please store it in a file for analysis by Mellanox.

       Example:
       > mstregdump mthca0 > dumpfile

7) Usage (mstvpd):
    A VPD dump is displayed to the standard output.
	A list of keywords to dump can be supplied after the -- flag
	to apply an output filter.

	Examples:
	> mstvpd mlx4_0
	ID: Hawk Dual Port
	PN: MNPH29C-XTR
	EC: X2
	SN: MT1001X00749
	V0: PCIe Gen2 x8
	V1: N/A
	YA: N/A
	RW:

    > mstvpd mlx4_0 -- PN ID
	PN: MNPH29C-XTR
	ID: Hawk Dual Port

8)  Usage (mstconfig):
    Read mstconfig usage. Enter "mstconfig -h" for a help message.

9)  Usage (mstreg):
    Read mstconfig usage. Enter "mstreg -h" for a help message.

10) Usage (mstfwtrace):
    Read mstconfig usage. Enter "mstfwtrace -h" for a help message.

11) Usage (mstlink):
    Read mstconfig usage. Enter "mstlink -h" for a help message.

12) Problem Reporting:
	Please collect the following information when reporting issues:

	uname -a
	cat /etc/issue
	cat /proc/bus/pci/devices
	mstflint -vv
	lspci
        mstflint -d 02:00.0 v
        mstflint -d 02:00.0 q
        mstvpd 02:00.0

More Repositories

1

sockperf

Network Benchmarking Utility
C++
567
star
2

libvma

Linux user space library for network socket acceleration based on RDMA compatible network adaptors
C++
559
star
3

SparkRDMA

This is archive of SparkRDMA project. The new repository with RDMA shuffle acceleration for Apache Spark is here: https://github.com/Nvidia/sparkucx
Java
240
star
4

nv_peer_memory

C
234
star
5

network-operator

Mellanox Network Operator
Go
202
star
6

k8s-rdma-shared-dev-plugin

Go
188
star
7

mlxsw

C
167
star
8

nccl-rdma-sharp-plugins

RDMA and SHARP plugins for nccl library
C
154
star
9

k8s-rdma-sriov-dev-plugin

Kubernetes Rdma SRIOV device plugin
Go
109
star
10

gpu_direct_rdma_access

example code for using DC QP for providing RDMA READ and WRITE operations to remote GPU memory
C
99
star
11

mlnx-tools

Mellanox userland tools and scripts
Python
95
star
12

docker-sriov-plugin

Docker networking plugin for SRIOV and passthrough interfaces
Go
76
star
13

rdmamap

RDMA library for mapping associate netdevice and character devices
Go
58
star
14

ib-kubernetes

Go
53
star
15

ofed-docker

Shell
41
star
16

scalablefunctions

All about Scalable functions
39
star
17

SAI-Implementation

This repository contains SAI implementation for Mellanox hardware.
C
37
star
18

SAI-P4-BM

C++
36
star
19

linux-sysinfo-snapshot

Linux Sysinfo Snapshot
Python
34
star
20

SwitchRouterSDK-interfaces

C
32
star
21

libxlio

C++
31
star
22

mkt

Mellanox Kernel developers Toolset (MKT)
Python
25
star
23

mlx_steering_dump

Mellanox Steering Dump Tool for SWS and HWS acceleration
Python
24
star
24

ovs-tests

A collection of tests for the Open vSwitch HW offload.
Shell
23
star
25

R4H

RDMA for HDFS
Java
23
star
26

bfb-build

BFB (BlueField boot stream and OS installer) build environment
Shell
22
star
27

ibdump

C
19
star
28

ufm_sdk_3.0

Python
18
star
29

DCTrafficGen

Data Center Traffic Generator Library
C++
17
star
30

scapy-ui

Scapy UI - Web based scapy tools
Python
17
star
31

rshim-user-space

Linux based user-space RSHIM driver for the Mellanox BlueField SoC
C
17
star
32

hw_offload_api_examples

Examples of usage for Mellanox HW offloads
C
14
star
33

vnf_acceleration_example

C
14
star
34

nvidia-k8s-ipam

IPAM plugin for kubernetes
Go
13
star
35

pcx

Persistent Collectives X- A collective communication library for high performance, low cost persistent collectives over RDMA devices.
C++
13
star
36

hw-mgmt

Shell
13
star
37

rshim

BlueField RSHIM driver
C
12
star
38

rdma_fc

Demonstration of flow control over RDMA fabric
C
12
star
39

ngc_multinode_perf

Performance tests for multinode NGC.Ready certification
Shell
11
star
40

ipoib-cni

IP Over Infiniband (IPoIB) CNI Plugin
Go
11
star
41

pka

Mellanox BlueField PKA support
C
11
star
42

UDA

Unstructured Data Accelerator (RDMA) for Hadoop MapReduce
C++
10
star
43

mlxdevm-go

mlxdevm library for for device management in go language
Go
10
star
44

bfscripts

Collection of scripts used for BlueField SoC system management.
Shell
10
star
45

k8s-images

Dockerfile
10
star
46

MT.ComB

Multi-Threaded (MT) Communication Benchmark
C
8
star
47

container_tools

Few useful container orchestration, deployment tools when using RDMA
Go
8
star
48

kubernetes-ci

CI for Kubernetes with Mellanox features
Shell
8
star
49

devx

Objective-C
8
star
50

libpsample

C
8
star
51

config-tools

Mellanox Configuration tool for Linux Host
Shell
7
star
52

tls-af_ktls_tool

C
7
star
53

tls-offload

C
7
star
54

OVS

C
7
star
55

EC

!!! NOTICE: DEPRECATED !!! Java Erasure Coding NIC Offload library. For the C level EC offloads, use MLNX_OFED libraries and documentation.
C
6
star
56

TFDeploy

TensorFlow deploy script to easily run on multiple servers
Python
6
star
57

NVMEoF-P2P

A fork of the Linux kernel for NVMEoF target driver using PCI P2P capabilities for full I/O path offloading.
C
6
star
58

napalm

Network Automation and Programmability Abstraction Layer with Multivendor support
Python
5
star
59

containerized-ovs-forwarder

Python
5
star
60

kmtracker

Linux Kernel memory tracker
Go
5
star
61

bluefield-linux

Linux kernel to support Mellanox BlueField SoCs
C
5
star
62

bf-release

BlueField release files, configuration files and post-installation steps
Python
5
star
63

mofed_dockerfiles

MOFED Docker files
Roff
5
star
64

docker-nmos-cpp

Shell
4
star
65

wjh-linux

Python
4
star
66

ALVS

C
4
star
67

Switch-SDK-drivers

Switch SDK Driver
C
4
star
68

container_scripts

Some container scripts
Shell
4
star
69

ipmb-host

IPMB driver to send requests from the BlueField to the BMC on CentOS
C
4
star
70

mlnx_lib

C
4
star
71

nic-configuration-operator

Nvidia Networking NIC Configuration Operator For Kubernetes
Go
4
star
72

mellanox-netdev-stdlib-mlnxos

MLNX_OS specific Provider code for "netdev-stdlib". Netdev provides a set of network resource abstractions for automating network device configuration using Puppet
Ruby
4
star
73

libmlxdevm

Mellanox device management C library
C
3
star
74

virtio-emulation

C
3
star
75

dpdk-mlx4

DPDK.org tree with enhanced librte_pmd_mlx4
Objective-C
3
star
76

sai_p4_compiler

C++
3
star
77

mlnx-project-config

Python
3
star
78

ATC

C
3
star
79

regex

C
3
star
80

network-operator-docs

NVIDIA Network Operator documentation sources
PowerShell
3
star
81

nic-kernel

Nvidia NBU integration kernel
C
3
star
82

DPDK-18.11-for-Ubuntu-18.04

C
3
star
83

nagios4mlnxos

Nagios Plugin for Mellanox's Switches
Perl
3
star
84

meta-bluefield

Shell
3
star
85

NNT-Linux-driver

NNT Linux driver for MFT & MSTFLINT packages
C
3
star
86

OpenAI.recipe

Recommended configuration for large-scale setup - OpenAI
2
star
87

ci-demo

Groovy
2
star
88

Kubespray-role-for-RDMA-shared-DP

2
star
89

libdpcp

C++
2
star
90

doca-driver-build

Shell
2
star
91

ceilometer_sriov_counters

Plugin for Ceilometer SRIOV traffic counters
Python
2
star
92

mlnx-openstack

Puppet manifests for deploying Mellanox OpenStack plugins
Puppet
2
star
93

QAT_Engine

C
2
star
94

iproute2

2
star
95

nic-feature-discovery

NVIDIA NIC feature discovery
Go
2
star
96

eswitchd

Python
2
star
97

mlx-strongswan

Mellanox version of strongswan cloned from strongswan-5.9.0.tar.gz
C
2
star
98

nginx_automation

This is simple Python automation for Nginx - VMA related activity
Python
2
star
99

ipsec-offload

2
star
100

dpdk-utest

Rust
2
star