From: Pavan Nikhilesh Date: Mon, 27 Apr 2020 18:10:38 +0000 (+0530) Subject: eventdev: fix probe and remove for secondary process X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=a5f30c925b88bb3613535fb27eb3459d19226cd0;p=dpdk.git eventdev: fix probe and remove for secondary process 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 Acked-by: Jerin Jacob --- diff --git a/lib/librte_eventdev/rte_eventdev.c b/lib/librte_eventdev/rte_eventdev.c index e72d8b941c..82c177c734 100644 --- a/lib/librte_eventdev/rte_eventdev.c +++ b/lib/librte_eventdev/rte_eventdev.c @@ -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++; } diff --git a/lib/librte_eventdev/rte_eventdev_pmd_pci.h b/lib/librte_eventdev/rte_eventdev_pmd_pci.h index 8fb61386fd..443cd38c23 100644 --- a/lib/librte_eventdev/rte_eventdev_pmd_pci.h +++ b/lib/librte_eventdev/rte_eventdev_pmd_pci.h @@ -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)