Lines Matching refs:devr

4466 	mutex_lock(&ports->devr->mutex);  in pkey_change_handler()
4468 mutex_unlock(&ports->devr->mutex); in pkey_change_handler()
4594 schedule_work(&ibdev->devr.ports[port - 1].pkey_change_work); in handle_port_change()
4932 static int create_dev_resources(struct mlx5_ib_resources *devr) in create_dev_resources() argument
4941 dev = container_of(devr, struct mlx5_ib_dev, devr); in create_dev_resources()
4944 mutex_init(&devr->mutex); in create_dev_resources()
4946 devr->p0 = rdma_zalloc_drv_obj(ibdev, ib_pd); in create_dev_resources()
4947 if (!devr->p0) in create_dev_resources()
4950 devr->p0->device = ibdev; in create_dev_resources()
4951 devr->p0->uobject = NULL; in create_dev_resources()
4952 atomic_set(&devr->p0->usecnt, 0); in create_dev_resources()
4954 ret = mlx5_ib_alloc_pd(devr->p0, NULL); in create_dev_resources()
4958 devr->c0 = rdma_zalloc_drv_obj(ibdev, ib_cq); in create_dev_resources()
4959 if (!devr->c0) { in create_dev_resources()
4964 devr->c0->device = &dev->ib_dev; in create_dev_resources()
4965 atomic_set(&devr->c0->usecnt, 0); in create_dev_resources()
4967 ret = mlx5_ib_create_cq(devr->c0, &cq_attr, NULL); in create_dev_resources()
4971 devr->x0 = mlx5_ib_alloc_xrcd(&dev->ib_dev, NULL); in create_dev_resources()
4972 if (IS_ERR(devr->x0)) { in create_dev_resources()
4973 ret = PTR_ERR(devr->x0); in create_dev_resources()
4976 devr->x0->device = &dev->ib_dev; in create_dev_resources()
4977 devr->x0->inode = NULL; in create_dev_resources()
4978 atomic_set(&devr->x0->usecnt, 0); in create_dev_resources()
4979 mutex_init(&devr->x0->tgt_qp_mutex); in create_dev_resources()
4980 INIT_LIST_HEAD(&devr->x0->tgt_qp_list); in create_dev_resources()
4982 devr->x1 = mlx5_ib_alloc_xrcd(&dev->ib_dev, NULL); in create_dev_resources()
4983 if (IS_ERR(devr->x1)) { in create_dev_resources()
4984 ret = PTR_ERR(devr->x1); in create_dev_resources()
4987 devr->x1->device = &dev->ib_dev; in create_dev_resources()
4988 devr->x1->inode = NULL; in create_dev_resources()
4989 atomic_set(&devr->x1->usecnt, 0); in create_dev_resources()
4990 mutex_init(&devr->x1->tgt_qp_mutex); in create_dev_resources()
4991 INIT_LIST_HEAD(&devr->x1->tgt_qp_list); in create_dev_resources()
4997 attr.ext.cq = devr->c0; in create_dev_resources()
4998 attr.ext.xrc.xrcd = devr->x0; in create_dev_resources()
5000 devr->s0 = rdma_zalloc_drv_obj(ibdev, ib_srq); in create_dev_resources()
5001 if (!devr->s0) { in create_dev_resources()
5006 devr->s0->device = &dev->ib_dev; in create_dev_resources()
5007 devr->s0->pd = devr->p0; in create_dev_resources()
5008 devr->s0->srq_type = IB_SRQT_XRC; in create_dev_resources()
5009 devr->s0->ext.xrc.xrcd = devr->x0; in create_dev_resources()
5010 devr->s0->ext.cq = devr->c0; in create_dev_resources()
5011 ret = mlx5_ib_create_srq(devr->s0, &attr, NULL); in create_dev_resources()
5015 atomic_inc(&devr->s0->ext.xrc.xrcd->usecnt); in create_dev_resources()
5016 atomic_inc(&devr->s0->ext.cq->usecnt); in create_dev_resources()
5017 atomic_inc(&devr->p0->usecnt); in create_dev_resources()
5018 atomic_set(&devr->s0->usecnt, 0); in create_dev_resources()
5024 devr->s1 = rdma_zalloc_drv_obj(ibdev, ib_srq); in create_dev_resources()
5025 if (!devr->s1) { in create_dev_resources()
5030 devr->s1->device = &dev->ib_dev; in create_dev_resources()
5031 devr->s1->pd = devr->p0; in create_dev_resources()
5032 devr->s1->srq_type = IB_SRQT_BASIC; in create_dev_resources()
5033 devr->s1->ext.cq = devr->c0; in create_dev_resources()
5035 ret = mlx5_ib_create_srq(devr->s1, &attr, NULL); in create_dev_resources()
5039 atomic_inc(&devr->p0->usecnt); in create_dev_resources()
5040 atomic_set(&devr->s1->usecnt, 0); in create_dev_resources()
5042 for (port = 0; port < ARRAY_SIZE(devr->ports); ++port) { in create_dev_resources()
5043 INIT_WORK(&devr->ports[port].pkey_change_work, in create_dev_resources()
5045 devr->ports[port].devr = devr; in create_dev_resources()
5051 kfree(devr->s1); in create_dev_resources()
5053 mlx5_ib_destroy_srq(devr->s0, NULL); in create_dev_resources()
5055 kfree(devr->s0); in create_dev_resources()
5057 mlx5_ib_dealloc_xrcd(devr->x1, NULL); in create_dev_resources()
5059 mlx5_ib_dealloc_xrcd(devr->x0, NULL); in create_dev_resources()
5061 mlx5_ib_destroy_cq(devr->c0, NULL); in create_dev_resources()
5063 kfree(devr->c0); in create_dev_resources()
5065 mlx5_ib_dealloc_pd(devr->p0, NULL); in create_dev_resources()
5067 kfree(devr->p0); in create_dev_resources()
5071 static void destroy_dev_resources(struct mlx5_ib_resources *devr) in destroy_dev_resources() argument
5075 mlx5_ib_destroy_srq(devr->s1, NULL); in destroy_dev_resources()
5076 kfree(devr->s1); in destroy_dev_resources()
5077 mlx5_ib_destroy_srq(devr->s0, NULL); in destroy_dev_resources()
5078 kfree(devr->s0); in destroy_dev_resources()
5079 mlx5_ib_dealloc_xrcd(devr->x0, NULL); in destroy_dev_resources()
5080 mlx5_ib_dealloc_xrcd(devr->x1, NULL); in destroy_dev_resources()
5081 mlx5_ib_destroy_cq(devr->c0, NULL); in destroy_dev_resources()
5082 kfree(devr->c0); in destroy_dev_resources()
5083 mlx5_ib_dealloc_pd(devr->p0, NULL); in destroy_dev_resources()
5084 kfree(devr->p0); in destroy_dev_resources()
5087 for (port = 0; port < ARRAY_SIZE(devr->ports); ++port) in destroy_dev_resources()
5088 cancel_work_sync(&devr->ports[port].pkey_change_work); in destroy_dev_resources()
6552 return create_dev_resources(&dev->devr); in mlx5_ib_stage_dev_res_init()
6557 destroy_dev_resources(&dev->devr); in mlx5_ib_stage_dev_res_cleanup()