Skip to content

Commit 3c3e4d5

Browse files
rpearsonhpe-designjgunthorpe
authored andcommitted
RDMA/rxe: Delete _locked() APIs for pool objects
Since caller managed locks for indexed objects are no longer used these APIs are deleted. Link: https://lore.kernel.org/r/20220304000808.225811-5-rpearsonhpe@gmail.com Signed-off-by: Bob Pearson <rpearsonhpe@gmail.com> Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
1 parent c9f4c69 commit 3c3e4d5

2 files changed

Lines changed: 12 additions & 79 deletions

File tree

drivers/infiniband/sw/rxe/rxe_pool.c

Lines changed: 8 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -189,73 +189,31 @@ static int rxe_insert_index(struct rxe_pool *pool, struct rxe_pool_elem *new)
189189
return 0;
190190
}
191191

192-
int __rxe_add_index_locked(struct rxe_pool_elem *elem)
193-
{
194-
struct rxe_pool *pool = elem->pool;
195-
int err;
196-
197-
elem->index = alloc_index(pool);
198-
err = rxe_insert_index(pool, elem);
199-
200-
return err;
201-
}
202-
203192
int __rxe_add_index(struct rxe_pool_elem *elem)
204193
{
205194
struct rxe_pool *pool = elem->pool;
206195
unsigned long flags;
207196
int err;
208197

209198
write_lock_irqsave(&pool->pool_lock, flags);
210-
err = __rxe_add_index_locked(elem);
199+
elem->index = alloc_index(pool);
200+
err = rxe_insert_index(pool, elem);
211201
write_unlock_irqrestore(&pool->pool_lock, flags);
212202

213203
return err;
214204
}
215205

216-
void __rxe_drop_index_locked(struct rxe_pool_elem *elem)
217-
{
218-
struct rxe_pool *pool = elem->pool;
219-
220-
clear_bit(elem->index - pool->index.min_index, pool->index.table);
221-
rb_erase(&elem->index_node, &pool->index.tree);
222-
}
223-
224206
void __rxe_drop_index(struct rxe_pool_elem *elem)
225207
{
226208
struct rxe_pool *pool = elem->pool;
227209
unsigned long flags;
228210

229211
write_lock_irqsave(&pool->pool_lock, flags);
230-
__rxe_drop_index_locked(elem);
212+
clear_bit(elem->index - pool->index.min_index, pool->index.table);
213+
rb_erase(&elem->index_node, &pool->index.tree);
231214
write_unlock_irqrestore(&pool->pool_lock, flags);
232215
}
233216

234-
void *rxe_alloc_locked(struct rxe_pool *pool)
235-
{
236-
struct rxe_pool_elem *elem;
237-
void *obj;
238-
239-
if (atomic_inc_return(&pool->num_elem) > pool->max_elem)
240-
goto out_cnt;
241-
242-
obj = kzalloc(pool->elem_size, GFP_ATOMIC);
243-
if (!obj)
244-
goto out_cnt;
245-
246-
elem = (struct rxe_pool_elem *)((u8 *)obj + pool->elem_offset);
247-
248-
elem->pool = pool;
249-
elem->obj = obj;
250-
kref_init(&elem->ref_cnt);
251-
252-
return obj;
253-
254-
out_cnt:
255-
atomic_dec(&pool->num_elem);
256-
return NULL;
257-
}
258-
259217
void *rxe_alloc(struct rxe_pool *pool)
260218
{
261219
struct rxe_pool_elem *elem;
@@ -321,12 +279,14 @@ void rxe_elem_release(struct kref *kref)
321279
atomic_dec(&pool->num_elem);
322280
}
323281

324-
void *rxe_pool_get_index_locked(struct rxe_pool *pool, u32 index)
282+
void *rxe_pool_get_index(struct rxe_pool *pool, u32 index)
325283
{
326-
struct rb_node *node;
327284
struct rxe_pool_elem *elem;
285+
struct rb_node *node;
286+
unsigned long flags;
328287
void *obj;
329288

289+
read_lock_irqsave(&pool->pool_lock, flags);
330290
node = pool->index.tree.rb_node;
331291

332292
while (node) {
@@ -346,17 +306,6 @@ void *rxe_pool_get_index_locked(struct rxe_pool *pool, u32 index)
346306
} else {
347307
obj = NULL;
348308
}
349-
350-
return obj;
351-
}
352-
353-
void *rxe_pool_get_index(struct rxe_pool *pool, u32 index)
354-
{
355-
unsigned long flags;
356-
void *obj;
357-
358-
read_lock_irqsave(&pool->pool_lock, flags);
359-
obj = rxe_pool_get_index_locked(pool, index);
360309
read_unlock_irqrestore(&pool->pool_lock, flags);
361310

362311
return obj;

drivers/infiniband/sw/rxe/rxe_pool.h

Lines changed: 4 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,7 @@ int rxe_pool_init(struct rxe_dev *rxe, struct rxe_pool *pool,
6868
/* free resources from object pool */
6969
void rxe_pool_cleanup(struct rxe_pool *pool);
7070

71-
/* allocate an object from pool holding and not holding the pool lock */
72-
void *rxe_alloc_locked(struct rxe_pool *pool);
73-
71+
/* allocate an object from pool */
7472
void *rxe_alloc(struct rxe_pool *pool);
7573

7674
/* connect already allocated object to pool */
@@ -79,32 +77,18 @@ int __rxe_add_to_pool(struct rxe_pool *pool, struct rxe_pool_elem *elem);
7977
#define rxe_add_to_pool(pool, obj) __rxe_add_to_pool(pool, &(obj)->elem)
8078

8179
/* assign an index to an indexed object and insert object into
82-
* pool's rb tree holding and not holding the pool_lock
80+
* pool's rb tree
8381
*/
84-
int __rxe_add_index_locked(struct rxe_pool_elem *elem);
85-
86-
#define rxe_add_index_locked(obj) __rxe_add_index_locked(&(obj)->elem)
87-
8882
int __rxe_add_index(struct rxe_pool_elem *elem);
8983

9084
#define rxe_add_index(obj) __rxe_add_index(&(obj)->elem)
9185

92-
/* drop an index and remove object from rb tree
93-
* holding and not holding the pool_lock
94-
*/
95-
void __rxe_drop_index_locked(struct rxe_pool_elem *elem);
96-
97-
#define rxe_drop_index_locked(obj) __rxe_drop_index_locked(&(obj)->elem)
98-
86+
/* drop an index and remove object from rb tree */
9987
void __rxe_drop_index(struct rxe_pool_elem *elem);
10088

10189
#define rxe_drop_index(obj) __rxe_drop_index(&(obj)->elem)
10290

103-
/* lookup an indexed object from index holding and not holding the pool_lock.
104-
* takes a reference on object
105-
*/
106-
void *rxe_pool_get_index_locked(struct rxe_pool *pool, u32 index);
107-
91+
/* lookup an indexed object from index. takes a reference on object */
10892
void *rxe_pool_get_index(struct rxe_pool *pool, u32 index);
10993

11094
/* cleanup an object when all references are dropped */

0 commit comments

Comments
 (0)