[v3,00/19] remove use of VLAs for Windows

Message ID 1715019531-22796-1-git-send-email-roretzla@linux.microsoft.com (mailing list archive)
Headers
Series remove use of VLAs for Windows |

Message

Tyler Retzlaff May 6, 2024, 6:18 p.m. UTC
As per guidance technical board meeting 2024/04/17. This series
removes the use of VLAs from code built for Windows for all 3
toolchains. If there are additional opportunities to convert VLAs
to regular C arrays please provide the details for incorporation
into the series.

MSVC does not support VLAs, replace VLAs with standard C arrays
or alloca(). alloca() is available for all toolchain/platform
combinations officially supported by DPDK.

v3:
 * address checkpatch/check git log warnings (minor typos)

v2:
 * replace patches for ethdev, hash, rcu and include new
   patches for eal from Konstantin Ananyev
   from https://patchwork.dpdk.org/project/dpdk/list/?series=31781

Konstantin Ananyev (6):
  eal/linux: remove use of VLAs
  eal/common: remove use of VLAs
  ethdev: remove use of VLAs for Windows built code
  hash: remove use of VLAs for Windows built code
  hash/thash: remove use of VLAs for Windows built code
  rcu: remove use of VLAs for Windows built code

Tyler Retzlaff (13):
  eal: include header required for alloca
  gro: remove use of VLAs for Windows built code
  latencystats: remove use of VLAs for Windows built code
  lpm: remove use of VLAs for Windows built code
  app/testpmd: remove use of VLAs for Windows built code
  test: remove use of VLAs for Windows built code
  common/idpf: remove use of VLAs for Windows built code
  net/i40e: remove use of VLAs for Windows built code
  net/ice: remove use of VLAs for Windows built code
  net/ixgbe: remove use of VLAs for Windows built code
  common/mlx5: remove use of VLAs for Windows built code
  net/mlx5: remove use of VLAs for Windows built code
  build: enable vla warnings on Windows built code

 app/test-pmd/cmdline.c                        |   2 +-
 app/test-pmd/cmdline_flow.c                   |   9 +-
 app/test-pmd/config.c                         |  16 ++-
 app/test-pmd/shared_rxq_fwd.c                 |   2 +-
 app/test/test.c                               |   2 +-
 app/test/test_cmdline_string.c                |   2 +-
 app/test/test_cryptodev.c                     |  32 ++---
 app/test/test_cryptodev_blockcipher.c         |   4 +-
 app/test/test_cryptodev_crosscheck.c          |   2 +-
 app/test/test_dmadev.c                        |   9 +-
 app/test/test_hash.c                          |   8 +-
 app/test/test_mempool.c                       |  25 ++--
 app/test/test_reassembly_perf.c               |   4 +-
 app/test/test_reorder.c                       |  48 +++----
 app/test/test_service_cores.c                 |   9 +-
 app/test/test_thash.c                         |   7 +-
 config/meson.build                            |   4 +
 drivers/common/idpf/idpf_common_rxtx.c        |   2 +-
 drivers/common/idpf/idpf_common_rxtx_avx512.c |   6 +-
 drivers/common/mlx5/mlx5_common.h             |   4 +-
 drivers/common/mlx5/mlx5_devx_cmds.c          |   7 +-
 drivers/net/i40e/i40e_testpmd.c               |   5 +-
 drivers/net/ice/ice_rxtx.c                    |   2 +-
 drivers/net/ixgbe/ixgbe_ethdev.c              |   5 +-
 drivers/net/ixgbe/ixgbe_rxtx_vec_common.h     |   2 +-
 drivers/net/mlx5/mlx5.c                       |   5 +-
 drivers/net/mlx5/mlx5_flow.c                  |   6 +-
 lib/eal/common/eal_common_proc.c              |   5 +-
 lib/eal/linux/eal_interrupts.c                |  59 ++++++++-
 lib/eal/linux/include/rte_os.h                |   1 +
 lib/eal/windows/include/rte_os.h              |   1 +
 lib/ethdev/rte_ethdev.c                       | 183 ++++++++++++++++----------
 lib/gro/rte_gro.c                             |   4 +-
 lib/hash/rte_cuckoo_hash.c                    |   4 +-
 lib/hash/rte_thash.c                          |   2 +-
 lib/hash/rte_thash.h                          |   8 ++
 lib/latencystats/rte_latencystats.c           |   2 +-
 lib/lpm/rte_lpm.h                             |   2 +-
 lib/rcu/rte_rcu_qsbr.c                        |   7 +-
 lib/rcu/rte_rcu_qsbr.h                        |   5 +
 40 files changed, 314 insertions(+), 198 deletions(-)
  

Comments

David Marchand July 9, 2024, 8:26 a.m. UTC | #1
Hello guys,

