Lines Matching refs:tracker
160 mvdev->tracker.object_changed = true; in set_tracker_change_event()
167 mvdev->tracker.is_err = true; in set_tracker_error()
917 struct mlx5_vhca_page_tracker *tracker = &mvdev->tracker; in mlx5vf_create_tracker() local
953 ilog2(tracker->host_qp->tracked_page_size)); in mlx5vf_create_tracker()
955 ilog2(tracker->host_qp->max_msg_size)); in mlx5vf_create_tracker()
956 MLX5_SET(page_track, obj_context, reporting_qpn, tracker->fw_qp->qpn); in mlx5vf_create_tracker()
988 tracker->id = MLX5_GET(general_obj_out_cmd_hdr, out, obj_id); in mlx5vf_create_tracker()
1031 struct mlx5_vhca_page_tracker *tracker) in mlx5vf_cmd_query_tracker() argument
1042 MLX5_SET(general_obj_in_cmd_hdr, cmd_hdr, obj_id, tracker->id); in mlx5vf_cmd_query_tracker()
1049 tracker->status = MLX5_GET(page_track, obj_context, state); in mlx5vf_cmd_query_tracker()
1100 tracker.cq.mcq)); in mlx5vf_cq_event()
1106 struct mlx5_vhca_page_tracker *tracker = in mlx5vf_event_notifier() local
1109 tracker, struct mlx5vf_pci_core_device, tracker); in mlx5vf_event_notifier()
1125 if (qp_num != tracker->host_qp->qpn && in mlx5vf_event_notifier()
1126 qp_num != tracker->fw_qp->qpn) in mlx5vf_event_notifier()
1133 if (obj_id == tracker->id) in mlx5vf_event_notifier()
1148 tracker.cq.mcq); in mlx5vf_cq_complete()
1154 struct mlx5_vhca_page_tracker *tracker, in mlx5vf_create_cq() argument
1165 cq = &tracker->cq; in mlx5vf_create_cq()
1197 MLX5_SET(cqc, cqc, uar_page, tracker->uar->index); in mlx5vf_create_cq()
1209 mlx5_cq_arm(&cq->mcq, MLX5_CQ_DB_REQ_NOT, tracker->uar->map, in mlx5vf_create_cq()
1225 struct mlx5_vhca_page_tracker *tracker, u32 max_recv_wr) in mlx5vf_create_rc_qp() argument
1269 MLX5_SET(qpc, qpc, pd, tracker->pdn); in mlx5vf_create_rc_qp()
1270 MLX5_SET(qpc, qpc, uar_page, tracker->uar->index); in mlx5vf_create_rc_qp()
1278 MLX5_SET(qpc, qpc, cqn_rcv, tracker->cq.mcq.cqn); in mlx5vf_create_rc_qp()
1457 struct mlx5_vhca_page_tracker *tracker = &mvdev->tracker; in _mlx5vf_free_page_tracker_resources() local
1467 mlx5_eq_notifier_unregister(mdev, &tracker->nb); in _mlx5vf_free_page_tracker_resources()
1468 mlx5vf_cmd_destroy_tracker(mdev, tracker->id); in _mlx5vf_free_page_tracker_resources()
1469 mlx5vf_destroy_qp(mdev, tracker->fw_qp); in _mlx5vf_free_page_tracker_resources()
1470 mlx5vf_free_qp_recv_resources(mdev, tracker->host_qp); in _mlx5vf_free_page_tracker_resources()
1471 mlx5vf_destroy_qp(mdev, tracker->host_qp); in _mlx5vf_free_page_tracker_resources()
1472 mlx5vf_destroy_cq(mdev, &tracker->cq); in _mlx5vf_free_page_tracker_resources()
1473 mlx5_core_dealloc_pd(mdev, tracker->pdn); in _mlx5vf_free_page_tracker_resources()
1474 mlx5_put_uars_page(mdev, tracker->uar); in _mlx5vf_free_page_tracker_resources()
1500 struct mlx5_vhca_page_tracker *tracker = &mvdev->tracker; in mlx5vf_start_page_tracker() local
1529 memset(tracker, 0, sizeof(*tracker)); in mlx5vf_start_page_tracker()
1530 tracker->uar = mlx5_get_uars_page(mdev); in mlx5vf_start_page_tracker()
1531 if (IS_ERR(tracker->uar)) { in mlx5vf_start_page_tracker()
1532 err = PTR_ERR(tracker->uar); in mlx5vf_start_page_tracker()
1536 err = mlx5_core_alloc_pd(mdev, &tracker->pdn); in mlx5vf_start_page_tracker()
1541 err = mlx5vf_create_cq(mdev, tracker, max_recv_wr); in mlx5vf_start_page_tracker()
1545 host_qp = mlx5vf_create_rc_qp(mdev, tracker, max_recv_wr); in mlx5vf_start_page_tracker()
1563 err = mlx5vf_alloc_qp_recv_resources(mdev, host_qp, tracker->pdn, in mlx5vf_start_page_tracker()
1568 fw_qp = mlx5vf_create_rc_qp(mdev, tracker, 0); in mlx5vf_start_page_tracker()
1582 tracker->host_qp = host_qp; in mlx5vf_start_page_tracker()
1583 tracker->fw_qp = fw_qp; in mlx5vf_start_page_tracker()
1588 MLX5_NB_INIT(&tracker->nb, mlx5vf_event_notifier, NOTIFY_ANY); in mlx5vf_start_page_tracker()
1589 mlx5_eq_notifier_register(mdev, &tracker->nb); in mlx5vf_start_page_tracker()
1602 mlx5vf_destroy_cq(mdev, &tracker->cq); in mlx5vf_start_page_tracker()
1604 mlx5_core_dealloc_pd(mdev, tracker->pdn); in mlx5vf_start_page_tracker()
1606 mlx5_put_uars_page(mdev, tracker->uar); in mlx5vf_start_page_tracker()
1729 struct mlx5_vhca_page_tracker *tracker = &mvdev->tracker; in mlx5vf_tracker_read_and_clear() local
1730 struct mlx5_vhca_cq *cq = &tracker->cq; in mlx5vf_tracker_read_and_clear()
1745 if (tracker->is_err) { in mlx5vf_tracker_read_and_clear()
1751 err = mlx5vf_cmd_modify_tracker(mdev, tracker->id, iova, length, in mlx5vf_tracker_read_and_clear()
1756 tracker->status = MLX5_PAGE_TRACK_STATE_REPORTING; in mlx5vf_tracker_read_and_clear()
1757 while (tracker->status == MLX5_PAGE_TRACK_STATE_REPORTING && in mlx5vf_tracker_read_and_clear()
1758 !tracker->is_err) { in mlx5vf_tracker_read_and_clear()
1759 poll_err = mlx5vf_cq_poll_one(cq, tracker->host_qp, dirty, in mlx5vf_tracker_read_and_clear()
1760 &tracker->status); in mlx5vf_tracker_read_and_clear()
1762 mlx5_cq_arm(&cq->mcq, MLX5_CQ_DB_REQ_NOT, tracker->uar->map, in mlx5vf_tracker_read_and_clear()
1764 poll_err = mlx5vf_cq_poll_one(cq, tracker->host_qp, in mlx5vf_tracker_read_and_clear()
1765 dirty, &tracker->status); in mlx5vf_tracker_read_and_clear()
1768 if (tracker->object_changed) { in mlx5vf_tracker_read_and_clear()
1769 tracker->object_changed = false; in mlx5vf_tracker_read_and_clear()
1770 err = mlx5vf_cmd_query_tracker(mdev, tracker); in mlx5vf_tracker_read_and_clear()
1784 if (tracker->status == MLX5_PAGE_TRACK_STATE_ERROR) in mlx5vf_tracker_read_and_clear()
1785 tracker->is_err = true; in mlx5vf_tracker_read_and_clear()
1787 if (tracker->is_err) in mlx5vf_tracker_read_and_clear()