All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ferruh Yigit <ferruh.yigit@intel.com>
To: Matan Azrad <matan@mellanox.com>,
	Thomas Monjalon <thomas@monjalon.net>,
	Gaetan Rivet <gaetan.rivet@6wind.com>,
	Jingjing Wu <jingjing.wu@intel.com>
Cc: "dev@dpdk.org" <dev@dpdk.org>,
	Neil Horman <nhorman@tuxdriver.com>,
	Bruce Richardson <bruce.richardson@intel.com>,
	Konstantin Ananyev <konstantin.ananyev@intel.com>,
	"stable@dpdk.org" <stable@dpdk.org>,
	Olga Shern <olgas@mellanox.com>
Subject: Re: [dpdk-stable] [PATCH v3 1/7] ethdev: fix port data reset timing
Date: Thu, 19 Apr 2018 12:07:37 +0100	[thread overview]
Message-ID: <198ae190-e765-739d-5f1b-bdd416d5b19d@intel.com> (raw)
In-Reply-To: <81bbd03d-3a69-979d-dcb0-553b91952198@intel.com>

On 3/30/2018 11:39 AM, Ferruh Yigit wrote:
> On 3/28/2018 1:07 PM, Matan Azrad wrote:
>> Hi Ferruh
>>
>>> From: Ferruh Yigit, Wednesday, March 28, 2018 1:38 AM
>>> On 3/5/2018 3:12 PM, Matan Azrad wrote:
>>>> Hi Ferruh
>>>>
>>>> From: Ferruh Yigit, Sent: Monday, March 5, 2018 5:07 PM
>>>>> On 3/5/2018 2:52 PM, Matan Azrad wrote:
>>>>>> HI
>>>>>>
>>>>>> From: Ferruh Yigit, Sent: Monday, March 5, 2018 1:24 PM
>>>>>>> On 1/18/2018 4:35 PM, Matan Azrad wrote:
>>>>>>>> rte_eth_dev_data structure is allocated per ethdev port and can be
>>>>>>>> used to get a data of the port internally.
>>>>>>>>
>>>>>>>> rte_eth_dev_attach_secondary tries to find the port identifier
>>>>>>>> using rte_eth_dev_data name field comparison and may get an
>>>>>>>> identifier of invalid port in case of this port was released by
>>>>>>>> the primary process because the port release API doesn't reset the
>>> port data.
>>>>>>>>
>>>>>>>> So, it will be better to reset the port data in release time
>>>>>>>> instead of allocation time.
>>>>>>>>
>>>>>>>> Move the port data reset to the port release API.
>>>>>>>>
>>>>>>>> Fixes: d948f596fee2 ("ethdev: fix port data mismatched in multiple
>>>>>>>> process model")
>>>>>>>> Cc: stable@dpdk.org
>>>>>>>>
>>>>>>>> Signed-off-by: Matan Azrad <matan@mellanox.com>
>>>>>>>> ---
>>>>>>>>  lib/librte_ether/rte_ethdev.c | 2 +-
>>>>>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>>>>
>>>>>>>> diff --git a/lib/librte_ether/rte_ethdev.c
>>>>>>>> b/lib/librte_ether/rte_ethdev.c index 7044159..156231c 100644
>>>>>>>> --- a/lib/librte_ether/rte_ethdev.c
>>>>>>>> +++ b/lib/librte_ether/rte_ethdev.c
>>>>>>>> @@ -204,7 +204,6 @@ struct rte_eth_dev *
>>>>>>>>  		return NULL;
>>>>>>>>  	}
>>>>>>>>
>>>>>>>> -	memset(&rte_eth_dev_data[port_id], 0, sizeof(struct
>>>>>>> rte_eth_dev_data));
>>>>>>>>  	eth_dev = eth_dev_get(port_id);
>>>>>>>>  	snprintf(eth_dev->data->name, sizeof(eth_dev->data->name),
>>>>>>> "%s", name);
>>>>>>>>  	eth_dev->data->port_id = port_id; @@ -252,6 +251,7 @@ struct
>>>>>>>> rte_eth_dev *
>>>>>>>>  	if (eth_dev == NULL)
>>>>>>>>  		return -EINVAL;
>>>>>>>>
>>>>>>>> +	memset(eth_dev->data, 0, sizeof(struct
>>> rte_eth_dev_data));
>>>>>>>
>>>>>>> Hi Matan,
>>>>>>>
>>>>>>> What most of the vdev release path does is:
>>>>>>>
>>>>>>> eth_dev = rte_eth_dev_allocated(...)
>>>>>>> rte_free(eth_dev->data->dev_private);
>>>>>>> rte_free(eth_dev->data);
>>>>>>> rte_eth_dev_release_port(eth_dev);
>>>>>>>
>>>>>>> Since eth_dev->data freed, memset() it in
>>>>>>> rte_eth_dev_release_port() will be problem.
>>>>>>>
>>>>>>> We don't run remove path that is why we didn't hit the issue but
>>>>>>> this seems problem for all virtual PMDs.
>>>>>>
>>>>>> Yes, it is a problem and should be fixed:
>>>>>> For vdevs which use private rte_eth_dev_data the remove order can
>>> be:
>>>>>> 	private_data = eth_dev->data;
>>>>>> 	rte_free(eth_dev->data->dev_private);
>>>>>> 	rte_eth_dev_release_port(eth_dev); /* The last operation working
>>>>> on ethdev structure. */
>>>>>> 	rte_free(private_data);
>>>>>
>>>>> Do we need to save "private_data"?
>>>>
>>>> Just to emphasis that eth_dev structure should not more be available after
>>> rte_eth_dev_release_port().
>>>> Maybe in the future rte_eth_dev_release_port() will zero eth_dev
>>>> structure too :)
>>>
>>> Hi Matan,
>>>
>>> Reminder of this issue, it would be nice to fix in this release.
>>>
>>
>> Regarding the private rte_eth_dev_data, it should be fixed in the next thread:
>> https://dpdk.org/dev/patchwork/patch/35632/
>>
>> Regarding the rte_eth_dev_pci_release() function: I'm going to send a fix.
> 
> Thanks Matan for the patch,
> 
> But rte_eth_dev_release_port() is still broken because of this change, please
> check _rte_eth_dev_callback_process() which uses dev->data->port_id.

