vdpa/mlx5: use common interrupt management
authorSpike Du <spiked@nvidia.com>
Tue, 5 Jul 2022 13:44:51 +0000 (16:44 +0300)
committerThomas Monjalon <thomas@monjalon.net>
Tue, 5 Jul 2022 18:15:28 +0000 (20:15 +0200)
Replace vDPA interrupt handle creation logic
with mlx5-common interrupt management function.

Signed-off-by: Spike Du <spiked@nvidia.com>
drivers/vdpa/mlx5/mlx5_vdpa_virtq.c

index ed17fb5..607e290 100644 (file)
@@ -492,30 +492,13 @@ static int
 mlx5_vdpa_virtq_doorbell_setup(struct mlx5_vdpa_virtq *virtq,
                struct rte_vhost_vring *vq, int index)
 {
-       virtq->intr_handle =
-               rte_intr_instance_alloc(RTE_INTR_INSTANCE_F_SHARED);
+       virtq->intr_handle = mlx5_os_interrupt_handler_create(
+                                 RTE_INTR_INSTANCE_F_SHARED, false,
+                                 vq->kickfd, mlx5_vdpa_virtq_kick_handler, virtq);
        if (virtq->intr_handle == NULL) {
-               DRV_LOG(ERR, "Fail to allocate intr_handle");
+               DRV_LOG(ERR, "Fail to allocate intr_handle for virtq %d.", index);
                return -1;
        }
-       if (rte_intr_fd_set(virtq->intr_handle, vq->kickfd))
-               return -1;
-       if (rte_intr_fd_get(virtq->intr_handle) == -1) {
-               DRV_LOG(WARNING, "Virtq %d kickfd is invalid.", index);
-       } else {
-               if (rte_intr_type_set(virtq->intr_handle,
-                       RTE_INTR_HANDLE_EXT))
-                       return -1;
-               if (rte_intr_callback_register(virtq->intr_handle,
-                       mlx5_vdpa_virtq_kick_handler, virtq)) {
-                       (void)rte_intr_fd_set(virtq->intr_handle, -1);
-                       DRV_LOG(ERR, "Failed to register virtq %d interrupt.",
-                               index);
-                       return -1;
-               }
-               DRV_LOG(DEBUG, "Register fd %d interrupt for virtq %d.",
-                       rte_intr_fd_get(virtq->intr_handle), index);
-       }
        return 0;
 }