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