Patchwork [dpdk-dev,v3] pdump: fix vdev cleanup

login
register
mail settings
Submitter Pattan, Reshma
Date Jan. 11, 2019, 5:51 p.m.
Message ID <20190111175134.40273-1-reshma.pattan@intel.com>
Download mbox | patch
Permalink /patch/697957/
State New
Headers show

Comments

Pattan, Reshma - Jan. 11, 2019, 5:51 p.m.
Virtual devices added in pdump application
using rte_eal_hotplug_add should be removed explicitly
while existing the pdump application, otherwise the
subsequent run of the pdump application will fail with the reason
that virtual devices with the same name already exists in primary.

Fixes: 6362f362a2 ("app/pdump: use EAL hotplug instead of ethdev attach")
CC: stable@dpdk.org
CC: ferruh.yigit@intel.com

Signed-off-by: Reshma Pattan <reshma.pattan@intel.com>
---
v3: fix author
v2: fix typo in commit message
---
---
 app/pdump/main.c | 9 +++++++++
 1 file changed, 9 insertions(+)
Thomas Monjalon - Jan. 15, 2019, 12:59 a.m.
11/01/2019 18:51, Reshma Pattan:
> Virtual devices added in pdump application
> using rte_eal_hotplug_add should be removed explicitly
> while existing the pdump application, otherwise the

existing -> exiting ?

> subsequent run of the pdump application will fail with the reason
> that virtual devices with the same name already exists in primary.
> 
> Fixes: 6362f362a2 ("app/pdump: use EAL hotplug instead of ethdev attach")
> CC: stable@dpdk.org
> CC: ferruh.yigit@intel.com

