Thread (33 messages) 33 messages, 4 authors, 2021-10-21

Re: [dpdk-dev] [PATCH V3] ethdev: fix eth device released repeatedly

From: "lihuisong (C)" <lihuisong@huawei.com>
Date: 2021-10-21 02:31:59

在 2021/10/19 21:09, Ferruh Yigit 写道:
On 10/15/2021 4:44 AM, Huisong Li wrote:
quoted
In secondary process, rte_eth_dev_close() doesn't clear eth_dev->data.
If calling rte_dev_remove() after rte_eth_dev_close(),
in rte_eth_dev_pci_generic_remove() function, the released eth device 
still
can be found by its name in shared memory. As a result, the eth 
device will
be released repeatedly. The state of the eth device is modified to
RTE_ETH_DEV_UNUSED after rte_eth_dev_close(). So this state can be 
used to
avoid this problem.
Hi Huisong,

Can you please add Fixes line, and stable tag if the change is requested
for backport?
ok. It has been added. Please review v4.
quoted
Signed-off-by: Huisong Li <lihuisong@huawei.com>
---
v2 -> v3:
  * fix the commit log description and the comment inside the code.
v1 -> v2:
   * fix the commit log description.
RFC -> v1:
   * fix commit log and add a judgment for secondary process.
---
  lib/ethdev/ethdev_pci.h | 10 ++++++++++
  1 file changed, 10 insertions(+)
diff --git a/lib/ethdev/ethdev_pci.h b/lib/ethdev/ethdev_pci.h
index 8edca82ce8..fcabae02fa 100644
--- a/lib/ethdev/ethdev_pci.h
+++ b/lib/ethdev/ethdev_pci.h
@@ -151,6 +151,16 @@ rte_eth_dev_pci_generic_remove(struct 
rte_pci_device *pci_dev,
      if (!eth_dev)
          return 0;
  +    /*
+     * In secondary process, a released eth device can be found by 
its name
+     * in shared memory.
+     * If the state of the eth device is RTE_ETH_DEV_UNUSED, it 
means the
+     * eth device has been released.
+     */
+    if (rte_eal_process_type() == RTE_PROC_SECONDARY &&
+        eth_dev->state == RTE_ETH_DEV_UNUSED)
+        return 0;
+
      if (dev_uninit) {
          ret = dev_uninit(eth_dev);
          if (ret)
.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help