On Mon, May 6, 2024 at 8:19 PM Tyler Retzlaff
<roretzla@linux.microsoft.com> wrote:
>
> As per guidance technical board meeting 2024/04/17. This series
> removes the use of VLAs from code built for Windows for all 3
> toolchains. If there are additional opportunities to convert VLAs
> to regular C arrays please provide the details for incorporation
> into the series.
>
> MSVC does not support VLAs, replace VLAs with standard C arrays
> or alloca(). alloca() is available for all toolchain/platform
> combinations officially supported by DPDK.
>
> v3:
>  * address checkpatch/check git log warnings (minor typos)
>
> v2:
>  * replace patches for ethdev, hash, rcu and include new
>    patches for eal from Konstantin Ananyev
>    from https://patchwork.dpdk.org/project/dpdk/list/?series=31781
>
> Konstantin Ananyev (6):
>   eal/linux: remove use of VLAs
>   eal/common: remove use of VLAs
>   ethdev: remove use of VLAs for Windows built code
>   hash: remove use of VLAs for Windows built code
>   hash/thash: remove use of VLAs for Windows built code
>   rcu: remove use of VLAs for Windows built code
>
> Tyler Retzlaff (13):
>   eal: include header required for alloca
>   gro: remove use of VLAs for Windows built code
>   latencystats: remove use of VLAs for Windows built code
>   lpm: remove use of VLAs for Windows built code
>   app/testpmd: remove use of VLAs for Windows built code
>   test: remove use of VLAs for Windows built code
>   common/idpf: remove use of VLAs for Windows built code
>   net/i40e: remove use of VLAs for Windows built code
>   net/ice: remove use of VLAs for Windows built code
>   net/ixgbe: remove use of VLAs for Windows built code
>   common/mlx5: remove use of VLAs for Windows built code
>   net/mlx5: remove use of VLAs for Windows built code
>   build: enable vla warnings on Windows built code
>
>  app/test-pmd/cmdline.c                        |   2 +-
>  app/test-pmd/cmdline_flow.c                   |   9 +-
>  app/test-pmd/config.c                         |  16 ++-
>  app/test-pmd/shared_rxq_fwd.c                 |   2 +-
>  app/test/test.c                               |   2 +-
>  app/test/test_cmdline_string.c                |   2 +-
>  app/test/test_cryptodev.c                     |  32 ++---
>  app/test/test_cryptodev_blockcipher.c         |   4 +-
>  app/test/test_cryptodev_crosscheck.c          |   2 +-
>  app/test/test_dmadev.c                        |   9 +-
>  app/test/test_hash.c                          |   8 +-
>  app/test/test_mempool.c                       |  25 ++--
>  app/test/test_reassembly_perf.c               |   4 +-
>  app/test/test_reorder.c                       |  48 +++----
>  app/test/test_service_cores.c                 |   9 +-
>  app/test/test_thash.c                         |   7 +-
>  config/meson.build                            |   4 +
>  drivers/common/idpf/idpf_common_rxtx.c        |   2 +-
>  drivers/common/idpf/idpf_common_rxtx_avx512.c |   6 +-
>  drivers/common/mlx5/mlx5_common.h             |   4 +-
>  drivers/common/mlx5/mlx5_devx_cmds.c          |   7 +-
>  drivers/net/i40e/i40e_testpmd.c               |   5 +-
>  drivers/net/ice/ice_rxtx.c                    |   2 +-
>  drivers/net/ixgbe/ixgbe_ethdev.c              |   5 +-
>  drivers/net/ixgbe/ixgbe_rxtx_vec_common.h     |   2 +-
>  drivers/net/mlx5/mlx5.c                       |   5 +-
>  drivers/net/mlx5/mlx5_flow.c                  |   6 +-
>  lib/eal/common/eal_common_proc.c              |   5 +-
>  lib/eal/linux/eal_interrupts.c                |  59 ++++++++-
>  lib/eal/linux/include/rte_os.h                |   1 +
>  lib/eal/windows/include/rte_os.h              |   1 +
>  lib/ethdev/rte_ethdev.c                       | 183 ++++++++++++++++----------
>  lib/gro/rte_gro.c                             |   4 +-
>  lib/hash/rte_cuckoo_hash.c                    |   4 +-
>  lib/hash/rte_thash.c                          |   2 +-
>  lib/hash/rte_thash.h                          |   8 ++
>  lib/latencystats/rte_latencystats.c           |   2 +-
>  lib/lpm/rte_lpm.h                             |   2 +-
>  lib/rcu/rte_rcu_qsbr.c                        |   7 +-
>  lib/rcu/rte_rcu_qsbr.h                        |   5 +
>  40 files changed, 314 insertions(+), 198 deletions(-)

I see discussions on patches for some net drivers and the gro library.
Can you please sync and summarize which patches goes though next-net,
though main etc..?

In any case, I think this cleanup can wait 24.11.

For now, I merged Stephen alternatives for lpm and latencystats as the
patches looked clean and were acked.

Thanks.