Hi, Thomas,23/05/2022 11:51, David Marchand:On Sat, May 21, 2022 at 8:57 AM Min Hu (Connor) <humin29@huawei.com> wrote:From: Huisong Li <lihuisong@huawei.com> The 'state' in struct rte_eth_dev may be used to update some information when app receive these events. For example, when app receives a new event, app may get the socket id of this port by calling rte_eth_dev_socket_id to setup the attached port. The 'state' is used in rte_eth_dev_socket_id. If the state isn't modified to RTE_ETH_DEV_ATTACHED before pushing the new event, app will get the socket id failed. So this patch moves pushing event operation after the state updated. Fixes: 99a2dd955fba ("lib: remove librte_ prefix from directory names")A patch moving code is unlikely to be at fault. Looking at the patch which moved those notifications in this point of the code, the state update was pushed after the notification on purpose. See be8cd210379a ("ethdev: fix port probing notification") ethdev: fix port probing notification The new device was notified as soon as it was allocated. It leads to use a device which is not yet initialized. The notification must be published after the initialization is done by the PMD, but before the state is changed, in order to let notified entities taking ownership before general availability. Do we need an intermediate state during probing?Possibly. Currently we have only 3 states: RTE_ETH_DEV_UNUSED RTE_ETH_DEV_ATTACHED RTE_ETH_DEV_REMOVED We may add RTE_ETH_DEV_ALLOCATED just before calling rte_eth_dev_callback_process(dev, RTE_ETH_EVENT_NEW, NULL); Then we would need to check against RTE_ETH_DEV_ALLOCATED in some ethdev functions.
.