1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
|
2006-02-16 Roland Dreier <rdreier@cisco.com>
* src/memfree.c (mthca_alloc_db): Introduce a temporary variable
to pass to posix_memalign() to avoid "warning: dereferencing
type-punned pointer will break strict-aliasing rules."
* Release version 1.0-rc7.
2006-02-15 Roland Dreier <rdreier@cisco.com>
* src/verbs.c (mthca_create_qp): Update to add new response and
response size parameters for libibverbs ibv_cmd_create_qp().
2006-02-14 Roland Dreier <rdreier@cisco.com>
* Release version 1.0-rc6.
2006-02-13 Dotan Barak <dotanb@mellanox.co.il>
* src/verbs.c (mthca_query_qp, mthca_query_srq): Add query QP and
query SRQ verbs.
2006-01-31 Roland Dreier <rdreier@cisco.com>
* src/mthca.h: Remove useless "extern" from function declarations.
2006-01-30 Michael S. Tsirkin <mst@mellanox.co.il>
* src/qp.c (mthca_tavor_post_recv, mthca_arbel_post_recv): Pass
recv_cq to wq_overflow() so we lock the correct CQ. Noticed by
Yossi Leybovich.
2006-01-26 Roland Dreier <rdreier@cisco.com>
* src/mthca.h, src/verbs.c, src/cq.c, src/mthca.c: Add
implementation of resize CQ operation.
* src/mthca-abi.h: Add mthca-specific resize CQ ABI.
2006-01-22 Roland Dreier <rdreier@cisco.com>
* Release version 1.0-rc5.
2006-01-11 Jack Morgenstein <jackm@mellanox.co.il>
* src/verbs.c (mthca_free_pd): Free pointer to correct structure
(we get lucky now, but don't rely on this).
* src/mthca.c (mthca_free_context): Free context's PD so we don't
leak it.
2006-01-06 Michael S. Tsirkin <mst@mellanox.co.il>
* src/verbs.c (mthca_destroy_qp): Jack Morgenstein has discovered
the following race condition in libmthca:
Thread A destroys QP A at the kernel side by calling
ibv_cmd_destroy_qp, but its time-slice is over before removing it
from the user-space qp_table removal.
Thread B allocates QP B, receiving a QP number that matches the
just-destroyed QP A in the low 16 bits. Thread B will now
over-write the slot in qp_table which was used for QP A.
Thread A wakes up and clears qp_table slot, in effect removing QP
B from qp_table.
As a solution, remove the QP from qp_table before calling
ibv_cmd_destroy_qp. This also makes sense since operations are
performed in the reverse order in create_qp.
* src/cq.c (handle_error_cqe): Fill in vendor_err field for
completions with error.
2006-01-05 Jack Morgenstein <jackm@mellanox.co.il>
* src/verbs.c (mthca_destroy_qp, mthca_destroy_srq): Free QP/SRQ
object to avoid memory leak.
2005-12-15 Jack Morgenstein <jackm@mellanox.co.il>
* src/cq.c (mthca_cq_clean): When cleaning up a CQ, we should free
an SRQ WQE if and only if the CQE is a receive.
2005-12-15 Michael S. Tsirkin <mst@mellanox.co.il>
* src/qp.c (mthca_store_qp): Don't increment qp_table ref count if
allocation fails.
2005-11-29 Michael S. Tsirkin <mst@mellanox.co.il>
* src/qp.c (mthca_arbel_post_send): Add handling for posting long
send lists for mem-free HCAs.
* src/qp.c (mthca_tavor_post_recv): Fix posting long receive
lists: nreq is set to zero early on, so we need to use
MTHCA_TAVOR_MAX_WQES_PER_RECV_DB as the increment to rq.head.
2005-11-28 Roland Dreier <roland@cisco.com>
* src/qp.c (mthca_init_qp_indices): Set qp->sq.last and
qp->rq.last so that QP is fully reset when the indices are
reinited on transition to RESET state.
(mthca_tavor_post_send, mthca_arbel_post_send): Don't create an
inline send segment when a work request is posted that has the
inline flag set but no gather entries included.
2005-11-09 Roland Dreier <roland@cisco.com>
* src/srq.c (mthca_tavor_post_srq_recv), src/qp.c
(mthca_tavor_post_recv): Fix bugs in long receive list handling;
need to set nreq to 0 and not put 256 credits into the second
doorbell word.
* src/cq.c (mthca_cq_clean): Handle case where CQ indices wrap
around by treating signed comparisons of prod_index and
cq->cons_index carefully.
2005-11-09 Michael S. Tsirkin <mst@mellanox.co.il>
* src/srq.c (mthca_tavor_post_srq_recv), src/qp.c
(mthca_tavor_post_recv): Tavor requires that a doorbell be rung
at least every 256 receives, so add code to ring doorbells in the
middle of posting a huge list of receives.
* src/qp.c (mthca_tavor_post_send, mthca_tavor_post_send): When
posting atomic operations, could wqe size in "octowords" correctly.
* src/ah.c (mthca_alloc_av): Don't free ah if page allocation
fails. It will be freed where it's allocated, in the caller.
2005-11-08 Roland Dreier <roland@cisco.com>
* src/qp.c, src/verbs.c, src/mthca.h: Delegate setting of QP
capabilities (max_sge, max_inline_data, etc) to kernel.
2005-11-04 Roland Dreier <roland@cisco.com>
* src/verbs.c (mthca_destroy_qp): Clean CQEs when we destroy a QP.
(mthca_modify_qp): Clean CQEs when we move a QP to RESET state,
and reset QP index pointers.
* src/cq.c (mthca_cq_clean): Add function to clean out CQEs for
QPs that are being destroyed or reset.
2005-10-30 Roland Dreier <roland@cisco.com>
* src/srq.c (wqe_to_link): Change to use an offset of 12 (the imm
field), because posting an SRQ WQE may actually change the ee_nds
field and still cause free list corruption. A receive WQE will
never have immediate data, so using imm is definitely safe.
2005-10-25 Roland Dreier <roland@cisco.com>
* Release version 1.0-rc4.
2005-10-23 Roland Dreier <roland@cisco.com>
* src/qp.c (mthca_return_cap, mthca_alloc_qp_buf), src/verbs.c
(mthca_create_qp): Explicitly pass QP type to functions used while
creating QP, since we can't rely on ibv_qp.qp_type to be set until
after we return. This fixes breakage with UD QPs introduced in
the last change below.
2005-10-19 Roland Dreier <roland@cisco.com>
* src/mthca.h, src/verbs.c (mthca_create_qp), src/qp.c
(mthca_tavor_post_send, mthca_arbel_post_send, mthca_alloc_qp_buf,
mthca_return_cap): Eliminate struct mthca_qp.qpt field and use
struct ibv_qp.qp_type instead (now that that field has been added
in libibverbs).
2005-10-18 Roland Dreier <roland@cisco.com>
* src/cq.c (handle_error_cqe, mthca_poll_one): Dump CQEs for local
QP operation errors instead of all error statuses.
2005-10-06 Roland Dreier <roland@cisco.com>
* src/srq.c (mthca_free_srq_wqe): Pass index instead of WQE
address. The only caller already has the index handy, so there's
no need to recalculate it here.
* src/srq.c (mthca_tavor_post_srq_recv,
mthca_arbel_post_srq_recv): Add an extra check so that we report
the SRQ as full before using the one extra WQE we need internally.
2005-10-05 Roland Dreier <roland@cisco.com>
* src/verbs.c (mthca_modify_srq): Fill in mthca_modify_srq().
2005-09-29 Roland Dreier <roland@cisco.com>
* src/verbs.c (mthca_query_device): Update to match new libibverbs
API that requires device-specific libraries to format firmware version.
2005-09-25 Roland Dreier <roland@cisco.com>
* src/cq.c, src/mthca.c, src/mthca.h, src/verbs.c: Update to match
new libibverbs API introduced with completion channel implementation.
2005-09-13 Roland Dreier <roland@cisco.com>
* src/qp.c (mthca_tavor_post_send, mthca_tavor_post_recv,
mthca_arbel_post_send), src/srq.c (mthca_tavor_post_srq_recv):
Apply Michael S. Tsirkin's patch to fix linking of WQEs on
mem-free HCAs. While we're at it, simplify the Tavor WQE posting
code as well -- there's no need for a conditional, just always lik
the previous WQE.
2005-09-07 Roland Dreier <roland@cisco.com>
* src/mthca.h: Get rid of ntohll() and htonll() now that
libibverbs defines them in <infiniband/arch.h>.
2005-08-31 Roland Dreier <roland@cisco.com>
* src/memfree.c (mthca_free_db): When we free a doorbell record,
really mark it as free in the free bitmap. This we we don't
eventually run out of doorbells if a consumer creates and frees a
lot of objects.
* src/memfree.c (mthca_alloc_db): Introduce MTHCA_FREE_MAP_SIZE so
that we iterate over the correct number of entries in the mem-free
doorbell record free maps. This fixes some off-by-a-factor-of-8
bugs that could lead to crashes.
* src/verbs.c (mthca_create_cq): In the mem-free case, when
creating a CQ fails to allocate an arm doorbell, make sure we free
the set CI doorbell instead of the (non-existent) arm doorbell.
|