[ofa-general] [PATCH for-2.6.21] IB/mthca: fix data corruption after unmap on Sinai

Michael S. Tsirkin mst at dev.mellanox.co.il
Mon Apr 16 07:04:55 PDT 2007


On FMR unmap, mthca masks high bits in key, which removes the
effect of Sinai work-around applied in adjust_key during FMR
allocation.
This triggers data corruption when the region is next mapped.

Fix by re-applying Sinai work-around after masking the key.
Thanks to Or Gerlitz for reproducing the problem, and Ariel Shahar
for help in debug.

Signed-off-by: Michael S. Tsirkin <mst at dev.mellanox.co.il>

--

The patch's been running on Or's system for half an hor now without failures
(used to fail after a couple of minutes).
Roland, this is an old bug, I think we want to queue the patch for 2.6.20/2.6.19
stable kernels as well.

Tziporet, could you put this on OFED 1.1 support page as well?

diff --git a/drivers/infiniband/hw/mthca/mthca_mr.c b/drivers/infiniband/hw/mthca/mthca_mr.c
index fdb576d..ee561c5 100644
--- a/drivers/infiniband/hw/mthca/mthca_mr.c
+++ b/drivers/infiniband/hw/mthca/mthca_mr.c
@@ -835,6 +835,7 @@ void mthca_arbel_fmr_unmap(struct mthca_dev *dev, struct mthca_fmr *fmr)
 
 	key = arbel_key_to_hw_index(fmr->ibmr.lkey);
 	key &= dev->limits.num_mpts - 1;
+	key = adjust_key(dev, key);
 	fmr->ibmr.lkey = fmr->ibmr.rkey = arbel_hw_index_to_key(key);
 
 	fmr->maps = 0;


-- 
MST



More information about the general mailing list