[openib-general] DMA mapping abuses in MAD layer

Sean Hefty mshefty at ichips.intel.com
Fri Oct 14 09:18:31 PDT 2005


Christoph Hellwig wrote:
> If you change behaviour you should change the interface, in this case
> you'd _really_ want to pass down the buffer as void pointer and not cast
> it to a dma_addr_t - that would in fact break on ppc64 where dma_addr_t
> is a 32bit data type and a pointer is 64bits wide.

To clarify, I'm proceeding down the path of changing:

int ib_post_send_mad(struct ib_mad_agent *mad_agent,
		     struct ib_send_wr *send_wr,
		     struct ib_send_wr **bad_send_wr);

to something like:

int ib_post_send_mad(struct ib_mad_agent *mad_agent,
		     struct ib_mad_send_buf *send_buf,
		     struct ib_mad_send_buf **bad_send_buf);

(with minor changes to struct ib_mad_send_buf)  This should permit chaining 
together sends, plus control how memory is allocated for very large MAD 
transfers.  I threw out the other possibility to ensure that there's not a 
better solution that we're missing.  I believe that the other solution requires 
substantially fewer changes to the existing codebase.

- Sean



More information about the general mailing list