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 <ja...@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 ) _______________________________________________ ewg mailing list ewg@lists.openfabrics.org http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg