From a5f30c925b88bb3613535fb27eb3459d19226cd0 Mon Sep 17 00:00:00 2001 From: Pavan Nikhilesh Date: Mon, 27 Apr 2020 23:40:38 +0530 Subject: [PATCH 1/1] 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 --- lib/librte_eventdev/rte_eventdev.c | 13 ++++++++----- lib/librte_eventdev/rte_eventdev_pmd_pci.h | 8 +++++--- 2 files changed, 13 insertions(+), 8 deletions(-) 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) -- 2.20.1