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()
855 struct mlx5_vhca_page_tracker *tracker = &mvdev->tracker; in mlx5vf_create_tracker() local
891 ilog2(tracker->host_qp->tracked_page_size)); in mlx5vf_create_tracker()
893 ilog2(tracker->host_qp->max_msg_size)); in mlx5vf_create_tracker()
894 MLX5_SET(page_track, obj_context, reporting_qpn, tracker->fw_qp->qpn); in mlx5vf_create_tracker()
926 tracker->id = MLX5_GET(general_obj_out_cmd_hdr, out, obj_id); in mlx5vf_create_tracker()
969 struct mlx5_vhca_page_tracker *tracker) in mlx5vf_cmd_query_tracker() argument
980 MLX5_SET(general_obj_in_cmd_hdr, cmd_hdr, obj_id, tracker->id); in mlx5vf_cmd_query_tracker()
987 tracker->status = MLX5_GET(page_track, obj_context, state); in mlx5vf_cmd_query_tracker()
1038 tracker.cq.mcq)); in mlx5vf_cq_event()
1044 struct mlx5_vhca_page_tracker *tracker = in mlx5vf_event_notifier() local
1047 tracker, struct mlx5vf_pci_core_device, tracker); in mlx5vf_event_notifier()
1063 if (qp_num != tracker->host_qp->qpn && in mlx5vf_event_notifier()
1064 qp_num != tracker->fw_qp->qpn) in mlx5vf_event_notifier()
1071 if (obj_id == tracker->id) in mlx5vf_event_notifier()
1086 tracker.cq.mcq); in mlx5vf_cq_complete()
1092 struct mlx5_vhca_page_tracker *tracker, in mlx5vf_create_cq() argument
1103 cq = &tracker->cq; in mlx5vf_create_cq()
1135 MLX5_SET(cqc, cqc, uar_page, tracker->uar->index); in mlx5vf_create_cq()
1147 mlx5_cq_arm(&cq->mcq, MLX5_CQ_DB_REQ_NOT, tracker->uar->map, in mlx5vf_create_cq()
1163 struct mlx5_vhca_page_tracker *tracker, u32 max_recv_wr) in mlx5vf_create_rc_qp() argument
1207 MLX5_SET(qpc, qpc, pd, tracker->pdn); in mlx5vf_create_rc_qp()
1208 MLX5_SET(qpc, qpc, uar_page, tracker->uar->index); in mlx5vf_create_rc_qp()
1216 MLX5_SET(qpc, qpc, cqn_rcv, tracker->cq.mcq.cqn); in mlx5vf_create_rc_qp()
1468 struct mlx5_vhca_page_tracker *tracker = &mvdev->tracker; in _mlx5vf_free_page_tracker_resources() local
1478 mlx5_eq_notifier_unregister(mdev, &tracker->nb); in _mlx5vf_free_page_tracker_resources()
1479 mlx5vf_cmd_destroy_tracker(mdev, tracker->id); in _mlx5vf_free_page_tracker_resources()
1480 mlx5vf_destroy_qp(mdev, tracker->fw_qp); in _mlx5vf_free_page_tracker_resources()
1481 mlx5vf_free_qp_recv_resources(mdev, tracker->host_qp); in _mlx5vf_free_page_tracker_resources()
1482 mlx5vf_destroy_qp(mdev, tracker->host_qp); in _mlx5vf_free_page_tracker_resources()
1483 mlx5vf_destroy_cq(mdev, &tracker->cq); in _mlx5vf_free_page_tracker_resources()
1484 mlx5_core_dealloc_pd(mdev, tracker->pdn); in _mlx5vf_free_page_tracker_resources()
1485 mlx5_put_uars_page(mdev, tracker->uar); in _mlx5vf_free_page_tracker_resources()
1511 struct mlx5_vhca_page_tracker *tracker = &mvdev->tracker; in mlx5vf_start_page_tracker() local
1533 memset(tracker, 0, sizeof(*tracker)); in mlx5vf_start_page_tracker()
1534 tracker->uar = mlx5_get_uars_page(mdev); in mlx5vf_start_page_tracker()
1535 if (IS_ERR(tracker->uar)) { in mlx5vf_start_page_tracker()
1536 err = PTR_ERR(tracker->uar); in mlx5vf_start_page_tracker()
1540 err = mlx5_core_alloc_pd(mdev, &tracker->pdn); in mlx5vf_start_page_tracker()
1545 err = mlx5vf_create_cq(mdev, tracker, max_recv_wr); in mlx5vf_start_page_tracker()
1549 host_qp = mlx5vf_create_rc_qp(mdev, tracker, max_recv_wr); in mlx5vf_start_page_tracker()
1567 err = mlx5vf_alloc_qp_recv_resources(mdev, host_qp, tracker->pdn, in mlx5vf_start_page_tracker()
1572 fw_qp = mlx5vf_create_rc_qp(mdev, tracker, 0); in mlx5vf_start_page_tracker()
1586 tracker->host_qp = host_qp; in mlx5vf_start_page_tracker()
1587 tracker->fw_qp = fw_qp; in mlx5vf_start_page_tracker()
1592 MLX5_NB_INIT(&tracker->nb, mlx5vf_event_notifier, NOTIFY_ANY); in mlx5vf_start_page_tracker()
1593 mlx5_eq_notifier_register(mdev, &tracker->nb); in mlx5vf_start_page_tracker()
1606 mlx5vf_destroy_cq(mdev, &tracker->cq); in mlx5vf_start_page_tracker()
1608 mlx5_core_dealloc_pd(mdev, tracker->pdn); in mlx5vf_start_page_tracker()
1610 mlx5_put_uars_page(mdev, tracker->uar); in mlx5vf_start_page_tracker()
1717 struct mlx5_vhca_page_tracker *tracker = &mvdev->tracker; in mlx5vf_tracker_read_and_clear() local
1718 struct mlx5_vhca_cq *cq = &tracker->cq; in mlx5vf_tracker_read_and_clear()
1733 if (tracker->is_err) { in mlx5vf_tracker_read_and_clear()
1739 err = mlx5vf_cmd_modify_tracker(mdev, tracker->id, iova, length, in mlx5vf_tracker_read_and_clear()
1744 tracker->status = MLX5_PAGE_TRACK_STATE_REPORTING; in mlx5vf_tracker_read_and_clear()
1745 while (tracker->status == MLX5_PAGE_TRACK_STATE_REPORTING && in mlx5vf_tracker_read_and_clear()
1746 !tracker->is_err) { in mlx5vf_tracker_read_and_clear()
1747 poll_err = mlx5vf_cq_poll_one(cq, tracker->host_qp, dirty, in mlx5vf_tracker_read_and_clear()
1748 &tracker->status); in mlx5vf_tracker_read_and_clear()
1750 mlx5_cq_arm(&cq->mcq, MLX5_CQ_DB_REQ_NOT, tracker->uar->map, in mlx5vf_tracker_read_and_clear()
1752 poll_err = mlx5vf_cq_poll_one(cq, tracker->host_qp, in mlx5vf_tracker_read_and_clear()
1753 dirty, &tracker->status); in mlx5vf_tracker_read_and_clear()
1756 if (tracker->object_changed) { in mlx5vf_tracker_read_and_clear()
1757 tracker->object_changed = false; in mlx5vf_tracker_read_and_clear()
1758 err = mlx5vf_cmd_query_tracker(mdev, tracker); in mlx5vf_tracker_read_and_clear()
1772 if (tracker->status == MLX5_PAGE_TRACK_STATE_ERROR) in mlx5vf_tracker_read_and_clear()
1773 tracker->is_err = true; in mlx5vf_tracker_read_and_clear()
1775 if (tracker->is_err) in mlx5vf_tracker_read_and_clear()