All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] RDMA/pvrdma: Use bitmap_zalloc() when applicable
@ 2021-11-25 20:05 Christophe JAILLET
  2021-11-25 20:05 ` [PATCH 2/2] RDMA/pvrdma: Use non-atomic bitmap functions when possible Christophe JAILLET
  2021-11-29 18:37 ` [PATCH 1/2] RDMA/pvrdma: Use bitmap_zalloc() when applicable Jason Gunthorpe
  0 siblings, 2 replies; 3+ messages in thread
From: Christophe JAILLET @ 2021-11-25 20:05 UTC (permalink / raw)
  To: bryantan, vdasa, pv-drivers, dledford, jgg
  Cc: linux-rdma, linux-kernel, kernel-janitors, Christophe JAILLET

Use 'bitmap_zalloc()' to simplify code, improve the semantic and avoid some
open-coded arithmetic in allocator arguments.

Also change the corresponding 'kfree()' into 'bitmap_free()' to keep
consistency.

Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
---
 drivers/infiniband/hw/vmw_pvrdma/pvrdma_doorbell.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/infiniband/hw/vmw_pvrdma/pvrdma_doorbell.c b/drivers/infiniband/hw/vmw_pvrdma/pvrdma_doorbell.c
index bf51357ea3aa..21ef3fb39915 100644
--- a/drivers/infiniband/hw/vmw_pvrdma/pvrdma_doorbell.c
+++ b/drivers/infiniband/hw/vmw_pvrdma/pvrdma_doorbell.c
@@ -63,7 +63,7 @@ int pvrdma_uar_table_init(struct pvrdma_dev *dev)
 	tbl->max = num;
 	tbl->mask = mask;
 	spin_lock_init(&tbl->lock);
-	tbl->table = kcalloc(BITS_TO_LONGS(num), sizeof(long), GFP_KERNEL);
+	tbl->table = bitmap_zalloc(num, GFP_KERNEL);
 	if (!tbl->table)
 		return -ENOMEM;
 
@@ -77,7 +77,7 @@ void pvrdma_uar_table_cleanup(struct pvrdma_dev *dev)
 {
 	struct pvrdma_id_table *tbl = &dev->uar_table.tbl;
 
-	kfree(tbl->table);
+	bitmap_free(tbl->table);
 }
 
 int pvrdma_uar_alloc(struct pvrdma_dev *dev, struct pvrdma_uar_map *uar)
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [PATCH 2/2] RDMA/pvrdma: Use non-atomic bitmap functions when possible
  2021-11-25 20:05 [PATCH 1/2] RDMA/pvrdma: Use bitmap_zalloc() when applicable Christophe JAILLET
@ 2021-11-25 20:05 ` Christophe JAILLET
  2021-11-29 18:37 ` [PATCH 1/2] RDMA/pvrdma: Use bitmap_zalloc() when applicable Jason Gunthorpe
  1 sibling, 0 replies; 3+ messages in thread
From: Christophe JAILLET @ 2021-11-25 20:05 UTC (permalink / raw)
  To: bryantan, vdasa, pv-drivers, dledford, jgg
  Cc: linux-rdma, linux-kernel, kernel-janitors, Christophe JAILLET

In 'pvrdma_uar_table_init()', the 'tbl->table' bitmap has just been
allocated, so no concurrent accesses can occur.

The other accesses to the 'tbl->table' bitmap are protected by the
'tbl->lock' spinlock, so no concurrent accesses can happen.

So prefer the non-atomic '__[set|clear]_bit()' functions to save a few
cycles.

Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
---
 drivers/infiniband/hw/vmw_pvrdma/pvrdma_doorbell.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/infiniband/hw/vmw_pvrdma/pvrdma_doorbell.c b/drivers/infiniband/hw/vmw_pvrdma/pvrdma_doorbell.c
index 21ef3fb39915..9a4de962e947 100644
--- a/drivers/infiniband/hw/vmw_pvrdma/pvrdma_doorbell.c
+++ b/drivers/infiniband/hw/vmw_pvrdma/pvrdma_doorbell.c
@@ -68,7 +68,7 @@ int pvrdma_uar_table_init(struct pvrdma_dev *dev)
 		return -ENOMEM;
 
 	/* 0th UAR is taken by the device. */
-	set_bit(0, tbl->table);
+	__set_bit(0, tbl->table);
 
 	return 0;
 }
@@ -100,7 +100,7 @@ int pvrdma_uar_alloc(struct pvrdma_dev *dev, struct pvrdma_uar_map *uar)
 		return -ENOMEM;
 	}
 
-	set_bit(obj, tbl->table);
+	__set_bit(obj, tbl->table);
 	obj |= tbl->top;
 
 	spin_unlock_irqrestore(&tbl->lock, flags);
@@ -120,7 +120,7 @@ void pvrdma_uar_free(struct pvrdma_dev *dev, struct pvrdma_uar_map *uar)
 
 	obj = uar->index & (tbl->max - 1);
 	spin_lock_irqsave(&tbl->lock, flags);
-	clear_bit(obj, tbl->table);
+	__clear_bit(obj, tbl->table);
 	tbl->last = min(tbl->last, obj);
 	tbl->top = (tbl->top + tbl->max) & tbl->mask;
 	spin_unlock_irqrestore(&tbl->lock, flags);
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH 1/2] RDMA/pvrdma: Use bitmap_zalloc() when applicable
  2021-11-25 20:05 [PATCH 1/2] RDMA/pvrdma: Use bitmap_zalloc() when applicable Christophe JAILLET
  2021-11-25 20:05 ` [PATCH 2/2] RDMA/pvrdma: Use non-atomic bitmap functions when possible Christophe JAILLET
@ 2021-11-29 18:37 ` Jason Gunthorpe
  1 sibling, 0 replies; 3+ messages in thread
From: Jason Gunthorpe @ 2021-11-29 18:37 UTC (permalink / raw)
  To: Christophe JAILLET
  Cc: bryantan, vdasa, pv-drivers, dledford, linux-rdma, linux-kernel,
	kernel-janitors

On Thu, Nov 25, 2021 at 09:05:40PM +0100, Christophe JAILLET wrote:
> Use 'bitmap_zalloc()' to simplify code, improve the semantic and avoid some
> open-coded arithmetic in allocator arguments.
> 
> Also change the corresponding 'kfree()' into 'bitmap_free()' to keep
> consistency.
> 
> Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
> ---
>  drivers/infiniband/hw/vmw_pvrdma/pvrdma_doorbell.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)

Applied to for-next, thanks

Jason

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2021-11-29 18:40 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-11-25 20:05 [PATCH 1/2] RDMA/pvrdma: Use bitmap_zalloc() when applicable Christophe JAILLET
2021-11-25 20:05 ` [PATCH 2/2] RDMA/pvrdma: Use non-atomic bitmap functions when possible Christophe JAILLET
2021-11-29 18:37 ` [PATCH 1/2] RDMA/pvrdma: Use bitmap_zalloc() when applicable Jason Gunthorpe

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.