Subject: Re: [PATCH] ppc/iommu: prevent false TCE leak message

From: Gavin Shan <[email-masked]>
Date: Fri, 28 Dec 2012 13:21:35 +0800

On Thu, Dec 27, 2012 at 02:28:06PM -0200, Thadeu Lima de Souza Cascardo wrote:
>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 <[email-masked]>
>---
> arch/powerpc/kernel/iommu.c |    5 +++++
> 1 files changed, 5 insertions(+), 0 deletions(-)
>
>diff --git a/arch/powerpc/kernel/iommu.c b/arch/powerpc/kernel/iommu.c
>index 8226c6c..226e9e5 100644
>--- a/arch/powerpc/kernel/iommu.c
>+++ b/arch/powerpc/kernel/iommu.c
>@@ -717,6 +717,11 @@ 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. */

At least, the comment would look like:

	/*
	 * xxxxxxx
	 */

>+	if (tbl->it_offset == 0)
>+		clear_bit(0, tbl->it_map);
>+
> 	/* verify that table contains no entries */
> 	/* it_size is in entries, and we're examining 64 at a time */

The comment would be merged as well? :-)

> 	for (i = 0; i < (tbl->it_size/64); i++) {

Thanks,
Gavin