summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKyle McMartin <kmcmartin@redhat.com>2012-02-27 22:02:56 (GMT)
committerRoland Dreier <roland@purestorage.com>2012-03-05 18:12:35 (GMT)
commitbd50f8924c684f84416fb58c11eb24619b041f25 (patch)
tree1663476c9a64c9bc9afd900b79404523936aaea5
parent6aeaa48b0dd3a4261804be1cccaea46d82be3fcb (diff)
downloadlinux-bd50f8924c684f84416fb58c11eb24619b041f25.tar.xz
IB/ehca: Fix ilog2() compile failure
I'm getting compile failures building this driver, which I narrowed down to the ilog2 call in ehca_get_max_hwpage_size... ERROR: ".____ilog2_NaN" [drivers/infiniband/hw/ehca/ib_ehca.ko] undefined! make[1]: *** [__modpost] Error 1 make: *** [modules] Error 2 The use of shca->hca_cap_mr_pgsize is confusing the compiler, and resulting in the __builtin_constant_p in ilog2 going insane. I tried making it take the u32 pgsize as an argument and the expansion of shca->_pgsize in the caller, but that failed as well. With this patch in place, the driver compiles on my GCC 4.6.2 here. Suggested-by: Roland Dreier <roland@purestorage.com> Signed-off-by: Kyle McMartin <kmcmarti@redhat.com> Signed-off-by: Roland Dreier <roland@purestorage.com>
-rw-r--r--drivers/infiniband/hw/ehca/ehca_mrmw.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/infiniband/hw/ehca/ehca_mrmw.c b/drivers/infiniband/hw/ehca/ehca_mrmw.c
index 43cae84..b781b2c 100644
--- a/drivers/infiniband/hw/ehca/ehca_mrmw.c
+++ b/drivers/infiniband/hw/ehca/ehca_mrmw.c
@@ -112,7 +112,7 @@ static u32 ehca_encode_hwpage_size(u32 pgsize)
static u64 ehca_get_max_hwpage_size(struct ehca_shca *shca)
{
- return 1UL << ilog2(shca->hca_cap_mr_pgsize);
+ return rounddown_pow_of_two(shca->hca_cap_mr_pgsize);
}
static struct ehca_mr *ehca_mr_new(void)