Why is it marked as a fix of this commit?
Is it a miss in the conversion from ethdev attach calls?
Or a changed behaviour with hotplug functions?
Pattan, Reshma - Jan. 15, 2019, 10:09 a.m.
> -----Original Message-----
> From: Thomas Monjalon [mailto:thomas@monjalon.net]
> Sent: Tuesday, January 15, 2019 12:59 AM
> To: Pattan, Reshma <reshma.pattan@intel.com>
> Cc: dev@dpdk.org; stable@dpdk.org; Yigit, Ferruh <ferruh.yigit@intel.com>
> Subject: Re: [dpdk-dev] [PATCH v3] pdump: fix vdev cleanup
> 
> 11/01/2019 18:51, Reshma Pattan:
> > Virtual devices added in pdump application using rte_eal_hotplug_add
> > should be removed explicitly while existing the pdump application,
> > otherwise the
> 
> existing -> exiting ?
> 
> > subsequent run of the pdump application will fail with the reason that
> > virtual devices with the same name already exists in primary.
> >
> > Fixes: 6362f362a2 ("app/pdump: use EAL hotplug instead of ethdev
> > attach")
> > CC: stable@dpdk.org
> > CC: ferruh.yigit@intel.com
> 
> Why is it marked as a fix of this commit?
> Is it a miss in the conversion from ethdev attach calls?
> Or a changed behaviour with hotplug functions?
> 
> 

It is changed behaviour with hotplug functions.

Thanks,
Reshma
Thomas Monjalon - Jan. 15, 2019, 10:10 a.m.
15/01/2019 11:09, Pattan, Reshma:
> From: Thomas Monjalon [mailto:thomas@monjalon.net]
> > 11/01/2019 18:51, Reshma Pattan:
> > > Virtual devices added in pdump application using rte_eal_hotplug_add
> > > should be removed explicitly while existing the pdump application,
> > > otherwise the
> > 
> > existing -> exiting ?
> > 
> > > subsequent run of the pdump application will fail with the reason that
> > > virtual devices with the same name already exists in primary.
> > >
> > > Fixes: 6362f362a2 ("app/pdump: use EAL hotplug instead of ethdev
> > > attach")
> > > CC: stable@dpdk.org
> > > CC: ferruh.yigit@intel.com
> > 
> > Why is it marked as a fix of this commit?
> > Is it a miss in the conversion from ethdev attach calls?
> > Or a changed behaviour with hotplug functions?
> 
> It is changed behaviour with hotplug functions.

Please, could you explain?
Pattan, Reshma - Jan. 15, 2019, 10:25 a.m.
> -----Original Message-----
> From: Thomas Monjalon [mailto:thomas@monjalon.net]
> Sent: Tuesday, January 15, 2019 10:11 AM
> To: Pattan, Reshma <reshma.pattan@intel.com>
> Cc: dev@dpdk.org; stable@dpdk.org; Yigit, Ferruh <ferruh.yigit@intel.com>
> Subject: Re: [dpdk-dev] [PATCH v3] pdump: fix vdev cleanup
> 
> 15/01/2019 11:09, Pattan, Reshma:
> > From: Thomas Monjalon [mailto:thomas@monjalon.net]
> > > 11/01/2019 18:51, Reshma Pattan:
> > > > Virtual devices added in pdump application using
> > > > rte_eal_hotplug_add should be removed explicitly while existing
> > > > the pdump application, otherwise the
> > >
> > > existing -> exiting ?
> > >
> > > > subsequent run of the pdump application will fail with the reason
> > > > that virtual devices with the same name already exists in primary.
> > > >
> > > > Fixes: 6362f362a2 ("app/pdump: use EAL hotplug instead of ethdev
> > > > attach")
> > > > CC: stable@dpdk.org
> > > > CC: ferruh.yigit@intel.com
> > >
> > > Why is it marked as a fix of this commit?
> > > Is it a miss in the conversion from ethdev attach calls?
> > > Or a changed behaviour with hotplug functions?
> >
> > It is changed behaviour with hotplug functions.
> 
> Please, could you explain?
> 

Attach calls were replaced with rte_eal_hotplug_remove() in pdump in the commit id given in Fixes line.

And after this change, the subsequent runs(other than 1st) of pdump application are failing with below error

1)Pdump application error:

EAL: Failed to hotplug add device
EAL: Error - exiting with code: 1
  Cause: vdev creation failed:create_mp_ring_vdev:706

2)And error on primary application side is below:
	testpmd> Ethernet device with name net_pcap_rx_0 already allocated
                EAL: Failed to hotplug add device on primary

So, the dev added in secondary should be removed during its exit by calling rte_eal_hotplug_remove ().

So,  that is the reason I chose the Fixes: commit as the one where rte_eal_hotplug_add() replaced the attach.

Earlier with attach calls though not detaching the devices upon application exit, these issues are not seen.

Thanks,
Reshma
Thomas Monjalon - Jan. 17, 2019, 8:23 p.m.
15/01/2019 11:25, Pattan, Reshma:
> From: Thomas Monjalon [mailto:thomas@monjalon.net]
> > 15/01/2019 11:09, Pattan, Reshma:
> > > From: Thomas Monjalon [mailto:thomas@monjalon.net]
> > > > 11/01/2019 18:51, Reshma Pattan:
> > > > > Virtual devices added in pdump application using
> > > > > rte_eal_hotplug_add should be removed explicitly while existing
> > > > > the pdump application, otherwise the
> > > >
> > > > existing -> exiting ?
> > > >
> > > > > subsequent run of the pdump application will fail with the reason
> > > > > that virtual devices with the same name already exists in primary.
> > > > >
> > > > > Fixes: 6362f362a2 ("app/pdump: use EAL hotplug instead of ethdev
> > > > > attach")
> > > > > CC: stable@dpdk.org
> > > > > CC: ferruh.yigit@intel.com
> > > >
> > > > Why is it marked as a fix of this commit?
> > > > Is it a miss in the conversion from ethdev attach calls?
> > > > Or a changed behaviour with hotplug functions?
> > >
> > > It is changed behaviour with hotplug functions.
> > 
> > Please, could you explain?
> > 
> 
> Attach calls were replaced with rte_eal_hotplug_remove() in pdump in the commit id given in Fixes line.
> 
> And after this change, the subsequent runs(other than 1st) of pdump application are failing with below error
> 
> 1)Pdump application error:
> 
> EAL: Failed to hotplug add device
> EAL: Error - exiting with code: 1
>   Cause: vdev creation failed:create_mp_ring_vdev:706
> 
> 2)And error on primary application side is below:
> 	testpmd> Ethernet device with name net_pcap_rx_0 already allocated
>                 EAL: Failed to hotplug add device on primary
> 
> So, the dev added in secondary should be removed during its exit by calling rte_eal_hotplug_remove ().
> 
> So,  that is the reason I chose the Fixes: commit as the one where rte_eal_hotplug_add() replaced the attach.
> 
> Earlier with attach calls though not detaching the devices upon application exit, these issues are not seen.

OK
I won't dig to understand why this error was hidden with previous API.
I'll assume there is no need to backport this fix in 17.11.

Patch

diff --git a/app/pdump/main.c b/app/pdump/main.c
index 9e86bf623..5e183ea90 100644
--- a/app/pdump/main.c
+++ b/app/pdump/main.c
@@ -494,6 +494,7 @@  cleanup_pdump_resources(void)
 {
 	int i;
 	struct pdump_tuples *pt;
+	char name[RTE_ETH_NAME_MAX_LEN];
 
 	/* disable pdump and free the pdump_tuple resources */
 	for (i = 0; i < num_tuples; i++) {
@@ -510,6 +511,14 @@  cleanup_pdump_resources(void)
 			free_ring_data(pt->rx_ring, pt->rx_vdev_id, &pt->stats);
 		if (pt->dir & RTE_PDUMP_FLAG_TX)
 			free_ring_data(pt->tx_ring, pt->tx_vdev_id, &pt->stats);
+
+		/* Remove the vdev created */
+		rte_eth_dev_get_name_by_port(pt->rx_vdev_id, name);
+		rte_eal_hotplug_remove("vdev", name);
+
+		rte_eth_dev_get_name_by_port(pt->tx_vdev_id, name);
+		rte_eal_hotplug_remove("vdev", name);
+
 	}
 	cleanup_rings();
 }