strace: Remove the ability to write to Qstrace
[akaros.git] / kern / drivers / net / udrvr / README
1 This directory contains logic for priviledged verbs aka user mode control
2 path to support libibverbs. It is based off linux-4.1.15 snapshot of
3 drivers/infiniband/core/. Changes on top of baseline are described
4 here.
5
6 Some common reasons for changes to baseline source:
7
8 HF1:    Linux source code that #includes standard linux header files eg
9         linux/list.h, linux/idr.h had to be modified since these headers
10         are absent in akaros.
11
12 HF2:    Headers copied from Linux eg rdma/ib_verbs.h were placed in akaros
13         in linux/rdma/ib_verbs.h.
14
15 HF3:    Some changes were done to pull in lesser header files from Linux.
16
17 Per file listing of changes:
18
19 Makefile:       -include local compatibility header file (sometimes overriding
20         akaros compatibility definitions). -Wno-maybe-uninitialized option
21         needed to suppress warning in uverbs_cmd.c:__uverbs_create_xsrq():attr.
22
23 compat.h:       Used by udrvr/ and mlx4u/ code via Makefile -include
24         directive as compatibility header file (sometimes overriding akaros
25         compatibility definitions).
26
27 uverbs.h: HF1, HF2
28
29 compat.c: Place holder file to add akaros specific hooks
30
31 device.c: HF1, HF2
32         Add stubs for unrequired logic pieces
33         Stubbed kobject_put()
34
35 uverbs_cmd.c: HF1
36         Misc stubs, including ib_resolve_eth_l2_attrs()
37         XRCD logic deleted
38         ib_uverbs_create_comp_channel() logic panic-stubbed, since it is
39         VFS specific.
40         ib_uverbs_get_context() event file related logic gutted out, since
41         it is VFS specific.
42
43 uverbs_main.c: HF1
44         Stubbed out all user event file related logic. Including any reference
45                 to struct ib_uverbs_file->async_file.
46         Misc stubs
47
48 verbs.c: HF1, HF2
49         ib_init_ah_from_wc() panic-stubbed because AH unsupported.
50         ib_resolve_eth_l2_attrs() panic-stubbed because L2 addr routines
51         unsupported.
52
53 umem.c: HF1
54         Delete unrequired functions.
55         Akaros MM changes.
56
57 Other files provided for core libibverbs support in kern/include/linux/rdma,
58 baselined off linux-4.1.15 snapshot:
59
60 ib_umem.h: HF1, turn on CONFIG_INFINIBAND_USER_MEM
61         (Baselined off include/rdma/ib_umem.h)
62
63 ib_user_verbs.h: HF1
64         (Baselined off include/uapi/rdma/ib_user_verbs.h)
65
66
67 TODO:
68 1. linux pgprot_noncached() adds _PAGE_PCD ie bit 4, which is akaros PTE_PCD.
69    Akaros PTE_NOCACHE also sets bit 3 ie _PAGE_PWT (which seems wrong?)
70 2. linux pgprot_writecombine() defaults to pgprot_noncached() when pat is not
71    enabled, otherwise just sets bit 3 ie _PAGE_PWT. PAT usage needed.
72 3. iboe_get_mtu() dependencies
73 4. query_qp API with older libibverbs inconsistent due to
74    "struct ib_uverbs_qp_dest" size difference with kernel.
75 5. Completion channels not implemented.
76         (http://linux.die.net/man/3/ibv_ack_cq_events)
77 6. HW driver's vendor/device/vsd strings are not being picked up from lower
78         level driver in sysfs_create(), but rather hardcoded.
79 7. Port of include/linux/rdma/ib_verbs.h killed the "mutex" field in
80         "struct ib_uobject". Need to add that back in and remove hacks in
81         uverbs_cmd.c for up_read(), up_write() and friends.