image image image image image

On This Page

The mlx_fpga utility will be deprecated as of MFT v4.18.0. 


mlx_fpga tool allows the user to burn and update a new FPGA image on NVIDIA Innova adapter cards. For instructions on how to burn, please refer to Burning the FPGA’s Flash Device using the mlx_fpga Burning Tool.

The tool also enables the user to read/write individual registers in the FPGA configuration space.

Tool Requirements

  • An Innova IPsec 4 Lx EN / Innova Flex 4 Lx EN adapter card with an FPGA device
  • For Innova IPsec 4 Lx EN: Load the mlx5_fpga_tools module
  • For Innova Flex 4 Lx EN: Load the mlx_accel_tools module

Note: The module is included in the Innova driver which is supplied for this product line only, and available through the Support.

  • Start mst service with the fpga lookup flag (mst start --with_fpga)

mlx_fpga Synopsis

where:

-d|--device <device> FPGA mst device interface
-v|--versionDisplay version info
-h|--help Display help message
-f|--forceNon-interactive mode, answer yes to all questions
r |read <addr> Read debug register in address
w |write <addr> <data> Write data to debug register in address
b |burn <image file/s>Burn the image on the flash
l |load Load image from flash (--factory - load image from factory flash)
clear_semaphore Unlock flash controller semaphore
reset Reset flash controller (--gw) or FPGA (--fpga)
q |query Query general FPGA information
set_fw_mgmt <disable|enable> Disable/Enable FPGA management by the Firmware

Examples of mlx_fpga Usage

Adding FPGA mst Device Interface

For Innova IPsec 4 Lx EN: Load the mlx5_fpga_tools module.

# modprobe mlx5_fpga_tools
# mst start --with_fpga
# mst status
MST modules:
------------
MST PCI module is not loaded
MST PCI configuration module is not loaded
MST devices:
------------
No MST devices were found nor MST modules were loaded.
You may need to run 'mst start' to load MST modules.
FPGA devices:
-------------------
/dev/mst/mt4117_pciconf0_fpga_i2c
/dev/mst/mt4117_pciconf1_fpga_rdma1

Note: In the last line, it is recommended to use the RDMA device as it is faster. I2C is used for recovery purposes when RDMA is not functional.

For Innova Flex 4 Lx EN: Load the mlx_accel_tools module.

# modprobe mlx_accel_tools
# mst start --with_fpga
# mst status
MST modules:
------------
MST PCI module is not loaded
MST PCI configuration module is not loaded
MST devices:
------------
No MST devices were found nor MST modules were loaded.
You may need to run 'mst start' to load MST modules.
FPGA devices:
-------------------
/dev/mst/mt4117_pciconf0_fpga_i2c
/dev/mst/mt4117_pciconf1_fpga_rdma

Note: In the last line, it is recommended to use the RDMA device as it is faster. I2C is used for recovery purposes when RDMA is not functional.

For recovery only, where modules are broken or missing.

# mst start --with_fpga_fw_access
Starting MST (Mellanox Software Tools) driver set
Loading MST PCI module - Success
Loading MST PCI configuration module - Success
Create devices
Unloading MST PCI module (unused) - Success
# mst status
MST modules:
------------
MST PCI module is not loaded
MST PCI configuration module loaded
MST devices:
------------
/dev/mst/mt4117_pciconf0         - PCI configuration cycles access.
                                   domain:bus:dev.fn=0000:01:00.0 addr.reg=88 data.reg=92
                                   Chip revision is: 00
FPGA devices:
-------------------
/dev/mst/mt4117_pciconf0_fpga

The mlx5_fpga_tools and the mlx_accel_tools modules must be down before trying to recover the FPGA mst Device Interface.

Burning the FPGA’s Flash Device using the mlx_fpga Burning Tool

mlx_fpga tool burns a .bin file onto the FPGA flash device. 

The Innova Flex .bin file must be generated according to the instructions listed in the Innova Flex Adapter Card User Manual.

It is recommended to burn the FPGA device using an RDMA device as it faster and it shortens the burning time.

  1. Burn the image.

    # mlx_fpga -d <device> burn image.bin
  2. Load the FPGA image from flash according to “Loading the Tool” below or power cycle the machine for change to take effect.

Loading the Tool 

Load an FPGA image from user configurable flash:

# mlx_fpga -d <device> l/load <optional: load options>

where <optional: load options> is:

--factoryLoad FPGA image from factory flash
--user Load FPGA image from user flash [Default option]

Debugging the Tool

Reading One Debug Register:

# mlx_fpga -d <device> read 0x0


Writing One Debug Register:

# mlx_fpga -d <device> write 0x0 0x0

Updating the FPGA Image

In order to verify the new image burned to the FPGA, the user can use mlx_fpga tool and read the following registers:

NameAddressRangeDefault

RW

Description

image_version

0x900000

31:00:00

0x0

RO

Version of the image increased on every synthesis.

image_date

0x900004

31:00:00

0x0

RO

Image date of creation.

The hex number is actually the decimal value, i.e. 0x12011995 means 12/01/ 1995 in DD/MM/YY:
bits [31:24] = day of creation bits [23:16] = month of creation bits [15:0] = year of creation

image_time

0x900008

31:00:00

0x0

RO

Image time of creation.

The hex number is actually the decimal value, i.e. 0x00015324 means 01:53:24 in HH:MM:SS:
bits [23:16] = hour (00..23)
bits [15:8] = minutes (00..59)
bits [7:0] = seconds (00..59)

Innova Flex users should refer to the Innova User Manual for more information.