This directory contains logic for priviledged verbs aka user mode control
path to support libibverbs. It is based off linux-4.1.15 snapshot of
drivers/infiniband/core/. Changes on top of baseline are described
here.

Some common reasons for changes to baseline source:

HF1:    Linux source code that #includes standard linux header files eg
        linux/list.h, linux/idr.h had to be modified since these headers
        are absent in akaros.

HF2:    Headers copied from Linux eg rdma/ib_verbs.h were placed in akaros
        in linux/rdma/ib_verbs.h.

HF3:    Some changes were done to pull in lesser header files from Linux.

Per file listing of changes:

Makefile:	-include local compatibility header file (sometimes overriding
	akaros compatibility definitions). -Wno-maybe-uninitialized option
	needed to suppress warning in uverbs_cmd.c:__uverbs_create_xsrq():attr.

compat.h:	Used by udrvr/ and mlx4u/ code via Makefile -include
	directive as compatibility header file (sometimes overriding akaros
	compatibility definitions).

uverbs.h: HF1, HF2

compat.c: Place holder file to add akaros specific hooks

device.c: HF1, HF2
	Add stubs for unrequired logic pieces
	Stubbed kobject_put()

uverbs_cmd.c: HF1
	Misc stubs, including ib_resolve_eth_l2_attrs()
	XRCD logic deleted
	ib_uverbs_create_comp_channel() logic panic-stubbed, since it is
	VFS specific.
	ib_uverbs_get_context() event file related logic gutted out, since
	it is VFS specific.

uverbs_main.c: HF1
	Stubbed out all user event file related logic. Including any reference
		to struct ib_uverbs_file->async_file.
	Misc stubs

verbs.c: HF1, HF2
	ib_init_ah_from_wc() panic-stubbed because AH unsupported.
	ib_resolve_eth_l2_attrs() panic-stubbed because L2 addr routines
	unsupported.

umem.c:	HF1
	Delete unrequired functions.
	Akaros MM changes.

Other files provided for core libibverbs support in kern/include/linux/rdma,
baselined off linux-4.1.15 snapshot:

ib_umem.h: HF1, turn on CONFIG_INFINIBAND_USER_MEM
	(Baselined off include/rdma/ib_umem.h)

ib_user_verbs.h: HF1
	(Baselined off include/uapi/rdma/ib_user_verbs.h)


TODO:
1. linux pgprot_noncached() adds _PAGE_PCD ie bit 4, which is akaros PTE_PCD.
   Akaros PTE_NOCACHE also sets bit 3 ie _PAGE_PWT (which seems wrong?)
2. linux pgprot_writecombine() defaults to pgprot_noncached() when pat is not
   enabled, otherwise just sets bit 3 ie _PAGE_PWT. PAT usage needed.
3. iboe_get_mtu() dependencies
4. query_qp API with older libibverbs inconsistent due to
   "struct ib_uverbs_qp_dest" size difference with kernel.
5. Completion channels not implemented.
	(http://linux.die.net/man/3/ibv_ack_cq_events)
6. HW driver's vendor/device/vsd strings are not being picked up from lower
	level driver in sysfs_create(), but rather hardcoded.
7. Port of include/linux/rdma/ib_verbs.h killed the "mutex" field in
	"struct ib_uobject". Need to add that back in and remove hacks in
	uverbs_cmd.c for up_read(), up_write() and friends.
