Commit 4b00b176 authored by Christophe JAILLET's avatar Christophe JAILLET Committed by Greg Kroah-Hartman
Browse files

cxl: Use the bitmap API to allocate bitmaps



Use bitmap_zalloc()/bitmap_free() instead of hand-writing them.

It is less verbose and it improves the semantic.

Acked-by: default avatarAndrew Donnellan <ajd@linux.ibm.com>
Signed-off-by: default avatarChristophe JAILLET <christophe.jaillet@wanadoo.fr>
Link: https://lore.kernel.org/r/59010cc7c62443030c69cb1ce0b2b62c5d47e064.1657566849.git.christophe.jaillet@wanadoo.fr


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent d618072d
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -331,7 +331,7 @@ static void reclaim_ctx(struct rcu_head *rcu)
		__free_page(ctx->ff_page);
	ctx->sstp = NULL;

	kfree(ctx->irq_bitmap);
	bitmap_free(ctx->irq_bitmap);

	/* Drop ref to the afu device taken during cxl_context_init */
	cxl_afu_put(ctx->afu);
+1 −1
Original line number Diff line number Diff line
@@ -1053,7 +1053,7 @@ static void free_adapter(struct cxl *adapter)
		if (adapter->guest->irq_avail) {
			for (i = 0; i < adapter->guest->irq_nranges; i++) {
				cur = &adapter->guest->irq_avail[i];
				kfree(cur->bitmap);
				bitmap_free(cur->bitmap);
			}
			kfree(adapter->guest->irq_avail);
		}
+1 −2
Original line number Diff line number Diff line
@@ -319,8 +319,7 @@ int afu_allocate_irqs(struct cxl_context *ctx, u32 count)
	}

	ctx->irq_count = count;
	ctx->irq_bitmap = kcalloc(BITS_TO_LONGS(count),
				  sizeof(*ctx->irq_bitmap), GFP_KERNEL);
	ctx->irq_bitmap = bitmap_zalloc(count, GFP_KERNEL);
	if (!ctx->irq_bitmap)
		goto out;

+2 −3
Original line number Diff line number Diff line
@@ -308,8 +308,7 @@ static int read_adapter_irq_config(struct cxl *adapter, struct device_node *np)
		cur = &adapter->guest->irq_avail[i];
		cur->offset = be32_to_cpu(ranges[i * 2]);
		cur->range  = be32_to_cpu(ranges[i * 2 + 1]);
		cur->bitmap = kcalloc(BITS_TO_LONGS(cur->range),
				sizeof(*cur->bitmap), GFP_KERNEL);
		cur->bitmap = bitmap_zalloc(cur->range, GFP_KERNEL);
		if (cur->bitmap == NULL)
			goto err;
		if (cur->offset < adapter->guest->irq_base_offset)
@@ -326,7 +325,7 @@ static int read_adapter_irq_config(struct cxl *adapter, struct device_node *np)
err:
	for (i--; i >= 0; i--) {
		cur = &adapter->guest->irq_avail[i];
		kfree(cur->bitmap);
		bitmap_free(cur->bitmap);
	}
	kfree(adapter->guest->irq_avail);
	adapter->guest->irq_avail = NULL;