app/testpmd: fix vm_hotplug after removal of rte_eth_devices

Message ID 20210728134848.353258-1-paulis.gributs@intel.com (mailing list archive)
State Accepted, archived
Delegated to: Thomas Monjalon
Headers
Series app/testpmd: fix vm_hotplug after removal of rte_eth_devices |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/github-robot success github build: passed
ci/Intel-compilation success Compilation OK
ci/intel-Testing success Testing PASS
ci/iol-intel-Functional success Functional Testing PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-abi-testing success Testing PASS
ci/iol-testing fail Testing issues

Commit Message

Paulis Gributs July 28, 2021, 1:48 p.m. UTC
  After removing rte_eth_devices from testpmd the vm_hotplug no longer
recovered after removal of a device, this patch fixes this issue.

Fixes: 0a0821bcf312 ("app/testpmd: remove most uses of internal ethdev array")

Signed-off-by: Paulis Gributs <paulis.gributs@intel.com>
---
 app/test-pmd/testpmd.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)
  

Comments

Li, Xiaoyun July 30, 2021, 2:17 a.m. UTC | #1
> -----Original Message-----
> From: Gributs, Paulis <paulis.gributs@intel.com>
> Sent: Wednesday, July 28, 2021 21:49
> To: Li, Xiaoyun <xiaoyun.li@intel.com>; Yigit, Ferruh <ferruh.yigit@intel.com>
> Cc: dev@dpdk.org; thomas@monjalon.net; Gributs, Paulis
> <paulis.gributs@intel.com>
> Subject: [PATCH] app/testpmd: fix vm_hotplug after removal of rte_eth_devices
> 
> After removing rte_eth_devices from testpmd the vm_hotplug no longer
> recovered after removal of a device, this patch fixes this issue.
> 
> Fixes: 0a0821bcf312 ("app/testpmd: remove most uses of internal ethdev array")
> 
> Signed-off-by: Paulis Gributs <paulis.gributs@intel.com>
> ---
>  app/test-pmd/testpmd.c | 8 +++++---
>  1 file changed, 5 insertions(+), 3 deletions(-)

Acked-by: Xiaoyun Li <xiaoyun.li@intel.com>
  
Thomas Monjalon July 30, 2021, 12:30 p.m. UTC | #2
> > After removing rte_eth_devices from testpmd the vm_hotplug no longer
> > recovered after removal of a device, this patch fixes this issue.
> > 
> > Fixes: 0a0821bcf312 ("app/testpmd: remove most uses of internal ethdev array")
> > 
> > Signed-off-by: Paulis Gributs <paulis.gributs@intel.com>
> > ---
> >  app/test-pmd/testpmd.c | 8 +++++---
> >  1 file changed, 5 insertions(+), 3 deletions(-)
> 
> Acked-by: Xiaoyun Li <xiaoyun.li@intel.com>

Adding a bit of explanation:
"because the port was closed before querying it."
About the title, vm_hotplug is nothing in testpmd,
and the problem is not limited to VMs.

Applied with rewording.
  

Patch

diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
index 63da63eb3c..6cbe9ba3c8 100644
--- a/app/test-pmd/testpmd.c
+++ b/app/test-pmd/testpmd.c
@@ -3197,14 +3197,16 @@  rmv_port_callback(void *arg)
 	stop_port(port_id);
 	no_link_check = org_no_link_check;
 
-	close_port(port_id);
 	ret = eth_dev_info_get_print_err(port_id, &dev_info);
 	if (ret != 0)
 		TESTPMD_LOG(ERR,
 			"Failed to get device info for port %d, not detaching\n",
 			port_id);
-	else
-		detach_device(dev_info.device); /* might be already removed or have more ports */
+	else {
+		struct rte_device *device = dev_info.device;
+		close_port(port_id);
+		detach_device(device); /* might be already removed or have more ports */
+	}
 	if (need_to_start)
 		start_packet_forwarding(0);
 }