]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
powerpc/iommu: Prevent false TCE leak message
authorThadeu Lima de Souza Cascardo <cascardo@linux.vnet.ibm.com>
Fri, 28 Dec 2012 09:08:51 +0000 (09:08 +0000)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Thu, 10 Jan 2013 06:01:53 +0000 (17:01 +1100)
When a device DMA window includes the address 0, it's reserved in the
TCE bitmap to avoid returning that address to drivers.

When the device is removed, the bitmap is checked for any mappings not
removed by the driver, indicating a possible DMA mapping leak. Since the
reserved address is not cleared, a message is printed, warning of such a
leak.

Check for the reservation, and clear it before checking for any other
standing mappings.

Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@linux.vnet.ibm.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/kernel/iommu.c

index c862fd716fe3ede17452e7bfe138b18292de31fb..31c4fdc6859cbfc4ec4d6f03f55f5a7deac748fb 100644 (file)
@@ -717,6 +717,13 @@ void iommu_free_table(struct iommu_table *tbl, const char *node_name)
                return;
        }
 
+       /*
+        * In case we have reserved the first bit, we should not emit
+        * the warning below.
+        */
+       if (tbl->it_offset == 0)
+               clear_bit(0, tbl->it_map);
+
        /* verify that table contains no entries */
        if (!bitmap_empty(tbl->it_map, tbl->it_size))
                pr_warn("%s: Unexpected TCEs for %s\n", __func__, node_name);