mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-15 23:25:07 +00:00
IB/hfi1: Use a common pad buffer for 9B and 16B packets
commit22bb136534
upstream. There is no reason for a different pad buffer for the two packet types. Expand the current buffer allocation to allow for both packet types. Fixes:f8195f3b14
("IB/hfi1: Eliminate allocation while atomic") Reported-by: Dan Carpenter <dan.carpenter@oracle.com> Reviewed-by: Kaike Wan <kaike.wan@intel.com> Reviewed-by: Dennis Dalessandro <dennis.dalessandro@intel.com> Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com> Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com> Link: https://lore.kernel.org/r/20191004204934.26838.13099.stgit@awfm-01.aw.intel.com Signed-off-by: Doug Ledford <dledford@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
6ec4a5498e
commit
9ace24bba6
2 changed files with 7 additions and 8 deletions
|
@ -65,6 +65,7 @@
|
|||
#define SDMA_DESCQ_CNT 2048
|
||||
#define SDMA_DESC_INTR 64
|
||||
#define INVALID_TAIL 0xffff
|
||||
#define SDMA_PAD max_t(size_t, MAX_16B_PADDING, sizeof(u32))
|
||||
|
||||
static uint sdma_descq_cnt = SDMA_DESCQ_CNT;
|
||||
module_param(sdma_descq_cnt, uint, S_IRUGO);
|
||||
|
@ -1280,7 +1281,7 @@ void sdma_clean(struct hfi1_devdata *dd, size_t num_engines)
|
|||
struct sdma_engine *sde;
|
||||
|
||||
if (dd->sdma_pad_dma) {
|
||||
dma_free_coherent(&dd->pcidev->dev, 4,
|
||||
dma_free_coherent(&dd->pcidev->dev, SDMA_PAD,
|
||||
(void *)dd->sdma_pad_dma,
|
||||
dd->sdma_pad_phys);
|
||||
dd->sdma_pad_dma = NULL;
|
||||
|
@ -1481,7 +1482,7 @@ int sdma_init(struct hfi1_devdata *dd, u8 port)
|
|||
/* Allocate memory for pad */
|
||||
dd->sdma_pad_dma = dma_zalloc_coherent(
|
||||
&dd->pcidev->dev,
|
||||
sizeof(u32),
|
||||
SDMA_PAD,
|
||||
&dd->sdma_pad_phys,
|
||||
GFP_KERNEL
|
||||
);
|
||||
|
|
|
@ -149,9 +149,6 @@ static int pio_wait(struct rvt_qp *qp,
|
|||
/* Length of buffer to create verbs txreq cache name */
|
||||
#define TXREQ_NAME_LEN 24
|
||||
|
||||
/* 16B trailing buffer */
|
||||
static const u8 trail_buf[MAX_16B_PADDING];
|
||||
|
||||
static uint wss_threshold;
|
||||
module_param(wss_threshold, uint, S_IRUGO);
|
||||
MODULE_PARM_DESC(wss_threshold, "Percentage (1-100) of LLC to use as a threshold for a cacheless copy");
|
||||
|
@ -893,8 +890,8 @@ static int build_verbs_tx_desc(
|
|||
|
||||
/* add icrc, lt byte, and padding to flit */
|
||||
if (extra_bytes)
|
||||
ret = sdma_txadd_kvaddr(sde->dd, &tx->txreq,
|
||||
(void *)trail_buf, extra_bytes);
|
||||
ret = sdma_txadd_daddr(sde->dd, &tx->txreq,
|
||||
sde->dd->sdma_pad_phys, extra_bytes);
|
||||
|
||||
bail_txadd:
|
||||
return ret;
|
||||
|
@ -1151,7 +1148,8 @@ int hfi1_verbs_send_pio(struct rvt_qp *qp, struct hfi1_pkt_state *ps,
|
|||
}
|
||||
/* add icrc, lt byte, and padding to flit */
|
||||
if (extra_bytes)
|
||||
seg_pio_copy_mid(pbuf, trail_buf, extra_bytes);
|
||||
seg_pio_copy_mid(pbuf, ppd->dd->sdma_pad_dma,
|
||||
extra_bytes);
|
||||
|
||||
seg_pio_copy_end(pbuf);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue