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