Hi Matan,

Any update on this?
As mentioned above rte_eth_dev_release_port() is still broken.

Thanks,
ferruh

> 
>>
>>>>
>>>>>>
>>>>>>
>>>>>>> Also rte_eth_dev_pci_release() looks problematic now.
>>>>>>
>>>>>> Yes, again, the last operation working on ethdev structure should be
>>>>> rte_eth_dev_release_port().
>>>>>>
>>>>>> So need to fix all vdevs and the rte_eth_dev_pci_release() function.
>>>>>>
>>>>>> Any comments?
>>>>>>
>>>>
>>
> 

  reply	other threads:[~2018-04-19 11:07 UTC|newest]

Thread overview: 212+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-28 11:57 [PATCH 0/5] ethdev: Port ownership Matan Azrad
2017-11-28 11:57 ` [PATCH 1/5] ethdev: free a port by a dedicated API Matan Azrad
2017-11-28 11:57 ` [PATCH 2/5] ethdev: add port ownership Matan Azrad
2017-11-30 12:36   ` Neil Horman
2017-11-30 13:24     ` Gaëtan Rivet
2017-11-30 14:30       ` Matan Azrad
2017-11-30 15:09         ` Gaëtan Rivet
2017-11-30 15:43           ` Matan Azrad
2017-12-01 12:09       ` Neil Horman
2017-12-03  8:04         ` Matan Azrad
2017-12-03 11:10           ` Ananyev, Konstantin
2017-12-03 13:46             ` Matan Azrad
2017-12-04 16:01               ` Neil Horman
2017-12-04 18:10                 ` Matan Azrad
2017-12-04 22:30                   ` Neil Horman
2017-12-05  6:08                     ` Matan Azrad
2017-12-05 10:05                       ` Bruce Richardson
2017-12-08 11:35                         ` Thomas Monjalon
2017-12-08 12:31                           ` Neil Horman
2017-12-21 17:06                             ` Thomas Monjalon
2017-12-21 17:43                               ` Neil Horman
2017-12-21 19:37                                 ` Matan Azrad
2017-12-21 20:14                                   ` Neil Horman
2017-12-21 21:57                                     ` Matan Azrad
2017-12-22 14:26                                       ` Neil Horman
2017-12-23 22:36                                         ` Matan Azrad
2017-12-29 16:56                                           ` Neil Horman
2017-12-05 19:26                       ` Neil Horman
2017-12-08 11:06                         ` Thomas Monjalon
2017-12-05 11:12               ` Ananyev, Konstantin
2017-12-05 11:44                 ` Ananyev, Konstantin
2017-12-05 11:53                   ` Thomas Monjalon
2017-12-05 14:56                     ` Bruce Richardson
2017-12-05 14:57                     ` Ananyev, Konstantin
2017-12-05 11:47                 ` Thomas Monjalon
2017-12-05 15:13                   ` Ananyev, Konstantin
2017-12-05 15:49                     ` Thomas Monjalon
2017-11-28 11:57 ` [PATCH 3/5] net/failsafe: free an eth port by a dedicated API Matan Azrad
2017-11-28 11:58 ` [PATCH 4/5] net/failsafe: use ownership mechanism to own ports Matan Azrad
2017-11-28 11:58 ` [PATCH 5/5] app/testpmd: adjust ethdev port ownership Matan Azrad
2018-01-07  9:45 ` [PATCH v2 0/6] ethdev: " Matan Azrad
2018-01-07  9:45   ` [PATCH v2 1/6] ethdev: fix port data reset timing Matan Azrad
2018-01-07  9:45   ` [PATCH v2 2/6] ethdev: add port ownership Matan Azrad
2018-01-10 13:36     ` Ananyev, Konstantin
2018-01-10 16:58       ` Matan Azrad
2018-01-11 12:40         ` Ananyev, Konstantin
2018-01-11 14:51           ` Matan Azrad
2018-01-12  0:02             ` Ananyev, Konstantin
2018-01-12  7:24               ` Matan Azrad
2018-01-15 11:45                 ` Ananyev, Konstantin
2018-01-15 13:09                   ` Matan Azrad
2018-01-15 18:43                     ` Ananyev, Konstantin
2018-01-16  8:04                       ` Matan Azrad
2018-01-16 19:11                         ` Ananyev, Konstantin
2018-01-16 20:32                           ` Matan Azrad
2018-01-17 11:24                             ` Ananyev, Konstantin
2018-01-17 12:05                               ` Matan Azrad
2018-01-17 12:54                                 ` Ananyev, Konstantin
2018-01-17 13:10                                   ` Matan Azrad
2018-01-17 16:52                                     ` Ananyev, Konstantin
2018-01-17 18:02                                       ` Matan Azrad
2018-01-17 20:34                                       ` Matan Azrad
2018-01-18 14:17                                         ` Ananyev, Konstantin
2018-01-18 14:26                                           ` Matan Azrad
2018-01-18 14:41                                             ` Ananyev, Konstantin
2018-01-18 14:45                                               ` Matan Azrad
2018-01-18 14:51                                                 ` Ananyev, Konstantin
2018-01-18 15:00                                                   ` Matan Azrad
2018-01-17 14:00                                 ` Neil Horman
2018-01-17 17:01                                   ` Ananyev, Konstantin
2018-01-18 13:10                                     ` Neil Horman
2018-01-18 14:00                                       ` Matan Azrad
2018-01-18 16:54                                         ` Neil Horman
2018-01-18 17:20                                           ` Matan Azrad
2018-01-18 18:41                                             ` Neil Horman
2018-01-18 20:21                                               ` Matan Azrad
2018-01-19  1:41                                                 ` Neil Horman
2018-01-19  7:14                                                   ` Matan Azrad
2018-01-19  9:30                                                     ` Bruce Richardson
2018-01-19 10:44                                                       ` Matan Azrad
2018-01-19 13:30                                                         ` Neil Horman
2018-01-19 13:57                                                           ` Matan Azrad
2018-01-19 14:13                                                           ` Thomas Monjalon
2018-01-19 15:27                                                             ` Neil Horman
2018-01-19 17:17                                                               ` Thomas Monjalon
2018-01-19 17:43                                                                 ` Neil Horman
2018-01-19 18:12                                                                   ` Thomas Monjalon
2018-01-19 19:47                                                                     ` Neil Horman
2018-01-19 20:19                                                                       ` Thomas Monjalon
2018-01-19 22:52                                                                         ` Neil Horman
2018-01-20  3:38                                                                         ` Tuxdriver
2018-01-20 12:54                                                                       ` Ananyev, Konstantin
2018-01-20 14:02                                                                         ` Thomas Monjalon
2018-01-19 12:55                                                       ` Neil Horman
2018-01-19 13:52                                                     ` Neil Horman
2018-01-18 16:27                                     ` Neil Horman
2018-01-17 17:58                                   ` Matan Azrad
2018-01-18 13:20                                     ` Neil Horman
2018-01-18 14:52                                       ` Matan Azrad
2018-01-19 13:57                                         ` Neil Horman
2018-01-19 14:07                                           ` Thomas Monjalon
2018-01-19 14:32                                             ` Neil Horman
2018-01-19 17:09                                               ` Thomas Monjalon
2018-01-19 17:37                                                 ` Neil Horman
2018-01-19 18:10                                                   ` Thomas Monjalon
2018-01-21 22:12                                                     ` Ferruh Yigit
2018-01-07  9:45   ` [PATCH v2 3/6] ethdev: synchronize port allocation Matan Azrad
2018-01-07  9:58     ` Matan Azrad
2018-01-07  9:45   ` [PATCH v2 4/6] net/failsafe: free an eth port by a dedicated API Matan Azrad
2018-01-07  9:45   ` [PATCH v2 5/6] net/failsafe: use ownership mechanism to own ports Matan Azrad
2018-01-08 10:32     ` Gaëtan Rivet
2018-01-08 11:16       ` Matan Azrad
2018-01-08 11:35         ` Gaëtan Rivet
2018-01-07  9:45   ` [PATCH v2 6/6] app/testpmd: adjust ethdev port ownership Matan Azrad
2018-01-08 11:39     ` Gaëtan Rivet
2018-01-08 12:30       ` Matan Azrad
2018-01-08 13:30         ` Gaëtan Rivet
2018-01-08 13:55           ` Matan Azrad
2018-01-08 14:21             ` Gaëtan Rivet
2018-01-08 14:42               ` Matan Azrad
2018-01-16  5:53     ` Lu, Wenzhuo
2018-01-16  8:15       ` Matan Azrad
2018-01-17  0:46         ` Lu, Wenzhuo
2018-01-17  8:51           ` Matan Azrad
2018-01-18  0:53             ` Lu, Wenzhuo
2018-01-18 16:35   ` [PATCH v3 0/7] Port ownership and syncronization Matan Azrad
2018-01-18 16:35     ` [PATCH v3 1/7] ethdev: fix port data reset timing Matan Azrad
2018-01-18 17:00       ` Thomas Monjalon
2018-01-19 12:38       ` Ananyev, Konstantin
2018-03-05 11:24       ` [dpdk-stable] " Ferruh Yigit
2018-03-05 14:52         ` Matan Azrad
2018-03-05 15:06           ` Ferruh Yigit
2018-03-05 15:12             ` Matan Azrad
2018-03-27 22:37               ` Ferruh Yigit
2018-03-28 12:07                 ` Matan Azrad
2018-03-30 10:39                   ` Ferruh Yigit
2018-04-19 11:07                     ` Ferruh Yigit [this message]
2018-04-25 12:16                       ` Matan Azrad
2018-04-25 12:30                         ` Ori Kam
2018-04-25 12:54                         ` Ferruh Yigit
2018-04-25 14:01                           ` Matan Azrad
2018-01-18 16:35     ` [PATCH v3 2/7] ethdev: fix used portid allocation Matan Azrad
2018-01-18 17:00       ` Thomas Monjalon
2018-01-19 12:40       ` Ananyev, Konstantin
2018-01-20 16:48         ` Matan Azrad
2018-01-20 17:26           ` Ananyev, Konstantin
2018-01-18 16:35     ` [PATCH v3 3/7] ethdev: add port ownership Matan Azrad
2018-01-18 21:11       ` Thomas Monjalon
2018-01-19 12:41       ` Ananyev, Konstantin
2018-01-18 16:35     ` [PATCH v3 4/7] ethdev: synchronize port allocation Matan Azrad
2018-01-18 20:43       ` Thomas Monjalon
2018-01-18 20:52         ` Matan Azrad
2018-01-18 21:17           ` Thomas Monjalon
2018-01-19 12:47       ` Ananyev, Konstantin
2018-01-18 16:35     ` [PATCH v3 5/7] net/failsafe: free an eth port by a dedicated API Matan Azrad
2018-01-18 16:35     ` [PATCH v3 6/7] net/failsafe: use ownership mechanism to own ports Matan Azrad
2018-01-18 16:35     ` [PATCH v3 7/7] app/testpmd: adjust ethdev port ownership Matan Azrad
2018-01-19 12:37       ` Ananyev, Konstantin
2018-01-19 12:51         ` Matan Azrad
2018-01-19 13:08           ` Ananyev, Konstantin
2018-01-19 13:35             ` Matan Azrad
2018-01-19 15:00               ` Gaëtan Rivet
2018-01-20 18:14                 ` Matan Azrad
2018-01-22 10:17                   ` Gaëtan Rivet
2018-01-22 11:22                     ` Matan Azrad
2018-01-22 12:28                 ` Ananyev, Konstantin
2018-01-22 13:22                   ` Matan Azrad
2018-01-22 20:48                     ` Ananyev, Konstantin
2018-01-23  8:54                       ` Matan Azrad
2018-01-23 12:56                         ` Gaëtan Rivet
2018-01-23 14:30                           ` Matan Azrad
2018-01-25  9:36                             ` Matan Azrad
2018-01-25 10:05                               ` Thomas Monjalon
2018-01-25 11:15                                 ` Ananyev, Konstantin
2018-01-25 11:33                                   ` Thomas Monjalon
2018-01-25 11:55                                     ` Ananyev, Konstantin
2018-01-23 13:34                         ` Ananyev, Konstantin
2018-01-23 14:18                           ` Thomas Monjalon
2018-01-23 15:12                             ` Ananyev, Konstantin
2018-01-23 15:18                               ` Ananyev, Konstantin
2018-01-23 17:33                                 ` Thomas Monjalon
2018-01-23 21:18                                   ` Ananyev, Konstantin
2018-01-24  8:10                                     ` Thomas Monjalon
2018-01-24 18:30                                       ` Ananyev, Konstantin
2018-01-25 10:55                                         ` Thomas Monjalon
2018-01-25 11:09                                           ` Ananyev, Konstantin
2018-01-25 11:27                                             ` Thomas Monjalon
2018-01-23 14:43                           ` Matan Azrad
2018-01-20 21:24     ` [PATCH v4 0/7] Port ownership and syncronization Matan Azrad
2018-01-20 21:24       ` [PATCH v4 1/7] ethdev: fix port data reset timing Matan Azrad
2018-01-20 21:24       ` [PATCH v4 2/7] ethdev: fix used portid allocation Matan Azrad
2018-01-20 21:24       ` [PATCH v4 3/7] ethdev: add port ownership Matan Azrad
2018-01-21 20:43         ` Ferruh Yigit
2018-01-21 20:46         ` Ferruh Yigit
2018-01-20 21:24       ` [PATCH v4 4/7] ethdev: synchronize port allocation Matan Azrad
2018-01-20 21:24       ` [PATCH v4 5/7] net/failsafe: free an eth port by a dedicated API Matan Azrad
2018-01-20 21:24       ` [PATCH v4 6/7] net/failsafe: use ownership mechanism to own ports Matan Azrad
2018-01-20 21:24       ` [PATCH v4 7/7] app/testpmd: adjust ethdev port ownership Matan Azrad
2018-01-22 16:38       ` [PATCH v5 0/7] Port ownership and synchronization Matan Azrad
2018-01-22 16:38         ` [PATCH v5 1/7] ethdev: fix port data reset timing Matan Azrad
2018-01-22 16:38         ` [PATCH v5 2/7] ethdev: fix used portid allocation Matan Azrad
2018-01-22 16:38         ` [PATCH v5 3/7] ethdev: add port ownership Matan Azrad
2018-01-22 16:38         ` [PATCH v5 4/7] ethdev: synchronize port allocation Matan Azrad
2018-01-22 16:38         ` [PATCH v5 5/7] net/failsafe: free an eth port by a dedicated API Matan Azrad
2018-01-22 16:38         ` [PATCH v5 6/7] net/failsafe: use ownership mechanism to own ports Matan Azrad
2018-01-22 16:38         ` [PATCH v5 7/7] app/testpmd: adjust ethdev port ownership Matan Azrad
2018-01-25  1:47           ` Lu, Wenzhuo
2018-01-25  8:30             ` Matan Azrad
2018-01-26  0:50               ` Lu, Wenzhuo
2018-01-29 11:21         ` [PATCH v5 0/7] Port ownership and synchronization Matan Azrad
2018-01-31 19:53           ` Thomas Monjalon
2018-01-25 14:35     ` [PATCH v3 0/7] Port ownership and syncronization Ferruh Yigit

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=198ae190-e765-739d-5f1b-bdd416d5b19d@intel.com \
    --to=ferruh.yigit@intel.com \
    --cc=bruce.richardson@intel.com \
    --cc=dev@dpdk.org \
    --cc=gaetan.rivet@6wind.com \
    --cc=jingjing.wu@intel.com \
    --cc=konstantin.ananyev@intel.com \
    --cc=matan@mellanox.com \
    --cc=nhorman@tuxdriver.com \
    --cc=olgas@mellanox.com \
    --cc=stable@dpdk.org \
    --cc=thomas@monjalon.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.