Commit 00a2b7c7 authored by Marc Zyngier's avatar Marc Zyngier

Merge branch irq/bitmap_zalloc into irq/irqchip-next

irqchip-wide replacement of bitmap allocation using kcalloc()
and co with bitmap-specific allocators (Andy Shevchenko)

* irq/bitmap_zalloc:
  irqchip/mvebu-odmi: Switch to bitmap_zalloc()
  irqchip/mvebu-gicp: Switch to devm_bitmap_zalloc()
  irqchip/ls-scfg-msi: Switch to devm_bitmap_zalloc()
  irqchip/gic-v3: Switch to bitmap_zalloc()
  irqchip/gic-v2m: Switch to bitmap_zalloc()
  irqchip/alpine-msi: Switch to bitmap_zalloc()
  irqchip/partitions: Switch to bitmap_zalloc()
Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
parents ff117646 c980983d
...@@ -267,9 +267,7 @@ static int alpine_msix_init(struct device_node *node, ...@@ -267,9 +267,7 @@ static int alpine_msix_init(struct device_node *node,
goto err_priv; goto err_priv;
} }
priv->msi_map = kcalloc(BITS_TO_LONGS(priv->num_spis), priv->msi_map = bitmap_zalloc(priv->num_spis, GFP_KERNEL);
sizeof(*priv->msi_map),
GFP_KERNEL);
if (!priv->msi_map) { if (!priv->msi_map) {
ret = -ENOMEM; ret = -ENOMEM;
goto err_priv; goto err_priv;
...@@ -285,7 +283,7 @@ static int alpine_msix_init(struct device_node *node, ...@@ -285,7 +283,7 @@ static int alpine_msix_init(struct device_node *node,
return 0; return 0;
err_map: err_map:
kfree(priv->msi_map); bitmap_free(priv->msi_map);
err_priv: err_priv:
kfree(priv); kfree(priv);
return ret; return ret;
......
...@@ -269,7 +269,7 @@ static void gicv2m_teardown(void) ...@@ -269,7 +269,7 @@ static void gicv2m_teardown(void)
list_for_each_entry_safe(v2m, tmp, &v2m_nodes, entry) { list_for_each_entry_safe(v2m, tmp, &v2m_nodes, entry) {
list_del(&v2m->entry); list_del(&v2m->entry);
kfree(v2m->bm); bitmap_free(v2m->bm);
iounmap(v2m->base); iounmap(v2m->base);
of_node_put(to_of_node(v2m->fwnode)); of_node_put(to_of_node(v2m->fwnode));
if (is_fwnode_irqchip(v2m->fwnode)) if (is_fwnode_irqchip(v2m->fwnode))
...@@ -386,8 +386,7 @@ static int __init gicv2m_init_one(struct fwnode_handle *fwnode, ...@@ -386,8 +386,7 @@ static int __init gicv2m_init_one(struct fwnode_handle *fwnode,
break; break;
} }
} }
v2m->bm = kcalloc(BITS_TO_LONGS(v2m->nr_spis), sizeof(long), v2m->bm = bitmap_zalloc(v2m->nr_spis, GFP_KERNEL);
GFP_KERNEL);
if (!v2m->bm) { if (!v2m->bm) {
ret = -ENOMEM; ret = -ENOMEM;
goto err_iounmap; goto err_iounmap;
......
...@@ -2140,7 +2140,7 @@ static unsigned long *its_lpi_alloc(int nr_irqs, u32 *base, int *nr_ids) ...@@ -2140,7 +2140,7 @@ static unsigned long *its_lpi_alloc(int nr_irqs, u32 *base, int *nr_ids)
if (err) if (err)
goto out; goto out;
bitmap = kcalloc(BITS_TO_LONGS(nr_irqs), sizeof (long), GFP_ATOMIC); bitmap = bitmap_zalloc(nr_irqs, GFP_ATOMIC);
if (!bitmap) if (!bitmap)
goto out; goto out;
...@@ -2156,7 +2156,7 @@ static unsigned long *its_lpi_alloc(int nr_irqs, u32 *base, int *nr_ids) ...@@ -2156,7 +2156,7 @@ static unsigned long *its_lpi_alloc(int nr_irqs, u32 *base, int *nr_ids)
static void its_lpi_free(unsigned long *bitmap, u32 base, u32 nr_ids) static void its_lpi_free(unsigned long *bitmap, u32 base, u32 nr_ids)
{ {
WARN_ON(free_lpi_range(base, nr_ids)); WARN_ON(free_lpi_range(base, nr_ids));
kfree(bitmap); bitmap_free(bitmap);
} }
static void gic_reset_prop_table(void *va) static void gic_reset_prop_table(void *va)
...@@ -3387,7 +3387,7 @@ static struct its_device *its_create_device(struct its_node *its, u32 dev_id, ...@@ -3387,7 +3387,7 @@ static struct its_device *its_create_device(struct its_node *its, u32 dev_id,
if (!dev || !itt || !col_map || (!lpi_map && alloc_lpis)) { if (!dev || !itt || !col_map || (!lpi_map && alloc_lpis)) {
kfree(dev); kfree(dev);
kfree(itt); kfree(itt);
kfree(lpi_map); bitmap_free(lpi_map);
kfree(col_map); kfree(col_map);
return NULL; return NULL;
} }
......
...@@ -290,8 +290,7 @@ int __init mbi_init(struct fwnode_handle *fwnode, struct irq_domain *parent) ...@@ -290,8 +290,7 @@ int __init mbi_init(struct fwnode_handle *fwnode, struct irq_domain *parent)
if (ret) if (ret)
goto err_free_mbi; goto err_free_mbi;
mbi_ranges[n].bm = kcalloc(BITS_TO_LONGS(mbi_ranges[n].nr_spis), mbi_ranges[n].bm = bitmap_zalloc(mbi_ranges[n].nr_spis, GFP_KERNEL);
sizeof(long), GFP_KERNEL);
if (!mbi_ranges[n].bm) { if (!mbi_ranges[n].bm) {
ret = -ENOMEM; ret = -ENOMEM;
goto err_free_mbi; goto err_free_mbi;
...@@ -329,7 +328,7 @@ int __init mbi_init(struct fwnode_handle *fwnode, struct irq_domain *parent) ...@@ -329,7 +328,7 @@ int __init mbi_init(struct fwnode_handle *fwnode, struct irq_domain *parent)
err_free_mbi: err_free_mbi:
if (mbi_ranges) { if (mbi_ranges) {
for (n = 0; n < mbi_range_nr; n++) for (n = 0; n < mbi_range_nr; n++)
kfree(mbi_ranges[n].bm); bitmap_free(mbi_ranges[n].bm);
kfree(mbi_ranges); kfree(mbi_ranges);
} }
......
...@@ -362,10 +362,7 @@ static int ls_scfg_msi_probe(struct platform_device *pdev) ...@@ -362,10 +362,7 @@ static int ls_scfg_msi_probe(struct platform_device *pdev)
msi_data->irqs_num = MSI_IRQS_PER_MSIR * msi_data->irqs_num = MSI_IRQS_PER_MSIR *
(1 << msi_data->cfg->ibs_shift); (1 << msi_data->cfg->ibs_shift);
msi_data->used = devm_kcalloc(&pdev->dev, msi_data->used = devm_bitmap_zalloc(&pdev->dev, msi_data->irqs_num, GFP_KERNEL);
BITS_TO_LONGS(msi_data->irqs_num),
sizeof(*msi_data->used),
GFP_KERNEL);
if (!msi_data->used) if (!msi_data->used)
return -ENOMEM; return -ENOMEM;
/* /*
......
...@@ -210,9 +210,7 @@ static int mvebu_gicp_probe(struct platform_device *pdev) ...@@ -210,9 +210,7 @@ static int mvebu_gicp_probe(struct platform_device *pdev)
gicp->spi_cnt += gicp->spi_ranges[i].count; gicp->spi_cnt += gicp->spi_ranges[i].count;
} }
gicp->spi_bitmap = devm_kcalloc(&pdev->dev, gicp->spi_bitmap = devm_bitmap_zalloc(&pdev->dev, gicp->spi_cnt, GFP_KERNEL);
BITS_TO_LONGS(gicp->spi_cnt), sizeof(long),
GFP_KERNEL);
if (!gicp->spi_bitmap) if (!gicp->spi_bitmap)
return -ENOMEM; return -ENOMEM;
......
...@@ -171,8 +171,7 @@ static int __init mvebu_odmi_init(struct device_node *node, ...@@ -171,8 +171,7 @@ static int __init mvebu_odmi_init(struct device_node *node,
if (!odmis) if (!odmis)
return -ENOMEM; return -ENOMEM;
odmis_bm = kcalloc(BITS_TO_LONGS(odmis_count * NODMIS_PER_FRAME), odmis_bm = bitmap_zalloc(odmis_count * NODMIS_PER_FRAME, GFP_KERNEL);
sizeof(long), GFP_KERNEL);
if (!odmis_bm) { if (!odmis_bm) {
ret = -ENOMEM; ret = -ENOMEM;
goto err_alloc; goto err_alloc;
...@@ -227,7 +226,7 @@ static int __init mvebu_odmi_init(struct device_node *node, ...@@ -227,7 +226,7 @@ static int __init mvebu_odmi_init(struct device_node *node,
if (odmi->base && !IS_ERR(odmi->base)) if (odmi->base && !IS_ERR(odmi->base))
iounmap(odmis[i].base); iounmap(odmis[i].base);
} }
kfree(odmis_bm); bitmap_free(odmis_bm);
err_alloc: err_alloc:
kfree(odmis); kfree(odmis);
return ret; return ret;
......
...@@ -215,8 +215,7 @@ struct partition_desc *partition_create_desc(struct fwnode_handle *fwnode, ...@@ -215,8 +215,7 @@ struct partition_desc *partition_create_desc(struct fwnode_handle *fwnode,
goto out; goto out;
desc->domain = d; desc->domain = d;
desc->bitmap = kcalloc(BITS_TO_LONGS(nr_parts), sizeof(long), desc->bitmap = bitmap_zalloc(nr_parts, GFP_KERNEL);
GFP_KERNEL);
if (WARN_ON(!desc->bitmap)) if (WARN_ON(!desc->bitmap))
goto out; goto out;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment