Hi,
we got an oops on using Lustre over infiniband with ipath cards. With the help
of Robert Walsh
(http://lists.openfabrics.org/pipermail/general/2007-April/034776.html) I
created the attached patch.
Cheers
Bernd
--
Bernd Schubert
Q-Leap Networks GmbH
Index: lustre-1.4.9/lnet/klnds/o2iblnd/o2iblnd.c
===================================================================
--- lustre-1.4.9.orig/lnet/klnds/o2iblnd/o2iblnd.c 2007-04-03 10:07:27.000000000 +0200
+++ lustre-1.4.9/lnet/klnds/o2iblnd/o2iblnd.c 2007-04-03 10:13:20.000000000 +0200
@@ -669,7 +669,7 @@
rx->rx_conn = conn;
rx->rx_msg = (kib_msg_t *)(((char *)page_address(page)) +
page_offset);
- rx->rx_msgaddr = dma_map_single(cmid->device->dma_device,
+ rx->rx_msgaddr = ib_dma_map_single(cmid->device,
rx->rx_msg,
IBLND_MSG_SIZE,
DMA_FROM_DEVICE);
@@ -854,7 +854,7 @@
LASSERT (rx->rx_nob >= 0); /* not posted */
- dma_unmap_single(conn->ibc_cmid->device->dma_device,
+ ib_dma_unmap_single(conn->ibc_cmid->device,
pci_unmap_addr(rx, rx_msgunmap),
IBLND_MSG_SIZE, DMA_FROM_DEVICE);
}
@@ -1173,7 +1173,7 @@
for (i = 0; i < IBLND_TX_MSGS(); i++) {
tx = &kiblnd_data.kib_tx_descs[i];
- dma_unmap_single(kiblnd_data.kib_cmid->device->dma_device,
+ ib_dma_unmap_single(kiblnd_data.kib_cmid->device,
pci_unmap_addr(tx, tx_msgunmap),
IBLND_MSG_SIZE, DMA_TO_DEVICE);
}
@@ -1201,8 +1201,8 @@
tx->tx_msg = (kib_msg_t *)(((char *)page_address(page)) +
page_offset);
- tx->tx_msgaddr = dma_map_single(
- kiblnd_data.kib_cmid->device->dma_device,
+ tx->tx_msgaddr = ib_dma_map_single(
+ kiblnd_data.kib_cmid->device,
tx->tx_msg, IBLND_MSG_SIZE, DMA_TO_DEVICE);
pci_unmap_addr_set(tx, tx_msgunmap, tx->tx_msgaddr);
Index: lustre-1.4.9/lnet/klnds/o2iblnd/o2iblnd_cb.c
===================================================================
--- lustre-1.4.9.orig/lnet/klnds/o2iblnd/o2iblnd_cb.c 2007-04-03 10:21:39.000000000 +0200
+++ lustre-1.4.9/lnet/klnds/o2iblnd/o2iblnd_cb.c 2007-04-03 10:38:00.000000000 +0200
@@ -88,7 +88,7 @@
}
#else
if (tx->tx_nfrags != 0) {
- dma_unmap_sg(kiblnd_data.kib_cmid->device->dma_device,
+ ib_dma_unmap_sg(kiblnd_data.kib_cmid->device,
tx->tx_frags, tx->tx_nfrags, tx->tx_dmadir);
tx->tx_nfrags = 0;
}
@@ -623,14 +623,16 @@
tx->tx_nfrags = sg - tx->tx_frags;
tx->tx_dmadir = (rd != tx->tx_rd) ? DMA_FROM_DEVICE : DMA_TO_DEVICE;
- rd->rd_nfrags = dma_map_sg(kiblnd_data.kib_cmid->device->dma_device,
+ rd->rd_nfrags = ib_dma_map_sg(kiblnd_data.kib_cmid->device,
tx->tx_frags, tx->tx_nfrags, tx->tx_dmadir);
rd->rd_key = (rd != tx->tx_rd) ?
kiblnd_data.kib_mr->rkey : kiblnd_data.kib_mr->lkey;
for (i = 0; i < rd->rd_nfrags; i++) {
- rd->rd_frags[i].rf_nob = sg_dma_len(&tx->tx_frags[i]);
- rd->rd_frags[i].rf_addr = sg_dma_address(&tx->tx_frags[i]);
+ rd->rd_frags[i].rf_nob = ib_sg_dma_len(kiblnd_data.kib_cmid->device,
+ &tx->tx_frags[i]);
+ rd->rd_frags[i].rf_addr = ib_sg_dma_address(kiblnd_data.kib_cmid->device,
+ &tx->tx_frags[i]);
}
return 0;
@@ -679,14 +681,16 @@
tx->tx_nfrags = sg - tx->tx_frags;
tx->tx_dmadir = (rd != tx->tx_rd) ? DMA_FROM_DEVICE : DMA_TO_DEVICE;
- rd->rd_nfrags = dma_map_sg(kiblnd_data.kib_cmid->device->dma_device,
+ rd->rd_nfrags = ib_dma_map_sg(kiblnd_data.kib_cmid->device,
tx->tx_frags, tx->tx_nfrags, tx->tx_dmadir);
rd->rd_key = (rd != tx->tx_rd) ?
kiblnd_data.kib_mr->rkey : kiblnd_data.kib_mr->lkey;
for (i = 0; i < tx->tx_nfrags; i++) {
- rd->rd_frags[i].rf_nob = sg_dma_len(&tx->tx_frags[i]);
- rd->rd_frags[i].rf_addr = sg_dma_address(&tx->tx_frags[i]);
+ rd->rd_frags[i].rf_nob = ib_sg_dma_len(kiblnd_data.kib_cmid->device,
+ &tx->tx_frags[i]);
+ rd->rd_frags[i].rf_addr = ib_sg_dma_address(kiblnd_data.kib_cmid->device,
+ &tx->tx_frags[i]);
#if 0
CDEBUG(D_WARNING,"frag[%d]: "LPX64" for %d\n",
i, rd->rd_frags[i].rf_addr, rd->rd_frags[i].rf_nob);
_______________________________________________
Lustre-devel mailing list
[email protected]
https://mail.clusterfs.com/mailman/listinfo/lustre-devel