59 lines
2.3 KiB
Plaintext
59 lines
2.3 KiB
Plaintext
Introduction
|
|
============
|
|
|
|
libmlx4 is a userspace driver for Mellanox ConnectX InfiniBand HCAs.
|
|
It is a plug-in module for libibverbs that allows programs to use
|
|
Mellanox hardware directly from userspace. See the libibverbs package
|
|
for more information.
|
|
|
|
Using libmlx4
|
|
==============
|
|
|
|
libmlx4 will be loaded and used automatically by programs linked with
|
|
libibverbs. The mlx4_ib kernel module must be loaded for HCA devices
|
|
to be detected and used.
|
|
|
|
Supported Hardware
|
|
==================
|
|
|
|
libmlx4 currently supports HCAs based on the following Mellanox chip:
|
|
|
|
MT25408 ConnectX (PCI Express)
|
|
|
|
These HCAs use the mlx4_ib kernel driver. Support for other Mellanox
|
|
HCAs, which use the ib_mthca kernel driver, is provided by the
|
|
libmthca userspace driver.
|
|
|
|
Valgrind Support
|
|
================
|
|
|
|
When running applications that use libibverbs under the Valgrind
|
|
memory-checking debugger, Valgrind will falsely report "read from
|
|
uninitialized" for memory that was initialized by the kernel drivers
|
|
or HCA hardware. Specifically, Valgrind cannot see when kernel
|
|
drivers or HCA hardware write to userspace memory, so when the process
|
|
reads from that memory, Valgrind incorrectly assumes that the memory
|
|
contents are uninitialized, and therefore raises a warning.
|
|
|
|
libmlx4 can be built with specific support for the Valgrind
|
|
memory-checking debugger by specifying the --with-valgrind command
|
|
line argument to configure. This flag enables code in libibverbs to
|
|
tell Valgrind "this memory may look uninitialized, but it's really
|
|
OK," which therefore suppresses the incorrect "read from
|
|
uninitialized" warnings. This code adds trivial overhead to the
|
|
critical performance path, so it is disabled by default. The intent
|
|
is that production users can use a "normal" build of libmlx4 and
|
|
developers can use the "valgrind debug" build by simply switching
|
|
their OPENIB_DRIVER_PATH environment variables.
|
|
|
|
Libmlx4 needs some header files from Valgrind in order to compile this
|
|
support; it is important to use the header files from the same version
|
|
of Valgrind that will be used at run time. You may need to specify
|
|
the directory where Valgrind's header files are installed as an
|
|
argument to --with-valgrind. For example
|
|
|
|
./configure --with-valgrind=/opt/valgrind
|
|
|
|
will make the libmlx4 build look for valgrind headers in
|
|
/opt/valgrind/include
|