Re: whole bunch o' new IB warnings

From: Roland Dreier
Date: Wed Jun 13 2007 - 16:53:55 EST

> Current git tree on x86-64 (make allmodconfig) wants fixing for 2.6.22:
> drivers/infiniband/hw/mlx4/qp.c: In function ?set_rq_size?:
> drivers/infiniband/hw/mlx4/qp.c:210: warning: comparison of distinct
> pointer types lacks a cast

Thanks, you're right. You have to admit, it's pretty amusing how many
times roundup_pow_of_two() expands its argument (via ilog2)...

Anyway, I have this queued up to fix it. I'll ask Linus to pull shortly.

commit 42c059ea2b0aac5f961253ba81c1b464d181a600
Author: Roland Dreier <rolandd@xxxxxxxxx>
Date: Tue Jun 12 10:52:02 2007 -0700

IB/mlx4: Fix warning in rounding up queue sizes

Doing max(1, foo) where foo is u32 generates a warning, because 1 is a
signed constant. Fix this by using 1U instead.

Signed-off-by: Roland Dreier <rolandd@xxxxxxxxx>

diff --git a/drivers/infiniband/hw/mlx4/qp.c b/drivers/infiniband/hw/mlx4/qp.c
index 5c6d054..4c15fa3 100644
--- a/drivers/infiniband/hw/mlx4/qp.c
+++ b/drivers/infiniband/hw/mlx4/qp.c
@@ -207,8 +207,8 @@ static int set_rq_size(struct mlx4_ib_dev *dev, struct ib_qp_cap *cap,
if (is_user && (!cap->max_recv_wr || !cap->max_recv_sge))
return -EINVAL;

- qp->rq.max = roundup_pow_of_two(max(1, cap->max_recv_wr));
- qp->rq.max_gs = roundup_pow_of_two(max(1, cap->max_recv_sge));
+ qp->rq.max = roundup_pow_of_two(max(1U, cap->max_recv_wr));
+ qp->rq.max_gs = roundup_pow_of_two(max(1U, cap->max_recv_sge));
qp->rq.wqe_shift = ilog2(qp->rq.max_gs * sizeof (struct mlx4_wqe_data_seg));

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at
Please read the FAQ at