Here is a list of calls in the lustre code intercepted by ipath.

Just a clarification: as they currently stand in your code, these will NOT be intercepted by ipath, and that's most likely the source of your OOPs.

o2iblnd.c:
                rx->rx_msgaddr = dma_map_single(cmid->device->dma_device,
                                                rx->rx_msg,
                                                IBLND_MSG_SIZE,
                                                DMA_FROM_DEVICE);

o2iblnd.c:
                tx->tx_msgaddr = dma_map_single(
                        kiblnd_data.kib_cmid->device->dma_device,
                        tx->tx_msg, IBLND_MSG_SIZE, DMA_TO_DEVICE);


o2iblnd.c:
                        dma_unmap_single(conn->ibc_cmid->device->dma_device,
                                         pci_unmap_addr(rx, rx_msgunmap),
                                         IBLND_MSG_SIZE, DMA_FROM_DEVICE);
o2iblnd.c:
                dma_unmap_single(kiblnd_data.kib_cmid->device->dma_device,
                                 pci_unmap_addr(tx, tx_msgunmap),
                                 IBLND_MSG_SIZE, DMA_TO_DEVICE);


o2iblnd_cb.c:
        rd->rd_nfrags = dma_map_sg(kiblnd_data.kib_cmid->device->dma_device,
                                   tx->tx_frags, tx->tx_nfrags,tx->tx_dmadir);


o2iblnd_cb.c:
                dma_unmap_sg(kiblnd_data.kib_cmid->device->dma_device,
                             tx->tx_frags, tx->tx_nfrags, tx->tx_dmadir);

o2iblnd_cb.c:
                rd->rd_frags[i].rf_addr = sg_dma_address(&tx->tx_frags[i]);

o2iblnd_cb.c:
                rd->rd_frags[i].rf_nob  = sg_dma_len(&tx->tx_frags[i]);



So, how to proceed now?

These need to be replaced with calls to ib_dma_map_single, ib_dma_unmap_single, ib_dma_map_sg, ib_dma_unmap_sg, etc. Note that these calls typically take a struct ib_device * as the first argument instead of a struct device *. Other than that, the API is pretty much identical. Here's the complete list:

  ib_dma_mapping_error
  ib_dma_map_single
  ib_dma_unmap_single
  ib_dma_map_page
  ib_dma_unmap_page
  ib_dma_map_sg
  ib_dma_unmap_sg
  ib_sg_dma_address
  ib_sg_dma_len
  ib_dma_sync_single_for_cpu
  ib_dma_sync_single_for_device
  ib_dma_alloc_coherent
  ib_dma_free_coherent

Look in rdma/ib_verbs.h for prototypes.

Let me know if you need any more assistance with this.

Regards,
 Robert.
_______________________________________________
general mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to