Lines Matching refs:devr
2593 mutex_lock(&ports->devr->mutex); in pkey_change_handler()
2595 mutex_unlock(&ports->devr->mutex); in pkey_change_handler()
2693 schedule_work(&ibdev->devr.ports[port - 1].pkey_change_work); in mlx5_ib_event()
2905 static int create_dev_resources(struct mlx5_ib_resources *devr) in create_dev_resources() argument
2914 dev = container_of(devr, struct mlx5_ib_dev, devr); in create_dev_resources()
2917 mutex_init(&devr->mutex); in create_dev_resources()
2919 devr->p0 = rdma_zalloc_drv_obj(ibdev, ib_pd); in create_dev_resources()
2920 if (!devr->p0) in create_dev_resources()
2923 devr->p0->device = ibdev; in create_dev_resources()
2924 devr->p0->uobject = NULL; in create_dev_resources()
2925 atomic_set(&devr->p0->usecnt, 0); in create_dev_resources()
2927 ret = mlx5_ib_alloc_pd(devr->p0, NULL); in create_dev_resources()
2931 devr->c0 = rdma_zalloc_drv_obj(ibdev, ib_cq); in create_dev_resources()
2932 if (!devr->c0) { in create_dev_resources()
2937 devr->c0->device = &dev->ib_dev; in create_dev_resources()
2938 atomic_set(&devr->c0->usecnt, 0); in create_dev_resources()
2940 ret = mlx5_ib_create_cq(devr->c0, &cq_attr, NULL); in create_dev_resources()
2944 devr->x0 = mlx5_ib_alloc_xrcd(&dev->ib_dev, NULL); in create_dev_resources()
2945 if (IS_ERR(devr->x0)) { in create_dev_resources()
2946 ret = PTR_ERR(devr->x0); in create_dev_resources()
2949 devr->x0->device = &dev->ib_dev; in create_dev_resources()
2950 devr->x0->inode = NULL; in create_dev_resources()
2951 atomic_set(&devr->x0->usecnt, 0); in create_dev_resources()
2952 mutex_init(&devr->x0->tgt_qp_mutex); in create_dev_resources()
2953 INIT_LIST_HEAD(&devr->x0->tgt_qp_list); in create_dev_resources()
2955 devr->x1 = mlx5_ib_alloc_xrcd(&dev->ib_dev, NULL); in create_dev_resources()
2956 if (IS_ERR(devr->x1)) { in create_dev_resources()
2957 ret = PTR_ERR(devr->x1); in create_dev_resources()
2960 devr->x1->device = &dev->ib_dev; in create_dev_resources()
2961 devr->x1->inode = NULL; in create_dev_resources()
2962 atomic_set(&devr->x1->usecnt, 0); in create_dev_resources()
2963 mutex_init(&devr->x1->tgt_qp_mutex); in create_dev_resources()
2964 INIT_LIST_HEAD(&devr->x1->tgt_qp_list); in create_dev_resources()
2970 attr.ext.cq = devr->c0; in create_dev_resources()
2971 attr.ext.xrc.xrcd = devr->x0; in create_dev_resources()
2973 devr->s0 = rdma_zalloc_drv_obj(ibdev, ib_srq); in create_dev_resources()
2974 if (!devr->s0) { in create_dev_resources()
2979 devr->s0->device = &dev->ib_dev; in create_dev_resources()
2980 devr->s0->pd = devr->p0; in create_dev_resources()
2981 devr->s0->srq_type = IB_SRQT_XRC; in create_dev_resources()
2982 devr->s0->ext.xrc.xrcd = devr->x0; in create_dev_resources()
2983 devr->s0->ext.cq = devr->c0; in create_dev_resources()
2984 ret = mlx5_ib_create_srq(devr->s0, &attr, NULL); in create_dev_resources()
2988 atomic_inc(&devr->s0->ext.xrc.xrcd->usecnt); in create_dev_resources()
2989 atomic_inc(&devr->s0->ext.cq->usecnt); in create_dev_resources()
2990 atomic_inc(&devr->p0->usecnt); in create_dev_resources()
2991 atomic_set(&devr->s0->usecnt, 0); in create_dev_resources()
2997 devr->s1 = rdma_zalloc_drv_obj(ibdev, ib_srq); in create_dev_resources()
2998 if (!devr->s1) { in create_dev_resources()
3003 devr->s1->device = &dev->ib_dev; in create_dev_resources()
3004 devr->s1->pd = devr->p0; in create_dev_resources()
3005 devr->s1->srq_type = IB_SRQT_BASIC; in create_dev_resources()
3006 devr->s1->ext.cq = devr->c0; in create_dev_resources()
3008 ret = mlx5_ib_create_srq(devr->s1, &attr, NULL); in create_dev_resources()
3012 atomic_inc(&devr->p0->usecnt); in create_dev_resources()
3013 atomic_set(&devr->s1->usecnt, 0); in create_dev_resources()
3015 for (port = 0; port < ARRAY_SIZE(devr->ports); ++port) { in create_dev_resources()
3016 INIT_WORK(&devr->ports[port].pkey_change_work, in create_dev_resources()
3018 devr->ports[port].devr = devr; in create_dev_resources()
3024 kfree(devr->s1); in create_dev_resources()
3026 mlx5_ib_destroy_srq(devr->s0, NULL); in create_dev_resources()
3028 kfree(devr->s0); in create_dev_resources()
3030 mlx5_ib_dealloc_xrcd(devr->x1, NULL); in create_dev_resources()
3032 mlx5_ib_dealloc_xrcd(devr->x0, NULL); in create_dev_resources()
3034 mlx5_ib_destroy_cq(devr->c0, NULL); in create_dev_resources()
3036 kfree(devr->c0); in create_dev_resources()
3038 mlx5_ib_dealloc_pd(devr->p0, NULL); in create_dev_resources()
3040 kfree(devr->p0); in create_dev_resources()
3044 static void destroy_dev_resources(struct mlx5_ib_resources *devr) in destroy_dev_resources() argument
3048 mlx5_ib_destroy_srq(devr->s1, NULL); in destroy_dev_resources()
3049 kfree(devr->s1); in destroy_dev_resources()
3050 mlx5_ib_destroy_srq(devr->s0, NULL); in destroy_dev_resources()
3051 kfree(devr->s0); in destroy_dev_resources()
3052 mlx5_ib_dealloc_xrcd(devr->x0, NULL); in destroy_dev_resources()
3053 mlx5_ib_dealloc_xrcd(devr->x1, NULL); in destroy_dev_resources()
3054 mlx5_ib_destroy_cq(devr->c0, NULL); in destroy_dev_resources()
3055 kfree(devr->c0); in destroy_dev_resources()
3056 mlx5_ib_dealloc_pd(devr->p0, NULL); in destroy_dev_resources()
3057 kfree(devr->p0); in destroy_dev_resources()
3060 for (port = 0; port < ARRAY_SIZE(devr->ports); ++port) in destroy_dev_resources()
3061 cancel_work_sync(&devr->ports[port].pkey_change_work); in destroy_dev_resources()
3542 err = create_dev_resources(&dev->devr); in mlx5_ib_add()
3597 destroy_dev_resources(&dev->devr); in mlx5_ib_add()
3626 destroy_dev_resources(&dev->devr); in mlx5_ib_remove()