[ofa-general] Re: [PATCH] IB/mthca: Clear ICM pages before handing to FW

Roland Dreier rdreier at cisco.com
Sun Jun 22 09:11:43 PDT 2008


 > Current memfree FW has a bug which in some cases, assumes that ICM
 > pages passed to it are cleared -- this patch will clear any ICM page
 > passed to the FW. It is essential to use this patch since there are
 > many cards already in use which use FW with this bug. At some time
 > when we're sure all systems are updated with the new FW (yet to be
 > released), we can remove this patch.

realistically I think we leave this workaround forever.  it's not like
it costs very much.

Does mlx4 have any similar problem?

 > ---

 > This fixes the bug reported by Arthur from SGI here:
 > http://lists.openfabrics.org/pipermail/general/2008-May/050026.html

This should be in the changelog itself... there's no reason to throw
away this useful information when merging the patch.


Anyway, thanks for debugging this... one question, why not just use the
following (completely untested) change instead?  Does this not work?

At least using clear_highpage() instead of vmap() by hand seems much
simpler too if __GFP_ZERO isn't usable for some reason.

diff --git a/drivers/infiniband/hw/mthca/mthca_memfree.c b/drivers/infiniband/hw/mthca/mthca_memfree.c
index 9e77ba9..4fb3c85 100644
--- a/drivers/infiniband/hw/mthca/mthca_memfree.c
+++ b/drivers/infiniband/hw/mthca/mthca_memfree.c
@@ -107,7 +107,7 @@ static int mthca_alloc_icm_pages(struct scatterlist *mem, int order, gfp_t gfp_m
 {
 	struct page *page;
 
-	page = alloc_pages(gfp_mask, order);
+	page = alloc_pages(gfp_mask | __GFP_ZERO, order);
 	if (!page)
 		return -ENOMEM;
 



More information about the general mailing list