Lines Matching refs:tracker
76 mvdev->tracker.is_err = true; in set_tracker_error()
480 struct mlx5_vhca_page_tracker *tracker = &mvdev->tracker; in mlx5vf_create_tracker() local
516 ilog2(tracker->host_qp->tracked_page_size)); in mlx5vf_create_tracker()
518 ilog2(tracker->host_qp->max_msg_size)); in mlx5vf_create_tracker()
519 MLX5_SET(page_track, obj_context, reporting_qpn, tracker->fw_qp->qpn); in mlx5vf_create_tracker()
551 tracker->id = MLX5_GET(general_obj_out_cmd_hdr, out, obj_id); in mlx5vf_create_tracker()
640 tracker.cq.mcq)); in mlx5vf_cq_event()
646 struct mlx5_vhca_page_tracker *tracker = in mlx5vf_event_notifier() local
649 tracker, struct mlx5vf_pci_core_device, tracker); in mlx5vf_event_notifier()
663 if (qp_num != tracker->host_qp->qpn && in mlx5vf_event_notifier()
664 qp_num != tracker->fw_qp->qpn) in mlx5vf_event_notifier()
680 tracker.cq.mcq); in mlx5vf_cq_complete()
686 struct mlx5_vhca_page_tracker *tracker, in mlx5vf_create_cq() argument
697 cq = &tracker->cq; in mlx5vf_create_cq()
729 MLX5_SET(cqc, cqc, uar_page, tracker->uar->index); in mlx5vf_create_cq()
741 mlx5_cq_arm(&cq->mcq, MLX5_CQ_DB_REQ_NOT, tracker->uar->map, in mlx5vf_create_cq()
757 struct mlx5_vhca_page_tracker *tracker, u32 max_recv_wr) in mlx5vf_create_rc_qp() argument
801 MLX5_SET(qpc, qpc, pd, tracker->pdn); in mlx5vf_create_rc_qp()
802 MLX5_SET(qpc, qpc, uar_page, tracker->uar->index); in mlx5vf_create_rc_qp()
810 MLX5_SET(qpc, qpc, cqn_rcv, tracker->cq.mcq.cqn); in mlx5vf_create_rc_qp()
1061 struct mlx5_vhca_page_tracker *tracker = &mvdev->tracker; in _mlx5vf_free_page_tracker_resources() local
1071 mlx5_eq_notifier_unregister(mdev, &tracker->nb); in _mlx5vf_free_page_tracker_resources()
1072 mlx5vf_cmd_destroy_tracker(mdev, tracker->id); in _mlx5vf_free_page_tracker_resources()
1073 mlx5vf_destroy_qp(mdev, tracker->fw_qp); in _mlx5vf_free_page_tracker_resources()
1074 mlx5vf_free_qp_recv_resources(mdev, tracker->host_qp); in _mlx5vf_free_page_tracker_resources()
1075 mlx5vf_destroy_qp(mdev, tracker->host_qp); in _mlx5vf_free_page_tracker_resources()
1076 mlx5vf_destroy_cq(mdev, &tracker->cq); in _mlx5vf_free_page_tracker_resources()
1077 mlx5_core_dealloc_pd(mdev, tracker->pdn); in _mlx5vf_free_page_tracker_resources()
1078 mlx5_put_uars_page(mdev, tracker->uar); in _mlx5vf_free_page_tracker_resources()
1104 struct mlx5_vhca_page_tracker *tracker = &mvdev->tracker; in mlx5vf_start_page_tracker() local
1126 memset(tracker, 0, sizeof(*tracker)); in mlx5vf_start_page_tracker()
1127 tracker->uar = mlx5_get_uars_page(mdev); in mlx5vf_start_page_tracker()
1128 if (IS_ERR(tracker->uar)) { in mlx5vf_start_page_tracker()
1129 err = PTR_ERR(tracker->uar); in mlx5vf_start_page_tracker()
1133 err = mlx5_core_alloc_pd(mdev, &tracker->pdn); in mlx5vf_start_page_tracker()
1138 err = mlx5vf_create_cq(mdev, tracker, max_recv_wr); in mlx5vf_start_page_tracker()
1142 host_qp = mlx5vf_create_rc_qp(mdev, tracker, max_recv_wr); in mlx5vf_start_page_tracker()
1160 err = mlx5vf_alloc_qp_recv_resources(mdev, host_qp, tracker->pdn, in mlx5vf_start_page_tracker()
1165 fw_qp = mlx5vf_create_rc_qp(mdev, tracker, 0); in mlx5vf_start_page_tracker()
1179 tracker->host_qp = host_qp; in mlx5vf_start_page_tracker()
1180 tracker->fw_qp = fw_qp; in mlx5vf_start_page_tracker()
1185 MLX5_NB_INIT(&tracker->nb, mlx5vf_event_notifier, NOTIFY_ANY); in mlx5vf_start_page_tracker()
1186 mlx5_eq_notifier_register(mdev, &tracker->nb); in mlx5vf_start_page_tracker()
1199 mlx5vf_destroy_cq(mdev, &tracker->cq); in mlx5vf_start_page_tracker()
1201 mlx5_core_dealloc_pd(mdev, tracker->pdn); in mlx5vf_start_page_tracker()
1203 mlx5_put_uars_page(mdev, tracker->uar); in mlx5vf_start_page_tracker()
1310 struct mlx5_vhca_page_tracker *tracker = &mvdev->tracker; in mlx5vf_tracker_read_and_clear() local
1311 struct mlx5_vhca_cq *cq = &tracker->cq; in mlx5vf_tracker_read_and_clear()
1327 err = mlx5vf_cmd_modify_tracker(mdev, tracker->id, iova, length, in mlx5vf_tracker_read_and_clear()
1332 tracker->status = MLX5_PAGE_TRACK_STATE_REPORTING; in mlx5vf_tracker_read_and_clear()
1333 while (tracker->status == MLX5_PAGE_TRACK_STATE_REPORTING && in mlx5vf_tracker_read_and_clear()
1334 !tracker->is_err) { in mlx5vf_tracker_read_and_clear()
1335 poll_err = mlx5vf_cq_poll_one(cq, tracker->host_qp, dirty, in mlx5vf_tracker_read_and_clear()
1336 &tracker->status); in mlx5vf_tracker_read_and_clear()
1338 mlx5_cq_arm(&cq->mcq, MLX5_CQ_DB_REQ_NOT, tracker->uar->map, in mlx5vf_tracker_read_and_clear()
1340 poll_err = mlx5vf_cq_poll_one(cq, tracker->host_qp, in mlx5vf_tracker_read_and_clear()
1341 dirty, &tracker->status); in mlx5vf_tracker_read_and_clear()
1354 if (tracker->status == MLX5_PAGE_TRACK_STATE_ERROR) in mlx5vf_tracker_read_and_clear()
1355 tracker->is_err = true; in mlx5vf_tracker_read_and_clear()
1357 if (tracker->is_err) in mlx5vf_tracker_read_and_clear()