60 lines
2.3 KiB
Plaintext
60 lines
2.3 KiB
Plaintext
Introduction
|
|
============
|
|
|
|
libmthca is a userspace driver for Mellanox InfiniBand HCAs. It works
|
|
as a plug-in module for libibverbs that allows programs to use
|
|
Mellanox hardware directly from userspace. See the libibverbs package
|
|
for more information.
|
|
|
|
Using libmthca
|
|
==============
|
|
|
|
libmthca will be loaded and used automatically by programs linked with
|
|
libibverbs. The ib_mthca kernel module must be loaded for HCA devices
|
|
to be detected and used.
|
|
|
|
Supported Hardware
|
|
==================
|
|
|
|
libmthca currently supports HCAs based on the following Mellanox chips:
|
|
|
|
MT23108 InfiniHost (PCI-X)
|
|
MT25208 InfiniHost III Ex (PCI Express)
|
|
MT25204 InfiniHost III Lx (PCI Express)
|
|
|
|
Both non-DDR and DDR HCAs are supported, and the MT25208 is supported
|
|
with both MT23108-compatible and native MemFree firmware.
|
|
|
|
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.
|
|
|
|
libmthca 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 libmthca and
|
|
developers can use the "valgrind debug" build by simply switching
|
|
their OPENIB_DRIVER_PATH environment variables.
|
|
|
|
Libmthca 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 libmthca build look for valgrind headers in
|
|
/opt/valgrind/include
|