Skip to content

Commit

Permalink
powerpc/iommu: Use bitmap library
Browse files Browse the repository at this point in the history
- Caluculate the bitmap size with BITS_TO_LONGS()
 - Use bitmap_empty() to verify that all bits are cleared

This also includes a printk to pr_warn() conversion.

Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: linuxppc-dev@lists.ozlabs.org
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
  • Loading branch information
Akinobu Mita authored and Benjamin Herrenschmidt committed Nov 15, 2012
1 parent d7a1ed1 commit c5a0809
Showing 1 changed file with 5 additions and 11 deletions.
16 changes: 5 additions & 11 deletions arch/powerpc/kernel/iommu.c
Original file line number Diff line number Diff line change
Expand Up @@ -656,7 +656,7 @@ struct iommu_table *iommu_init_table(struct iommu_table *tbl, int nid)
struct iommu_pool *p;

/* number of bytes needed for the bitmap */
sz = (tbl->it_size + 7) >> 3;
sz = BITS_TO_LONGS(tbl->it_size) * sizeof(unsigned long);

page = alloc_pages_node(nid, GFP_ATOMIC, get_order(sz));
if (!page)
Expand Down Expand Up @@ -708,7 +708,7 @@ struct iommu_table *iommu_init_table(struct iommu_table *tbl, int nid)

void iommu_free_table(struct iommu_table *tbl, const char *node_name)
{
unsigned long bitmap_sz, i;
unsigned long bitmap_sz;
unsigned int order;

if (!tbl || !tbl->it_map) {
Expand All @@ -718,17 +718,11 @@ void iommu_free_table(struct iommu_table *tbl, const char *node_name)
}

/* verify that table contains no entries */
/* it_size is in entries, and we're examining 64 at a time */
for (i = 0; i < (tbl->it_size/64); i++) {
if (tbl->it_map[i] != 0) {
printk(KERN_WARNING "%s: Unexpected TCEs for %s\n",
__func__, node_name);
break;
}
}
if (!bitmap_empty(tbl->it_map, tbl->it_size))
pr_warn("%s: Unexpected TCEs for %s\n", __func__, node_name);

/* calculate bitmap size in bytes */
bitmap_sz = (tbl->it_size + 7) / 8;
bitmap_sz = BITS_TO_LONGS(tbl->it_size) * sizeof(unsigned long);

/* free bitmap */
order = get_order(bitmap_sz);
Expand Down

0 comments on commit c5a0809

Please sign in to comment.