hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/drivers/infiniband/hw/hfi1/sdma.c
....@@ -1637,20 +1637,18 @@
16371637 {
16381638 switch (sdma_mapping_type(descp)) {
16391639 case SDMA_MAP_SINGLE:
1640
- dma_unmap_single(
1641
- &dd->pcidev->dev,
1642
- sdma_mapping_addr(descp),
1643
- sdma_mapping_len(descp),
1644
- DMA_TO_DEVICE);
1640
+ dma_unmap_single(&dd->pcidev->dev, sdma_mapping_addr(descp),
1641
+ sdma_mapping_len(descp), DMA_TO_DEVICE);
16451642 break;
16461643 case SDMA_MAP_PAGE:
1647
- dma_unmap_page(
1648
- &dd->pcidev->dev,
1649
- sdma_mapping_addr(descp),
1650
- sdma_mapping_len(descp),
1651
- DMA_TO_DEVICE);
1644
+ dma_unmap_page(&dd->pcidev->dev, sdma_mapping_addr(descp),
1645
+ sdma_mapping_len(descp), DMA_TO_DEVICE);
16521646 break;
16531647 }
1648
+
1649
+ if (descp->pinning_ctx && descp->ctx_put)
1650
+ descp->ctx_put(descp->pinning_ctx);
1651
+ descp->pinning_ctx = NULL;
16541652 }
16551653
16561654 /*
....@@ -3171,7 +3169,7 @@
31713169 /* Add descriptor for coalesce buffer */
31723170 tx->desc_limit = MAX_DESC;
31733171 return _sdma_txadd_daddr(dd, SDMA_MAP_SINGLE, tx,
3174
- addr, tx->tlen);
3172
+ addr, tx->tlen, NULL, NULL, NULL);
31753173 }
31763174
31773175 return 1;
....@@ -3202,20 +3200,22 @@
32023200 {
32033201 int rval = 0;
32043202
3205
- tx->num_desc++;
3206
- if ((unlikely(tx->num_desc == tx->desc_limit))) {
3203
+ if ((unlikely(tx->num_desc + 1 == tx->desc_limit))) {
32073204 rval = _extend_sdma_tx_descs(dd, tx);
32083205 if (rval) {
32093206 __sdma_txclean(dd, tx);
32103207 return rval;
32113208 }
32123209 }
3210
+
32133211 /* finish the one just added */
32143212 make_tx_sdma_desc(
32153213 tx,
32163214 SDMA_MAP_NONE,
32173215 dd->sdma_pad_phys,
3218
- sizeof(u32) - (tx->packet_len & (sizeof(u32) - 1)));
3216
+ sizeof(u32) - (tx->packet_len & (sizeof(u32) - 1)),
3217
+ NULL, NULL, NULL);
3218
+ tx->num_desc++;
32193219 _sdma_close_tx(dd, tx);
32203220 return rval;
32213221 }