2006-12-13 17:46:52

by Luck, Tony

[permalink] [raw]
Subject: sg_dma_address and sg_dma_len

Ralph,

I'm seeing dozens of build warnings and errors on ia64 from
infiniband. According to git you touched it last, so even
if you aren't to blame, you are by definition an expert :-)

E.g.

In file included from include/rdma/ib_addr.h:37,
from drivers/infiniband/core/addr.c:39:
include/rdma/ib_verbs.h: In function `ib_sg_dma_address':
include/rdma/ib_verbs.h:1572: warning: implicit declaration of function `sg_dma_address'
include/rdma/ib_verbs.h: In function `ib_sg_dma_len':
include/rdma/ib_verbs.h:1584: warning: implicit declaration of function `sg_dma_len'

Adding a #include <linux/pci.h> would shut them up (as the defines for
sg_dma_address and sg_dma_len are in asm/pci.h) ... but I've no idea
whether this is the right fix.

-Tony


2006-12-13 20:45:07

by Ralph Campbell

[permalink] [raw]
Subject: Re: sg_dma_address and sg_dma_len

On Wed, 2006-12-13 at 09:37 -0800, Luck, Tony wrote:
> Ralph,
>
> I'm seeing dozens of build warnings and errors on ia64 from
> infiniband. According to git you touched it last, so even
> if you aren't to blame, you are by definition an expert :-)
>
> E.g.
>
> In file included from include/rdma/ib_addr.h:37,
> from drivers/infiniband/core/addr.c:39:
> include/rdma/ib_verbs.h: In function `ib_sg_dma_address':
> include/rdma/ib_verbs.h:1572: warning: implicit declaration of function `sg_dma_address'
> include/rdma/ib_verbs.h: In function `ib_sg_dma_len':
> include/rdma/ib_verbs.h:1584: warning: implicit declaration of function `sg_dma_len'
>
> Adding a #include <linux/pci.h> would shut them up (as the defines for
> sg_dma_address and sg_dma_len are in asm/pci.h) ... but I've no idea
> whether this is the right fix.
>
> -Tony

For some reason ia64 defines sg_dma_address() in include/asm-ia64/pci.h
instead of include/asm-ia64/scatterlist.h like most other architectures.

Since pci.h includes <asm/scatterlist.h> it seems like the fix would be
to move the two lines:
#define sg_dma_len(sg) ((sg)->dma_length)
#define sg_dma_address(sg) ((sg)->dma_address)
to include/asm-ia64/scatterlist.h

Now that I look, I see asm-sh64/pci.h and asm-frv/dma-mapping.h
would also need to be changed.

2006-12-13 22:24:43

by Luck, Tony

[permalink] [raw]
Subject: RE: sg_dma_address and sg_dma_len

> Since pci.h includes <asm/scatterlist.h> it seems like the fix would be
> to move the two lines:
> #define sg_dma_len(sg) ((sg)->dma_length)
> #define sg_dma_address(sg) ((sg)->dma_address)
> to include/asm-ia64/scatterlist.h

Sounds like a good plan ... a test build with this change fixed all the
infiniband build issues, and didn't introduce any new ones. I've applied
this to my ia64 tree and asked Linus to pull it.

Thanks.

-Tony