[dpdk-dev] [PATCH 00/11] ethdev: fix race conditions in iterator and notifications

Stephen Hemminger stephen at networkplumber.org
Fri May 11 00:27:58 CEST 2018


On Wed,  9 May 2018 11:43:26 +0200
Thomas Monjalon <thomas at monjalon.net> wrote:

> We have discovered some race conditions when using the port iterator
> and/or the notifications recently added.
> The work was done mostly with failsafe but some bugs could
> be reproduced with other drivers.
> These 11 patches are fixing all these issues.
> The PMDs are modified to call a new function at the end of the probing.
> 
> Matan Azrad (4):
>   ethdev: allow ownership operations on unused port
>   ethdev: add lock to port allocation check
>   net/failsafe: fix sub-device ownership race
>   ethdev: fix port removal notification timing
> 
> Thomas Monjalon (7):
>   ethdev: fix debug log of owner id
>   net/failsafe: fix sub-device visibility
>   ethdev: add doxygen comments for each state
>   drivers/net: use higher level of probing helper for PCI
>   ethdev: add probing finish function
>   ethdev: fix port visibility before initialization
>   ethdev: fix port probing notification
> 
>  drivers/net/af_packet/rte_eth_af_packet.c |  2 +
>  drivers/net/ark/ark_ethdev.c              |  2 +
>  drivers/net/avp/avp_ethdev.c              | 15 +-----
>  drivers/net/bnx2x/bnx2x_ethdev.c          | 20 ++-----
>  drivers/net/bonding/rte_eth_bond_pmd.c    |  2 +
>  drivers/net/cxgbe/cxgbe_ethdev.c          |  1 +
>  drivers/net/cxgbe/cxgbe_main.c            |  5 ++
>  drivers/net/cxgbe/cxgbevf_ethdev.c        |  1 +
>  drivers/net/cxgbe/cxgbevf_main.c          |  5 ++
>  drivers/net/dpaa/dpaa_ethdev.c            |  5 +-
>  drivers/net/dpaa2/dpaa2_ethdev.c          |  4 +-
>  drivers/net/failsafe/failsafe.c           | 24 +++++++--
>  drivers/net/failsafe/failsafe_eal.c       | 59 ++++++++++++--------
>  drivers/net/failsafe/failsafe_ether.c     | 23 ++++++++
>  drivers/net/failsafe/failsafe_private.h   |  4 ++
>  drivers/net/kni/rte_eth_kni.c             |  2 +
>  drivers/net/liquidio/lio_ethdev.c         | 15 +-----
>  drivers/net/mlx4/mlx4.c                   |  1 +
>  drivers/net/mlx5/mlx5.c                   |  2 +
>  drivers/net/mvpp2/mrvl_ethdev.c           |  1 +
>  drivers/net/nfp/nfp_net.c                 |  2 +
>  drivers/net/null/rte_eth_null.c           |  2 +
>  drivers/net/octeontx/octeontx_ethdev.c    |  3 ++
>  drivers/net/pcap/rte_eth_pcap.c           |  2 +
>  drivers/net/ring/rte_eth_ring.c           |  1 +
>  drivers/net/softnic/rte_eth_softnic.c     |  3 ++
>  drivers/net/szedata2/rte_eth_szedata2.c   |  2 +
>  drivers/net/tap/rte_eth_tap.c             |  2 +
>  drivers/net/vhost/rte_eth_vhost.c         |  2 +
>  drivers/net/virtio/virtio_user_ethdev.c   |  3 ++
>  lib/librte_ethdev/rte_ethdev.c            | 89 ++++++++++++++++++++-----------
>  lib/librte_ethdev/rte_ethdev.h            |  6 ++-
>  lib/librte_ethdev/rte_ethdev_driver.h     | 14 +++++
>  lib/librte_ethdev/rte_ethdev_pci.h        |  2 +
>  lib/librte_ethdev/rte_ethdev_version.map  |  1 +
>  test/test/virtual_pmd.c                   |  2 +
>  36 files changed, 230 insertions(+), 99 deletions(-)
> 

This looks like the best way forward for 18.05. Still want to consider generalizing
and enhancing this for 18.11 (and break the ABI of ethdev).

Reviewed-by: Stephen Hemminger <stephen at networkplumber.org>


More information about the dev mailing list