[ewg] [PATCH] sdp: incorrect SDP_FMR_SIZE on 32-bit machines

Jack Morgenstein jackm at dev.mellanox.co.il
Sun Aug 30 07:16:13 PDT 2009


On 32-bit machines, sizeof (u64 *) is 4 bytes (size of a ***pointer***).
However, the max SDP FMR pool size should be PAGE_SIZE / sizeof(an mtt entry) --
and mtt entries are u64's (or __be64's).

This resulted in SDP requesting twice as many entries per pool on 32-bit machines
as could fit on a single page -- with the result that the fmr pool allocation failed
at driver startup.

Signed-off-by: Jack Morgenstein <jackm at dev.mellanox.co.il>

---
Amir,
Please take care of this.

Index: ofed_kernel-fixes/drivers/infiniband/ulp/sdp/sdp.h
===================================================================
--- ofed_kernel-fixes.orig/drivers/infiniband/ulp/sdp/sdp.h	2009-08-30 16:57:02.000000000 +0300
+++ ofed_kernel-fixes/drivers/infiniband/ulp/sdp/sdp.h	2009-08-30 16:57:20.000000000 +0300
@@ -29,7 +29,7 @@
 #define SDP_TX_SIZE 0x40
 #define SDP_RX_SIZE 0x40
 
-#define SDP_FMR_SIZE (PAGE_SIZE / sizeof(u64 *))
+#define SDP_FMR_SIZE (PAGE_SIZE / sizeof(u64))
 #define SDP_FMR_POOL_SIZE	1024
 #define SDP_FMR_DIRTY_SIZE	( SDP_FMR_POOL_SIZE / 4 )
 



More information about the ewg mailing list