]> CyberLeo.Net >> Repos - FreeBSD/releng/9.2.git/blob - contrib/ofed/libmthca/ChangeLog
- Copy stable/9 to releng/9.2 as part of the 9.2-RELEASE cycle.
[FreeBSD/releng/9.2.git] / contrib / ofed / libmthca / ChangeLog
1 2006-11-09  Roland Dreier  <rdreier@cisco.com>
2
3         * Release version 1.0.3.
4
5 2006-10-17  Roland Dreier  <rdreier@cisco.com>
6
7         * src/cq.c, src/qp.c, src/srq.c: Convert existing uses of mb() to
8         rmb() or wmb() as appropriate.  In fact all memory barriers were
9         really just wmb(), except for the barrier between reading a CQE's
10         ownership bit and contents, which should be rmb().
11
12         * src/mthca.h: Add compatibility defines of rmb()/wmb() so that
13         libmthca continues to build against old libibverbs releases.
14
15 2006-10-03  Roland Dreier  <rdreier@cisco.com>
16
17         * src/cq.c (mthca_poll_one): Annotate so that Valgrind knows
18         contents of CQ entry are all valid after they are written by HCA.
19         (set_cqe_hw): Annotate so that CQ entries owned by hardware are
20         not defined.
21
22         * src/mthca.h: Add wrapper for VALGRIND_MAKE_MEM_DEFINED so that
23         it can be used in .c files without worrying about whether Valgrind
24         is installed or enabled.
25
26         * configure.in: Add support for Valgrind annotation (enabled with
27         --with-valgrind option to configure).
28
29         * src/verbs.c (mthca_create_qp): Set reserved fields to 0 to avoid
30         future problems and also to make Valgrind a little quieter.
31
32 2006-09-04  Roland Dreier  <rdreier@cisco.com>
33
34         * src/verbs.c (mthca_destroy_qp): Avoid potential AB-BA deadlock
35         when destroying QPs by always taking CQ locks in a consistent
36         order (lowest CQN first).  The old code always took the send_cq
37         lock first, which is prone to deadlock if the send_cq of one QP is
38         the recv_cq of another QP destroyed at the same time.  This bug
39         was pointed out by Dotan Barak and Jack Morgenstein.
40
41 2006-08-23  Roland Dreier  <rdreier@cisco.com>
42
43         * src/verbs.c (mthca_resize_cq): Add a test for
44         IBV_CMD_RESIZE_CQ_HAS_RESP_PARAMS to make libmthca work with newer
45         libibverbs libraries that add two parameters to ibv_cmd_resize_cq().
46
47 2006-08-09  Michael S. Tsirkin  <mst@mellanox.co.il>
48
49         * src/qp.c (mthca_tavor_post_send, mthca_arbel_post_send): Fence
50         bit must be set in both doorbell and WQE.
51
52 2006-08-03  Jack Morgenstein  <jackm@mellanox.co.il>
53
54         * src/mthca.h: Include <stddef.h> to get definition of offsetof().
55
56 2006-08-03  Michael S. Tsirkin  <mst@mellanox.co.il>
57
58         * src/verbs.c (mthca_create_srq): Limit SRQ max_wr to avoid
59         integer overflow.
60
61 2006-07-26  Roland Dreier  <rdreier@cisco.com>
62
63         * src/mthca.h, src/ah.c, src/cq.c, src/memfree.c, src/qp.c,
64         src/srq.c, src/verbs.c: Convert internal allocations for AH pages
65         (for non-memfree HCAs), CQ buffers, doorbell pages (for memfree
66         HCAs), QP buffers and SRQ buffers to use the new buffer
67         allocator.  This makes libmthca fork()-clean when built against
68         libibverbs 1.1.
69
70         * src/buf.c (mthca_alloc_buf, mthca_free_buf): Add new functions
71         to wrap up allocating page-aligned buffers.  The new functions
72         will call ibv_dontfork_range()/ibv_dofork_range() to do proper
73         madvise()ing to handle fork(), if applicable.
74
75         * configure.in: Check for ibv_dontfork_range() and ibv_dontfork_range().
76
77 2006-07-04  Dotan Barak  <dotanb@mellanox.co.il>
78
79         * src/verbs.c (mthca_create_cq, mthca_resize_cq): Passing huge
80         size values to create_cq/resize_cq causes a hang in
81         align_cq_size().  Fix this by validating input, similiar to what
82         we do for mthca_create_qp() and mthca_create_srq().
83
84 2006-06-13  Roland Dreier  <rdreier@cisco.com>
85
86         * Release version 1.0.2.
87
88 2006-06-13  Michael S. Tsirkin  <mst@mellanox.co.il>
89
90         * src/cq.c (mthca_poll_one): Add workaround for MemFree FW bug
91         that causes wrong WQE addr to be reported.
92
93 2006-05-24  Roland Dreier  <rdreier@cisco.com>
94
95         * src/mthca.c: If <sysfs/libsysfs.h> is detected, include it
96         explicitly.  This lets things build when sysfs headers are
97         installed on the build system even when building against
98         libibverbs 1.1 (which does not include sysfs headers implicitly).
99
100         * src/ah.c, src/cq.c, src/memfree.c, src/mthca.c, src/qp.c,
101         src/srq.c: Add include of <string.h>, since it may no long be
102         implicitly included from libsysfs headers when building with
103         libibverbs 1.1.
104
105 2006-05-24  Michael S. Tsirkin  <mst@mellanox.co.il>
106
107         * src/srq.c (mthca_tavor_post_srq_recv): Fix posting of lists of
108         receives that have exactly a multiple of 256 entries (same as QP
109         bug fixed below).
110
111 2006-05-22  Roland Dreier  <rdreier@cisco.com>
112
113         * configure.in, src/mthca.c (openib_driver_init): Check for the
114         presence of <sysfs/libsysfs.h>, and if it is not installed, don't
115         export the old openib_driver_init() entry point.
116
117 2006-05-18  Michael S. Tsirkin  <mst@mellanox.co.il>
118
119         * src/qp.c (mthca_tavor_post_recv): Fix posting of lists of
120         receives that have exactly a multiple of 256 entries.
121
122 2006-05-08  Jack Morgenstein  <jackm@mellanox.co.il>
123
124         * src/mthca.c: Add include files needed for open() if
125         HAVE_IBV_READ_SYSFS_FILE is not defined (so libmthca includes a
126         private local definition of ibv_read_sysfs_file()).
127
128 2006-04-11  Roland Dreier  <rdreier@cisco.com>
129
130         * src/mthca.c (ibv_driver_init, openib_driver_init): Add new
131         forward-compatible driver entry point.  Make old entry point a
132         simple wrapper for the new one.
133
134 2006-03-14  Roland Dreier  <rdreier@cisco.com>
135
136         * Release version 1.0.1.
137
138         * Makefile.am (EXTRA_DIST): Remove debian/ directory from
139         tarballs, since Debian policy is that upstream tarballs should not
140         include it.
141
142 2006-03-13  Roland Dreier  <rdreier@cisco.com>
143
144         * Release version 1.0.
145
146 2006-02-27  Dotan Barak  <dotanb@mellanox.co.il>
147
148         * src/qp.c (mthca_tavor_post_send, mthca_arbel_post_send): Add
149         support for IBV_SEND_FENCE flag.
150
151 2006-02-16  Roland Dreier  <rdreier@cisco.com>
152
153         * src/memfree.c (mthca_alloc_db): Introduce a temporary variable
154         to pass to posix_memalign() to avoid "warning: dereferencing
155         type-punned pointer will break strict-aliasing rules."
156
157         * Release version 1.0-rc7.
158
159 2006-02-15  Roland Dreier  <rdreier@cisco.com>
160
161         * src/verbs.c (mthca_create_qp): Update to add new response and
162         response size parameters for libibverbs ibv_cmd_create_qp().
163
164 2006-02-14  Roland Dreier  <rdreier@cisco.com>
165
166         * Release version 1.0-rc6.
167
168 2006-02-13  Dotan Barak  <dotanb@mellanox.co.il>
169
170         * src/verbs.c (mthca_query_qp, mthca_query_srq): Add query QP and
171         query SRQ verbs.
172
173 2006-01-31  Roland Dreier  <rdreier@cisco.com>
174
175         * src/mthca.h: Remove useless "extern" from function declarations.
176
177 2006-01-30  Michael S. Tsirkin  <mst@mellanox.co.il>
178
179         * src/qp.c (mthca_tavor_post_recv, mthca_arbel_post_recv): Pass
180         recv_cq to wq_overflow() so we lock the correct CQ.  Noticed by
181         Yossi Leybovich.
182
183 2006-01-26  Roland Dreier  <rdreier@cisco.com>
184
185         * src/mthca.h, src/verbs.c, src/cq.c, src/mthca.c: Add
186         implementation of resize CQ operation.
187
188         * src/mthca-abi.h: Add mthca-specific resize CQ ABI.
189
190 2006-01-22  Roland Dreier  <rdreier@cisco.com>
191
192         * Release version 1.0-rc5.
193
194 2006-01-11  Jack Morgenstein  <jackm@mellanox.co.il>
195
196         * src/verbs.c (mthca_free_pd): Free pointer to correct structure
197         (we get lucky now, but don't rely on this).
198         * src/mthca.c (mthca_free_context): Free context's PD so we don't
199         leak it.
200
201 2006-01-06  Michael S. Tsirkin  <mst@mellanox.co.il>
202
203         * src/verbs.c (mthca_destroy_qp): Jack Morgenstein has discovered
204         the following race condition in libmthca:
205
206         Thread A destroys QP A at the kernel side by calling
207         ibv_cmd_destroy_qp, but its time-slice is over before removing it
208         from the user-space qp_table removal.
209
210         Thread B allocates QP B, receiving a QP number that matches the
211         just-destroyed QP A in the low 16 bits.  Thread B will now
212         over-write the slot in qp_table which was used for QP A.
213
214         Thread A wakes up and clears qp_table slot, in effect removing QP
215         B from qp_table.
216
217         As a solution, remove the QP from qp_table before calling
218         ibv_cmd_destroy_qp.  This also makes sense since operations are
219         performed in the reverse order in create_qp.
220
221         * src/cq.c (handle_error_cqe): Fill in vendor_err field for
222         completions with error.
223
224 2006-01-05  Jack Morgenstein  <jackm@mellanox.co.il>
225
226         * src/verbs.c (mthca_destroy_qp, mthca_destroy_srq): Free QP/SRQ
227         object to avoid memory leak.
228
229 2005-12-15  Jack Morgenstein  <jackm@mellanox.co.il>
230
231         * src/cq.c (mthca_cq_clean): When cleaning up a CQ, we should free
232         an SRQ WQE if and only if the CQE is a receive.
233
234 2005-12-15  Michael S. Tsirkin  <mst@mellanox.co.il>
235
236         * src/qp.c (mthca_store_qp): Don't increment qp_table ref count if
237         allocation fails.
238
239 2005-11-29  Michael S. Tsirkin  <mst@mellanox.co.il>
240
241         * src/qp.c (mthca_arbel_post_send): Add handling for posting long
242         send lists for mem-free HCAs.
243         * src/qp.c (mthca_tavor_post_recv): Fix posting long receive
244         lists: nreq is set to zero early on, so we need to use
245         MTHCA_TAVOR_MAX_WQES_PER_RECV_DB as the increment to rq.head.
246
247 2005-11-28  Roland Dreier  <roland@cisco.com>
248
249         * src/qp.c (mthca_init_qp_indices): Set qp->sq.last and
250         qp->rq.last so that QP is fully reset when the indices are
251         reinited on transition to RESET state.
252         (mthca_tavor_post_send, mthca_arbel_post_send): Don't create an
253         inline send segment when a work request is posted that has the
254         inline flag set but no gather entries included.
255
256 2005-11-09  Roland Dreier  <roland@cisco.com>
257
258         * src/srq.c (mthca_tavor_post_srq_recv), src/qp.c
259         (mthca_tavor_post_recv): Fix bugs in long receive list handling;
260         need to set nreq to 0 and not put 256 credits into the second
261         doorbell word.
262
263         * src/cq.c (mthca_cq_clean): Handle case where CQ indices wrap
264         around by treating signed comparisons of prod_index and
265         cq->cons_index carefully.
266
267 2005-11-09  Michael S. Tsirkin  <mst@mellanox.co.il>
268
269         * src/srq.c (mthca_tavor_post_srq_recv), src/qp.c
270         (mthca_tavor_post_recv): Tavor requires that a doorbell be rung
271         at least every 256 receives, so add code to ring doorbells in the
272         middle of posting a huge list of receives.
273         
274         * src/qp.c (mthca_tavor_post_send, mthca_tavor_post_send): When
275         posting atomic operations, could wqe size in "octowords" correctly.
276
277         * src/ah.c (mthca_alloc_av): Don't free ah if page allocation
278         fails.  It will be freed where it's allocated, in the caller.
279
280 2005-11-08  Roland Dreier  <roland@cisco.com>
281
282         * src/qp.c, src/verbs.c, src/mthca.h: Delegate setting of QP
283         capabilities (max_sge, max_inline_data, etc) to kernel.
284
285 2005-11-04  Roland Dreier  <roland@cisco.com>
286
287         * src/verbs.c (mthca_destroy_qp): Clean CQEs when we destroy a QP.
288         (mthca_modify_qp): Clean CQEs when we move a QP to RESET state,
289         and reset QP index pointers.
290
291         * src/cq.c (mthca_cq_clean): Add function to clean out CQEs for
292         QPs that are being destroyed or reset.
293
294 2005-10-30  Roland Dreier  <roland@cisco.com>
295
296         * src/srq.c (wqe_to_link): Change to use an offset of 12 (the imm
297         field), because posting an SRQ WQE may actually change the ee_nds
298         field and still cause free list corruption.  A receive WQE will
299         never have immediate data, so using imm is definitely safe.
300
301 2005-10-25  Roland Dreier  <roland@cisco.com>
302
303         * Release version 1.0-rc4.
304
305 2005-10-23  Roland Dreier  <roland@cisco.com>
306
307         * src/qp.c (mthca_return_cap, mthca_alloc_qp_buf), src/verbs.c
308         (mthca_create_qp): Explicitly pass QP type to functions used while
309         creating QP, since we can't rely on ibv_qp.qp_type to be set until
310         after we return.  This fixes breakage with UD QPs introduced in
311         the last change below.
312
313 2005-10-19  Roland Dreier  <roland@cisco.com>
314
315         * src/mthca.h, src/verbs.c (mthca_create_qp), src/qp.c
316         (mthca_tavor_post_send, mthca_arbel_post_send, mthca_alloc_qp_buf,
317         mthca_return_cap): Eliminate struct mthca_qp.qpt field and use
318         struct ibv_qp.qp_type instead (now that that field has been added
319         in libibverbs).
320
321 2005-10-18  Roland Dreier  <roland@cisco.com>
322
323         * src/cq.c (handle_error_cqe, mthca_poll_one): Dump CQEs for local
324         QP operation errors instead of all error statuses.
325
326 2005-10-06  Roland Dreier  <roland@cisco.com>
327
328         * src/srq.c (mthca_free_srq_wqe): Pass index instead of WQE
329         address.  The only caller already has the index handy, so there's
330         no need to recalculate it here.
331         
332         * src/srq.c (mthca_tavor_post_srq_recv,
333         mthca_arbel_post_srq_recv): Add an extra check so that we report
334         the SRQ as full before using the one extra WQE we need internally.
335
336 2005-10-05  Roland Dreier  <roland@cisco.com>
337
338         * src/verbs.c (mthca_modify_srq): Fill in mthca_modify_srq().
339
340 2005-09-29  Roland Dreier  <roland@cisco.com>
341
342         * src/verbs.c (mthca_query_device): Update to match new libibverbs
343         API that requires device-specific libraries to format firmware version.
344
345 2005-09-25  Roland Dreier  <roland@cisco.com>
346
347         * src/cq.c, src/mthca.c, src/mthca.h, src/verbs.c: Update to match
348         new libibverbs API introduced with completion channel implementation.
349
350 2005-09-13  Roland Dreier  <roland@cisco.com>
351
352         * src/qp.c (mthca_tavor_post_send, mthca_tavor_post_recv,
353         mthca_arbel_post_send), src/srq.c (mthca_tavor_post_srq_recv):
354         Apply Michael S. Tsirkin's patch to fix linking of WQEs on
355         mem-free HCAs.  While we're at it, simplify the Tavor WQE posting
356         code as well -- there's no need for a conditional, just always lik
357         the previous WQE.
358
359 2005-09-07  Roland Dreier  <roland@cisco.com>
360
361         * src/mthca.h: Get rid of ntohll() and htonll() now that
362         libibverbs defines them in <infiniband/arch.h>.
363
364 2005-08-31  Roland Dreier  <roland@cisco.com>
365
366         * src/memfree.c (mthca_free_db): When we free a doorbell record,
367         really mark it as free in the free bitmap.  This we we don't
368         eventually run out of doorbells if a consumer creates and frees a
369         lot of objects.
370
371         * src/memfree.c (mthca_alloc_db): Introduce MTHCA_FREE_MAP_SIZE so
372         that we iterate over the correct number of entries in the mem-free
373         doorbell record free maps.  This fixes some off-by-a-factor-of-8
374         bugs that could lead to crashes.
375
376         * src/verbs.c (mthca_create_cq): In the mem-free case, when
377         creating a CQ fails to allocate an arm doorbell, make sure we free
378         the set CI doorbell instead of the (non-existent) arm doorbell.