Commit 8900b894 authored by Leon Romanovsky's avatar Leon Romanovsky Committed by Doug Ledford

{net, IB}/mlx4: Remove gfp flags argument

The caller to the driver marks GFP_NOIO allocations with help
of memalloc_noio-* calls now. This makes redundant to pass down
to the driver gfp flags, which can be GFP_KERNEL only.

The patch removes the gfp flags argument and updates all driver paths.
Signed-off-by: default avatarLeon Romanovsky <leonro@mellanox.com>
Signed-off-by: default avatarLeon Romanovsky <leon@kernel.org>
Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
parent 0f4d027c
...@@ -102,7 +102,7 @@ static int mlx4_ib_alloc_cq_buf(struct mlx4_ib_dev *dev, struct mlx4_ib_cq_buf * ...@@ -102,7 +102,7 @@ static int mlx4_ib_alloc_cq_buf(struct mlx4_ib_dev *dev, struct mlx4_ib_cq_buf *
int err; int err;
err = mlx4_buf_alloc(dev->dev, nent * dev->dev->caps.cqe_size, err = mlx4_buf_alloc(dev->dev, nent * dev->dev->caps.cqe_size,
PAGE_SIZE * 2, &buf->buf, GFP_KERNEL); PAGE_SIZE * 2, &buf->buf);
if (err) if (err)
goto out; goto out;
...@@ -113,7 +113,7 @@ static int mlx4_ib_alloc_cq_buf(struct mlx4_ib_dev *dev, struct mlx4_ib_cq_buf * ...@@ -113,7 +113,7 @@ static int mlx4_ib_alloc_cq_buf(struct mlx4_ib_dev *dev, struct mlx4_ib_cq_buf *
if (err) if (err)
goto err_buf; goto err_buf;
err = mlx4_buf_write_mtt(dev->dev, &buf->mtt, &buf->buf, GFP_KERNEL); err = mlx4_buf_write_mtt(dev->dev, &buf->mtt, &buf->buf);
if (err) if (err)
goto err_mtt; goto err_mtt;
...@@ -219,7 +219,7 @@ struct ib_cq *mlx4_ib_create_cq(struct ib_device *ibdev, ...@@ -219,7 +219,7 @@ struct ib_cq *mlx4_ib_create_cq(struct ib_device *ibdev,
uar = &to_mucontext(context)->uar; uar = &to_mucontext(context)->uar;
} else { } else {
err = mlx4_db_alloc(dev->dev, &cq->db, 1, GFP_KERNEL); err = mlx4_db_alloc(dev->dev, &cq->db, 1);
if (err) if (err)
goto err_cq; goto err_cq;
......
...@@ -185,7 +185,6 @@ enum mlx4_ib_qp_flags { ...@@ -185,7 +185,6 @@ enum mlx4_ib_qp_flags {
MLX4_IB_QP_LSO = IB_QP_CREATE_IPOIB_UD_LSO, MLX4_IB_QP_LSO = IB_QP_CREATE_IPOIB_UD_LSO,
MLX4_IB_QP_BLOCK_MULTICAST_LOOPBACK = IB_QP_CREATE_BLOCK_MULTICAST_LOOPBACK, MLX4_IB_QP_BLOCK_MULTICAST_LOOPBACK = IB_QP_CREATE_BLOCK_MULTICAST_LOOPBACK,
MLX4_IB_QP_NETIF = IB_QP_CREATE_NETIF_QP, MLX4_IB_QP_NETIF = IB_QP_CREATE_NETIF_QP,
MLX4_IB_QP_CREATE_USE_GFP_NOIO = IB_QP_CREATE_USE_GFP_NOIO,
/* Mellanox specific flags start from IB_QP_CREATE_RESERVED_START */ /* Mellanox specific flags start from IB_QP_CREATE_RESERVED_START */
MLX4_IB_ROCE_V2_GSI_QP = MLX4_IB_QP_CREATE_ROCE_V2_GSI, MLX4_IB_ROCE_V2_GSI_QP = MLX4_IB_QP_CREATE_ROCE_V2_GSI,
......
...@@ -634,8 +634,8 @@ static void mlx4_ib_free_qp_counter(struct mlx4_ib_dev *dev, ...@@ -634,8 +634,8 @@ static void mlx4_ib_free_qp_counter(struct mlx4_ib_dev *dev,
static int create_qp_common(struct mlx4_ib_dev *dev, struct ib_pd *pd, static int create_qp_common(struct mlx4_ib_dev *dev, struct ib_pd *pd,
struct ib_qp_init_attr *init_attr, struct ib_qp_init_attr *init_attr,
struct ib_udata *udata, int sqpn, struct mlx4_ib_qp **caller_qp, struct ib_udata *udata, int sqpn,
gfp_t gfp) struct mlx4_ib_qp **caller_qp)
{ {
int qpn; int qpn;
int err; int err;
...@@ -691,14 +691,14 @@ static int create_qp_common(struct mlx4_ib_dev *dev, struct ib_pd *pd, ...@@ -691,14 +691,14 @@ static int create_qp_common(struct mlx4_ib_dev *dev, struct ib_pd *pd,
if (qp_type == MLX4_IB_QPT_SMI || qp_type == MLX4_IB_QPT_GSI || if (qp_type == MLX4_IB_QPT_SMI || qp_type == MLX4_IB_QPT_GSI ||
(qp_type & (MLX4_IB_QPT_PROXY_SMI | MLX4_IB_QPT_PROXY_SMI_OWNER | (qp_type & (MLX4_IB_QPT_PROXY_SMI | MLX4_IB_QPT_PROXY_SMI_OWNER |
MLX4_IB_QPT_PROXY_GSI | MLX4_IB_QPT_TUN_SMI_OWNER))) { MLX4_IB_QPT_PROXY_GSI | MLX4_IB_QPT_TUN_SMI_OWNER))) {
sqp = kzalloc(sizeof (struct mlx4_ib_sqp), gfp); sqp = kzalloc(sizeof(struct mlx4_ib_sqp), GFP_KERNEL);
if (!sqp) if (!sqp)
return -ENOMEM; return -ENOMEM;
qp = &sqp->qp; qp = &sqp->qp;
qp->pri.vid = 0xFFFF; qp->pri.vid = 0xFFFF;
qp->alt.vid = 0xFFFF; qp->alt.vid = 0xFFFF;
} else { } else {
qp = kzalloc(sizeof (struct mlx4_ib_qp), gfp); qp = kzalloc(sizeof(struct mlx4_ib_qp), GFP_KERNEL);
if (!qp) if (!qp)
return -ENOMEM; return -ENOMEM;
qp->pri.vid = 0xFFFF; qp->pri.vid = 0xFFFF;
...@@ -780,7 +780,7 @@ static int create_qp_common(struct mlx4_ib_dev *dev, struct ib_pd *pd, ...@@ -780,7 +780,7 @@ static int create_qp_common(struct mlx4_ib_dev *dev, struct ib_pd *pd,
goto err; goto err;
if (qp_has_rq(init_attr)) { if (qp_has_rq(init_attr)) {
err = mlx4_db_alloc(dev->dev, &qp->db, 0, gfp); err = mlx4_db_alloc(dev->dev, &qp->db, 0);
if (err) if (err)
goto err; goto err;
...@@ -788,7 +788,7 @@ static int create_qp_common(struct mlx4_ib_dev *dev, struct ib_pd *pd, ...@@ -788,7 +788,7 @@ static int create_qp_common(struct mlx4_ib_dev *dev, struct ib_pd *pd,
} }
if (mlx4_buf_alloc(dev->dev, qp->buf_size, qp->buf_size, if (mlx4_buf_alloc(dev->dev, qp->buf_size, qp->buf_size,
&qp->buf, gfp)) { &qp->buf)) {
memcpy(&init_attr->cap, &backup_cap, memcpy(&init_attr->cap, &backup_cap,
sizeof(backup_cap)); sizeof(backup_cap));
err = set_kernel_sq_size(dev, &init_attr->cap, qp_type, err = set_kernel_sq_size(dev, &init_attr->cap, qp_type,
...@@ -797,7 +797,7 @@ static int create_qp_common(struct mlx4_ib_dev *dev, struct ib_pd *pd, ...@@ -797,7 +797,7 @@ static int create_qp_common(struct mlx4_ib_dev *dev, struct ib_pd *pd,
goto err_db; goto err_db;
if (mlx4_buf_alloc(dev->dev, qp->buf_size, if (mlx4_buf_alloc(dev->dev, qp->buf_size,
PAGE_SIZE * 2, &qp->buf, gfp)) { PAGE_SIZE * 2, &qp->buf)) {
err = -ENOMEM; err = -ENOMEM;
goto err_db; goto err_db;
} }
...@@ -808,20 +808,20 @@ static int create_qp_common(struct mlx4_ib_dev *dev, struct ib_pd *pd, ...@@ -808,20 +808,20 @@ static int create_qp_common(struct mlx4_ib_dev *dev, struct ib_pd *pd,
if (err) if (err)
goto err_buf; goto err_buf;
err = mlx4_buf_write_mtt(dev->dev, &qp->mtt, &qp->buf, gfp); err = mlx4_buf_write_mtt(dev->dev, &qp->mtt, &qp->buf);
if (err) if (err)
goto err_mtt; goto err_mtt;
qp->sq.wrid = kmalloc_array(qp->sq.wqe_cnt, sizeof(u64), qp->sq.wrid = kmalloc_array(qp->sq.wqe_cnt, sizeof(u64),
gfp | __GFP_NOWARN); GFP_KERNEL | __GFP_NOWARN);
if (!qp->sq.wrid) if (!qp->sq.wrid)
qp->sq.wrid = __vmalloc(qp->sq.wqe_cnt * sizeof(u64), qp->sq.wrid = __vmalloc(qp->sq.wqe_cnt * sizeof(u64),
gfp, PAGE_KERNEL); GFP_KERNEL, PAGE_KERNEL);
qp->rq.wrid = kmalloc_array(qp->rq.wqe_cnt, sizeof(u64), qp->rq.wrid = kmalloc_array(qp->rq.wqe_cnt, sizeof(u64),
gfp | __GFP_NOWARN); GFP_KERNEL | __GFP_NOWARN);
if (!qp->rq.wrid) if (!qp->rq.wrid)
qp->rq.wrid = __vmalloc(qp->rq.wqe_cnt * sizeof(u64), qp->rq.wrid = __vmalloc(qp->rq.wqe_cnt * sizeof(u64),
gfp, PAGE_KERNEL); GFP_KERNEL, PAGE_KERNEL);
if (!qp->sq.wrid || !qp->rq.wrid) { if (!qp->sq.wrid || !qp->rq.wrid) {
err = -ENOMEM; err = -ENOMEM;
goto err_wrid; goto err_wrid;
...@@ -859,7 +859,7 @@ static int create_qp_common(struct mlx4_ib_dev *dev, struct ib_pd *pd, ...@@ -859,7 +859,7 @@ static int create_qp_common(struct mlx4_ib_dev *dev, struct ib_pd *pd,
if (init_attr->create_flags & IB_QP_CREATE_BLOCK_MULTICAST_LOOPBACK) if (init_attr->create_flags & IB_QP_CREATE_BLOCK_MULTICAST_LOOPBACK)
qp->flags |= MLX4_IB_QP_BLOCK_MULTICAST_LOOPBACK; qp->flags |= MLX4_IB_QP_BLOCK_MULTICAST_LOOPBACK;
err = mlx4_qp_alloc(dev->dev, qpn, &qp->mqp, gfp); err = mlx4_qp_alloc(dev->dev, qpn, &qp->mqp);
if (err) if (err)
goto err_qpn; goto err_qpn;
...@@ -1127,10 +1127,7 @@ static struct ib_qp *_mlx4_ib_create_qp(struct ib_pd *pd, ...@@ -1127,10 +1127,7 @@ static struct ib_qp *_mlx4_ib_create_qp(struct ib_pd *pd,
int err; int err;
int sup_u_create_flags = MLX4_IB_QP_BLOCK_MULTICAST_LOOPBACK; int sup_u_create_flags = MLX4_IB_QP_BLOCK_MULTICAST_LOOPBACK;
u16 xrcdn = 0; u16 xrcdn = 0;
gfp_t gfp;
gfp = (init_attr->create_flags & MLX4_IB_QP_CREATE_USE_GFP_NOIO) ?
GFP_NOIO : GFP_KERNEL;
/* /*
* We only support LSO, vendor flag1, and multicast loopback blocking, * We only support LSO, vendor flag1, and multicast loopback blocking,
* and only for kernel UD QPs. * and only for kernel UD QPs.
...@@ -1140,8 +1137,7 @@ static struct ib_qp *_mlx4_ib_create_qp(struct ib_pd *pd, ...@@ -1140,8 +1137,7 @@ static struct ib_qp *_mlx4_ib_create_qp(struct ib_pd *pd,
MLX4_IB_SRIOV_TUNNEL_QP | MLX4_IB_SRIOV_TUNNEL_QP |
MLX4_IB_SRIOV_SQP | MLX4_IB_SRIOV_SQP |
MLX4_IB_QP_NETIF | MLX4_IB_QP_NETIF |
MLX4_IB_QP_CREATE_ROCE_V2_GSI | MLX4_IB_QP_CREATE_ROCE_V2_GSI))
MLX4_IB_QP_CREATE_USE_GFP_NOIO))
return ERR_PTR(-EINVAL); return ERR_PTR(-EINVAL);
if (init_attr->create_flags & IB_QP_CREATE_NETIF_QP) { if (init_attr->create_flags & IB_QP_CREATE_NETIF_QP) {
...@@ -1154,7 +1150,6 @@ static struct ib_qp *_mlx4_ib_create_qp(struct ib_pd *pd, ...@@ -1154,7 +1150,6 @@ static struct ib_qp *_mlx4_ib_create_qp(struct ib_pd *pd,
return ERR_PTR(-EINVAL); return ERR_PTR(-EINVAL);
if ((init_attr->create_flags & ~(MLX4_IB_SRIOV_SQP | if ((init_attr->create_flags & ~(MLX4_IB_SRIOV_SQP |
MLX4_IB_QP_CREATE_USE_GFP_NOIO |
MLX4_IB_QP_CREATE_ROCE_V2_GSI | MLX4_IB_QP_CREATE_ROCE_V2_GSI |
MLX4_IB_QP_BLOCK_MULTICAST_LOOPBACK) && MLX4_IB_QP_BLOCK_MULTICAST_LOOPBACK) &&
init_attr->qp_type != IB_QPT_UD) || init_attr->qp_type != IB_QPT_UD) ||
...@@ -1179,7 +1174,7 @@ static struct ib_qp *_mlx4_ib_create_qp(struct ib_pd *pd, ...@@ -1179,7 +1174,7 @@ static struct ib_qp *_mlx4_ib_create_qp(struct ib_pd *pd,
case IB_QPT_RC: case IB_QPT_RC:
case IB_QPT_UC: case IB_QPT_UC:
case IB_QPT_RAW_PACKET: case IB_QPT_RAW_PACKET:
qp = kzalloc(sizeof *qp, gfp); qp = kzalloc(sizeof(*qp), GFP_KERNEL);
if (!qp) if (!qp)
return ERR_PTR(-ENOMEM); return ERR_PTR(-ENOMEM);
qp->pri.vid = 0xFFFF; qp->pri.vid = 0xFFFF;
...@@ -1188,7 +1183,7 @@ static struct ib_qp *_mlx4_ib_create_qp(struct ib_pd *pd, ...@@ -1188,7 +1183,7 @@ static struct ib_qp *_mlx4_ib_create_qp(struct ib_pd *pd,
case IB_QPT_UD: case IB_QPT_UD:
{ {
err = create_qp_common(to_mdev(pd->device), pd, init_attr, err = create_qp_common(to_mdev(pd->device), pd, init_attr,
udata, 0, &qp, gfp); udata, 0, &qp);
if (err) { if (err) {
kfree(qp); kfree(qp);
return ERR_PTR(err); return ERR_PTR(err);
...@@ -1217,8 +1212,7 @@ static struct ib_qp *_mlx4_ib_create_qp(struct ib_pd *pd, ...@@ -1217,8 +1212,7 @@ static struct ib_qp *_mlx4_ib_create_qp(struct ib_pd *pd,
} }
err = create_qp_common(to_mdev(pd->device), pd, init_attr, udata, err = create_qp_common(to_mdev(pd->device), pd, init_attr, udata,
sqpn, sqpn, &qp);
&qp, gfp);
if (err) if (err)
return ERR_PTR(err); return ERR_PTR(err);
......
...@@ -135,14 +135,14 @@ struct ib_srq *mlx4_ib_create_srq(struct ib_pd *pd, ...@@ -135,14 +135,14 @@ struct ib_srq *mlx4_ib_create_srq(struct ib_pd *pd,
if (err) if (err)
goto err_mtt; goto err_mtt;
} else { } else {
err = mlx4_db_alloc(dev->dev, &srq->db, 0, GFP_KERNEL); err = mlx4_db_alloc(dev->dev, &srq->db, 0);
if (err) if (err)
goto err_srq; goto err_srq;
*srq->db.db = 0; *srq->db.db = 0;
if (mlx4_buf_alloc(dev->dev, buf_size, PAGE_SIZE * 2, &srq->buf, if (mlx4_buf_alloc(dev->dev, buf_size, PAGE_SIZE * 2,
GFP_KERNEL)) { &srq->buf)) {
err = -ENOMEM; err = -ENOMEM;
goto err_db; goto err_db;
} }
...@@ -167,7 +167,7 @@ struct ib_srq *mlx4_ib_create_srq(struct ib_pd *pd, ...@@ -167,7 +167,7 @@ struct ib_srq *mlx4_ib_create_srq(struct ib_pd *pd,
if (err) if (err)
goto err_buf; goto err_buf;
err = mlx4_buf_write_mtt(dev->dev, &srq->mtt, &srq->buf, GFP_KERNEL); err = mlx4_buf_write_mtt(dev->dev, &srq->mtt, &srq->buf);
if (err) if (err)
goto err_mtt; goto err_mtt;
......
...@@ -578,7 +578,7 @@ u32 mlx4_zone_free_entries_unique(struct mlx4_zone_allocator *zones, u32 obj, u3 ...@@ -578,7 +578,7 @@ u32 mlx4_zone_free_entries_unique(struct mlx4_zone_allocator *zones, u32 obj, u3
} }
static int mlx4_buf_direct_alloc(struct mlx4_dev *dev, int size, static int mlx4_buf_direct_alloc(struct mlx4_dev *dev, int size,
struct mlx4_buf *buf, gfp_t gfp) struct mlx4_buf *buf)
{ {
dma_addr_t t; dma_addr_t t;
...@@ -587,7 +587,7 @@ static int mlx4_buf_direct_alloc(struct mlx4_dev *dev, int size, ...@@ -587,7 +587,7 @@ static int mlx4_buf_direct_alloc(struct mlx4_dev *dev, int size,
buf->page_shift = get_order(size) + PAGE_SHIFT; buf->page_shift = get_order(size) + PAGE_SHIFT;
buf->direct.buf = buf->direct.buf =
dma_zalloc_coherent(&dev->persist->pdev->dev, dma_zalloc_coherent(&dev->persist->pdev->dev,
size, &t, gfp); size, &t, GFP_KERNEL);
if (!buf->direct.buf) if (!buf->direct.buf)
return -ENOMEM; return -ENOMEM;
...@@ -607,10 +607,10 @@ static int mlx4_buf_direct_alloc(struct mlx4_dev *dev, int size, ...@@ -607,10 +607,10 @@ static int mlx4_buf_direct_alloc(struct mlx4_dev *dev, int size,
* multiple pages, so we don't require too much contiguous memory. * multiple pages, so we don't require too much contiguous memory.
*/ */
int mlx4_buf_alloc(struct mlx4_dev *dev, int size, int max_direct, int mlx4_buf_alloc(struct mlx4_dev *dev, int size, int max_direct,
struct mlx4_buf *buf, gfp_t gfp) struct mlx4_buf *buf)
{ {
if (size <= max_direct) { if (size <= max_direct) {
return mlx4_buf_direct_alloc(dev, size, buf, gfp); return mlx4_buf_direct_alloc(dev, size, buf);
} else { } else {
dma_addr_t t; dma_addr_t t;
int i; int i;
...@@ -620,14 +620,14 @@ int mlx4_buf_alloc(struct mlx4_dev *dev, int size, int max_direct, ...@@ -620,14 +620,14 @@ int mlx4_buf_alloc(struct mlx4_dev *dev, int size, int max_direct,
buf->npages = buf->nbufs; buf->npages = buf->nbufs;
buf->page_shift = PAGE_SHIFT; buf->page_shift = PAGE_SHIFT;
buf->page_list = kcalloc(buf->nbufs, sizeof(*buf->page_list), buf->page_list = kcalloc(buf->nbufs, sizeof(*buf->page_list),
gfp); GFP_KERNEL);
if (!buf->page_list) if (!buf->page_list)
return -ENOMEM; return -ENOMEM;
for (i = 0; i < buf->nbufs; ++i) { for (i = 0; i < buf->nbufs; ++i) {
buf->page_list[i].buf = buf->page_list[i].buf =
dma_zalloc_coherent(&dev->persist->pdev->dev, dma_zalloc_coherent(&dev->persist->pdev->dev,
PAGE_SIZE, &t, gfp); PAGE_SIZE, &t, GFP_KERNEL);
if (!buf->page_list[i].buf) if (!buf->page_list[i].buf)
goto err_free; goto err_free;
...@@ -663,12 +663,11 @@ void mlx4_buf_free(struct mlx4_dev *dev, int size, struct mlx4_buf *buf) ...@@ -663,12 +663,11 @@ void mlx4_buf_free(struct mlx4_dev *dev, int size, struct mlx4_buf *buf)
} }
EXPORT_SYMBOL_GPL(mlx4_buf_free); EXPORT_SYMBOL_GPL(mlx4_buf_free);
static struct mlx4_db_pgdir *mlx4_alloc_db_pgdir(struct device *dma_device, static struct mlx4_db_pgdir *mlx4_alloc_db_pgdir(struct device *dma_device)
gfp_t gfp)
{ {
struct mlx4_db_pgdir *pgdir; struct mlx4_db_pgdir *pgdir;
pgdir = kzalloc(sizeof *pgdir, gfp); pgdir = kzalloc(sizeof(*pgdir), GFP_KERNEL);
if (!pgdir) if (!pgdir)
return NULL; return NULL;
...@@ -676,7 +675,7 @@ static struct mlx4_db_pgdir *mlx4_alloc_db_pgdir(struct device *dma_device, ...@@ -676,7 +675,7 @@ static struct mlx4_db_pgdir *mlx4_alloc_db_pgdir(struct device *dma_device,
pgdir->bits[0] = pgdir->order0; pgdir->bits[0] = pgdir->order0;
pgdir->bits[1] = pgdir->order1; pgdir->bits[1] = pgdir->order1;
pgdir->db_page = dma_alloc_coherent(dma_device, PAGE_SIZE, pgdir->db_page = dma_alloc_coherent(dma_device, PAGE_SIZE,
&pgdir->db_dma, gfp); &pgdir->db_dma, GFP_KERNEL);
if (!pgdir->db_page) { if (!pgdir->db_page) {
kfree(pgdir); kfree(pgdir);
return NULL; return NULL;
...@@ -716,7 +715,7 @@ static int mlx4_alloc_db_from_pgdir(struct mlx4_db_pgdir *pgdir, ...@@ -716,7 +715,7 @@ static int mlx4_alloc_db_from_pgdir(struct mlx4_db_pgdir *pgdir,
return 0; return 0;
} }
int mlx4_db_alloc(struct mlx4_dev *dev, struct mlx4_db *db, int order, gfp_t gfp) int mlx4_db_alloc(struct mlx4_dev *dev, struct mlx4_db *db, int order)
{ {
struct mlx4_priv *priv = mlx4_priv(dev); struct mlx4_priv *priv = mlx4_priv(dev);
struct mlx4_db_pgdir *pgdir; struct mlx4_db_pgdir *pgdir;
...@@ -728,7 +727,7 @@ int mlx4_db_alloc(struct mlx4_dev *dev, struct mlx4_db *db, int order, gfp_t gfp ...@@ -728,7 +727,7 @@ int mlx4_db_alloc(struct mlx4_dev *dev, struct mlx4_db *db, int order, gfp_t gfp
if (!mlx4_alloc_db_from_pgdir(pgdir, db, order)) if (!mlx4_alloc_db_from_pgdir(pgdir, db, order))
goto out; goto out;
pgdir = mlx4_alloc_db_pgdir(&dev->persist->pdev->dev, gfp); pgdir = mlx4_alloc_db_pgdir(&dev->persist->pdev->dev);
if (!pgdir) { if (!pgdir) {
ret = -ENOMEM; ret = -ENOMEM;
goto out; goto out;
...@@ -780,13 +779,13 @@ int mlx4_alloc_hwq_res(struct mlx4_dev *dev, struct mlx4_hwq_resources *wqres, ...@@ -780,13 +779,13 @@ int mlx4_alloc_hwq_res(struct mlx4_dev *dev, struct mlx4_hwq_resources *wqres,
{ {
int err; int err;
err = mlx4_db_alloc(dev, &wqres->db, 1, GFP_KERNEL); err = mlx4_db_alloc(dev, &wqres->db, 1);
if (err) if (err)
return err; return err;
*wqres->db.db = 0; *wqres->db.db = 0;
err = mlx4_buf_direct_alloc(dev, size, &wqres->buf, GFP_KERNEL); err = mlx4_buf_direct_alloc(dev, size, &wqres->buf);
if (err) if (err)
goto err_db; goto err_db;
...@@ -795,7 +794,7 @@ int mlx4_alloc_hwq_res(struct mlx4_dev *dev, struct mlx4_hwq_resources *wqres, ...@@ -795,7 +794,7 @@ int mlx4_alloc_hwq_res(struct mlx4_dev *dev, struct mlx4_hwq_resources *wqres,
if (err) if (err)
goto err_buf; goto err_buf;
err = mlx4_buf_write_mtt(dev, &wqres->mtt, &wqres->buf, GFP_KERNEL); err = mlx4_buf_write_mtt(dev, &wqres->mtt, &wqres->buf);
if (err) if (err)
goto err_mtt; goto err_mtt;
......
...@@ -224,11 +224,11 @@ int __mlx4_cq_alloc_icm(struct mlx4_dev *dev, int *cqn) ...@@ -224,11 +224,11 @@ int __mlx4_cq_alloc_icm(struct mlx4_dev *dev, int *cqn)
if (*cqn == -1) if (*cqn == -1)
return -ENOMEM; return -ENOMEM;
err = mlx4_table_get(dev, &cq_table->table, *cqn, GFP_KERNEL); err = mlx4_table_get(dev, &cq_table->table, *cqn);
if (err) if (err)
goto err_out; goto err_out;
err = mlx4_table_get(dev, &cq_table->cmpt_table, *cqn, GFP_KERNEL); err = mlx4_table_get(dev, &cq_table->cmpt_table, *cqn);
if (err) if (err)
goto err_put; goto err_put;
return 0; return 0;
......
...@@ -1042,7 +1042,7 @@ static int mlx4_en_config_rss_qp(struct mlx4_en_priv *priv, int qpn, ...@@ -1042,7 +1042,7 @@ static int mlx4_en_config_rss_qp(struct mlx4_en_priv *priv, int qpn,
if (!context) if (!context)
return -ENOMEM; return -ENOMEM;
err = mlx4_qp_alloc(mdev->dev, qpn, qp, GFP_KERNEL); err = mlx4_qp_alloc(mdev->dev, qpn, qp);
if (err) { if (err) {
en_err(priv, "Failed to allocate qp #%x\n", qpn); en_err(priv, "Failed to allocate qp #%x\n", qpn);
goto out; goto out;
...@@ -1086,7 +1086,7 @@ int mlx4_en_create_drop_qp(struct mlx4_en_priv *priv) ...@@ -1086,7 +1086,7 @@ int mlx4_en_create_drop_qp(struct mlx4_en_priv *priv)
en_err(priv, "Failed reserving drop qpn\n"); en_err(priv, "Failed reserving drop qpn\n");
return err; return err;
} }
err = mlx4_qp_alloc(priv->mdev->dev, qpn, &priv->drop_qp, GFP_KERNEL); err = mlx4_qp_alloc(priv->mdev->dev, qpn, &priv->drop_qp);
if (err) { if (err) {
en_err(priv, "Failed allocating drop qp\n"); en_err(priv, "Failed allocating drop qp\n");
mlx4_qp_release_range(priv->mdev->dev, qpn, 1); mlx4_qp_release_range(priv->mdev->dev, qpn, 1);
...@@ -1158,8 +1158,7 @@ int mlx4_en_config_rss_steer(struct mlx4_en_priv *priv) ...@@ -1158,8 +1158,7 @@ int mlx4_en_config_rss_steer(struct mlx4_en_priv *priv)
} }
/* Configure RSS indirection qp */ /* Configure RSS indirection qp */
err = mlx4_qp_alloc(mdev->dev, priv->base_qpn, rss_map->indir_qp, err = mlx4_qp_alloc(mdev->dev, priv->base_qpn, rss_map->indir_qp);
GFP_KERNEL);
if (err) { if (err) {
en_err(priv, "Failed to allocate RSS indirection QP\n"); en_err(priv, "Failed to allocate RSS indirection QP\n");
goto rss_err; goto rss_err;
......
...@@ -111,7 +111,7 @@ int mlx4_en_create_tx_ring(struct mlx4_en_priv *priv, ...@@ -111,7 +111,7 @@ int mlx4_en_create_tx_ring(struct mlx4_en_priv *priv,
goto err_hwq_res; goto err_hwq_res;
} }
err = mlx4_qp_alloc(mdev->dev, ring->qpn, &ring->sp_qp, GFP_KERNEL); err = mlx4_qp_alloc(mdev->dev, ring->qpn, &ring->sp_qp);
if (err) { if (err) {
en_err(priv, "Failed allocating qp %d\n", ring->qpn); en_err(priv, "Failed allocating qp %d\n", ring->qpn);
goto err_reserve; goto err_reserve;
......
...@@ -251,8 +251,7 @@ int mlx4_UNMAP_ICM_AUX(struct mlx4_dev *dev) ...@@ -251,8 +251,7 @@ int mlx4_UNMAP_ICM_AUX(struct mlx4_dev *dev)
MLX4_CMD_TIME_CLASS_B, MLX4_CMD_NATIVE); MLX4_CMD_TIME_CLASS_B, MLX4_CMD_NATIVE);
} }
int mlx4_table_get(struct mlx4_dev *dev, struct mlx4_icm_table *table, u32 obj, int mlx4_table_get(struct mlx4_dev *dev, struct mlx4_icm_table *table, u32 obj)
gfp_t gfp)
{ {
u32 i = (obj & (table->num_obj - 1)) / u32 i = (obj & (table->num_obj - 1)) /
(MLX4_TABLE_CHUNK_SIZE / table->obj_size); (MLX4_TABLE_CHUNK_SIZE / table->obj_size);
...@@ -266,7 +265,7 @@ int mlx4_table_get(struct mlx4_dev *dev, struct mlx4_icm_table *table, u32 obj, ...@@ -266,7 +265,7 @@ int mlx4_table_get(struct mlx4_dev *dev, struct mlx4_icm_table *table, u32 obj,
} }
table->icm[i] = mlx4_alloc_icm(dev, MLX4_TABLE_CHUNK_SIZE >> PAGE_SHIFT, table->icm[i] = mlx4_alloc_icm(dev, MLX4_TABLE_CHUNK_SIZE >> PAGE_SHIFT,
(table->lowmem ? gfp : GFP_HIGHUSER) | (table->lowmem ? GFP_KERNEL : GFP_HIGHUSER) |
__GFP_NOWARN, table->coherent); __GFP_NOWARN, table->coherent);
if (!table->icm[i]) { if (!table->icm[i]) {
ret = -ENOMEM; ret = -ENOMEM;
...@@ -363,7 +362,7 @@ int mlx4_table_get_range(struct mlx4_dev *dev, struct mlx4_icm_table *table, ...@@ -363,7 +362,7 @@ int mlx4_table_get_range(struct mlx4_dev *dev, struct mlx4_icm_table *table,
u32 i; u32 i;
for (i = start; i <= end; i += inc) { for (i = start; i <= end; i += inc) {
err = mlx4_table_get(dev, table, i, GFP_KERNEL); err = mlx4_table_get(dev, table, i);
if (err) if (err)
goto fail; goto fail;
} }
......
...@@ -71,8 +71,7 @@ struct mlx4_icm *mlx4_alloc_icm(struct mlx4_dev *dev, int npages, ...@@ -71,8 +71,7 @@ struct mlx4_icm *mlx4_alloc_icm(struct mlx4_dev *dev, int npages,
gfp_t gfp_mask, int coherent); gfp_t gfp_mask, int coherent);
void mlx4_free_icm(struct mlx4_dev *dev, struct mlx4_icm *icm, int coherent); void mlx4_free_icm(struct mlx4_dev *dev, struct mlx4_icm *icm, int coherent);
int mlx4_table_get(struct mlx4_dev *dev, struct mlx4_icm_table *table, u32 obj, int mlx4_table_get(struct mlx4_dev *dev, struct mlx4_icm_table *table, u32 obj);
gfp_t gfp);
void mlx4_table_put(struct mlx4_dev *dev, struct mlx4_icm_table *table, u32 obj); void mlx4_table_put(struct mlx4_dev *dev, struct mlx4_icm_table *table, u32 obj);
int mlx4_table_get_range(struct mlx4_dev *dev, struct mlx4_icm_table *table, int mlx4_table_get_range(struct mlx4_dev *dev, struct mlx4_icm_table *table,
u32 start, u32 end); u32 start, u32 end);
......
...@@ -969,7 +969,7 @@ void mlx4_cleanup_cq_table(struct mlx4_dev *dev); ...@@ -969,7 +969,7 @@ void mlx4_cleanup_cq_table(struct mlx4_dev *dev);
void mlx4_cleanup_qp_table(struct mlx4_dev *dev); void mlx4_cleanup_qp_table(struct mlx4_dev *dev);
void mlx4_cleanup_srq_table(struct mlx4_dev *dev); void mlx4_cleanup_srq_table(struct mlx4_dev *dev);
void mlx4_cleanup_mcg_table(struct mlx4_dev *dev); void mlx4_cleanup_mcg_table(struct mlx4_dev *dev);
int __mlx4_qp_alloc_icm(struct mlx4_dev *dev, int qpn, gfp_t gfp); int __mlx4_qp_alloc_icm(struct mlx4_dev *dev, int qpn);
void __mlx4_qp_free_icm(struct mlx4_dev *dev, int qpn); void __mlx4_qp_free_icm(struct mlx4_dev *dev, int qpn);
int __mlx4_cq_alloc_icm(struct mlx4_dev *dev, int *cqn); int __mlx4_cq_alloc_icm(struct mlx4_dev *dev, int *cqn);
void __mlx4_cq_free_icm(struct mlx4_dev *dev, int cqn); void __mlx4_cq_free_icm(struct mlx4_dev *dev, int cqn);
...@@ -977,7 +977,7 @@ int __mlx4_srq_alloc_icm(struct mlx4_dev *dev, int *srqn); ...@@ -977,7 +977,7 @@ int __mlx4_srq_alloc_icm(struct mlx4_dev *dev, int *srqn);
void __mlx4_srq_free_icm(struct mlx4_dev *dev, int srqn); void __mlx4_srq_free_icm(struct mlx4_dev *dev, int srqn);
int __mlx4_mpt_reserve(struct mlx4_dev *dev); int __mlx4_mpt_reserve(struct mlx4_dev *dev);
void __mlx4_mpt_release(struct mlx4_dev *dev, u32 index); void __mlx4_mpt_release(struct mlx4_dev *dev, u32 index);
int __mlx4_mpt_alloc_icm(struct mlx4_dev *dev, u32 index, gfp_t gfp); int __mlx4_mpt_alloc_icm(struct mlx4_dev *dev, u32 index);
void __mlx4_mpt_free_icm(struct mlx4_dev *dev, u32 index); void __mlx4_mpt_free_icm(struct mlx4_dev *dev, u32 index);
u32 __mlx4_alloc_mtt_range(struct mlx4_dev *dev, int order); u32 __mlx4_alloc_mtt_range(struct mlx4_dev *dev, int order);
void __mlx4_free_mtt_range(struct mlx4_dev *dev, u32 first_seg, int order); void __mlx4_free_mtt_range(struct mlx4_dev *dev, u32 first_seg, int order);
......
...@@ -479,14 +479,14 @@ static void mlx4_mpt_release(struct mlx4_dev *dev, u32 index) ...@@ -479,14 +479,14 @@ static void mlx4_mpt_release(struct mlx4_dev *dev, u32 index)
__mlx4_mpt_release(dev, index); __mlx4_mpt_release(dev, index);
} }
int __mlx4_mpt_alloc_icm(struct mlx4_dev *dev, u32 index, gfp_t gfp) int __mlx4_mpt_alloc_icm(struct mlx4_dev *dev, u32 index)
{ {
struct mlx4_mr_table *mr_table = &mlx4_priv(dev)->mr_table; struct mlx4_mr_table *mr_table = &mlx4_priv(dev)->mr_table;
return mlx4_table_get(dev, &mr_table->dmpt_table, index, gfp); return mlx4_table_get(dev, &mr_table->dmpt_table, index);
} }
static int mlx4_mpt_alloc_icm(struct mlx4_dev *dev, u32 index, gfp_t gfp) static int mlx4_mpt_alloc_icm(struct mlx4_dev *dev, u32 index)
{ {
u64 param = 0; u64 param = 0;
...@@ -497,7 +497,7 @@ static int mlx4_mpt_alloc_icm(struct mlx4_dev *dev, u32 index, gfp_t gfp) ...@@ -497,7 +497,7 @@ static int mlx4_mpt_alloc_icm(struct mlx4_dev *dev, u32 index, gfp_t gfp)
MLX4_CMD_TIME_CLASS_A, MLX4_CMD_TIME_CLASS_A,
MLX4_CMD_WRAPPED); MLX4_CMD_WRAPPED);
} }
return __mlx4_mpt_alloc_icm(dev, index, gfp); return __mlx4_mpt_alloc_icm(dev, index);
} }
void __mlx4_mpt_free_icm(struct mlx4_dev *dev, u32 index) void __mlx4_mpt_free_icm(struct mlx4_dev *dev, u32 index)
...@@ -629,7 +629,7 @@ int mlx4_mr_enable(struct mlx4_dev *dev, struct mlx4_mr *mr) ...@@ -629,7 +629,7 @@ int mlx4_mr_enable(struct mlx4_dev *dev, struct mlx4_mr *mr)
struct mlx4_mpt_entry *mpt_entry; struct mlx4_mpt_entry *mpt_entry;
int err; int err;
err = mlx4_mpt_alloc_icm(dev, key_to_hw_index(mr->key), GFP_KERNEL); err = mlx4_mpt_alloc_icm(dev, key_to_hw_index(mr->key));
if (err) if (err)
return err; return err;
...@@ -787,14 +787,13 @@ int mlx4_write_mtt(struct mlx4_dev *dev, struct mlx4_mtt *mtt, ...@@ -787,14 +787,13 @@ int mlx4_write_mtt(struct mlx4_dev *dev, struct mlx4_mtt *mtt,
EXPORT_SYMBOL_GPL(mlx4_write_mtt); EXPORT_SYMBOL_GPL(mlx4_write_mtt);
int mlx4_buf_write_mtt(struct mlx4_dev *dev, struct mlx4_mtt *mtt, int mlx4_buf_write_mtt(struct mlx4_dev *dev, struct mlx4_mtt *mtt,
struct mlx4_buf *buf, gfp_t gfp) struct mlx4_buf *buf)
{ {
u64 *page_list; u64 *page_list;
int err; int err;
int i; int i;
page_list = kmalloc(buf->npages * sizeof *page_list, page_list = kcalloc(buf->npages, sizeof(*page_list), GFP_KERNEL);
gfp);
if (!page_list) if (!page_list)
return -ENOMEM; return -ENOMEM;
...@@ -841,7 +840,7 @@ int mlx4_mw_enable(struct mlx4_dev *dev, struct mlx4_mw *mw) ...@@ -841,7 +840,7 @@ int mlx4_mw_enable(struct mlx4_dev *dev, struct mlx4_mw *mw)
struct mlx4_mpt_entry *mpt_entry; struct mlx4_mpt_entry *mpt_entry;
int err; int err;
err = mlx4_mpt_alloc_icm(dev, key_to_hw_index(mw->key), GFP_KERNEL); err = mlx4_mpt_alloc_icm(dev, key_to_hw_index(mw->key));
if (err) if (err)
return err; return err;
......
...@@ -301,29 +301,29 @@ void mlx4_qp_release_range(struct mlx4_dev *dev, int base_qpn, int cnt) ...@@ -301,29 +301,29 @@ void mlx4_qp_release_range(struct mlx4_dev *dev, int base_qpn, int cnt)
} }
EXPORT_SYMBOL_GPL(mlx4_qp_release_range); EXPORT_SYMBOL_GPL(mlx4_qp_release_range);
int __mlx4_qp_alloc_icm(struct mlx4_dev *dev, int qpn, gfp_t gfp) int __mlx4_qp_alloc_icm(struct mlx4_dev *dev, int qpn)
{ {
struct mlx4_priv *priv = mlx4_priv(dev); struct mlx4_priv *priv = mlx4_priv(dev);
struct mlx4_qp_table *qp_table = &priv->qp_table; struct mlx4_qp_table *qp_table = &priv->qp_table;
int err; int err;
err = mlx4_table_get(dev, &qp_table->qp_table, qpn, gfp); err = mlx4_table_get(dev, &qp_table->qp_table, qpn);
if (err) if (err)
goto err_out; goto err_out;
err = mlx4_table_get(dev, &qp_table->auxc_table, qpn, gfp); err = mlx4_table_get(dev, &qp_table->auxc_table, qpn);
if (err) if (err)
goto err_put_qp; goto err_put_qp;
err = mlx4_table_get(dev, &qp_table->altc_table, qpn, gfp); err = mlx4_table_get(dev, &qp_table->altc_table, qpn);
if (err) if (err)
goto err_put_auxc; goto err_put_auxc;
err = mlx4_table_get(dev, &qp_table->rdmarc_table, qpn, gfp); err = mlx4_table_get(dev, &qp_table->rdmarc_table, qpn);
if (err) if (err)
goto err_put_altc; goto err_put_altc;
err = mlx4_table_get(dev, &qp_table->cmpt_table, qpn, gfp); err = mlx4_table_get(dev, &qp_table->cmpt_table, qpn);
if (err) if (err)
goto err_put_rdmarc; goto err_put_rdmarc;
...@@ -345,7 +345,7 @@ int __mlx4_qp_alloc_icm(struct mlx4_dev *dev, int qpn, gfp_t gfp) ...@@ -345,7 +345,7 @@ int __mlx4_qp_alloc_icm(struct mlx4_dev *dev, int qpn, gfp_t gfp)
return err; return err;
} }
static int mlx4_qp_alloc_icm(struct mlx4_dev *dev, int qpn, gfp_t gfp) static int mlx4_qp_alloc_icm(struct mlx4_dev *dev, int qpn)
{ {
u64 param = 0; u64 param = 0;
...@@ -355,7 +355,7 @@ static int mlx4_qp_alloc_icm(struct mlx4_dev *dev, int qpn, gfp_t gfp) ...@@ -355,7 +355,7 @@ static int mlx4_qp_alloc_icm(struct mlx4_dev *dev, int qpn, gfp_t gfp)
MLX4_CMD_ALLOC_RES, MLX4_CMD_TIME_CLASS_A, MLX4_CMD_ALLOC_RES, MLX4_CMD_TIME_CLASS_A,
MLX4_CMD_WRAPPED); MLX4_CMD_WRAPPED);
} }
return __mlx4_qp_alloc_icm(dev, qpn, gfp); return __mlx4_qp_alloc_icm(dev, qpn);
} }
void __mlx4_qp_free_icm(struct mlx4_dev *dev, int qpn) void __mlx4_qp_free_icm(struct mlx4_dev *dev, int qpn)
...@@ -397,7 +397,7 @@ struct mlx4_qp *mlx4_qp_lookup(struct mlx4_dev *dev, u32 qpn) ...@@ -397,7 +397,7 @@ struct mlx4_qp *mlx4_qp_lookup(struct mlx4_dev *dev, u32 qpn)
return qp; return qp;
} }
int mlx4_qp_alloc(struct mlx4_dev *dev, int qpn, struct mlx4_qp *qp, gfp_t gfp) int mlx4_qp_alloc(struct mlx4_dev *dev, int qpn, struct mlx4_qp *qp)
{ {
struct mlx4_priv *priv = mlx4_priv(dev); struct mlx4_priv *priv = mlx4_priv(dev);
struct mlx4_qp_table *qp_table = &priv->qp_table; struct mlx4_qp_table *qp_table = &priv->qp_table;
...@@ -408,7 +408,7 @@ int mlx4_qp_alloc(struct mlx4_dev *dev, int qpn, struct mlx4_qp *qp, gfp_t gfp) ...@@ -408,7 +408,7 @@ int mlx4_qp_alloc(struct mlx4_dev *dev, int qpn, struct mlx4_qp *qp, gfp_t gfp)
qp->qpn = qpn; qp->qpn = qpn;
err = mlx4_qp_alloc_icm(dev, qpn, gfp); err = mlx4_qp_alloc_icm(dev, qpn);
if (err) if (err)
return err; return err;
......
...@@ -1822,7 +1822,7 @@ static int qp_alloc_res(struct mlx4_dev *dev, int slave, int op, int cmd, ...@@ -1822,7 +1822,7 @@ static int qp_alloc_res(struct mlx4_dev *dev, int slave, int op, int cmd,
return err; return err;
if (!fw_reserved(dev, qpn)) { if (!fw_reserved(dev, qpn)) {
err = __mlx4_qp_alloc_icm(dev, qpn, GFP_KERNEL); err = __mlx4_qp_alloc_icm(dev, qpn);
if (err) { if (err) {
res_abort_move(dev, slave, RES_QP, qpn); res_abort_move(dev, slave, RES_QP, qpn);
return err; return err;
...@@ -1909,7 +1909,7 @@ static int mpt_alloc_res(struct mlx4_dev *dev, int slave, int op, int cmd, ...@@ -1909,7 +1909,7 @@ static int mpt_alloc_res(struct mlx4_dev *dev, int slave, int op, int cmd,
if (err) if (err)
return err; return err;
err = __mlx4_mpt_alloc_icm(dev, mpt->key, GFP_KERNEL); err = __mlx4_mpt_alloc_icm(dev, mpt->key);
if (err) { if (err) {
res_abort_move(dev, slave, RES_MPT, id); res_abort_move(dev, slave, RES_MPT, id);
return err; return err;
......
...@@ -100,11 +100,11 @@ int __mlx4_srq_alloc_icm(struct mlx4_dev *dev, int *srqn) ...@@ -100,11 +100,11 @@ int __mlx4_srq_alloc_icm(struct mlx4_dev *dev, int *srqn)
if (*srqn == -1) if (*srqn == -1)
return -ENOMEM; return -ENOMEM;
err = mlx4_table_get(dev, &srq_table->table, *srqn, GFP_KERNEL); err = mlx4_table_get(dev, &srq_table->table, *srqn);
if (err) if (err)
goto err_out; goto err_out;
err = mlx4_table_get(dev, &srq_table->cmpt_table, *srqn, GFP_KERNEL); err = mlx4_table_get(dev, &srq_table->cmpt_table, *srqn);
if (err) if (err)
goto err_put; goto err_put;
return 0; return 0;
......
...@@ -1068,7 +1068,7 @@ static inline int mlx4_is_eth(struct mlx4_dev *dev, int port) ...@@ -1068,7 +1068,7 @@ static inline int mlx4_is_eth(struct mlx4_dev *dev, int port)
} }
int mlx4_buf_alloc(struct mlx4_dev *dev, int size, int max_direct, int mlx4_buf_alloc(struct mlx4_dev *dev, int size, int max_direct,
struct mlx4_buf *buf, gfp_t gfp); struct mlx4_buf *buf);
void mlx4_buf_free(struct mlx4_dev *dev, int size, struct mlx4_buf *buf); void mlx4_buf_free(struct mlx4_dev *dev, int size, struct mlx4_buf *buf);
static inline void *mlx4_buf_offset(struct mlx4_buf *buf, int offset) static inline void *mlx4_buf_offset(struct mlx4_buf *buf, int offset)
{ {
...@@ -1105,10 +1105,9 @@ int mlx4_mw_enable(struct mlx4_dev *dev, struct mlx4_mw *mw); ...@@ -1105,10 +1105,9 @@ int mlx4_mw_enable(struct mlx4_dev *dev, struct mlx4_mw *mw);
int mlx4_write_mtt(struct mlx4_dev *dev, struct mlx4_mtt *mtt, int mlx4_write_mtt(struct mlx4_dev *dev, struct mlx4_mtt *mtt,
int start_index, int npages, u64 *page_list); int start_index, int npages, u64 *page_list);
int mlx4_buf_write_mtt(struct mlx4_dev *dev, struct mlx4_mtt *mtt, int mlx4_buf_write_mtt(struct mlx4_dev *dev, struct mlx4_mtt *mtt,
struct mlx4_buf *buf, gfp_t gfp); struct mlx4_buf *buf);
int mlx4_db_alloc(struct mlx4_dev *dev, struct mlx4_db *db, int order, int mlx4_db_alloc(struct mlx4_dev *dev, struct mlx4_db *db, int order);
gfp_t gfp);
void mlx4_db_free(struct mlx4_dev *dev, struct mlx4_db *db); void mlx4_db_free(struct mlx4_dev *dev, struct mlx4_db *db);
int mlx4_alloc_hwq_res(struct mlx4_dev *dev, struct mlx4_hwq_resources *wqres, int mlx4_alloc_hwq_res(struct mlx4_dev *dev, struct mlx4_hwq_resources *wqres,
...@@ -1124,8 +1123,7 @@ int mlx4_qp_reserve_range(struct mlx4_dev *dev, int cnt, int align, ...@@ -1124,8 +1123,7 @@ int mlx4_qp_reserve_range(struct mlx4_dev *dev, int cnt, int align,
int *base, u8 flags); int *base, u8 flags);
void mlx4_qp_release_range(struct mlx4_dev *dev, int base_qpn, int cnt); void mlx4_qp_release_range(struct mlx4_dev *dev, int base_qpn, int cnt);
int mlx4_qp_alloc(struct mlx4_dev *dev, int qpn, struct mlx4_qp *qp, int mlx4_qp_alloc(struct mlx4_dev *dev, int qpn, struct mlx4_qp *qp);
gfp_t gfp);
void mlx4_qp_free(struct mlx4_dev *dev, struct mlx4_qp *qp); void mlx4_qp_free(struct mlx4_dev *dev, struct mlx4_qp *qp);
int mlx4_srq_alloc(struct mlx4_dev *dev, u32 pdn, u32 cqn, u16 xrcdn, int mlx4_srq_alloc(struct mlx4_dev *dev, u32 pdn, u32 cqn, u16 xrcdn,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment