eventdev: fix probe and remove for secondary process
authorPavan Nikhilesh <pbhagavatula@marvell.com>
Mon, 27 Apr 2020 18:10:38 +0000 (23:40 +0530)
committerJerin Jacob <jerinj@marvell.com>
Sat, 2 May 2020 10:31:57 +0000 (12:31 +0200)
When probing event device in secondary process skip reinitializing
the device data structure as it is already done in primary process.

When removing event device in secondary process skip closing the
event device as it should be done by primary process.

Fixes: 322d0345c2bc ("eventdev: implement PMD registration functions")
Cc: stable@dpdk.org
Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
lib/librte_eventdev/rte_eventdev.c
lib/librte_eventdev/rte_eventdev_pmd_pci.h

index e72d8b9..82c177c 100644 (file)
@@ -1373,14 +1373,17 @@ rte_event_pmd_allocate(const char *name, int socket_id)
 
                eventdev->data = eventdev_data;
 
-               strlcpy(eventdev->data->name, name, RTE_EVENTDEV_NAME_MAX_LEN);
+               if (rte_eal_process_type() == RTE_PROC_PRIMARY) {
 
-               eventdev->data->dev_id = dev_id;
-               eventdev->data->socket_id = socket_id;
-               eventdev->data->dev_started = 0;
+                       strlcpy(eventdev->data->name, name,
+                               RTE_EVENTDEV_NAME_MAX_LEN);
 
-               eventdev->attached = RTE_EVENTDEV_ATTACHED;
+                       eventdev->data->dev_id = dev_id;
+                       eventdev->data->socket_id = socket_id;
+                       eventdev->data->dev_started = 0;
+               }
 
+               eventdev->attached = RTE_EVENTDEV_ATTACHED;
                eventdev_globals.nb_devs++;
        }
 
index 8fb6138..443cd38 100644 (file)
@@ -112,9 +112,11 @@ rte_event_pmd_pci_remove(struct rte_pci_device *pci_dev,
        if (eventdev == NULL)
                return -ENODEV;
 
-       ret = rte_event_dev_close(eventdev->data->dev_id);
-       if (ret < 0)
-               return ret;
+       if (rte_eal_process_type() == RTE_PROC_PRIMARY) {
+               ret = rte_event_dev_close(eventdev->data->dev_id);
+               if (ret < 0)
+                       return ret;
+       }
 
        /* Invoke PMD device un-init function */
        if (devuninit)