[openib-general] ANNOUNCE: First usable version of userspace verbs
Roland Dreier
roland at topspin.com
Tue Feb 22 11:23:59 PST 2005
I'm happy to announce the initial availability of userspace verbs
support for brave testers.
To try this out, check out the roland-uverbs subversion branch:
svn co https://openib.org/svn/gen2/branches/roland-uverbs
and build as usual. Select CONFIG_INFINIBAND_USER_VERBS to build
userspace verbs support.
If you want to use a linux-2.6.10 kernel, you will need to apply the
new linux-2.6.10-backports.diff patch from the branch (which just
exports get_sb_pseudo()). No patches at all are required for an
up-to-date BK or linux-2.6.11-rc4 tree.
If you use udev, add the rule
KERNEL="uverbs*", NAME="infiniband/%k", MODE="0666"
to your configuration. Otherwise, create the required device files:
mknod /dev/infiniband/uverbs0 c 231 128
mknod /dev/infiniband/uverbs1 c 231 129
and so on for as many HCAs as you have installed.
The build the userspace libraries in src/userspace/libibverbs and
src/userspace/libmthca with the usual
./autogen.sh && ./configure && make && sudo make install
passing whatever parameters to configure you want; you can use
--prefix to install to another location. If you set a non-standard
prefix, it may be useful to pass a -I<path> in CPPFLAGS to the
configure for libmthca.
Once you have the libraries built and installed, load the ib_mthca and
ib_uverbs modules. By default, libibverbs will search for driver
libraries in <prefix>/lib/infiniband; if you installed libmthca
somewhere else, set the OPENIB_DRIVER_PATH environment variable to
point to the directory with mthca.so.
To actually try things out, you can use the ibv_pingpong program
shipped as part of the libibverbs package. For example, one one
system start the server side
$ ibv_pingpong
and on another system start the client by passing the address of the
server (in this example I use IPv6 over IPoIB):
$ ibv_pingpong fe80::202:c901:7fc:c711%ib0
The pingpong program has a number of options -- run ibv_pingpong -h to
see a list of the switches you can try.
The current code is stable for me, but all that means is that my tiny
selection of tests and test systems has not uncovered any of the bugs
that are undoubtedly present. Some of the limitations I know about:
- Only RC is implemented. There are not even any functions to call
to create UD address handles yet.
- Only Tavor mode is supported -- PCI Express HCAs will not work if
they are running mem-free firmware.
- On x86, only CPUs with SSE will work now. I'd be surprised if
anyone has x86 system with an HCA that doesn't have SSE.
Also, I've only tried 32-bit i386 userspace running on i386 and x86_64
kernels -- I don't expect any portability problems but I haven't even
built for other architectures.
In any case, please give this a spin and let me know how it looks to you.
My short- and medium-term plans are:
1. Catch up on reviewing and applying the patche queue I'm sitting on.
2. Land the Arbel mem-free mode support from the roland-uverbs branch
onto the main trunk (and merge it upstream once 2.6.11 is out and
2.6.12 opens).
3. Implement UD support for userspace. I should have this done before
the end of next week.
4. Implement mem-free support for userspace.
Thanks,
Roland
More information about the general
mailing list