powerpc/iommu: Fix iommu pool initialization
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>
Fri, 13 Jul 2012 07:45:49 +0000 (17:45 +1000)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Fri, 13 Jul 2012 07:45:49 +0000 (17:45 +1000)
The iommu pool patch has a bug where it would cause a crash when using
only one pool (based on the size of the DMA window).

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/kernel/iommu.c

index fbefe729df32834506df0952a25459021de97bf4..ff5a6ce027b88e88df6dbf7aa32519f2d08e6d7c 100644 (file)
@@ -676,9 +676,9 @@ struct iommu_table *iommu_init_table(struct iommu_table *tbl, int nid)
                tbl->nr_pools = 1;
 
        /* We reserve the top 1/4 of the table for large allocations */
-       tbl->poolsize = (tbl->it_size * 3 / 4) / IOMMU_NR_POOLS;
+       tbl->poolsize = (tbl->it_size * 3 / 4) / tbl->nr_pools;
 
-       for (i = 0; i < IOMMU_NR_POOLS; i++) {
+       for (i = 0; i < tbl->nr_pools; i++) {
                p = &tbl->pools[i];
                spin_lock_init(&(p->lock));
                p->start = tbl->poolsize * i;