| 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. |