From c289235808a1661d7255acf888247d56f2f7d143 Mon Sep 17 00:00:00 2001 From: Thomas Monjalon Date: Sat, 29 Nov 2025 12:08:31 +0100 Subject: [PATCH 01/16] doc: update flow engine availability in mlx5 guide Starting with NVIDIA ConnectX-9, the future devices will support only hardware steering (HWS) flow engine. The software steering options (legacy Verbs and Direct Verbs) have lower performances, and won't be available for new devices. Both flow APIs (sync and async template) will still be supported with the hardware steering flow engine. Fixes: 1b55eeb7b76f ("common/mlx5: add ConnectX-9 SuperNIC") Signed-off-by: Thomas Monjalon --- doc/guides/nics/mlx5.rst | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/doc/guides/nics/mlx5.rst b/doc/guides/nics/mlx5.rst index 8481cc974aa..904a0ac3584 100644 --- a/doc/guides/nics/mlx5.rst +++ b/doc/guides/nics/mlx5.rst @@ -689,9 +689,11 @@ for an additional list of options shared with other mlx5 drivers. - ``dv_flow_en`` parameter [int] Value 0 means legacy Verbs flow offloading. + It is available for devices older than ConnectX-9. - Value 1 enables the DV flow steering assuming it is supported by the - driver (requires rdma-core 24 or higher). + Value 1 enables the Direct Verbs flow steering. + It is available for devices older than ConnectX-9, + and requires rdma-core 24 or later. Value 2 enables the WQE based hardware steering. In this mode, only queue-based flow management is supported. @@ -1338,7 +1340,8 @@ Hardware Steering ~~~~~~~~~~~~~~~~~ Faster than software steering (SWS), -hardware steering (HWS) is the only mode supporting the flow template async API. +hardware steering (HWS) is the only mode supporting the flow template async API, +and the only mode supported on device ConnectX-9 and later. Flow rules are managed by the hardware, with a WQE-based high scaling and safer flow insertion/destruction. From cc470177d1030114aef91227d72915f82389fc97 Mon Sep 17 00:00:00 2001 From: Thomas Monjalon Date: Wed, 19 Nov 2025 11:54:27 +0100 Subject: [PATCH 02/16] end files with a single line break The tool ripgrep allows to find files not ending with a line break: rg -Ul '[^\n]\z' The files with a trailing blank lines are shown with this command: rg -Ul '\n\n\z' Files are fixed to end with a single line break. Signed-off-by: Thomas Monjalon --- app/test-bbdev/test_vectors/bbdev_null.data | 2 +- ...rbo_dec_c1_k6144_r0_e10376_crc24b_sbd_negllr_high_snr.data | 2 +- ...urbo_dec_c1_k6144_r0_e10376_crc24b_sbd_negllr_low_snr.data | 2 +- .../test_vectors/turbo_dec_c1_k6144_r0_e34560_sbd_posllr.data | 2 +- .../turbo_dec_c2_k3136_r0_e4920_sbd_negllr_crc24b.data | 2 +- .../test_vectors/turbo_enc_c1_k6144_r0_e18448_crc24a.data | 2 +- .../test_vectors/turbo_enc_c3_k4800_r2_e14412_crc24b.data | 2 +- doc/guides/contributing/img/abi_stability_policy.svg | 2 +- doc/guides/contributing/img/what_is_an_abi.svg | 2 +- doc/guides/howto/img/flow_bifurcation_overview.svg | 3 ++- doc/guides/howto/img/virtio_user_for_container_networking.svg | 3 ++- doc/guides/nics/cxgbe.rst | 1 - doc/guides/nics/ipn3ke.rst | 4 ---- doc/guides/prog_guide/img/bond-mode-0.svg | 3 ++- doc/guides/prog_guide/img/bond-mode-1.svg | 3 ++- doc/guides/prog_guide/img/bond-mode-2.svg | 3 ++- doc/guides/prog_guide/img/bond-mode-3.svg | 3 ++- doc/guides/prog_guide/img/bond-mode-4.svg | 3 ++- doc/guides/prog_guide/img/bond-mode-5.svg | 3 ++- doc/guides/prog_guide/img/lcore_var_mem_layout.svg | 2 +- doc/guides/prog_guide/img/pdcp_functional_overview.svg | 2 +- doc/guides/prog_guide/img/predictable_snat_1.svg | 2 +- doc/guides/prog_guide/img/predictable_snat_2.svg | 2 +- doc/guides/prog_guide/img/rss_queue_assign.svg | 2 +- doc/guides/prog_guide/img/static_array_mem_layout.svg | 2 +- doc/guides/sample_app_ug/img/overlay_networking.svg | 3 ++- drivers/event/dlb2/dlb2_iface.c | 1 - drivers/net/bnxt/tf_core/tf_em_common.c | 1 - .../net/bnxt/tf_ulp/generic_templates/ulp_template_db_act.c | 1 - .../net/bnxt/tf_ulp/generic_templates/ulp_template_db_class.c | 1 - .../net/bnxt/tf_ulp/generic_templates/ulp_template_db_defs.h | 1 - .../net/bnxt/tf_ulp/generic_templates/ulp_template_db_tbl.c | 1 - .../tf_ulp/generic_templates/ulp_template_db_thor2_class.c | 1 - .../tf_ulp/generic_templates/ulp_template_db_thor_class.c | 1 - .../tf_ulp/generic_templates/ulp_template_db_wh_plus_class.c | 1 - drivers/net/gve/base/gve_adminq.c | 1 - drivers/net/gve/gve_rss.c | 1 - drivers/net/gve/gve_rss.h | 1 - drivers/net/hinic/base/hinic_pmd_mbox.c | 1 - drivers/net/hinic/base/hinic_pmd_niccfg.c | 2 -- drivers/net/hinic/base/meson.build | 1 - drivers/net/intel/e1000/base/e1000_82575.c | 1 - drivers/net/intel/e1000/base/e1000_mbx.c | 1 - drivers/net/intel/e1000/base/e1000_vf.c | 1 - drivers/net/intel/i40e/base/i40e_adminq.c | 1 - drivers/net/intel/ice/base/ice_flex_pipe.c | 1 - drivers/net/intel/ice/base/ice_hw_autogen.h | 1 - drivers/net/intel/ixgbe/base/ixgbe_dcb_82599.c | 1 - drivers/net/intel/ixgbe/base/ixgbe_x540.h | 1 - drivers/net/mlx5/hws/mlx5dr_buddy.c | 1 - drivers/net/nfp/nfp_ipsec.c | 1 - drivers/net/nfp/nfpcore/nfp_elf.c | 1 - drivers/net/ngbe/base/ngbe_dummy.h | 1 - drivers/net/ngbe/base/ngbe_phy.c | 1 - drivers/net/octeontx/base/octeontx_bgx.h | 1 - drivers/net/txgbe/base/txgbe_dcb.c | 1 - drivers/net/txgbe/base/txgbe_dcb_hw.c | 1 - drivers/net/txgbe/base/txgbe_dummy.h | 1 - drivers/net/txgbe/base/txgbe_eeprom.c | 1 - drivers/net/virtio/virtio_cvq.c | 1 - drivers/raw/cnxk_rvu_lf/cnxk_rvu_lf_selftest.c | 2 -- drivers/vdpa/mlx5/mlx5_vdpa_event.c | 1 - dts/configurations/tests_config.example.yaml | 2 +- license/Linux-syscall-note | 1 - 64 files changed, 34 insertions(+), 69 deletions(-) diff --git a/app/test-bbdev/test_vectors/bbdev_null.data b/app/test-bbdev/test_vectors/bbdev_null.data index c9a9abe9ea5..8bce1960f21 100644 --- a/app/test-bbdev/test_vectors/bbdev_null.data +++ b/app/test-bbdev/test_vectors/bbdev_null.data @@ -2,4 +2,4 @@ # Copyright(c) 2017 Intel Corporation op_type = -RTE_BBDEV_OP_NONE \ No newline at end of file +RTE_BBDEV_OP_NONE diff --git a/app/test-bbdev/test_vectors/turbo_dec_c1_k6144_r0_e10376_crc24b_sbd_negllr_high_snr.data b/app/test-bbdev/test_vectors/turbo_dec_c1_k6144_r0_e10376_crc24b_sbd_negllr_high_snr.data index 635078ab27e..25dedb757cd 100644 --- a/app/test-bbdev/test_vectors/turbo_dec_c1_k6144_r0_e10376_crc24b_sbd_negllr_high_snr.data +++ b/app/test-bbdev/test_vectors/turbo_dec_c1_k6144_r0_e10376_crc24b_sbd_negllr_high_snr.data @@ -637,4 +637,4 @@ RTE_BBDEV_TURBO_SUBBLOCK_DEINTERLEAVE, RTE_BBDEV_TURBO_CRC_TYPE_24B, RTE_BBDEV_TURBO_NEG_LLR_1_BIT_IN expected_status = -OK \ No newline at end of file +OK diff --git a/app/test-bbdev/test_vectors/turbo_dec_c1_k6144_r0_e10376_crc24b_sbd_negllr_low_snr.data b/app/test-bbdev/test_vectors/turbo_dec_c1_k6144_r0_e10376_crc24b_sbd_negllr_low_snr.data index de6136bd1be..474d34224dc 100644 --- a/app/test-bbdev/test_vectors/turbo_dec_c1_k6144_r0_e10376_crc24b_sbd_negllr_low_snr.data +++ b/app/test-bbdev/test_vectors/turbo_dec_c1_k6144_r0_e10376_crc24b_sbd_negllr_low_snr.data @@ -637,4 +637,4 @@ RTE_BBDEV_TURBO_SUBBLOCK_DEINTERLEAVE, RTE_BBDEV_TURBO_CRC_TYPE_24B, RTE_BBDEV_TURBO_NEG_LLR_1_BIT_IN expected_status = -OK \ No newline at end of file +OK diff --git a/app/test-bbdev/test_vectors/turbo_dec_c1_k6144_r0_e34560_sbd_posllr.data b/app/test-bbdev/test_vectors/turbo_dec_c1_k6144_r0_e34560_sbd_posllr.data index b6a73c6c07e..81c27a34ecf 100644 --- a/app/test-bbdev/test_vectors/turbo_dec_c1_k6144_r0_e34560_sbd_posllr.data +++ b/app/test-bbdev/test_vectors/turbo_dec_c1_k6144_r0_e34560_sbd_posllr.data @@ -1219,4 +1219,4 @@ RTE_BBDEV_TURBO_SOFT_OUTPUT, RTE_BBDEV_TURBO_SUBBLOCK_DEINTERLEAVE, RTE_BBDEV_TU RTE_BBDEV_TURBO_NEG_LLR_1_BIT_SOFT_OUT expected_status = -OK \ No newline at end of file +OK diff --git a/app/test-bbdev/test_vectors/turbo_dec_c2_k3136_r0_e4920_sbd_negllr_crc24b.data b/app/test-bbdev/test_vectors/turbo_dec_c2_k3136_r0_e4920_sbd_negllr_crc24b.data index 9d17b86c43b..a81087db768 100644 --- a/app/test-bbdev/test_vectors/turbo_dec_c2_k3136_r0_e4920_sbd_negllr_crc24b.data +++ b/app/test-bbdev/test_vectors/turbo_dec_c2_k3136_r0_e4920_sbd_negllr_crc24b.data @@ -674,4 +674,4 @@ RTE_BBDEV_TURBO_SUBBLOCK_DEINTERLEAVE, RTE_BBDEV_TURBO_NEG_LLR_1_BIT_IN, RTE_BBDEV_TURBO_CRC_TYPE_24B, RTE_BBDEV_TURBO_DEC_TB_CRC_24B_KEEP expected_status = -OK \ No newline at end of file +OK diff --git a/app/test-bbdev/test_vectors/turbo_enc_c1_k6144_r0_e18448_crc24a.data b/app/test-bbdev/test_vectors/turbo_enc_c1_k6144_r0_e18448_crc24a.data index 345d1410f3e..8168c03a8e3 100644 --- a/app/test-bbdev/test_vectors/turbo_enc_c1_k6144_r0_e18448_crc24a.data +++ b/app/test-bbdev/test_vectors/turbo_enc_c1_k6144_r0_e18448_crc24a.data @@ -156,4 +156,4 @@ op_flags = RTE_BBDEV_TURBO_CRC_24A_ATTACH expected_status = -OK \ No newline at end of file +OK diff --git a/app/test-bbdev/test_vectors/turbo_enc_c3_k4800_r2_e14412_crc24b.data b/app/test-bbdev/test_vectors/turbo_enc_c3_k4800_r2_e14412_crc24b.data index 9e17429d3ed..1b97bcac1d9 100644 --- a/app/test-bbdev/test_vectors/turbo_enc_c3_k4800_r2_e14412_crc24b.data +++ b/app/test-bbdev/test_vectors/turbo_enc_c3_k4800_r2_e14412_crc24b.data @@ -150,4 +150,4 @@ op_flags = RTE_BBDEV_TURBO_CRC_24B_ATTACH expected_status = -OK \ No newline at end of file +OK diff --git a/doc/guides/contributing/img/abi_stability_policy.svg b/doc/guides/contributing/img/abi_stability_policy.svg index 4fd40073108..f87035dbb86 100644 --- a/doc/guides/contributing/img/abi_stability_policy.svg +++ b/doc/guides/contributing/img/abi_stability_policy.svg @@ -1056,4 +1056,4 @@ inkscape:connector-curvature="0" id="path7796" stroke-miterlimit="10" - d="M 763.41881,62.078444 H 1236.847 V 0.63998401 H 763.41881 Z" /> \ No newline at end of file + d="M 763.41881,62.078444 H 1236.847 V 0.63998401 H 763.41881 Z" /> diff --git a/doc/guides/contributing/img/what_is_an_abi.svg b/doc/guides/contributing/img/what_is_an_abi.svg index fd3d993eb60..d34be746555 100644 --- a/doc/guides/contributing/img/what_is_an_abi.svg +++ b/doc/guides/contributing/img/what_is_an_abi.svg @@ -379,4 +379,4 @@ inkscape:connector-curvature="0" id="path8395" stroke-miterlimit="10" - d="m 372.63068,389.43026 c 13.293,0 24.0794,-1.79995 24.0794,-4.01323 v -91.53105 c 0,-2.21327 10.78639,-4.01323 24.0794,-4.01323 -13.29301,0 -24.0794,-1.79995 -24.0794,-4.01323 v -65.3717 c 0,-2.21328 -10.7864,-4.01323 -24.0794,-4.01323" /> \ No newline at end of file + d="m 372.63068,389.43026 c 13.293,0 24.0794,-1.79995 24.0794,-4.01323 v -91.53105 c 0,-2.21327 10.78639,-4.01323 24.0794,-4.01323 -13.29301,0 -24.0794,-1.79995 -24.0794,-4.01323 v -65.3717 c 0,-2.21328 -10.7864,-4.01323 -24.0794,-4.01323" /> diff --git a/doc/guides/howto/img/flow_bifurcation_overview.svg b/doc/guides/howto/img/flow_bifurcation_overview.svg index 4fa27648d29..552b5b0d502 100644 --- a/doc/guides/howto/img/flow_bifurcation_overview.svg +++ b/doc/guides/howto/img/flow_bifurcation_overview.svg @@ -541,4 +541,5 @@ width="94.5" height="6.75" class="st27" - id="rect236" /> \ No newline at end of file + id="rect236" /> + diff --git a/doc/guides/howto/img/virtio_user_for_container_networking.svg b/doc/guides/howto/img/virtio_user_for_container_networking.svg index dc9b318e7eb..ba9c907b04f 100644 --- a/doc/guides/howto/img/virtio_user_for_container_networking.svg +++ b/doc/guides/howto/img/virtio_user_for_container_networking.svg @@ -682,4 +682,5 @@ v:horizAlign="1" />adapter - \ No newline at end of file + + diff --git a/doc/guides/nics/cxgbe.rst b/doc/guides/nics/cxgbe.rst index 487190ff60e..86deb779ca9 100644 --- a/doc/guides/nics/cxgbe.rst +++ b/doc/guides/nics/cxgbe.rst @@ -886,4 +886,3 @@ port. For this reason, one cannot allow/block a single port without allowing/blocking the other ports on the same device. - diff --git a/doc/guides/nics/ipn3ke.rst b/doc/guides/nics/ipn3ke.rst index 82a04891782..410da3b4a97 100644 --- a/doc/guides/nics/ipn3ke.rst +++ b/doc/guides/nics/ipn3ke.rst @@ -88,7 +88,3 @@ To start ``testpmd``, and add I40e PF to FPGA network port, enable FPGA HQoS and .. code-block:: console .//app/dpdk-testpmd -l 0-15 --vdev 'ifpga_rawdev_cfg0,ifpga=b3:00.0,port=0' --vdev 'ipn3ke_cfg0,afu=0|b3:00.0,fpga_acc={tm|flow},i40e_pf={0000:b1:00.0|0000:b1:00.1|0000:b1:00.2|0000:b1:00.3|0000:b5:00.0|0000:b5:00.1|0000:b5:00.2|0000:b5:00.3}' -- -i --no-numa --forward-mode=macswap - -Limitations or Known issues ---------------------------- - diff --git a/doc/guides/prog_guide/img/bond-mode-0.svg b/doc/guides/prog_guide/img/bond-mode-0.svg index ae0af226881..09aff2a6448 100644 --- a/doc/guides/prog_guide/img/bond-mode-0.svg +++ b/doc/guides/prog_guide/img/bond-mode-0.svg @@ -637,4 +637,5 @@ class="st4" id="text3648" style="fill:#feffff;font-family:Calibri">5 - \ No newline at end of file + + diff --git a/doc/guides/prog_guide/img/bond-mode-1.svg b/doc/guides/prog_guide/img/bond-mode-1.svg index 4aac7bd5df1..6646af054b7 100644 --- a/doc/guides/prog_guide/img/bond-mode-1.svg +++ b/doc/guides/prog_guide/img/bond-mode-1.svg @@ -723,4 +723,5 @@ id="text4192" style="fill:#feffff;font-family:Calibri">3 - \ No newline at end of file + + diff --git a/doc/guides/prog_guide/img/bond-mode-2.svg b/doc/guides/prog_guide/img/bond-mode-2.svg index b13d888924f..afbca89a161 100644 --- a/doc/guides/prog_guide/img/bond-mode-2.svg +++ b/doc/guides/prog_guide/img/bond-mode-2.svg @@ -701,4 +701,5 @@ class="st4" id="text5721" style="fill:#feffff;font-family:Calibri">5 - \ No newline at end of file + + diff --git a/doc/guides/prog_guide/img/bond-mode-3.svg b/doc/guides/prog_guide/img/bond-mode-3.svg index ad942e91f0d..8d65238b783 100644 --- a/doc/guides/prog_guide/img/bond-mode-3.svg +++ b/doc/guides/prog_guide/img/bond-mode-3.svg @@ -701,4 +701,5 @@ class="st4" id="text6005" style="fill:#feffff;font-family:Calibri">3 - \ No newline at end of file + + diff --git a/doc/guides/prog_guide/img/bond-mode-4.svg b/doc/guides/prog_guide/img/bond-mode-4.svg index 028e4b0f6bb..887252b267e 100644 --- a/doc/guides/prog_guide/img/bond-mode-4.svg +++ b/doc/guides/prog_guide/img/bond-mode-4.svg @@ -783,4 +783,5 @@ class="st4" id="text6313" style="fill:#feffff;font-family:Calibri">O - \ No newline at end of file + + diff --git a/doc/guides/prog_guide/img/bond-mode-5.svg b/doc/guides/prog_guide/img/bond-mode-5.svg index a5488abf35f..fec337c77a6 100644 --- a/doc/guides/prog_guide/img/bond-mode-5.svg +++ b/doc/guides/prog_guide/img/bond-mode-5.svg @@ -641,4 +641,5 @@ class="st16" id="text6564" style="fill:#feffff;font-family:Calibri">12003 - \ No newline at end of file + + diff --git a/doc/guides/prog_guide/img/lcore_var_mem_layout.svg b/doc/guides/prog_guide/img/lcore_var_mem_layout.svg index c4b286316c2..f87438c3286 100644 --- a/doc/guides/prog_guide/img/lcore_var_mem_layout.svg +++ b/doc/guides/prog_guide/img/lcore_var_mem_layout.svg @@ -307,4 +307,4 @@ - \ No newline at end of file + diff --git a/doc/guides/prog_guide/img/pdcp_functional_overview.svg b/doc/guides/prog_guide/img/pdcp_functional_overview.svg index 287daafc212..fb6974ef076 100644 --- a/doc/guides/prog_guide/img/pdcp_functional_overview.svg +++ b/doc/guides/prog_guide/img/pdcp_functional_overview.svg @@ -1 +1 @@ -Radio Interface (Uu/PC5)UE/NG-RAN/UE ANG-RAN/UE/UE BTransmitting PDCP entityReceiving PDCP entityTransmission buffer:SequencenumberingHeader or uplink dataCompressionHeader or uplink dataDecompressionRouting / DuplicationAdd PDCP headerCipheringIntegrity protectionPackets associated to a PDCP SDUPackets not associated to a PDCP SDURemove PDCP HeaderDecipheringIntegrity VerificationReception buffer:ReorderingDuplicate discardingPackets associated to a PDCP SDUPackets not associated to a PDCP SDU \ No newline at end of file +Radio Interface (Uu/PC5)UE/NG-RAN/UE ANG-RAN/UE/UE BTransmitting PDCP entityReceiving PDCP entityTransmission buffer:SequencenumberingHeader or uplink dataCompressionHeader or uplink dataDecompressionRouting / DuplicationAdd PDCP headerCipheringIntegrity protectionPackets associated to a PDCP SDUPackets not associated to a PDCP SDURemove PDCP HeaderDecipheringIntegrity VerificationReception buffer:ReorderingDuplicate discardingPackets associated to a PDCP SDUPackets not associated to a PDCP SDU diff --git a/doc/guides/prog_guide/img/predictable_snat_1.svg b/doc/guides/prog_guide/img/predictable_snat_1.svg index 5f97ccb71d4..ac8eca34409 100644 --- a/doc/guides/prog_guide/img/predictable_snat_1.svg +++ b/doc/guides/prog_guide/img/predictable_snat_1.svg @@ -1441,4 +1441,4 @@ style="font-size:12.00012016px">Packet assigned to queue 14 - \ No newline at end of file + diff --git a/doc/guides/prog_guide/img/predictable_snat_2.svg b/doc/guides/prog_guide/img/predictable_snat_2.svg index 85254590e1b..37eb91b8107 100644 --- a/doc/guides/prog_guide/img/predictable_snat_2.svg +++ b/doc/guides/prog_guide/img/predictable_snat_2.svg @@ -1441,4 +1441,4 @@ style="font-size:12.00012016px">Packet assigned to queue 15 - \ No newline at end of file + diff --git a/doc/guides/prog_guide/img/rss_queue_assign.svg b/doc/guides/prog_guide/img/rss_queue_assign.svg index d0eef8ccbd5..10f751757bb 100644 --- a/doc/guides/prog_guide/img/rss_queue_assign.svg +++ b/doc/guides/prog_guide/img/rss_queue_assign.svg @@ -1451,4 +1451,4 @@ style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> - \ No newline at end of file + diff --git a/doc/guides/prog_guide/img/static_array_mem_layout.svg b/doc/guides/prog_guide/img/static_array_mem_layout.svg index 87aa5b26f55..5428119cf9e 100644 --- a/doc/guides/prog_guide/img/static_array_mem_layout.svg +++ b/doc/guides/prog_guide/img/static_array_mem_layout.svg @@ -275,4 +275,4 @@ - \ No newline at end of file + diff --git a/doc/guides/sample_app_ug/img/overlay_networking.svg b/doc/guides/sample_app_ug/img/overlay_networking.svg index caf1c264e51..a06a33a197f 100644 --- a/doc/guides/sample_app_ug/img/overlay_networking.svg +++ b/doc/guides/sample_app_ug/img/overlay_networking.svg @@ -1844,4 +1844,5 @@ id="text494" style="font-size:9px;font-family:Calibri;fill:#000000">TEP - \ No newline at end of file + + diff --git a/drivers/event/dlb2/dlb2_iface.c b/drivers/event/dlb2/dlb2_iface.c index 3caa827d31a..f7dd9dbfc5c 100644 --- a/drivers/event/dlb2/dlb2_iface.c +++ b/drivers/event/dlb2/dlb2_iface.c @@ -81,4 +81,3 @@ int (*dlb2_iface_set_cq_inflight_ctrl)(struct dlb2_hw_dev *handle, int (*dlb2_iface_set_cos_bw)(struct dlb2_hw_dev *handle, struct dlb2_set_cos_bw_args *args); - diff --git a/drivers/net/bnxt/tf_core/tf_em_common.c b/drivers/net/bnxt/tf_core/tf_em_common.c index 2449759db03..f9100e01fad 100644 --- a/drivers/net/bnxt/tf_core/tf_em_common.c +++ b/drivers/net/bnxt/tf_core/tf_em_common.c @@ -20,4 +20,3 @@ #include "tf_ext_flow_handle.h" #include "hcapi_cfa.h" #include "bnxt.h" - diff --git a/drivers/net/bnxt/tf_ulp/generic_templates/ulp_template_db_act.c b/drivers/net/bnxt/tf_ulp/generic_templates/ulp_template_db_act.c index a537cbb84af..091c8074ce8 100644 --- a/drivers/net/bnxt/tf_ulp/generic_templates/ulp_template_db_act.c +++ b/drivers/net/bnxt/tf_ulp/generic_templates/ulp_template_db_act.c @@ -261,4 +261,3 @@ struct bnxt_ulp_act_match_info ulp_act_match_list[] = { .act_tid = 12 } }; - diff --git a/drivers/net/bnxt/tf_ulp/generic_templates/ulp_template_db_class.c b/drivers/net/bnxt/tf_ulp/generic_templates/ulp_template_db_class.c index 619678f9cfa..e689b7b8f41 100644 --- a/drivers/net/bnxt/tf_ulp/generic_templates/ulp_template_db_class.c +++ b/drivers/net/bnxt/tf_ulp/generic_templates/ulp_template_db_class.c @@ -8362,4 +8362,3 @@ struct bnxt_ulp_class_match_info ulp_class_match_list[] = { }, } }; - diff --git a/drivers/net/bnxt/tf_ulp/generic_templates/ulp_template_db_defs.h b/drivers/net/bnxt/tf_ulp/generic_templates/ulp_template_db_defs.h index 14974e466a3..bb4e1fd16ec 100644 --- a/drivers/net/bnxt/tf_ulp/generic_templates/ulp_template_db_defs.h +++ b/drivers/net/bnxt/tf_ulp/generic_templates/ulp_template_db_defs.h @@ -85,4 +85,3 @@ enum bnxt_ulp_template_id { }; #endif - diff --git a/drivers/net/bnxt/tf_ulp/generic_templates/ulp_template_db_tbl.c b/drivers/net/bnxt/tf_ulp/generic_templates/ulp_template_db_tbl.c index a9be50a9dbc..85d718318db 100644 --- a/drivers/net/bnxt/tf_ulp/generic_templates/ulp_template_db_tbl.c +++ b/drivers/net/bnxt/tf_ulp/generic_templates/ulp_template_db_tbl.c @@ -4065,4 +4065,3 @@ uint32_t ulp_act_prop_map_table[] = { [BNXT_ULP_ACT_PROP_IDX_LAST] = BNXT_ULP_ACT_PROP_SZ_LAST }; - diff --git a/drivers/net/bnxt/tf_ulp/generic_templates/ulp_template_db_thor2_class.c b/drivers/net/bnxt/tf_ulp/generic_templates/ulp_template_db_thor2_class.c index 83935350b70..da6752c98aa 100644 --- a/drivers/net/bnxt/tf_ulp/generic_templates/ulp_template_db_thor2_class.c +++ b/drivers/net/bnxt/tf_ulp/generic_templates/ulp_template_db_thor2_class.c @@ -68548,4 +68548,3 @@ struct bnxt_ulp_mapper_ident_info ulp_thor2_class_ident_list[] = { .ident_bit_pos = 64 } }; - diff --git a/drivers/net/bnxt/tf_ulp/generic_templates/ulp_template_db_thor_class.c b/drivers/net/bnxt/tf_ulp/generic_templates/ulp_template_db_thor_class.c index d523e5c2406..2bbe93223c0 100644 --- a/drivers/net/bnxt/tf_ulp/generic_templates/ulp_template_db_thor_class.c +++ b/drivers/net/bnxt/tf_ulp/generic_templates/ulp_template_db_thor_class.c @@ -69581,4 +69581,3 @@ struct bnxt_ulp_mapper_ident_info ulp_thor_class_ident_list[] = { .ident_bit_pos = 62 } }; - diff --git a/drivers/net/bnxt/tf_ulp/generic_templates/ulp_template_db_wh_plus_class.c b/drivers/net/bnxt/tf_ulp/generic_templates/ulp_template_db_wh_plus_class.c index 36b08faa714..f47a4297542 100644 --- a/drivers/net/bnxt/tf_ulp/generic_templates/ulp_template_db_wh_plus_class.c +++ b/drivers/net/bnxt/tf_ulp/generic_templates/ulp_template_db_wh_plus_class.c @@ -18776,4 +18776,3 @@ struct bnxt_ulp_mapper_ident_info ulp_wh_plus_class_ident_list[] = { .ident_bit_pos = 0 } }; - diff --git a/drivers/net/gve/base/gve_adminq.c b/drivers/net/gve/base/gve_adminq.c index 5d3270106cd..bc1759f0069 100644 --- a/drivers/net/gve/base/gve_adminq.c +++ b/drivers/net/gve/base/gve_adminq.c @@ -1080,4 +1080,3 @@ int gve_adminq_configure_rss(struct gve_priv *priv, gve_free_dma_mem(&rss_key_dma_mem); return err; } - diff --git a/drivers/net/gve/gve_rss.c b/drivers/net/gve/gve_rss.c index 931180f8f25..67b910ed22e 100644 --- a/drivers/net/gve/gve_rss.c +++ b/drivers/net/gve/gve_rss.c @@ -203,4 +203,3 @@ gve_to_rte_rss_hf(uint16_t gve_rss_types, struct rte_eth_rss_conf *rss_conf) if (gve_rss_types & GVE_RSS_HASH_UDPV6_EX) rss_conf->rss_hf |= RTE_ETH_RSS_IPV6_UDP_EX; } - diff --git a/drivers/net/gve/gve_rss.h b/drivers/net/gve/gve_rss.h index 0cc235a19a2..64ac0514b98 100644 --- a/drivers/net/gve/gve_rss.h +++ b/drivers/net/gve/gve_rss.h @@ -104,4 +104,3 @@ rte_to_gve_rss_hf(uint64_t rte_rss_hf, struct gve_rss_config *gve_rss_conf); */ void gve_to_rte_rss_hf(uint16_t gve_rss_types, struct rte_eth_rss_conf *rss_conf); - diff --git a/drivers/net/hinic/base/hinic_pmd_mbox.c b/drivers/net/hinic/base/hinic_pmd_mbox.c index a75a6953ad3..7418c9b6029 100644 --- a/drivers/net/hinic/base/hinic_pmd_mbox.c +++ b/drivers/net/hinic/base/hinic_pmd_mbox.c @@ -982,4 +982,3 @@ int hinic_comm_func_to_func_init(struct hinic_hwdev *hwdev) return 0; } - diff --git a/drivers/net/hinic/base/hinic_pmd_niccfg.c b/drivers/net/hinic/base/hinic_pmd_niccfg.c index a08020313fb..649283ee0a0 100644 --- a/drivers/net/hinic/base/hinic_pmd_niccfg.c +++ b/drivers/net/hinic/base/hinic_pmd_niccfg.c @@ -2115,5 +2115,3 @@ int hinic_set_fdir_tcam_rule_filter(void *hwdev, bool enable) return err; } - - diff --git a/drivers/net/hinic/base/meson.build b/drivers/net/hinic/base/meson.build index 9028acdf4d0..8e197bfc86d 100644 --- a/drivers/net/hinic/base/meson.build +++ b/drivers/net/hinic/base/meson.build @@ -28,4 +28,3 @@ foreach flag: extra_flags endforeach deps += ['hash'] - diff --git a/drivers/net/intel/e1000/base/e1000_82575.c b/drivers/net/intel/e1000/base/e1000_82575.c index 34b315a5405..c263f42ca19 100644 --- a/drivers/net/intel/e1000/base/e1000_82575.c +++ b/drivers/net/intel/e1000/base/e1000_82575.c @@ -3579,4 +3579,3 @@ void e1000_i2c_bus_clear(struct e1000_hw *hw) /* Put the i2c bus back to default state */ e1000_i2c_stop(hw); } - diff --git a/drivers/net/intel/e1000/base/e1000_mbx.c b/drivers/net/intel/e1000/base/e1000_mbx.c index 3f477ddb640..b4c72f10fe7 100644 --- a/drivers/net/intel/e1000/base/e1000_mbx.c +++ b/drivers/net/intel/e1000/base/e1000_mbx.c @@ -764,4 +764,3 @@ s32 e1000_init_mbx_params_pf(struct e1000_hw *hw) return E1000_SUCCESS; } } - diff --git a/drivers/net/intel/e1000/base/e1000_vf.c b/drivers/net/intel/e1000/base/e1000_vf.c index b02459900b1..488ac3a94b1 100644 --- a/drivers/net/intel/e1000/base/e1000_vf.c +++ b/drivers/net/intel/e1000/base/e1000_vf.c @@ -561,4 +561,3 @@ STATIC s32 e1000_check_for_link_vf(struct e1000_hw *hw) out: return ret_val; } - diff --git a/drivers/net/intel/i40e/base/i40e_adminq.c b/drivers/net/intel/i40e/base/i40e_adminq.c index 350288269b4..8ccef091b19 100644 --- a/drivers/net/intel/i40e/base/i40e_adminq.c +++ b/drivers/net/intel/i40e/base/i40e_adminq.c @@ -1192,4 +1192,3 @@ enum i40e_status_code i40e_clean_arq_element(struct i40e_hw *hw, return ret_code; } - diff --git a/drivers/net/intel/ice/base/ice_flex_pipe.c b/drivers/net/intel/ice/base/ice_flex_pipe.c index dc8c92e2035..0042259d552 100644 --- a/drivers/net/intel/ice/base/ice_flex_pipe.c +++ b/drivers/net/intel/ice/base/ice_flex_pipe.c @@ -4587,4 +4587,3 @@ ice_rem_prof_id_flow(struct ice_hw *hw, enum ice_block blk, u16 vsi, u64 hdl) return status; } - diff --git a/drivers/net/intel/ice/base/ice_hw_autogen.h b/drivers/net/intel/ice/base/ice_hw_autogen.h index 5877ddb5e80..e4bc2f24d15 100644 --- a/drivers/net/intel/ice/base/ice_hw_autogen.h +++ b/drivers/net/intel/ice/base/ice_hw_autogen.h @@ -11269,4 +11269,3 @@ #define E830_VSI_VSI2F_LEM_VSI_ENABLE_S 31 #define E830_VSI_VSI2F_LEM_VSI_ENABLE_M BIT(31) #endif /* !_ICE_HW_AUTOGEN_H_ */ - diff --git a/drivers/net/intel/ixgbe/base/ixgbe_dcb_82599.c b/drivers/net/intel/ixgbe/base/ixgbe_dcb_82599.c index c26aaab91d7..db04139a78e 100644 --- a/drivers/net/intel/ixgbe/base/ixgbe_dcb_82599.c +++ b/drivers/net/intel/ixgbe/base/ixgbe_dcb_82599.c @@ -578,4 +578,3 @@ s32 ixgbe_dcb_hw_config_82599(struct ixgbe_hw *hw, int link_speed, return IXGBE_SUCCESS; } - diff --git a/drivers/net/intel/ixgbe/base/ixgbe_x540.h b/drivers/net/intel/ixgbe/base/ixgbe_x540.h index ba79847d11a..5936c5e5ef0 100644 --- a/drivers/net/intel/ixgbe/base/ixgbe_x540.h +++ b/drivers/net/intel/ixgbe/base/ixgbe_x540.h @@ -35,4 +35,3 @@ void ixgbe_init_swfw_sync_X540(struct ixgbe_hw *hw); s32 ixgbe_blink_led_start_X540(struct ixgbe_hw *hw, u32 index); s32 ixgbe_blink_led_stop_X540(struct ixgbe_hw *hw, u32 index); #endif /* _IXGBE_X540_H_ */ - diff --git a/drivers/net/mlx5/hws/mlx5dr_buddy.c b/drivers/net/mlx5/hws/mlx5dr_buddy.c index abfbdf1be53..35f4d890550 100644 --- a/drivers/net/mlx5/hws/mlx5dr_buddy.c +++ b/drivers/net/mlx5/hws/mlx5dr_buddy.c @@ -198,4 +198,3 @@ void mlx5dr_buddy_free_mem(struct mlx5dr_buddy_mem *buddy, uint32_t seg, int ord ++buddy->num_free[order]; } - diff --git a/drivers/net/nfp/nfp_ipsec.c b/drivers/net/nfp/nfp_ipsec.c index 776e2ec12c4..617b120ba54 100644 --- a/drivers/net/nfp/nfp_ipsec.c +++ b/drivers/net/nfp/nfp_ipsec.c @@ -1464,4 +1464,3 @@ nfp_ipsec_uninit(struct rte_eth_dev *dev) rte_free(net_hw->ipsec_data); } - diff --git a/drivers/net/nfp/nfpcore/nfp_elf.c b/drivers/net/nfp/nfpcore/nfp_elf.c index 12a9da0fa04..522b025f924 100644 --- a/drivers/net/nfp/nfpcore/nfp_elf.c +++ b/drivers/net/nfp/nfpcore/nfp_elf.c @@ -1083,4 +1083,3 @@ nfp_elf_get_fw_version(uint32_t *fw_version, free(fw_buf); return 0; } - diff --git a/drivers/net/ngbe/base/ngbe_dummy.h b/drivers/net/ngbe/base/ngbe_dummy.h index dd6c2fab962..bb69c9c3afd 100644 --- a/drivers/net/ngbe/base/ngbe_dummy.h +++ b/drivers/net/ngbe/base/ngbe_dummy.h @@ -351,4 +351,3 @@ static inline void ngbe_init_ops_dummy(struct ngbe_hw *hw) } #endif /* _NGBE_TYPE_DUMMY_H_ */ - diff --git a/drivers/net/ngbe/base/ngbe_phy.c b/drivers/net/ngbe/base/ngbe_phy.c index 4109aa25aea..edb68ce8b76 100644 --- a/drivers/net/ngbe/base/ngbe_phy.c +++ b/drivers/net/ngbe/base/ngbe_phy.c @@ -438,4 +438,3 @@ s32 ngbe_init_phy(struct ngbe_hw *hw) init_phy_ops_out: return err; } - diff --git a/drivers/net/octeontx/base/octeontx_bgx.h b/drivers/net/octeontx/base/octeontx_bgx.h index 3213d04e99b..6290b8e90af 100644 --- a/drivers/net/octeontx/base/octeontx_bgx.h +++ b/drivers/net/octeontx/base/octeontx_bgx.h @@ -181,4 +181,3 @@ int octeontx_bgx_port_change_mode(int port, octeontx_mbox_bgx_port_change_mode_t *cfg); #endif /* __OCTEONTX_BGX_H__ */ - diff --git a/drivers/net/txgbe/base/txgbe_dcb.c b/drivers/net/txgbe/base/txgbe_dcb.c index cb6fb761469..57d562d9551 100644 --- a/drivers/net/txgbe/base/txgbe_dcb.c +++ b/drivers/net/txgbe/base/txgbe_dcb.c @@ -358,4 +358,3 @@ s32 txgbe_dcb_config_pfc(struct txgbe_hw *hw, u8 pfc_en, u8 *map) ret = txgbe_dcb_config_pfc_raptor(hw, pfc_en, map); return ret; } - diff --git a/drivers/net/txgbe/base/txgbe_dcb_hw.c b/drivers/net/txgbe/base/txgbe_dcb_hw.c index 25273d23912..75c91a6b6ad 100644 --- a/drivers/net/txgbe/base/txgbe_dcb_hw.c +++ b/drivers/net/txgbe/base/txgbe_dcb_hw.c @@ -280,4 +280,3 @@ s32 txgbe_dcb_config_tc_stats_raptor(struct txgbe_hw *hw, return 0; } - diff --git a/drivers/net/txgbe/base/txgbe_dummy.h b/drivers/net/txgbe/base/txgbe_dummy.h index dcabe66de1b..104c419f08f 100644 --- a/drivers/net/txgbe/base/txgbe_dummy.h +++ b/drivers/net/txgbe/base/txgbe_dummy.h @@ -660,4 +660,3 @@ static inline void txgbe_init_ops_dummy(struct txgbe_hw *hw) } #endif /* _TXGBE_TYPE_DUMMY_H_ */ - diff --git a/drivers/net/txgbe/base/txgbe_eeprom.c b/drivers/net/txgbe/base/txgbe_eeprom.c index b1d90f6f6b4..fa6f14520b8 100644 --- a/drivers/net/txgbe/base/txgbe_eeprom.c +++ b/drivers/net/txgbe/base/txgbe_eeprom.c @@ -461,4 +461,3 @@ s32 txgbe_update_eeprom_checksum(struct txgbe_hw *hw) return status; } - diff --git a/drivers/net/virtio/virtio_cvq.c b/drivers/net/virtio/virtio_cvq.c index 657b0692b2a..dc7ec8c494e 100644 --- a/drivers/net/virtio/virtio_cvq.c +++ b/drivers/net/virtio/virtio_cvq.c @@ -221,4 +221,3 @@ virtio_send_command(struct virtnet_ctl *cvq, struct virtio_pmd_ctrl *ctrl, int * rte_spinlock_unlock(&cvq->lock); return result->status; } - diff --git a/drivers/raw/cnxk_rvu_lf/cnxk_rvu_lf_selftest.c b/drivers/raw/cnxk_rvu_lf/cnxk_rvu_lf_selftest.c index e33973f24b2..237c2864ee1 100644 --- a/drivers/raw/cnxk_rvu_lf/cnxk_rvu_lf_selftest.c +++ b/drivers/raw/cnxk_rvu_lf/cnxk_rvu_lf_selftest.c @@ -162,5 +162,3 @@ rvu_lf_rawdev_selftest(uint16_t dev_id) return ret; } - - diff --git a/drivers/vdpa/mlx5/mlx5_vdpa_event.c b/drivers/vdpa/mlx5/mlx5_vdpa_event.c index 32430614d52..43585a94b22 100644 --- a/drivers/vdpa/mlx5/mlx5_vdpa_event.c +++ b/drivers/vdpa/mlx5/mlx5_vdpa_event.c @@ -686,4 +686,3 @@ mlx5_vdpa_event_qp_prepare(struct mlx5_vdpa_priv *priv, uint16_t desc_n, mlx5_vdpa_event_qp_destroy(eqp); return -1; } - diff --git a/dts/configurations/tests_config.example.yaml b/dts/configurations/tests_config.example.yaml index fede1fda808..64fa630aa0b 100644 --- a/dts/configurations/tests_config.example.yaml +++ b/dts/configurations/tests_config.example.yaml @@ -14,4 +14,4 @@ hello_world: # - frame_size: 512 # num_descriptors: 1024 # expected_mpps: 1.0 -# delta_tolerance: 0.05 \ No newline at end of file +# delta_tolerance: 0.05 diff --git a/license/Linux-syscall-note b/license/Linux-syscall-note index 9abdad71faf..adbe756a050 100644 --- a/license/Linux-syscall-note +++ b/license/Linux-syscall-note @@ -22,4 +22,3 @@ License-Text: v2.2 or v3.x or whatever), unless explicitly otherwise stated. Linus Torvalds - From ed957165eadbe60a47d5ec223578cdd1c13d0bd9 Mon Sep 17 00:00:00 2001 From: Thomas Monjalon Date: Sun, 30 Nov 2025 17:22:49 +0100 Subject: [PATCH 03/16] version: 25.11.0 Signed-off-by: Thomas Monjalon --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 89e1751fbf4..6cd39b74fa9 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -25.11.0-rc4 +25.11.0 From 0ace445fc09bafa43d63155e3a44815efa262c0d Mon Sep 17 00:00:00 2001 From: David Marchand Date: Tue, 2 Dec 2025 11:06:46 +0100 Subject: [PATCH 04/16] version: 26.03-rc0 Start a new release cycle with empty release notes. Bump version and ABI minor. Signed-off-by: David Marchand Acked-by: Aaron Conole Acked-by: Thomas Monjalon --- .github/workflows/build.yml | 4 +- ABI_VERSION | 2 +- VERSION | 2 +- doc/guides/rel_notes/index.rst | 1 + doc/guides/rel_notes/release_26_03.rst | 138 +++++++++++++++++++++++++ 5 files changed, 143 insertions(+), 4 deletions(-) create mode 100644 doc/guides/rel_notes/release_26_03.rst diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 39b4275816e..ab140f885e2 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -12,7 +12,7 @@ defaults: env: REF_GIT_BRANCH: main REF_GIT_REPO: https://github.com/DPDK/dpdk - REF_GIT_TAG: none + REF_GIT_TAG: v25.11 jobs: checkpatch: @@ -96,7 +96,7 @@ jobs: checks: stdatomic - os: ubuntu-22.04 compiler: gcc - checks: debug+doc+examples+tests + checks: abi+debug+doc+examples+tests - os: ubuntu-22.04 compiler: clang checks: asan+doc+tests diff --git a/ABI_VERSION b/ABI_VERSION index facd73a3322..dfa88c8ebba 100644 --- a/ABI_VERSION +++ b/ABI_VERSION @@ -1 +1 @@ -26.0 +26.1 diff --git a/VERSION b/VERSION index 6cd39b74fa9..22103a6c301 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -25.11.0 +26.03.0-rc0 diff --git a/doc/guides/rel_notes/index.rst b/doc/guides/rel_notes/index.rst index bf5ecb266e5..b304fc3b418 100644 --- a/doc/guides/rel_notes/index.rst +++ b/doc/guides/rel_notes/index.rst @@ -8,6 +8,7 @@ Release Notes :maxdepth: 1 :numbered: + release_26_03 release_25_11 release_25_07 release_25_03 diff --git a/doc/guides/rel_notes/release_26_03.rst b/doc/guides/rel_notes/release_26_03.rst new file mode 100644 index 00000000000..15dabee7a1b --- /dev/null +++ b/doc/guides/rel_notes/release_26_03.rst @@ -0,0 +1,138 @@ +.. SPDX-License-Identifier: BSD-3-Clause + Copyright 2025 The DPDK contributors + +.. include:: + +DPDK Release 26.03 +================== + +.. **Read this first.** + + The text in the sections below explains how to update the release notes. + + Use proper spelling, capitalization and punctuation in all sections. + + Variable and config names should be quoted as fixed width text: + ``LIKE_THIS``. + + Build the docs and view the output file to ensure the changes are correct:: + + ninja -C build doc + xdg-open build/doc/guides/html/rel_notes/release_26_03.html + + +New Features +------------ + +.. This section should contain new features added in this release. + Sample format: + + * **Add a title in the past tense with a full stop.** + + Add a short 1-2 sentence description in the past tense. + The description should be enough to allow someone scanning + the release notes to understand the new feature. + + If the feature adds a lot of sub-features you can use a bullet list + like this: + + * Added feature foo to do something. + * Enhanced feature bar to do something else. + + Refer to the previous release notes for examples. + + Suggested order in release notes items: + * Core libs (EAL, mempool, ring, mbuf, buses) + * Device abstraction libs and PMDs (ordered alphabetically by vendor name) + - ethdev (lib, PMDs) + - cryptodev (lib, PMDs) + - eventdev (lib, PMDs) + - etc + * Other libs + * Apps, Examples, Tools (if significant) + + This section is a comment. Do not overwrite or remove it. + Also, make sure to start the actual text at the margin. + ======================================================= + + +Removed Items +------------- + +.. This section should contain removed items in this release. Sample format: + + * Add a short 1-2 sentence description of the removed item + in the past tense. + + This section is a comment. Do not overwrite or remove it. + Also, make sure to start the actual text at the margin. + ======================================================= + + +API Changes +----------- + +.. This section should contain API changes. Sample format: + + * sample: Add a short 1-2 sentence description of the API change + which was announced in the previous releases and made in this release. + Start with a scope label like "ethdev:". + Use fixed width quotes for ``function_names`` or ``struct_names``. + Use the past tense. + + This section is a comment. Do not overwrite or remove it. + Also, make sure to start the actual text at the margin. + ======================================================= + + +ABI Changes +----------- + +.. This section should contain ABI changes. Sample format: + + * sample: Add a short 1-2 sentence description of the ABI change + which was announced in the previous releases and made in this release. + Start with a scope label like "ethdev:". + Use fixed width quotes for ``function_names`` or ``struct_names``. + Use the past tense. + + This section is a comment. Do not overwrite or remove it. + Also, make sure to start the actual text at the margin. + ======================================================= + +* No ABI change that would break compatibility with 25.11. + + +Known Issues +------------ + +.. This section should contain new known issues in this release. Sample format: + + * **Add title in present tense with full stop.** + + Add a short 1-2 sentence description of the known issue + in the present tense. Add information on any known workarounds. + + This section is a comment. Do not overwrite or remove it. + Also, make sure to start the actual text at the margin. + ======================================================= + + +Tested Platforms +---------------- + +.. This section should contain a list of platforms that were tested + with this release. + + The format is: + + * platform with combinations + + * List of CPU + * List of OS + * List of devices + * Other relevant details... + + This section is a comment. Do not overwrite or remove it. + Also, make sure to start the actual text at the margin. + ======================================================= From d1ab1a2facf9b823bc400e573aa39381ca7b915f Mon Sep 17 00:00:00 2001 From: Bruce Richardson Date: Thu, 4 Dec 2025 11:29:02 +0000 Subject: [PATCH 05/16] rcu: fix build with MSVC Within GitHub actions, with MSVC 19.44.35219, the following error can be reported: ...\rte_rcu_qsbr.h(566): error C2220: the following warning is treated as an error ...\rte_rcu_qsbr.h(566): warning C4319: '~': zero extending 'unsigned long' to 'uint64_t' of greater size To fix this, replace the "1UL" with RTE_BIT64 to force a 64-bit value on all platforms. Fixes: 64994b56cfd7 ("rcu: add RCU library supporting QSBR mechanism") Cc: stable@dpdk.org Signed-off-by: Bruce Richardson --- lib/rcu/rte_rcu_qsbr.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/rcu/rte_rcu_qsbr.h b/lib/rcu/rte_rcu_qsbr.h index 550fadf56ac..d89a43c186a 100644 --- a/lib/rcu/rte_rcu_qsbr.h +++ b/lib/rcu/rte_rcu_qsbr.h @@ -563,7 +563,7 @@ __rte_rcu_qsbr_check_selective(struct rte_rcu_qsbr *v, uint64_t t, bool wait) if (c != __RTE_QSBR_CNT_THR_OFFLINE && acked_token > c) acked_token = c; - bmap &= ~(1UL << j); + bmap &= ~RTE_BIT64(j); } } From 80b3e9cad7599ce01f94cd6f8f966401a77e29c1 Mon Sep 17 00:00:00 2001 From: Bruce Richardson Date: Thu, 4 Dec 2025 11:29:03 +0000 Subject: [PATCH 06/16] net/ice/base: disable MSVC warning Disable warning about "zero extending 'unsigned long' to 'u64' of greater size" in base code builds. Cc: stable@dpdk.org Signed-off-by: Bruce Richardson --- drivers/net/intel/ice/base/meson.build | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/net/intel/ice/base/meson.build b/drivers/net/intel/ice/base/meson.build index f46dbb265f9..fd079c41cf9 100644 --- a/drivers/net/intel/ice/base/meson.build +++ b/drivers/net/intel/ice/base/meson.build @@ -35,6 +35,7 @@ if is_ms_compiler error_cflags = [ '/wd4101', # unreferenced local variable '/wd4334', # result of 32-bit shift implicitly converted to 64 bits + '/wd4319', # zero extending 'unsigned long' to 'u64' of greater size ] else error_cflags = [ From 1c16dece24aa5b32a6707090b04bbb71b6ade66d Mon Sep 17 00:00:00 2001 From: Bruce Richardson Date: Thu, 4 Dec 2025 18:20:38 +0000 Subject: [PATCH 07/16] app/test: make parameters clearer when adding fast tests For the fast tests, we have two extra parameters specifying when the test can be run without hugepages or using ASan. The true/false nature of these parameters is not very clear, so change things so that they are explicitly specified as NOHUGE_OK/NOHUGE_SKIP and ASAN_OK/ASAN_SKIP instead. Explicitly validate the options in the meson.build files, rather than just checking for one of the pair of options - which can hide errors. Signed-off-by: Bruce Richardson Signed-off-by: 0-day Robot --- app/test/suites/meson.build | 14 ++++++++++++-- app/test/test.h | 9 ++++++++- app/test/test_acl.c | 2 +- app/test/test_alarm.c | 2 +- app/test/test_argparse.c | 2 +- app/test/test_atomic.c | 2 +- app/test/test_bitcount.c | 2 +- app/test/test_bitmap.c | 2 +- app/test/test_bitops.c | 2 +- app/test/test_bitratestats.c | 2 +- app/test/test_bitset.c | 2 +- app/test/test_bpf.c | 6 +++--- app/test/test_byteorder.c | 2 +- app/test/test_cfgfile.c | 2 +- app/test/test_cksum.c | 2 +- app/test/test_cmdline.c | 2 +- app/test/test_common.c | 2 +- app/test/test_compressdev.c | 2 +- app/test/test_cpuflags.c | 2 +- app/test/test_crc.c | 2 +- app/test/test_cycles.c | 2 +- app/test/test_debug.c | 2 +- app/test/test_devargs.c | 2 +- app/test/test_dispatcher.c | 2 +- app/test/test_distributor.c | 2 +- app/test/test_eal_flags.c | 24 ++++++++++++------------ app/test/test_eal_fs.c | 2 +- app/test/test_errno.c | 2 +- app/test/test_ethdev_link.c | 2 +- app/test/test_event_eth_tx_adapter.c | 2 +- app/test/test_event_ring.c | 2 +- app/test/test_event_vector_adapter.c | 2 +- app/test/test_eventdev.c | 4 ++-- app/test/test_fbarray.c | 2 +- app/test/test_fib.c | 2 +- app/test/test_fib6.c | 2 +- app/test/test_func_reentrancy.c | 2 +- app/test/test_graph.c | 4 ++-- app/test/test_graph_feature_arc.c | 2 +- app/test/test_hash.c | 2 +- app/test/test_hash_readwrite.c | 2 +- app/test/test_interrupts.c | 2 +- app/test/test_ipfrag.c | 2 +- app/test/test_ipsec.c | 2 +- app/test/test_kvargs.c | 2 +- app/test/test_latencystats.c | 2 +- app/test/test_lcore_var.c | 2 +- app/test/test_lcores.c | 2 +- app/test/test_logs.c | 2 +- app/test/test_lpm.c | 2 +- app/test/test_lpm6.c | 2 +- app/test/test_malloc.c | 2 +- app/test/test_mbuf.c | 2 +- app/test/test_mcslock.c | 2 +- app/test/test_member.c | 2 +- app/test/test_memcpy.c | 2 +- app/test/test_memory.c | 2 +- app/test/test_mempool.c | 2 +- app/test/test_memzone.c | 2 +- app/test/test_meter.c | 2 +- app/test/test_metrics.c | 2 +- app/test/test_mp_secondary.c | 2 +- app/test/test_net_ether.c | 2 +- app/test/test_net_ip6.c | 2 +- app/test/test_pcapng.c | 2 +- app/test/test_pdcp.c | 2 +- app/test/test_pdump.c | 2 +- app/test/test_per_lcore.c | 2 +- app/test/test_pflock.c | 2 +- app/test/test_pie.c | 2 +- app/test/test_pmd_ring.c | 2 +- app/test/test_pmu.c | 2 +- app/test/test_power.c | 2 +- app/test/test_power_cpufreq.c | 2 +- app/test/test_power_intel_uncore.c | 2 +- app/test/test_power_kvm_vm.c | 2 +- app/test/test_prefetch.c | 2 +- app/test/test_ptr_compress.c | 2 +- app/test/test_rawdev.c | 2 +- app/test/test_rcu_qsbr.c | 2 +- app/test/test_reorder.c | 2 +- app/test/test_rib.c | 2 +- app/test/test_rib6.c | 2 +- app/test/test_ring.c | 2 +- app/test/test_rwlock.c | 8 ++++---- app/test/test_sched.c | 2 +- app/test/test_security.c | 2 +- app/test/test_seqlock.c | 2 +- app/test/test_service_cores.c | 2 +- app/test/test_soring.c | 2 +- app/test/test_spinlock.c | 2 +- app/test/test_stack.c | 4 ++-- app/test/test_string_fns.c | 2 +- app/test/test_table.c | 2 +- app/test/test_tailq.c | 2 +- app/test/test_telemetry_data.c | 2 +- app/test/test_telemetry_json.c | 2 +- app/test/test_thash.c | 2 +- app/test/test_threads.c | 2 +- app/test/test_ticketlock.c | 2 +- app/test/test_timer.c | 2 +- app/test/test_trace.c | 2 +- app/test/test_vdev.c | 2 +- app/test/test_version.c | 2 +- buildtools/get-test-suites.py | 2 +- doc/guides/contributing/unit_test.rst | 10 ++++++---- 106 files changed, 148 insertions(+), 129 deletions(-) diff --git a/app/test/suites/meson.build b/app/test/suites/meson.build index 712dd65568e..65995078b79 100644 --- a/app/test/suites/meson.build +++ b/app/test/suites/meson.build @@ -67,9 +67,19 @@ foreach suite:test_suites # special fast-test handling here foreach t: suite_tests params = t.split(':') + # check for valid options for asan and nohuge. Note, the extraction script runs tolower() + if params[1] != 'NOHUGE_OK' and params[1] != 'NOHUGE_SKIP' + error('Invalid parameter "@0@" for test "@1@". Must be NOHUGE_OK or NOHUGE_SKIP.' + .format(params[1], params[0])) + endif + if params[2] != 'ASAN_OK' and params[2] != 'ASAN_SKIP' + error('Invalid parameter "@0@" for test "@1@". Must be ASAN_OK or ASAN_SKIP.' + .format(params[2], params[0])) + endif + test_name = params[0] - nohuge = params[1] == 'true' - asan = params[2] == 'true' + nohuge = params[1] == 'NOHUGE_OK' + asan = params[2] == 'ASAN_OK' test_args = [] if nohuge diff --git a/app/test/test.h b/app/test/test.h index c6d7d233136..30a8e1b8f12 100644 --- a/app/test/test.h +++ b/app/test/test.h @@ -207,9 +207,16 @@ void add_test_command(struct test_command *t); /* Register a test function as a particular type. * These can be used to build up test suites automatically */ -#define REGISTER_FAST_TEST(cmd, no_huge, ASan, func) REGISTER_TEST_COMMAND(cmd, func) #define REGISTER_PERF_TEST REGISTER_TEST_COMMAND #define REGISTER_DRIVER_TEST REGISTER_TEST_COMMAND #define REGISTER_STRESS_TEST REGISTER_TEST_COMMAND +/* fast tests are a bit special. They can be specified as supporting running without + * hugepages and/or under ASan. + * - The "no_huge" options should be passed as either "NOHUGE_OK" or "NOHUGE_SKIP" + * - The "ASan" options should be passed as either "ASAN_OK" or "ASAN_SKIP" + */ +#define REGISTER_FAST_TEST(cmd, no_huge, ASan, func) REGISTER_TEST_COMMAND(cmd, func) + + #endif diff --git a/app/test/test_acl.c b/app/test/test_acl.c index 43d13b5b0fe..b5b3d9475bb 100644 --- a/app/test/test_acl.c +++ b/app/test/test_acl.c @@ -1748,4 +1748,4 @@ test_acl(void) #endif /* !RTE_EXEC_ENV_WINDOWS */ -REGISTER_FAST_TEST(acl_autotest, true, true, test_acl); +REGISTER_FAST_TEST(acl_autotest, NOHUGE_OK, ASAN_OK, test_acl); diff --git a/app/test/test_alarm.c b/app/test/test_alarm.c index 6445f713fe6..d0c2919c521 100644 --- a/app/test/test_alarm.c +++ b/app/test/test_alarm.c @@ -76,4 +76,4 @@ test_alarm(void) return 0; } -REGISTER_FAST_TEST(alarm_autotest, true, true, test_alarm); +REGISTER_FAST_TEST(alarm_autotest, NOHUGE_OK, ASAN_OK, test_alarm); diff --git a/app/test/test_argparse.c b/app/test/test_argparse.c index d3b95c4e359..fdc6dd113c3 100644 --- a/app/test/test_argparse.c +++ b/app/test/test_argparse.c @@ -1618,4 +1618,4 @@ test_argparse(void) return unit_test_suite_runner(&argparse_test_suite); } -REGISTER_FAST_TEST(argparse_autotest, true, true, test_argparse); +REGISTER_FAST_TEST(argparse_autotest, NOHUGE_OK, ASAN_OK, test_argparse); diff --git a/app/test/test_atomic.c b/app/test/test_atomic.c index 3f26ce88d91..8160a33e0e5 100644 --- a/app/test/test_atomic.c +++ b/app/test/test_atomic.c @@ -632,5 +632,5 @@ test_atomic(void) return 0; } -REGISTER_FAST_TEST(atomic_autotest, false, true, test_atomic); +REGISTER_FAST_TEST(atomic_autotest, NOHUGE_SKIP, ASAN_OK, test_atomic); #endif /* RTE_TOOLCHAIN_MSVC */ diff --git a/app/test/test_bitcount.c b/app/test/test_bitcount.c index 4f34d7c90fa..8465e516a4b 100644 --- a/app/test/test_bitcount.c +++ b/app/test/test_bitcount.c @@ -171,4 +171,4 @@ test_bitcount(void) return unit_test_suite_runner(&bitcount_test_suite); } -REGISTER_FAST_TEST(bitcount_autotest, true, true, test_bitcount); +REGISTER_FAST_TEST(bitcount_autotest, NOHUGE_OK, ASAN_OK, test_bitcount); diff --git a/app/test/test_bitmap.c b/app/test/test_bitmap.c index bab11812c76..04f11b3a1e2 100644 --- a/app/test/test_bitmap.c +++ b/app/test/test_bitmap.c @@ -269,4 +269,4 @@ test_bitmap(void) return test_bitmap_all_set(); } -REGISTER_FAST_TEST(bitmap_autotest, true, true, test_bitmap); +REGISTER_FAST_TEST(bitmap_autotest, NOHUGE_OK, ASAN_OK, test_bitmap); diff --git a/app/test/test_bitops.c b/app/test/test_bitops.c index 78a7df6bb13..c8ec72fab06 100644 --- a/app/test/test_bitops.c +++ b/app/test/test_bitops.c @@ -438,4 +438,4 @@ test_bitops(void) return unit_test_suite_runner(&test_suite); } -REGISTER_FAST_TEST(bitops_autotest, true, true, test_bitops); +REGISTER_FAST_TEST(bitops_autotest, NOHUGE_OK, ASAN_OK, test_bitops); diff --git a/app/test/test_bitratestats.c b/app/test/test_bitratestats.c index 926133de580..45343aa4c63 100644 --- a/app/test/test_bitratestats.c +++ b/app/test/test_bitratestats.c @@ -249,4 +249,4 @@ test_bitratestats(void) { return unit_test_suite_runner(&bitratestats_testsuite); } -REGISTER_FAST_TEST(bitratestats_autotest, true, true, test_bitratestats); +REGISTER_FAST_TEST(bitratestats_autotest, NOHUGE_OK, ASAN_OK, test_bitratestats); diff --git a/app/test/test_bitset.c b/app/test/test_bitset.c index 88b2d8bab04..5b1a5e5a855 100644 --- a/app/test/test_bitset.c +++ b/app/test/test_bitset.c @@ -909,4 +909,4 @@ test_bitset(void) return unit_test_suite_runner(&bitset_tests); } -REGISTER_FAST_TEST(bitset_autotest, true, true, test_bitset); +REGISTER_FAST_TEST(bitset_autotest, NOHUGE_OK, ASAN_OK, test_bitset); diff --git a/app/test/test_bpf.c b/app/test/test_bpf.c index b7c94ba1c70..a7d56f8d86d 100644 --- a/app/test/test_bpf.c +++ b/app/test/test_bpf.c @@ -3278,7 +3278,7 @@ test_bpf(void) #endif /* !RTE_LIB_BPF */ -REGISTER_FAST_TEST(bpf_autotest, true, true, test_bpf); +REGISTER_FAST_TEST(bpf_autotest, NOHUGE_OK, ASAN_OK, test_bpf); #ifdef TEST_BPF_ELF_LOAD @@ -3751,7 +3751,7 @@ test_bpf_elf(void) #endif /* !TEST_BPF_ELF_LOAD */ -REGISTER_FAST_TEST(bpf_elf_autotest, true, true, test_bpf_elf); +REGISTER_FAST_TEST(bpf_elf_autotest, NOHUGE_OK, ASAN_OK, test_bpf_elf); #ifndef RTE_HAS_LIBPCAP @@ -3969,4 +3969,4 @@ test_bpf_convert(void) #endif /* RTE_HAS_LIBPCAP */ -REGISTER_FAST_TEST(bpf_convert_autotest, true, true, test_bpf_convert); +REGISTER_FAST_TEST(bpf_convert_autotest, NOHUGE_OK, ASAN_OK, test_bpf_convert); diff --git a/app/test/test_byteorder.c b/app/test/test_byteorder.c index 67ca7ebbc83..cc75d90a88f 100644 --- a/app/test/test_byteorder.c +++ b/app/test/test_byteorder.c @@ -63,4 +63,4 @@ test_byteorder(void) return 0; } -REGISTER_FAST_TEST(byteorder_autotest, true, true, test_byteorder); +REGISTER_FAST_TEST(byteorder_autotest, NOHUGE_OK, ASAN_OK, test_byteorder); diff --git a/app/test/test_cfgfile.c b/app/test/test_cfgfile.c index b189d9d7a53..3a5078fc46d 100644 --- a/app/test/test_cfgfile.c +++ b/app/test/test_cfgfile.c @@ -399,4 +399,4 @@ test_cfgfile(void) return unit_test_suite_runner(&test_cfgfile_suite); } -REGISTER_FAST_TEST(cfgfile_autotest, true, true, test_cfgfile); +REGISTER_FAST_TEST(cfgfile_autotest, NOHUGE_OK, ASAN_OK, test_cfgfile); diff --git a/app/test/test_cksum.c b/app/test/test_cksum.c index f2ab5af5a79..ea443382a12 100644 --- a/app/test/test_cksum.c +++ b/app/test/test_cksum.c @@ -267,4 +267,4 @@ test_cksum(void) } #undef GOTO_FAIL -REGISTER_FAST_TEST(cksum_autotest, true, true, test_cksum); +REGISTER_FAST_TEST(cksum_autotest, NOHUGE_OK, ASAN_OK, test_cksum); diff --git a/app/test/test_cmdline.c b/app/test/test_cmdline.c index 1d8020995c6..7253ae4ffe8 100644 --- a/app/test/test_cmdline.c +++ b/app/test/test_cmdline.c @@ -60,4 +60,4 @@ test_cmdline(void) return 0; } -REGISTER_FAST_TEST(cmdline_autotest, true, true, test_cmdline); +REGISTER_FAST_TEST(cmdline_autotest, NOHUGE_OK, ASAN_OK, test_cmdline); diff --git a/app/test/test_common.c b/app/test/test_common.c index 6dbd7fc9a96..3e1c7df0c12 100644 --- a/app/test/test_common.c +++ b/app/test/test_common.c @@ -354,4 +354,4 @@ test_common(void) return ret; } -REGISTER_FAST_TEST(common_autotest, true, true, test_common); +REGISTER_FAST_TEST(common_autotest, NOHUGE_OK, ASAN_OK, test_common); diff --git a/app/test/test_compressdev.c b/app/test/test_compressdev.c index dcea8e2f303..293d1d757f4 100644 --- a/app/test/test_compressdev.c +++ b/app/test/test_compressdev.c @@ -4255,4 +4255,4 @@ test_compressdev(void) return unit_test_suite_runner(&compressdev_testsuite); } -REGISTER_FAST_TEST(compressdev_autotest, false, true, test_compressdev); +REGISTER_FAST_TEST(compressdev_autotest, NOHUGE_SKIP, ASAN_OK, test_compressdev); diff --git a/app/test/test_cpuflags.c b/app/test/test_cpuflags.c index 22ab4dff0a1..a0ad0998153 100644 --- a/app/test/test_cpuflags.c +++ b/app/test/test_cpuflags.c @@ -327,4 +327,4 @@ test_cpuflags(void) return 0; } -REGISTER_FAST_TEST(cpuflags_autotest, true, true, test_cpuflags); +REGISTER_FAST_TEST(cpuflags_autotest, NOHUGE_OK, ASAN_OK, test_cpuflags); diff --git a/app/test/test_crc.c b/app/test/test_crc.c index f18eff72173..4ff03e3f64a 100644 --- a/app/test/test_crc.c +++ b/app/test/test_crc.c @@ -140,4 +140,4 @@ crc_autotest(void) return ret; } -REGISTER_FAST_TEST(crc_autotest, true, true, crc_autotest); +REGISTER_FAST_TEST(crc_autotest, NOHUGE_OK, ASAN_OK, crc_autotest); diff --git a/app/test/test_cycles.c b/app/test/test_cycles.c index a7654de1763..68a31ac450c 100644 --- a/app/test/test_cycles.c +++ b/app/test/test_cycles.c @@ -53,4 +53,4 @@ test_user_delay_us(void) return 0; } -REGISTER_FAST_TEST(user_delay_us, true, true, test_user_delay_us); +REGISTER_FAST_TEST(user_delay_us, NOHUGE_OK, ASAN_OK, test_user_delay_us); diff --git a/app/test/test_debug.c b/app/test/test_debug.c index 5ff9068e2b6..bfda4d1aa3d 100644 --- a/app/test/test_debug.c +++ b/app/test/test_debug.c @@ -183,4 +183,4 @@ test_debug(void) #endif /* !RTE_EXEC_ENV_WINDOWS */ -REGISTER_FAST_TEST(debug_autotest, true, true, test_debug); +REGISTER_FAST_TEST(debug_autotest, NOHUGE_OK, ASAN_OK, test_debug); diff --git a/app/test/test_devargs.c b/app/test/test_devargs.c index 4166b2bea2d..0bd14c24ec2 100644 --- a/app/test/test_devargs.c +++ b/app/test/test_devargs.c @@ -320,4 +320,4 @@ test_devargs(void) return 0; } -REGISTER_FAST_TEST(devargs_autotest, true, true, test_devargs); +REGISTER_FAST_TEST(devargs_autotest, NOHUGE_OK, ASAN_OK, test_devargs); diff --git a/app/test/test_dispatcher.c b/app/test/test_dispatcher.c index 6eb3f572cfc..94b91ed4fe9 100644 --- a/app/test/test_dispatcher.c +++ b/app/test/test_dispatcher.c @@ -1053,4 +1053,4 @@ test_dispatcher(void) return unit_test_suite_runner(&test_suite); } -REGISTER_FAST_TEST(dispatcher_autotest, false, true, test_dispatcher); +REGISTER_FAST_TEST(dispatcher_autotest, NOHUGE_SKIP, ASAN_OK, test_dispatcher); diff --git a/app/test/test_distributor.c b/app/test/test_distributor.c index 60fe96ea822..da0a21ea833 100644 --- a/app/test/test_distributor.c +++ b/app/test/test_distributor.c @@ -953,4 +953,4 @@ test_distributor(void) #endif /* !RTE_EXEC_ENV_WINDOWS */ -REGISTER_FAST_TEST(distributor_autotest, false, true, test_distributor); +REGISTER_FAST_TEST(distributor_autotest, NOHUGE_SKIP, ASAN_OK, test_distributor); diff --git a/app/test/test_eal_flags.c b/app/test/test_eal_flags.c index e32f83d3c8f..4ddcafdecbf 100644 --- a/app/test/test_eal_flags.c +++ b/app/test/test_eal_flags.c @@ -1692,15 +1692,15 @@ test_memory_flags(void) #endif /* !RTE_EXEC_ENV_WINDOWS */ -REGISTER_FAST_TEST(eal_flags_c_opt_autotest, false, false, test_missing_c_flag); -REGISTER_FAST_TEST(eal_flags_main_opt_autotest, false, false, test_main_lcore_flag); -REGISTER_FAST_TEST(eal_flags_n_opt_autotest, false, false, test_invalid_n_flag); -REGISTER_FAST_TEST(eal_flags_hpet_autotest, false, false, test_no_hpet_flag); -REGISTER_FAST_TEST(eal_flags_no_huge_autotest, false, false, test_no_huge_flag); -REGISTER_FAST_TEST(eal_flags_a_opt_autotest, false, false, test_allow_flag); -REGISTER_FAST_TEST(eal_flags_b_opt_autotest, false, false, test_invalid_b_flag); -REGISTER_FAST_TEST(eal_flags_vdev_opt_autotest, false, false, test_invalid_vdev_flag); -REGISTER_FAST_TEST(eal_flags_r_opt_autotest, false, false, test_invalid_r_flag); -REGISTER_FAST_TEST(eal_flags_mem_autotest, false, false, test_memory_flags); -REGISTER_FAST_TEST(eal_flags_file_prefix_autotest, false, false, test_file_prefix); -REGISTER_FAST_TEST(eal_flags_misc_autotest, false, false, test_misc_flags); +REGISTER_FAST_TEST(eal_flags_c_opt_autotest, NOHUGE_SKIP, ASAN_SKIP, test_missing_c_flag); +REGISTER_FAST_TEST(eal_flags_main_opt_autotest, NOHUGE_SKIP, ASAN_SKIP, test_main_lcore_flag); +REGISTER_FAST_TEST(eal_flags_n_opt_autotest, NOHUGE_SKIP, ASAN_SKIP, test_invalid_n_flag); +REGISTER_FAST_TEST(eal_flags_hpet_autotest, NOHUGE_SKIP, ASAN_SKIP, test_no_hpet_flag); +REGISTER_FAST_TEST(eal_flags_no_huge_autotest, NOHUGE_SKIP, ASAN_SKIP, test_no_huge_flag); +REGISTER_FAST_TEST(eal_flags_a_opt_autotest, NOHUGE_SKIP, ASAN_SKIP, test_allow_flag); +REGISTER_FAST_TEST(eal_flags_b_opt_autotest, NOHUGE_SKIP, ASAN_SKIP, test_invalid_b_flag); +REGISTER_FAST_TEST(eal_flags_vdev_opt_autotest, NOHUGE_SKIP, ASAN_SKIP, test_invalid_vdev_flag); +REGISTER_FAST_TEST(eal_flags_r_opt_autotest, NOHUGE_SKIP, ASAN_SKIP, test_invalid_r_flag); +REGISTER_FAST_TEST(eal_flags_mem_autotest, NOHUGE_SKIP, ASAN_SKIP, test_memory_flags); +REGISTER_FAST_TEST(eal_flags_file_prefix_autotest, NOHUGE_SKIP, ASAN_SKIP, test_file_prefix); +REGISTER_FAST_TEST(eal_flags_misc_autotest, NOHUGE_SKIP, ASAN_SKIP, test_misc_flags); diff --git a/app/test/test_eal_fs.c b/app/test/test_eal_fs.c index 8cd287fa9d8..62eea98677a 100644 --- a/app/test/test_eal_fs.c +++ b/app/test/test_eal_fs.c @@ -185,4 +185,4 @@ test_eal_fs(void) #endif /* !RTE_EXEC_ENV_WINDOWS */ -REGISTER_FAST_TEST(eal_fs_autotest, true, true, test_eal_fs); +REGISTER_FAST_TEST(eal_fs_autotest, NOHUGE_OK, ASAN_OK, test_eal_fs); diff --git a/app/test/test_errno.c b/app/test/test_errno.c index b429962fb92..2be7e783157 100644 --- a/app/test/test_errno.c +++ b/app/test/test_errno.c @@ -94,4 +94,4 @@ test_errno(void) return 0; } -REGISTER_FAST_TEST(errno_autotest, true, true, test_errno); +REGISTER_FAST_TEST(errno_autotest, NOHUGE_OK, ASAN_OK, test_errno); diff --git a/app/test/test_ethdev_link.c b/app/test/test_ethdev_link.c index 06221f0f2fb..22fbae9c967 100644 --- a/app/test/test_ethdev_link.c +++ b/app/test/test_ethdev_link.c @@ -172,4 +172,4 @@ test_link_status(void) return unit_test_suite_runner(&link_status_testsuite); } -REGISTER_FAST_TEST(ethdev_link_status, true, true, test_link_status); +REGISTER_FAST_TEST(ethdev_link_status, NOHUGE_OK, ASAN_OK, test_link_status); diff --git a/app/test/test_event_eth_tx_adapter.c b/app/test/test_event_eth_tx_adapter.c index 482b8e69e3e..08c23006d70 100644 --- a/app/test/test_event_eth_tx_adapter.c +++ b/app/test/test_event_eth_tx_adapter.c @@ -1010,4 +1010,4 @@ test_event_eth_tx_adapter_common(void) #endif /* !RTE_EXEC_ENV_WINDOWS */ -REGISTER_FAST_TEST(event_eth_tx_adapter_autotest, false, true, test_event_eth_tx_adapter_common); +REGISTER_FAST_TEST(event_eth_tx_adapter_autotest, NOHUGE_SKIP, ASAN_OK, test_event_eth_tx_adapter_common); diff --git a/app/test/test_event_ring.c b/app/test/test_event_ring.c index 3bfb5109b77..596faa4e30d 100644 --- a/app/test/test_event_ring.c +++ b/app/test/test_event_ring.c @@ -256,4 +256,4 @@ test_event_ring(void) #endif /* !RTE_EXEC_ENV_WINDOWS */ -REGISTER_FAST_TEST(event_ring_autotest, true, true, test_event_ring); +REGISTER_FAST_TEST(event_ring_autotest, NOHUGE_OK, ASAN_OK, test_event_ring); diff --git a/app/test/test_event_vector_adapter.c b/app/test/test_event_vector_adapter.c index 739352bdff7..c6d694421bf 100644 --- a/app/test/test_event_vector_adapter.c +++ b/app/test/test_event_vector_adapter.c @@ -709,5 +709,5 @@ test_event_vector_adapter(void) #endif /* disabled because of reported failures, waiting for a fix - * REGISTER_FAST_TEST(event_vector_adapter_autotest, true, true, test_event_vector_adapter); + * REGISTER_FAST_TEST(event_vector_adapter_autotest, NOHUGE_OK, ASAN_OK, test_event_vector_adapter); */ diff --git a/app/test/test_eventdev.c b/app/test/test_eventdev.c index e97754bd478..1241da38cb1 100644 --- a/app/test/test_eventdev.c +++ b/app/test/test_eventdev.c @@ -1529,10 +1529,10 @@ test_eventdev_selftest_cn20k(void) #endif /* !RTE_EXEC_ENV_WINDOWS */ -REGISTER_FAST_TEST(eventdev_common_autotest, true, true, test_eventdev_common); +REGISTER_FAST_TEST(eventdev_common_autotest, NOHUGE_OK, ASAN_OK, test_eventdev_common); #ifndef RTE_EXEC_ENV_WINDOWS -REGISTER_FAST_TEST(eventdev_selftest_sw, true, true, test_eventdev_selftest_sw); +REGISTER_FAST_TEST(eventdev_selftest_sw, NOHUGE_OK, ASAN_OK, test_eventdev_selftest_sw); REGISTER_DRIVER_TEST(eventdev_selftest_octeontx, test_eventdev_selftest_octeontx); REGISTER_DRIVER_TEST(eventdev_selftest_dpaa2, test_eventdev_selftest_dpaa2); REGISTER_DRIVER_TEST(eventdev_selftest_dlb2, test_eventdev_selftest_dlb2); diff --git a/app/test/test_fbarray.c b/app/test/test_fbarray.c index 6ca509b898c..dd7e60d1e0b 100644 --- a/app/test/test_fbarray.c +++ b/app/test/test_fbarray.c @@ -933,4 +933,4 @@ test_fbarray(void) return unit_test_suite_runner(&fbarray_test_suite); } -REGISTER_FAST_TEST(fbarray_autotest, true, true, test_fbarray); +REGISTER_FAST_TEST(fbarray_autotest, NOHUGE_OK, ASAN_OK, test_fbarray); diff --git a/app/test/test_fib.c b/app/test/test_fib.c index ecd3fb4297a..bd73399d565 100644 --- a/app/test/test_fib.c +++ b/app/test/test_fib.c @@ -629,5 +629,5 @@ test_slow_fib(void) return unit_test_suite_runner(&fib_slow_tests); } -REGISTER_FAST_TEST(fib_autotest, true, true, test_fib); +REGISTER_FAST_TEST(fib_autotest, NOHUGE_OK, ASAN_OK, test_fib); REGISTER_PERF_TEST(fib_slow_autotest, test_slow_fib); diff --git a/app/test/test_fib6.c b/app/test/test_fib6.c index 843a4086c1c..fffb590dbfe 100644 --- a/app/test/test_fib6.c +++ b/app/test/test_fib6.c @@ -640,5 +640,5 @@ test_slow_fib6(void) return unit_test_suite_runner(&fib6_slow_tests); } -REGISTER_FAST_TEST(fib6_autotest, true, true, test_fib6); +REGISTER_FAST_TEST(fib6_autotest, NOHUGE_OK, ASAN_OK, test_fib6); REGISTER_PERF_TEST(fib6_slow_autotest, test_slow_fib6); diff --git a/app/test/test_func_reentrancy.c b/app/test/test_func_reentrancy.c index 51e30696111..ce55ab991e7 100644 --- a/app/test/test_func_reentrancy.c +++ b/app/test/test_func_reentrancy.c @@ -511,4 +511,4 @@ test_func_reentrancy(void) return 0; } -REGISTER_FAST_TEST(func_reentrancy_autotest, false, true, test_func_reentrancy); +REGISTER_FAST_TEST(func_reentrancy_autotest, NOHUGE_SKIP, ASAN_OK, test_func_reentrancy); diff --git a/app/test/test_graph.c b/app/test/test_graph.c index 635b8dd527a..042fc9d3a2e 100644 --- a/app/test/test_graph.c +++ b/app/test/test_graph.c @@ -1150,7 +1150,7 @@ graph_autotest_fn(void) return unit_test_suite_runner(&graph_testsuite); } -REGISTER_FAST_TEST(graph_autotest, true, true, graph_autotest_fn); +REGISTER_FAST_TEST(graph_autotest, NOHUGE_OK, ASAN_OK, graph_autotest_fn); static int test_node_list_dump(void) @@ -1162,4 +1162,4 @@ test_node_list_dump(void) #endif /* !RTE_EXEC_ENV_WINDOWS */ -REGISTER_FAST_TEST(node_list_dump, true, true, test_node_list_dump); +REGISTER_FAST_TEST(node_list_dump, NOHUGE_OK, ASAN_OK, test_node_list_dump); diff --git a/app/test/test_graph_feature_arc.c b/app/test/test_graph_feature_arc.c index 6d445e68657..1a4bdeee497 100644 --- a/app/test/test_graph_feature_arc.c +++ b/app/test/test_graph_feature_arc.c @@ -1368,6 +1368,6 @@ graph_feature_arc_autotest_fn(void) return unit_test_suite_runner(&graph_feature_arc_testsuite); } -REGISTER_FAST_TEST(graph_feature_arc_autotest, true, true, graph_feature_arc_autotest_fn); +REGISTER_FAST_TEST(graph_feature_arc_autotest, NOHUGE_OK, ASAN_OK, graph_feature_arc_autotest_fn); #endif /* !RTE_EXEC_ENV_WINDOWS */ diff --git a/app/test/test_hash.c b/app/test/test_hash.c index 5791fd7f4c5..a70e2620c0e 100644 --- a/app/test/test_hash.c +++ b/app/test/test_hash.c @@ -2405,4 +2405,4 @@ test_hash(void) return 0; } -REGISTER_FAST_TEST(hash_autotest, true, true, test_hash); +REGISTER_FAST_TEST(hash_autotest, NOHUGE_OK, ASAN_OK, test_hash); diff --git a/app/test/test_hash_readwrite.c b/app/test/test_hash_readwrite.c index 4d140439e4e..25fe072fc99 100644 --- a/app/test/test_hash_readwrite.c +++ b/app/test/test_hash_readwrite.c @@ -775,5 +775,5 @@ test_hash_rw_func_main(void) return 0; } -REGISTER_FAST_TEST(hash_readwrite_func_autotest, false, true, test_hash_rw_func_main); +REGISTER_FAST_TEST(hash_readwrite_func_autotest, NOHUGE_SKIP, ASAN_OK, test_hash_rw_func_main); REGISTER_PERF_TEST(hash_readwrite_perf_autotest, test_hash_rw_perf_main); diff --git a/app/test/test_interrupts.c b/app/test/test_interrupts.c index 3952f9685fd..2eb876e65a7 100644 --- a/app/test/test_interrupts.c +++ b/app/test/test_interrupts.c @@ -594,4 +594,4 @@ test_interrupt(void) return ret; } -REGISTER_FAST_TEST(interrupt_autotest, true, true, test_interrupt); +REGISTER_FAST_TEST(interrupt_autotest, NOHUGE_OK, ASAN_OK, test_interrupt); diff --git a/app/test/test_ipfrag.c b/app/test/test_ipfrag.c index 95d7952b4dc..247575d6c58 100644 --- a/app/test/test_ipfrag.c +++ b/app/test/test_ipfrag.c @@ -505,4 +505,4 @@ test_ipfrag(void) } -REGISTER_FAST_TEST(ipfrag_autotest, false, true, test_ipfrag); +REGISTER_FAST_TEST(ipfrag_autotest, NOHUGE_SKIP, ASAN_OK, test_ipfrag); diff --git a/app/test/test_ipsec.c b/app/test/test_ipsec.c index ac63c3b6d37..139c1e8dec4 100644 --- a/app/test/test_ipsec.c +++ b/app/test/test_ipsec.c @@ -2617,4 +2617,4 @@ test_ipsec(void) #endif /* !RTE_EXEC_ENV_WINDOWS */ -REGISTER_FAST_TEST(ipsec_autotest, true, true, test_ipsec); +REGISTER_FAST_TEST(ipsec_autotest, NOHUGE_OK, ASAN_OK, test_ipsec); diff --git a/app/test/test_kvargs.c b/app/test/test_kvargs.c index 43bb7a02438..a14b75948a6 100644 --- a/app/test/test_kvargs.c +++ b/app/test/test_kvargs.c @@ -364,4 +364,4 @@ test_kvargs(void) return unit_test_suite_runner(&kvargs_test_suite); } -REGISTER_FAST_TEST(kvargs_autotest, true, true, test_kvargs); +REGISTER_FAST_TEST(kvargs_autotest, NOHUGE_OK, ASAN_OK, test_kvargs); diff --git a/app/test/test_latencystats.c b/app/test/test_latencystats.c index 676a99d385b..c421e810079 100644 --- a/app/test/test_latencystats.c +++ b/app/test/test_latencystats.c @@ -246,4 +246,4 @@ static int test_latencystats(void) return unit_test_suite_runner(&latencystats_testsuite); } -REGISTER_FAST_TEST(latencystats_autotest, true, true, test_latencystats); +REGISTER_FAST_TEST(latencystats_autotest, NOHUGE_OK, ASAN_OK, test_latencystats); diff --git a/app/test/test_lcore_var.c b/app/test/test_lcore_var.c index bcf785b3210..32d7f4c58ef 100644 --- a/app/test/test_lcore_var.c +++ b/app/test/test_lcore_var.c @@ -411,4 +411,4 @@ static int test_lcore_var(void) return unit_test_suite_runner(&lcore_var_testsuite); } -REGISTER_FAST_TEST(lcore_var_autotest, true, false, test_lcore_var); +REGISTER_FAST_TEST(lcore_var_autotest, NOHUGE_OK, ASAN_SKIP, test_lcore_var); diff --git a/app/test/test_lcores.c b/app/test/test_lcores.c index bd5c0dd94b6..13842615d5b 100644 --- a/app/test/test_lcores.c +++ b/app/test/test_lcores.c @@ -422,4 +422,4 @@ test_lcores(void) return TEST_SUCCESS; } -REGISTER_FAST_TEST(lcores_autotest, true, true, test_lcores); +REGISTER_FAST_TEST(lcores_autotest, NOHUGE_OK, ASAN_OK, test_lcores); diff --git a/app/test/test_logs.c b/app/test/test_logs.c index 43b09704a3f..375b06a1b7d 100644 --- a/app/test/test_logs.c +++ b/app/test/test_logs.c @@ -158,4 +158,4 @@ test_logs(void) return 0; } -REGISTER_FAST_TEST(logs_autotest, true, true, test_logs); +REGISTER_FAST_TEST(logs_autotest, NOHUGE_OK, ASAN_OK, test_logs); diff --git a/app/test/test_lpm.c b/app/test/test_lpm.c index b93e11d7003..f4a8031062e 100644 --- a/app/test/test_lpm.c +++ b/app/test/test_lpm.c @@ -1584,4 +1584,4 @@ test_lpm(void) return global_status; } -REGISTER_FAST_TEST(lpm_autotest, true, true, test_lpm); +REGISTER_FAST_TEST(lpm_autotest, NOHUGE_OK, ASAN_OK, test_lpm); diff --git a/app/test/test_lpm6.c b/app/test/test_lpm6.c index b930fa3f0c1..7340331848e 100644 --- a/app/test/test_lpm6.c +++ b/app/test/test_lpm6.c @@ -1767,4 +1767,4 @@ test_lpm6(void) return global_status; } -REGISTER_FAST_TEST(lpm6_autotest, true, true, test_lpm6); +REGISTER_FAST_TEST(lpm6_autotest, NOHUGE_OK, ASAN_OK, test_lpm6); diff --git a/app/test/test_malloc.c b/app/test/test_malloc.c index ce8fc5dd06d..344a730e285 100644 --- a/app/test/test_malloc.c +++ b/app/test/test_malloc.c @@ -1166,4 +1166,4 @@ test_malloc(void) return unit_test_suite_runner(&test_suite); } -REGISTER_FAST_TEST(malloc_autotest, false, true, test_malloc); +REGISTER_FAST_TEST(malloc_autotest, NOHUGE_SKIP, ASAN_OK, test_malloc); diff --git a/app/test/test_mbuf.c b/app/test/test_mbuf.c index 17be977f315..7afaee80676 100644 --- a/app/test/test_mbuf.c +++ b/app/test/test_mbuf.c @@ -2953,4 +2953,4 @@ test_mbuf(void) } #undef GOTO_FAIL -REGISTER_FAST_TEST(mbuf_autotest, false, true, test_mbuf); +REGISTER_FAST_TEST(mbuf_autotest, NOHUGE_SKIP, ASAN_OK, test_mbuf); diff --git a/app/test/test_mcslock.c b/app/test/test_mcslock.c index 8fcbc11a08d..245df99a5df 100644 --- a/app/test/test_mcslock.c +++ b/app/test/test_mcslock.c @@ -241,4 +241,4 @@ test_mcslock(void) return ret; } -REGISTER_FAST_TEST(mcslock_autotest, false, true, test_mcslock); +REGISTER_FAST_TEST(mcslock_autotest, NOHUGE_SKIP, ASAN_OK, test_mcslock); diff --git a/app/test/test_member.c b/app/test/test_member.c index a93787a10ce..23447196c3a 100644 --- a/app/test/test_member.c +++ b/app/test/test_member.c @@ -996,4 +996,4 @@ test_member(void) #endif /* !RTE_EXEC_ENV_WINDOWS */ -REGISTER_FAST_TEST(member_autotest, true, true, test_member); +REGISTER_FAST_TEST(member_autotest, NOHUGE_OK, ASAN_OK, test_member); diff --git a/app/test/test_memcpy.c b/app/test/test_memcpy.c index 802dc4631bd..7273c17a060 100644 --- a/app/test/test_memcpy.c +++ b/app/test/test_memcpy.c @@ -129,4 +129,4 @@ test_memcpy(void) return 0; } -REGISTER_FAST_TEST(memcpy_autotest, true, true, test_memcpy); +REGISTER_FAST_TEST(memcpy_autotest, NOHUGE_OK, ASAN_OK, test_memcpy); diff --git a/app/test/test_memory.c b/app/test/test_memory.c index ea37f62338e..628714c0b84 100644 --- a/app/test/test_memory.c +++ b/app/test/test_memory.c @@ -110,4 +110,4 @@ test_memory(void) return 0; } -REGISTER_FAST_TEST(memory_autotest, false, true, test_memory); +REGISTER_FAST_TEST(memory_autotest, NOHUGE_SKIP, ASAN_OK, test_memory); diff --git a/app/test/test_mempool.c b/app/test/test_mempool.c index 63356998fd2..e54249ce618 100644 --- a/app/test/test_mempool.c +++ b/app/test/test_mempool.c @@ -1122,4 +1122,4 @@ test_mempool(void) return ret; } -REGISTER_FAST_TEST(mempool_autotest, false, true, test_mempool); +REGISTER_FAST_TEST(mempool_autotest, NOHUGE_SKIP, ASAN_OK, test_mempool); diff --git a/app/test/test_memzone.c b/app/test/test_memzone.c index 506725ea41a..5094d15159a 100644 --- a/app/test/test_memzone.c +++ b/app/test/test_memzone.c @@ -1162,4 +1162,4 @@ test_memzone(void) return 0; } -REGISTER_FAST_TEST(memzone_autotest, false, true, test_memzone); +REGISTER_FAST_TEST(memzone_autotest, NOHUGE_SKIP, ASAN_OK, test_memzone); diff --git a/app/test/test_meter.c b/app/test/test_meter.c index 6241b75ba0c..6e7ab20e270 100644 --- a/app/test/test_meter.c +++ b/app/test/test_meter.c @@ -713,4 +713,4 @@ test_meter(void) } -REGISTER_FAST_TEST(meter_autotest, true, true, test_meter); +REGISTER_FAST_TEST(meter_autotest, NOHUGE_OK, ASAN_OK, test_meter); diff --git a/app/test/test_metrics.c b/app/test/test_metrics.c index 917bee2e37f..b1c7694b411 100644 --- a/app/test/test_metrics.c +++ b/app/test/test_metrics.c @@ -326,4 +326,4 @@ test_metrics(void) return unit_test_suite_runner(&metrics_testsuite); } -REGISTER_FAST_TEST(metrics_autotest, true, true, test_metrics); +REGISTER_FAST_TEST(metrics_autotest, NOHUGE_OK, ASAN_OK, test_metrics); diff --git a/app/test/test_mp_secondary.c b/app/test/test_mp_secondary.c index f3694530a86..ec176774d4e 100644 --- a/app/test/test_mp_secondary.c +++ b/app/test/test_mp_secondary.c @@ -223,4 +223,4 @@ test_mp_secondary(void) #endif /* !RTE_EXEC_ENV_WINDOWS */ -REGISTER_FAST_TEST(multiprocess_autotest, false, false, test_mp_secondary); +REGISTER_FAST_TEST(multiprocess_autotest, NOHUGE_SKIP, ASAN_SKIP, test_mp_secondary); diff --git a/app/test/test_net_ether.c b/app/test/test_net_ether.c index 1cb6845a9c4..ec112241711 100644 --- a/app/test/test_net_ether.c +++ b/app/test/test_net_ether.c @@ -162,4 +162,4 @@ test_net_ether(void) return 0; } -REGISTER_FAST_TEST(net_ether_autotest, true, true, test_net_ether); +REGISTER_FAST_TEST(net_ether_autotest, NOHUGE_OK, ASAN_OK, test_net_ether); diff --git a/app/test/test_net_ip6.c b/app/test/test_net_ip6.c index e4642c9a39d..bf4bc5c8227 100644 --- a/app/test/test_net_ip6.c +++ b/app/test/test_net_ip6.c @@ -218,4 +218,4 @@ test_net_ipv6(void) return TEST_SUCCESS; } -REGISTER_FAST_TEST(net_ipv6_autotest, true, true, test_net_ipv6); +REGISTER_FAST_TEST(net_ipv6_autotest, NOHUGE_OK, ASAN_OK, test_net_ipv6); diff --git a/app/test/test_pcapng.c b/app/test/test_pcapng.c index bcf99724fa1..5d362ec70e1 100644 --- a/app/test/test_pcapng.c +++ b/app/test/test_pcapng.c @@ -464,4 +464,4 @@ test_pcapng(void) return unit_test_suite_runner(&test_pcapng_suite); } -REGISTER_FAST_TEST(pcapng_autotest, true, true, test_pcapng); +REGISTER_FAST_TEST(pcapng_autotest, NOHUGE_OK, ASAN_OK, test_pcapng); diff --git a/app/test/test_pdcp.c b/app/test/test_pdcp.c index 0a2827f2ef1..784e2dddd90 100644 --- a/app/test/test_pdcp.c +++ b/app/test/test_pdcp.c @@ -2388,4 +2388,4 @@ test_pdcp(void) return ret; } -REGISTER_FAST_TEST(pdcp_autotest, false, true, test_pdcp); +REGISTER_FAST_TEST(pdcp_autotest, NOHUGE_SKIP, ASAN_OK, test_pdcp); diff --git a/app/test/test_pdump.c b/app/test/test_pdump.c index 9f7769707e9..61a7d7f863a 100644 --- a/app/test/test_pdump.c +++ b/app/test/test_pdump.c @@ -219,4 +219,4 @@ test_pdump(void) return TEST_SUCCESS; } -REGISTER_FAST_TEST(pdump_autotest, true, false, test_pdump); +REGISTER_FAST_TEST(pdump_autotest, NOHUGE_OK, ASAN_SKIP, test_pdump); diff --git a/app/test/test_per_lcore.c b/app/test/test_per_lcore.c index e0674b0e700..6e7ba072fdb 100644 --- a/app/test/test_per_lcore.c +++ b/app/test/test_per_lcore.c @@ -118,4 +118,4 @@ test_per_lcore(void) return 0; } -REGISTER_FAST_TEST(per_lcore_autotest, true, true, test_per_lcore); +REGISTER_FAST_TEST(per_lcore_autotest, NOHUGE_OK, ASAN_OK, test_per_lcore); diff --git a/app/test/test_pflock.c b/app/test/test_pflock.c index 162049201f5..4164a427897 100644 --- a/app/test/test_pflock.c +++ b/app/test/test_pflock.c @@ -194,4 +194,4 @@ test_pflock(void) return 0; } -REGISTER_FAST_TEST(pflock_autotest, true, true, test_pflock); +REGISTER_FAST_TEST(pflock_autotest, NOHUGE_OK, ASAN_OK, test_pflock); diff --git a/app/test/test_pie.c b/app/test/test_pie.c index 72ef3869d0c..6be0fd06220 100644 --- a/app/test/test_pie.c +++ b/app/test/test_pie.c @@ -1082,6 +1082,6 @@ test_pie_all(void) #endif /* !RTE_EXEC_ENV_WINDOWS */ -REGISTER_FAST_TEST(pie_autotest, true, true, test_pie); +REGISTER_FAST_TEST(pie_autotest, NOHUGE_OK, ASAN_OK, test_pie); REGISTER_PERF_TEST(pie_perf, test_pie_perf); REGISTER_PERF_TEST(pie_all, test_pie_all); diff --git a/app/test/test_pmd_ring.c b/app/test/test_pmd_ring.c index e83b9dd6b82..cb08dcf1d95 100644 --- a/app/test/test_pmd_ring.c +++ b/app/test/test_pmd_ring.c @@ -593,4 +593,4 @@ test_pmd_ring(void) return unit_test_suite_runner(&test_pmd_ring_suite); } -REGISTER_FAST_TEST(ring_pmd_autotest, true, true, test_pmd_ring); +REGISTER_FAST_TEST(ring_pmd_autotest, NOHUGE_OK, ASAN_OK, test_pmd_ring); diff --git a/app/test/test_pmu.c b/app/test/test_pmu.c index 10513bf9c91..62ce8911fc9 100644 --- a/app/test/test_pmu.c +++ b/app/test/test_pmu.c @@ -53,5 +53,5 @@ test_pmu(void) } /* disabled because of reported failures, waiting for a fix - * REGISTER_FAST_TEST(pmu_autotest, true, true, test_pmu); + * REGISTER_FAST_TEST(pmu_autotest, NOHUGE_OK, ASAN_OK, test_pmu); */ diff --git a/app/test/test_power.c b/app/test/test_power.c index 38507411bdb..34119c171c2 100644 --- a/app/test/test_power.c +++ b/app/test/test_power.c @@ -78,4 +78,4 @@ test_power(void) } #endif -REGISTER_FAST_TEST(power_autotest, true, true, test_power); +REGISTER_FAST_TEST(power_autotest, NOHUGE_OK, ASAN_OK, test_power); diff --git a/app/test/test_power_cpufreq.c b/app/test/test_power_cpufreq.c index 0331b37fe05..96de255f271 100644 --- a/app/test/test_power_cpufreq.c +++ b/app/test/test_power_cpufreq.c @@ -678,5 +678,5 @@ test_power_caps(void) #endif -REGISTER_FAST_TEST(power_cpufreq_autotest, false, true, test_power_cpufreq); +REGISTER_FAST_TEST(power_cpufreq_autotest, NOHUGE_SKIP, ASAN_OK, test_power_cpufreq); REGISTER_TEST_COMMAND(power_caps_autotest, test_power_caps); diff --git a/app/test/test_power_intel_uncore.c b/app/test/test_power_intel_uncore.c index 973dc7a9453..9af019a4686 100644 --- a/app/test/test_power_intel_uncore.c +++ b/app/test/test_power_intel_uncore.c @@ -303,4 +303,4 @@ test_power_intel_uncore(void) } #endif -REGISTER_FAST_TEST(power_intel_uncore_autotest, true, true, test_power_intel_uncore); +REGISTER_FAST_TEST(power_intel_uncore_autotest, NOHUGE_OK, ASAN_OK, test_power_intel_uncore); diff --git a/app/test/test_power_kvm_vm.c b/app/test/test_power_kvm_vm.c index 1c72ba5a4e9..fa8e8022ca8 100644 --- a/app/test/test_power_kvm_vm.c +++ b/app/test/test_power_kvm_vm.c @@ -263,4 +263,4 @@ test_power_kvm_vm(void) } #endif -REGISTER_FAST_TEST(power_kvm_vm_autotest, false, true, test_power_kvm_vm); +REGISTER_FAST_TEST(power_kvm_vm_autotest, NOHUGE_SKIP, ASAN_OK, test_power_kvm_vm); diff --git a/app/test/test_prefetch.c b/app/test/test_prefetch.c index 46e6828e6a8..212a79da817 100644 --- a/app/test/test_prefetch.c +++ b/app/test/test_prefetch.c @@ -35,4 +35,4 @@ test_prefetch(void) return 0; } -REGISTER_FAST_TEST(prefetch_autotest, true, true, test_prefetch); +REGISTER_FAST_TEST(prefetch_autotest, NOHUGE_OK, ASAN_OK, test_prefetch); diff --git a/app/test/test_ptr_compress.c b/app/test/test_ptr_compress.c index 807b19eaf63..c40fe36c912 100644 --- a/app/test/test_ptr_compress.c +++ b/app/test/test_ptr_compress.c @@ -190,4 +190,4 @@ test_ptr_compress(void) return 0; } -REGISTER_FAST_TEST(ptr_compress_autotest, true, true, test_ptr_compress); +REGISTER_FAST_TEST(ptr_compress_autotest, NOHUGE_OK, ASAN_OK, test_ptr_compress); diff --git a/app/test/test_rawdev.c b/app/test/test_rawdev.c index d1d250c9ac0..aece7b655cd 100644 --- a/app/test/test_rawdev.c +++ b/app/test/test_rawdev.c @@ -74,4 +74,4 @@ test_rawdev_selftests(void) #endif /* !RTE_EXEC_ENV_WINDOWS */ -REGISTER_FAST_TEST(rawdev_autotest, true, true, test_rawdev_selftests); +REGISTER_FAST_TEST(rawdev_autotest, NOHUGE_OK, ASAN_OK, test_rawdev_selftests); diff --git a/app/test/test_rcu_qsbr.c b/app/test/test_rcu_qsbr.c index 72d8e0377e8..05ad1ab5dd9 100644 --- a/app/test/test_rcu_qsbr.c +++ b/app/test/test_rcu_qsbr.c @@ -1418,4 +1418,4 @@ test_rcu_qsbr_main(void) return -1; } -REGISTER_FAST_TEST(rcu_qsbr_autotest, true, true, test_rcu_qsbr_main); +REGISTER_FAST_TEST(rcu_qsbr_autotest, NOHUGE_OK, ASAN_OK, test_rcu_qsbr_main); diff --git a/app/test/test_reorder.c b/app/test/test_reorder.c index aaa2c570860..8c68e00869b 100644 --- a/app/test/test_reorder.c +++ b/app/test/test_reorder.c @@ -552,4 +552,4 @@ test_reorder(void) } -REGISTER_FAST_TEST(reorder_autotest, true, true, test_reorder); +REGISTER_FAST_TEST(reorder_autotest, NOHUGE_OK, ASAN_OK, test_reorder); diff --git a/app/test/test_rib.c b/app/test/test_rib.c index c7454f2c475..a4a683140df 100644 --- a/app/test/test_rib.c +++ b/app/test/test_rib.c @@ -363,5 +363,5 @@ test_slow_rib(void) return unit_test_suite_runner(&rib_slow_tests); } -REGISTER_FAST_TEST(rib_autotest, true, true, test_rib); +REGISTER_FAST_TEST(rib_autotest, NOHUGE_OK, ASAN_OK, test_rib); REGISTER_PERF_TEST(rib_slow_autotest, test_slow_rib); diff --git a/app/test/test_rib6.c b/app/test/test_rib6.c index ba54a3794ea..0295a9640cf 100644 --- a/app/test/test_rib6.c +++ b/app/test/test_rib6.c @@ -362,5 +362,5 @@ test_slow_rib6(void) return unit_test_suite_runner(&rib6_slow_tests); } -REGISTER_FAST_TEST(rib6_autotest, true, true, test_rib6); +REGISTER_FAST_TEST(rib6_autotest, NOHUGE_OK, ASAN_OK, test_rib6); REGISTER_PERF_TEST(rib6_slow_autotest, test_slow_rib6); diff --git a/app/test/test_ring.c b/app/test/test_ring.c index 3078348b2fe..015623659f8 100644 --- a/app/test/test_ring.c +++ b/app/test/test_ring.c @@ -1248,4 +1248,4 @@ test_ring(void) return -1; } -REGISTER_FAST_TEST(ring_autotest, true, true, test_ring); +REGISTER_FAST_TEST(ring_autotest, NOHUGE_OK, ASAN_OK, test_ring); diff --git a/app/test/test_rwlock.c b/app/test/test_rwlock.c index 785317621dd..a2f37add34b 100644 --- a/app/test/test_rwlock.c +++ b/app/test/test_rwlock.c @@ -507,7 +507,7 @@ try_rwlock_test_rde_wro(void) return process_try_lcore_stats(); } -REGISTER_FAST_TEST(rwlock_test1_autotest, true, true, rwlock_test1); -REGISTER_FAST_TEST(rwlock_rda_autotest, true, true, try_rwlock_test_rda); -REGISTER_FAST_TEST(rwlock_rds_wrm_autotest, true, true, try_rwlock_test_rds_wrm); -REGISTER_FAST_TEST(rwlock_rde_wro_autotest, true, true, try_rwlock_test_rde_wro); +REGISTER_FAST_TEST(rwlock_test1_autotest, NOHUGE_OK, ASAN_OK, rwlock_test1); +REGISTER_FAST_TEST(rwlock_rda_autotest, NOHUGE_OK, ASAN_OK, try_rwlock_test_rda); +REGISTER_FAST_TEST(rwlock_rds_wrm_autotest, NOHUGE_OK, ASAN_OK, try_rwlock_test_rds_wrm); +REGISTER_FAST_TEST(rwlock_rde_wro_autotest, NOHUGE_OK, ASAN_OK, try_rwlock_test_rde_wro); diff --git a/app/test/test_sched.c b/app/test/test_sched.c index 6daee90bca4..96b48f18976 100644 --- a/app/test/test_sched.c +++ b/app/test/test_sched.c @@ -215,4 +215,4 @@ test_sched(void) #endif /* !RTE_EXEC_ENV_WINDOWS */ -REGISTER_FAST_TEST(sched_autotest, true, true, test_sched); +REGISTER_FAST_TEST(sched_autotest, NOHUGE_OK, ASAN_OK, test_sched); diff --git a/app/test/test_security.c b/app/test/test_security.c index 23fc7ffb4f4..be8427b28d2 100644 --- a/app/test/test_security.c +++ b/app/test/test_security.c @@ -2314,4 +2314,4 @@ test_security(void) return unit_test_suite_runner(&security_testsuite); } -REGISTER_FAST_TEST(security_autotest, false, true, test_security); +REGISTER_FAST_TEST(security_autotest, NOHUGE_SKIP, ASAN_OK, test_security); diff --git a/app/test/test_seqlock.c b/app/test/test_seqlock.c index c5e5e645cb8..bd54b5fa61b 100644 --- a/app/test/test_seqlock.c +++ b/app/test/test_seqlock.c @@ -187,4 +187,4 @@ test_seqlock(void) return rc; } -REGISTER_FAST_TEST(seqlock_autotest, true, true, test_seqlock); +REGISTER_FAST_TEST(seqlock_autotest, NOHUGE_OK, ASAN_OK, test_seqlock); diff --git a/app/test/test_service_cores.c b/app/test/test_service_cores.c index d95a71f80b8..ff04472616d 100644 --- a/app/test/test_service_cores.c +++ b/app/test/test_service_cores.c @@ -1081,7 +1081,7 @@ test_service_common(void) return unit_test_suite_runner(&service_tests); } -REGISTER_FAST_TEST(service_autotest, true, true, test_service_common); +REGISTER_FAST_TEST(service_autotest, NOHUGE_OK, ASAN_OK, test_service_common); static struct unit_test_suite service_perf_tests = { .suite_name = "service core performance test suite", diff --git a/app/test/test_soring.c b/app/test/test_soring.c index 3c1944424e5..52852692d43 100644 --- a/app/test/test_soring.c +++ b/app/test/test_soring.c @@ -438,4 +438,4 @@ test_soring(void) return -1; } -REGISTER_FAST_TEST(soring_autotest, true, true, test_soring); +REGISTER_FAST_TEST(soring_autotest, NOHUGE_OK, ASAN_OK, test_soring); diff --git a/app/test/test_spinlock.c b/app/test/test_spinlock.c index 34e0ef9422f..a2ac5df4277 100644 --- a/app/test/test_spinlock.c +++ b/app/test/test_spinlock.c @@ -303,4 +303,4 @@ test_spinlock(void) return ret; } -REGISTER_FAST_TEST(spinlock_autotest, true, true, test_spinlock); +REGISTER_FAST_TEST(spinlock_autotest, NOHUGE_OK, ASAN_OK, test_spinlock); diff --git a/app/test/test_stack.c b/app/test/test_stack.c index 9150cc9fed1..abc31147295 100644 --- a/app/test/test_stack.c +++ b/app/test/test_stack.c @@ -379,5 +379,5 @@ test_lf_stack(void) #endif } -REGISTER_FAST_TEST(stack_autotest, false, true, test_stack); -REGISTER_FAST_TEST(stack_lf_autotest, false, true, test_lf_stack); +REGISTER_FAST_TEST(stack_autotest, NOHUGE_SKIP, ASAN_OK, test_stack); +REGISTER_FAST_TEST(stack_lf_autotest, NOHUGE_SKIP, ASAN_OK, test_lf_stack); diff --git a/app/test/test_string_fns.c b/app/test/test_string_fns.c index 1a2830575e7..786eda9e49b 100644 --- a/app/test/test_string_fns.c +++ b/app/test/test_string_fns.c @@ -328,4 +328,4 @@ test_string_fns(void) return 0; } -REGISTER_FAST_TEST(string_autotest, true, true, test_string_fns); +REGISTER_FAST_TEST(string_autotest, NOHUGE_OK, ASAN_OK, test_string_fns); diff --git a/app/test/test_table.c b/app/test/test_table.c index 27d2407517b..20623b87352 100644 --- a/app/test/test_table.c +++ b/app/test/test_table.c @@ -206,4 +206,4 @@ test_table(void) #endif /* !RTE_EXEC_ENV_WINDOWS */ -REGISTER_FAST_TEST(table_autotest, true, true, test_table); +REGISTER_FAST_TEST(table_autotest, NOHUGE_OK, ASAN_OK, test_table); diff --git a/app/test/test_tailq.c b/app/test/test_tailq.c index 2ff28773443..34bde52c036 100644 --- a/app/test/test_tailq.c +++ b/app/test/test_tailq.c @@ -125,4 +125,4 @@ test_tailq(void) return ret; } -REGISTER_FAST_TEST(tailq_autotest, true, true, test_tailq); +REGISTER_FAST_TEST(tailq_autotest, NOHUGE_OK, ASAN_OK, test_tailq); diff --git a/app/test/test_telemetry_data.c b/app/test/test_telemetry_data.c index 59898ff5e98..def282434b6 100644 --- a/app/test/test_telemetry_data.c +++ b/app/test/test_telemetry_data.c @@ -615,4 +615,4 @@ telemetry_data_autotest(void) } #endif /* !RTE_EXEC_ENV_WINDOWS */ -REGISTER_FAST_TEST(telemetry_data_autotest, true, true, telemetry_data_autotest); +REGISTER_FAST_TEST(telemetry_data_autotest, NOHUGE_OK, ASAN_OK, telemetry_data_autotest); diff --git a/app/test/test_telemetry_json.c b/app/test/test_telemetry_json.c index 758e89303f5..96d74fe378e 100644 --- a/app/test/test_telemetry_json.c +++ b/app/test/test_telemetry_json.c @@ -213,4 +213,4 @@ test_telemetry_json(void) return 0; } -REGISTER_FAST_TEST(telemetry_json_autotest, true, true, test_telemetry_json); +REGISTER_FAST_TEST(telemetry_json_autotest, NOHUGE_OK, ASAN_OK, test_telemetry_json); diff --git a/app/test/test_thash.c b/app/test/test_thash.c index f43a5ddd2b5..eeb2e87f2c6 100644 --- a/app/test/test_thash.c +++ b/app/test/test_thash.c @@ -1060,4 +1060,4 @@ test_thash(void) return unit_test_suite_runner(&thash_tests); } -REGISTER_FAST_TEST(thash_autotest, true, true, test_thash); +REGISTER_FAST_TEST(thash_autotest, NOHUGE_OK, ASAN_OK, test_thash); diff --git a/app/test/test_threads.c b/app/test/test_threads.c index 6d6881a4f66..5cd8bd45598 100644 --- a/app/test/test_threads.c +++ b/app/test/test_threads.c @@ -280,4 +280,4 @@ test_threads(void) return unit_test_suite_runner(&threads_test_suite); } -REGISTER_FAST_TEST(threads_autotest, true, true, test_threads); +REGISTER_FAST_TEST(threads_autotest, NOHUGE_OK, ASAN_OK, test_threads); diff --git a/app/test/test_ticketlock.c b/app/test/test_ticketlock.c index 8ac2e908760..22d17e259bf 100644 --- a/app/test/test_ticketlock.c +++ b/app/test/test_ticketlock.c @@ -315,4 +315,4 @@ test_ticketlock(void) return ret; } -REGISTER_FAST_TEST(ticketlock_autotest, true, true, test_ticketlock); +REGISTER_FAST_TEST(ticketlock_autotest, NOHUGE_OK, ASAN_OK, test_ticketlock); diff --git a/app/test/test_timer.c b/app/test/test_timer.c index 3411b7fe203..c936843ddc9 100644 --- a/app/test/test_timer.c +++ b/app/test/test_timer.c @@ -601,4 +601,4 @@ test_timer(void) return TEST_SUCCESS; } -REGISTER_FAST_TEST(timer_autotest, false, true, test_timer); +REGISTER_FAST_TEST(timer_autotest, NOHUGE_SKIP, ASAN_OK, test_timer); diff --git a/app/test/test_trace.c b/app/test/test_trace.c index 52b5ba5cbb0..97dc69f68c3 100644 --- a/app/test/test_trace.c +++ b/app/test/test_trace.c @@ -254,4 +254,4 @@ test_trace(void) #endif /* !RTE_EXEC_ENV_WINDOWS */ -REGISTER_FAST_TEST(trace_autotest, true, true, test_trace); +REGISTER_FAST_TEST(trace_autotest, NOHUGE_OK, ASAN_OK, test_trace); diff --git a/app/test/test_vdev.c b/app/test/test_vdev.c index 3e262f30bc6..49286194c3a 100644 --- a/app/test/test_vdev.c +++ b/app/test/test_vdev.c @@ -166,4 +166,4 @@ test_vdev(void) return 0; } -REGISTER_FAST_TEST(vdev_autotest, true, true, test_vdev); +REGISTER_FAST_TEST(vdev_autotest, NOHUGE_OK, ASAN_OK, test_vdev); diff --git a/app/test/test_version.c b/app/test/test_version.c index 52f269fb9cb..ba801acc22f 100644 --- a/app/test/test_version.c +++ b/app/test/test_version.c @@ -25,4 +25,4 @@ test_version(void) return 0; } -REGISTER_FAST_TEST(version_autotest, true, true, test_version); +REGISTER_FAST_TEST(version_autotest, NOHUGE_OK, ASAN_OK, test_version); diff --git a/buildtools/get-test-suites.py b/buildtools/get-test-suites.py index c3a99a862e3..73f1d9c9e1d 100644 --- a/buildtools/get-test-suites.py +++ b/buildtools/get-test-suites.py @@ -18,7 +18,7 @@ def get_fast_test_params(test_name, ln): "Extract the extra fast-test parameters from the line" (_, rest_of_line) = ln.split(test_name, 1) (_, nohuge, asan, _func) = rest_of_line.split(',', 3) - return f":{nohuge.strip().lower()}:{asan.strip().lower()}" + return f":{nohuge.strip()}:{asan.strip()}" for fname in input_list: with open(fname, "r", encoding="utf-8") as f: diff --git a/doc/guides/contributing/unit_test.rst b/doc/guides/contributing/unit_test.rst index c0f0d2988f0..0c769212996 100644 --- a/doc/guides/contributing/unit_test.rst +++ b/doc/guides/contributing/unit_test.rst @@ -188,9 +188,11 @@ There are two important functions for interacting with the test harness: The test is automatically added to the Meson test suite `` by this macro. Examples would be ``REGISTER_DRIVER_TEST``, or ``REGISTER_PERF_TEST``. **NOTE:** The ``REGISTER_FAST_TEST`` macro is slightly different, - in that it takes two additional parameters, - specifying whether the test can be run using ``--no-huge``, - and whether the test can be run using Address Sanitization (ASAN) + in that it takes two additional parameters before the function name: + the hugepage requirement (``NOHUGE_OK`` if the test can run without hugepages, + or ``NOHUGE_SKIP`` if hugepages are required), + and Address Sanitizer compatibility (``ASAN_OK`` if the test can run with ASan enabled, + or ``ASAN_SKIP`` if it cannot). ``unit_test_suite_runner(struct unit_test_suite *)`` Returns a runner for a full test suite object, @@ -318,7 +320,7 @@ of the unit test suite structure, for example: return ret; } - REGISTER_FAST_TEST(example_autotest, true /*no-huge*/, false /*ASan*/, example_tests); + REGISTER_FAST_TEST(example_autotest, NOHUGE_OK, ASAN_OK, example_tests); Designing a test From 011e08c0e0ec5d2fa2cecf6fb8d52f1ed3716c9d Mon Sep 17 00:00:00 2001 From: Bruce Richardson Date: Thu, 4 Dec 2025 18:20:39 +0000 Subject: [PATCH 08/16] app/test: fix undefined behaviour in red autotest The shift of a negative number (or very large positive) is undefined behaviour which causes errors when run with UBSan. Fix this by making the behaviour explicit for the edge case of n being zero in the calculation. Fixes: de3cfa2c9823 ("sched: initial import") Cc: stable@dpdk.org Signed-off-by: Bruce Richardson Signed-off-by: 0-day Robot --- lib/sched/rte_red.h | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/sched/rte_red.h b/lib/sched/rte_red.h index e62abb92955..3b90cc46a9d 100644 --- a/lib/sched/rte_red.h +++ b/lib/sched/rte_red.h @@ -172,8 +172,15 @@ __rte_red_calc_qempty_factor(uint8_t wq_log2, uint16_t m) f = (n >> 6) & 0xf; n >>= 10; - if (n < RTE_RED_SCALING) + if (n < RTE_RED_SCALING) { + /* When n == 0, no rounding or shifting needed. + * For n > 0, add 2^(n-1) for rounding before right shift. + * This avoids UB from (1 << -1) when n == 0. + */ + if (n == 0) + return (uint16_t) rte_red_pow2_frac_inv[f]; return (uint16_t) ((rte_red_pow2_frac_inv[f] + (1 << (n - 1))) >> n); + } return 0; } From a23892e5d5ef3393cf78e5fad46cc54e9fc6337d Mon Sep 17 00:00:00 2001 From: Bruce Richardson Date: Thu, 4 Dec 2025 18:20:40 +0000 Subject: [PATCH 09/16] app/test: reduce duration of secondary timer test Reduce the timer duration and the primary wait duration in the secondary process timer autotest. This should help ensure it doesn't time out what run in a CI environment. Signed-off-by: Bruce Richardson Signed-off-by: 0-day Robot --- app/test/test_timer_secondary.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/test/test_timer_secondary.c b/app/test/test_timer_secondary.c index 4e220559b4e..864f175d6a4 100644 --- a/app/test/test_timer_secondary.c +++ b/app/test/test_timer_secondary.c @@ -162,7 +162,7 @@ test_timer_secondary(void) ret = timer_secondary_spawn_wait(*sec_lcorep); TEST_ASSERT_SUCCESS(ret, "Secondary process execution failed"); - rte_delay_ms(2000); + rte_delay_ms(500); test_info->exit_flag = 1; rte_eal_wait_lcore(*mgr_lcorep); @@ -189,8 +189,8 @@ test_timer_secondary(void) rte_timer_init(tim); - /* generate timeouts between 10 and 160 ms */ - timeout_ms = ((rte_rand() & 0xF) + 1) * 10; + /* generate timeouts between 10 and 80 ms */ + timeout_ms = ((rte_rand() & 0x7) + 1) * 10; ticks = timeout_ms * rte_get_timer_hz() / MSECPERSEC; ret = rte_timer_alt_reset(test_info->timer_data_id, From 23cbdc33785bf395c74fd126f9bfe222a9deaac0 Mon Sep 17 00:00:00 2001 From: Bruce Richardson Date: Thu, 4 Dec 2025 18:20:41 +0000 Subject: [PATCH 10/16] app/test: fix timer loop hang on secondary process failure When the secondary process run from timer_secontary_autotest fails, the timer loop is never stopped so the whole process hangs until timeout. Fix this by setting the stop flag before checking for success or failure of the secondary process. Fixes: 50247fe03fe0 ("test/timer: exercise new APIs in secondary process") Cc: stable@dpdk.org Signed-off-by: Bruce Richardson Signed-off-by: 0-day Robot --- app/test/test_timer_secondary.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/test/test_timer_secondary.c b/app/test/test_timer_secondary.c index 864f175d6a4..fb2cc438953 100644 --- a/app/test/test_timer_secondary.c +++ b/app/test/test_timer_secondary.c @@ -160,11 +160,12 @@ test_timer_secondary(void) TEST_ASSERT_SUCCESS(ret, "Failed to launch timer manage loop"); ret = timer_secondary_spawn_wait(*sec_lcorep); - TEST_ASSERT_SUCCESS(ret, "Secondary process execution failed"); + /* must set exit flag even on error case, so check ret later */ rte_delay_ms(500); - test_info->exit_flag = 1; + + TEST_ASSERT_SUCCESS(ret, "Secondary process execution failed"); rte_eal_wait_lcore(*mgr_lcorep); #ifdef RTE_LIBRTE_TIMER_DEBUG From 35ed7680796abf918a06e96273439e71d5433296 Mon Sep 17 00:00:00 2001 From: Bruce Richardson Date: Thu, 4 Dec 2025 18:20:42 +0000 Subject: [PATCH 11/16] eal: add internal APIs to query loaded driver paths Add APIs for internal DPDK use to allow querying the paths of drivers loaded into the running instance. Signed-off-by: Bruce Richardson Signed-off-by: 0-day Robot --- lib/eal/common/eal_common_options.c | 54 ++++++++++++++++++++++++++--- lib/eal/include/rte_eal.h | 52 +++++++++++++++++++++++++++ 2 files changed, 102 insertions(+), 4 deletions(-) diff --git a/lib/eal/common/eal_common_options.c b/lib/eal/common/eal_common_options.c index b1fb670ea00..a4afbb80a22 100644 --- a/lib/eal/common/eal_common_options.c +++ b/lib/eal/common/eal_common_options.c @@ -263,6 +263,7 @@ struct shared_driver { char name[PATH_MAX]; void* lib_handle; + bool from_cmdline; /**< true if from -d flag, false if driver found in a directory */ }; /* List of external loadable drivers */ @@ -533,7 +534,7 @@ eal_reset_internal_config(struct internal_config *internal_cfg) } static int -eal_plugin_add(const char *path) +eal_plugin_add(const char *path, bool from_cmdline) { struct shared_driver *solib; @@ -544,6 +545,7 @@ eal_plugin_add(const char *path) } memset(solib, 0, sizeof(*solib)); strlcpy(solib->name, path, PATH_MAX); + solib->from_cmdline = from_cmdline; TAILQ_INSERT_TAIL(&solib_list, solib, next); return 0; @@ -595,7 +597,7 @@ eal_plugindir_init(const char *path) if (!(stat(sopath, &sb) == 0 && S_ISREG(sb.st_mode))) continue; - if (eal_plugin_add(sopath) == -1) + if (eal_plugin_add(sopath, false) == -1) break; } @@ -727,7 +729,7 @@ eal_plugins_init(void) *default_solib_dir != '\0' && stat(default_solib_dir, &sb) == 0 && S_ISDIR(sb.st_mode)) - eal_plugin_add(default_solib_dir); + eal_plugin_add(default_solib_dir, false); TAILQ_FOREACH(solib, &solib_list, next) { @@ -751,6 +753,50 @@ eal_plugins_init(void) } #endif +RTE_EXPORT_SYMBOL(rte_eal_driver_path_next) +const char * +rte_eal_driver_path_next(const char *start, bool cmdline_only) +{ + struct shared_driver *solib; + + if (start == NULL) { + solib = TAILQ_FIRST(&solib_list); + } else { + /* Find the current entry based on the name string */ + TAILQ_FOREACH(solib, &solib_list, next) { + if (start == solib->name) { + solib = TAILQ_NEXT(solib, next); + break; + } + } + if (solib == NULL) + return NULL; + } + + /* Skip entries that were expanded from directories if cmdline_only is true */ + if (cmdline_only) { + while (solib != NULL && !solib->from_cmdline) + solib = TAILQ_NEXT(solib, next); + } + + return solib ? solib->name : NULL; +} + +RTE_EXPORT_SYMBOL(rte_eal_driver_path_count) +unsigned int +rte_eal_driver_path_count(bool cmdline_only) +{ + struct shared_driver *solib; + unsigned int count = 0; + + TAILQ_FOREACH(solib, &solib_list, next) { + if (!cmdline_only || solib->from_cmdline) + count++; + } + + return count; +} + /* * Parse the coremask given as argument (hexadecimal string) and fill * the global configuration (core role and core count) with the parsed @@ -1929,7 +1975,7 @@ eal_parse_args(void) return -1; /* driver loading options */ TAILQ_FOREACH(arg, &args.driver_path, next) - if (eal_plugin_add(arg->arg) < 0) + if (eal_plugin_add(arg->arg, true) < 0) return -1; if (remap_lcores && args.remap_lcore_ids != (void *)1) { diff --git a/lib/eal/include/rte_eal.h b/lib/eal/include/rte_eal.h index 619b8fbade6..cd0b77c13f7 100644 --- a/lib/eal/include/rte_eal.h +++ b/lib/eal/include/rte_eal.h @@ -491,6 +491,58 @@ rte_eal_mbuf_user_pool_ops(void); const char * rte_eal_get_runtime_dir(void); +/** + * @internal + * Iterate to the next driver path. + * + * This function iterates through the list of dynamically loaded drivers, + * or driver paths that were specified via -d or --driver-path command-line + * options during EAL initialization. + * + * @param start + * Starting iteration point. The iteration will start at the first driver path if NULL. + * @param cmdline_only + * If true, only iterate paths from command line (-d flags). + * If false, iterate all paths including those expanded from directories. + * + * @return + * Next driver path string, NULL if there is none. + */ +const char * +rte_eal_driver_path_next(const char *start, bool cmdline_only); + +/** + * @internal + * Iterate over all driver paths. + * + * This macro provides a convenient way to iterate through all driver paths + * that were loaded via -d flags during EAL initialization. + * + * @param path + * Iterator variable of type const char * + * @param cmdline_only + * If true, only iterate paths from command line (-d flags). + * If false, iterate all paths including those expanded from directories. + */ +#define RTE_EAL_DRIVER_PATH_FOREACH(path, cmdline_only) \ + for (path = rte_eal_driver_path_next(NULL, cmdline_only); \ + path != NULL; \ + path = rte_eal_driver_path_next(path, cmdline_only)) + +/** + * @internal + * Get count of driver paths. + * + * @param cmdline_only + * If true, only count paths from command line (-d flags). + * If false, count all paths including those expanded from directories. + * + * @return + * Number of driver paths. + */ +unsigned int +rte_eal_driver_path_count(bool cmdline_only); + #ifdef __cplusplus } #endif From ee2793641ebe4f2e850047f125122575a44cf093 Mon Sep 17 00:00:00 2001 From: Bruce Richardson Date: Thu, 4 Dec 2025 18:20:43 +0000 Subject: [PATCH 12/16] app/test: pass loaded driver info to secondary procs For unit tests which run secondary processes, allow passing the driver paths used by the primary process to that secondary. This allows use of mempools in those secondary tests. Without this, any tests using mempools in secondary process will fail in shared builds. Signed-off-by: Bruce Richardson Signed-off-by: 0-day Robot --- app/test/process.h | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/app/test/process.h b/app/test/process.h index f948a897863..0704616c385 100644 --- a/app/test/process.h +++ b/app/test/process.h @@ -18,6 +18,7 @@ #include /* strlcpy */ #include +#include #ifdef RTE_EXEC_ENV_FREEBSD #define self "curproc" @@ -36,6 +37,7 @@ extern uint16_t flag_for_send_pkts; #endif #define PREFIX_ALLOW "--allow=" +#define PREFIX_DRIVER_PATH "--driver-path=" static int add_parameter_allow(char **argv, int max_capacity) @@ -63,6 +65,23 @@ add_parameter_allow(char **argv, int max_capacity) return count; } +static int +add_parameter_driver_path(char **argv, int max_capacity) +{ + const char *driver_path; + int count = 0; + + RTE_EAL_DRIVER_PATH_FOREACH(driver_path, true) { + if (asprintf(&argv[count], PREFIX_DRIVER_PATH"%s", driver_path) < 0) + break; + + if (++count == max_capacity) + break; + } + + return count; +} + /* * launches a second copy of the test process using the given argv parameters, * which should include argv[0] as the process name. To identify in the @@ -75,6 +94,7 @@ process_dup(const char *const argv[], int numargs, const char *env_value) int num = 0; char **argv_cpy; int allow_num; + int driver_path_num; int argv_num; int i, status; char path[32]; @@ -90,7 +110,8 @@ process_dup(const char *const argv[], int numargs, const char *env_value) return -1; else if (pid == 0) { allow_num = rte_devargs_type_count(RTE_DEVTYPE_ALLOWED); - argv_num = numargs + allow_num + 1; + driver_path_num = rte_eal_driver_path_count(true); + argv_num = numargs + allow_num + driver_path_num + 1; argv_cpy = calloc(argv_num, sizeof(char *)); if (!argv_cpy) rte_panic("Memory allocation failed\n"); @@ -105,6 +126,11 @@ process_dup(const char *const argv[], int numargs, const char *env_value) num = add_parameter_allow(&argv_cpy[i], allow_num); num += numargs; + if (driver_path_num > 0) { + int added = add_parameter_driver_path(&argv_cpy[num], driver_path_num); + num += added; + } + #ifdef RTE_EXEC_ENV_LINUX { const char *procdir = "/proc/" self "/fd/"; From 4963ca778941aa7978e3e391f8b7ec4720b118d5 Mon Sep 17 00:00:00 2001 From: Bruce Richardson Date: Thu, 4 Dec 2025 18:20:44 +0000 Subject: [PATCH 13/16] app/test: skip power capabilities test if unsupported If the power subsystem cannot be initialized e.g. due to not being root, skip the capabilities test, rather than failing it. Signed-off-by: Bruce Richardson Signed-off-by: 0-day Robot --- app/test/test_power_cpufreq.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/test/test_power_cpufreq.c b/app/test/test_power_cpufreq.c index 96de255f271..1d37b18fed1 100644 --- a/app/test/test_power_cpufreq.c +++ b/app/test/test_power_cpufreq.c @@ -661,7 +661,7 @@ test_power_caps(void) "correctly(APCI cpufreq) or operating in another valid " "Power management environment\n", TEST_POWER_LCORE_ID); rte_power_unset_env(); - return -1; + return TEST_SKIPPED; } ret = rte_power_get_capabilities(TEST_POWER_LCORE_ID, &caps); From 35f494a5ca03e722ae98861f96e2ab2bb01dfbc2 Mon Sep 17 00:00:00 2001 From: Bruce Richardson Date: Thu, 4 Dec 2025 18:20:45 +0000 Subject: [PATCH 14/16] app/test: add some unattached tests to fast-test suite There are quite a number of test cases defined which are not present in any test-suite. Meson warns about these on build, so reduce the warnings by adding external-mem, ipsec-sad, red, power-caps and secondary timer test cases to the fast-test suite. Signed-off-by: Bruce Richardson Signed-off-by: 0-day Robot --- app/test/test_external_mem.c | 2 +- app/test/test_ipsec_sad.c | 2 +- app/test/test_power_cpufreq.c | 2 +- app/test/test_red.c | 2 +- app/test/test_timer_secondary.c | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/test/test_external_mem.c b/app/test/test_external_mem.c index 0c64b610a93..1c977b749b6 100644 --- a/app/test/test_external_mem.c +++ b/app/test/test_external_mem.c @@ -587,4 +587,4 @@ test_external_mem(void) #endif /* !RTE_EXEC_ENV_WINDOWS */ -REGISTER_TEST_COMMAND(external_mem_autotest, test_external_mem); +REGISTER_FAST_TEST(external_mem_autotest, NOHUGE_SKIP, ASAN_OK, test_external_mem); diff --git a/app/test/test_ipsec_sad.c b/app/test/test_ipsec_sad.c index 642643eb639..5e9dfb0f94f 100644 --- a/app/test/test_ipsec_sad.c +++ b/app/test/test_ipsec_sad.c @@ -899,4 +899,4 @@ test_ipsec_sad(void) #endif /* !RTE_EXEC_ENV_WINDOWS */ -REGISTER_TEST_COMMAND(ipsec_sad_autotest, test_ipsec_sad); +REGISTER_FAST_TEST(ipsec_sad_autotest, NOHUGE_OK, ASAN_OK, test_ipsec_sad); diff --git a/app/test/test_power_cpufreq.c b/app/test/test_power_cpufreq.c index 1d37b18fed1..08bce4c0d10 100644 --- a/app/test/test_power_cpufreq.c +++ b/app/test/test_power_cpufreq.c @@ -679,4 +679,4 @@ test_power_caps(void) #endif REGISTER_FAST_TEST(power_cpufreq_autotest, NOHUGE_SKIP, ASAN_OK, test_power_cpufreq); -REGISTER_TEST_COMMAND(power_caps_autotest, test_power_caps); +REGISTER_FAST_TEST(power_caps_autotest, NOHUGE_OK, ASAN_OK, test_power_caps); diff --git a/app/test/test_red.c b/app/test/test_red.c index 7f38ed1469c..4b171739993 100644 --- a/app/test/test_red.c +++ b/app/test/test_red.c @@ -1872,6 +1872,6 @@ test_red_all(void) #endif /* !RTE_EXEC_ENV_WINDOWS */ -REGISTER_TEST_COMMAND(red_autotest, test_red); +REGISTER_FAST_TEST(red_autotest, NOHUGE_OK, ASAN_OK, test_red); REGISTER_PERF_TEST(red_perf, test_red_perf); REGISTER_PERF_TEST(red_all, test_red_all); diff --git a/app/test/test_timer_secondary.c b/app/test/test_timer_secondary.c index fb2cc438953..0895705ac49 100644 --- a/app/test/test_timer_secondary.c +++ b/app/test/test_timer_secondary.c @@ -225,4 +225,4 @@ test_timer_secondary(void) #endif /* !RTE_EXEC_ENV_WINDOWS */ -REGISTER_TEST_COMMAND(timer_secondary_autotest, test_timer_secondary); +REGISTER_FAST_TEST(timer_secondary_autotest, NOHUGE_SKIP, ASAN_SKIP, test_timer_secondary); From 1bb6186ca3aaab18293bc197096cd6d48aee2eac Mon Sep 17 00:00:00 2001 From: Bruce Richardson Date: Thu, 4 Dec 2025 18:20:46 +0000 Subject: [PATCH 15/16] app/test: add tests to driver test suite A number of eventdev, cryptodev and ethdev tests require devices to be present in order to run so add them to the "driver" suite of tests. Signed-off-by: Bruce Richardson Signed-off-by: 0-day Robot --- app/test/test_cryptodev_crosscheck.c | 2 +- app/test/test_ethdev_api.c | 2 +- app/test/test_event_crypto_adapter.c | 2 +- app/test/test_event_eth_rx_adapter.c | 4 ++-- app/test/test_event_timer_adapter.c | 2 +- app/test/test_security_inline_macsec.c | 2 +- app/test/test_security_inline_proto.c | 6 +++--- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/app/test/test_cryptodev_crosscheck.c b/app/test/test_cryptodev_crosscheck.c index b9a53a430cb..bb21c3bc504 100644 --- a/app/test/test_cryptodev_crosscheck.c +++ b/app/test/test_cryptodev_crosscheck.c @@ -1047,4 +1047,4 @@ test_crosscheck(void) return ret; } -REGISTER_TEST_COMMAND(cryptodev_crosscheck, test_crosscheck); +REGISTER_DRIVER_TEST(cryptodev_crosscheck, test_crosscheck); diff --git a/app/test/test_ethdev_api.c b/app/test/test_ethdev_api.c index 00d6a5c6145..76afd0345c5 100644 --- a/app/test/test_ethdev_api.c +++ b/app/test/test_ethdev_api.c @@ -185,4 +185,4 @@ test_ethdev_api(void) /* TODO: Make part of the fast test suite, `REGISTER_FAST_TEST()`, * when all drivers complies to the queue state requirement */ -REGISTER_TEST_COMMAND(ethdev_api, test_ethdev_api); +REGISTER_DRIVER_TEST(ethdev_api, test_ethdev_api); diff --git a/app/test/test_event_crypto_adapter.c b/app/test/test_event_crypto_adapter.c index ab24e30a976..cac1584f403 100644 --- a/app/test/test_event_crypto_adapter.c +++ b/app/test/test_event_crypto_adapter.c @@ -1625,5 +1625,5 @@ test_event_crypto_adapter(void) #endif /* !RTE_EXEC_ENV_WINDOWS */ -REGISTER_TEST_COMMAND(event_crypto_adapter_autotest, +REGISTER_DRIVER_TEST(event_crypto_adapter_autotest, test_event_crypto_adapter); diff --git a/app/test/test_event_eth_rx_adapter.c b/app/test/test_event_eth_rx_adapter.c index 9f8c8c1b265..2b623bfb287 100644 --- a/app/test/test_event_eth_rx_adapter.c +++ b/app/test/test_event_eth_rx_adapter.c @@ -1555,7 +1555,7 @@ test_event_eth_rx_intr_adapter_common(void) #endif /* !RTE_EXEC_ENV_WINDOWS */ -REGISTER_TEST_COMMAND(event_eth_rx_adapter_autotest, +REGISTER_DRIVER_TEST(event_eth_rx_adapter_autotest, test_event_eth_rx_adapter_common); -REGISTER_TEST_COMMAND(event_eth_rx_intr_adapter_autotest, +REGISTER_DRIVER_TEST(event_eth_rx_intr_adapter_autotest, test_event_eth_rx_intr_adapter_common); diff --git a/app/test/test_event_timer_adapter.c b/app/test/test_event_timer_adapter.c index 2bc2e026a9a..bf5ff56bed6 100644 --- a/app/test/test_event_timer_adapter.c +++ b/app/test/test_event_timer_adapter.c @@ -2036,4 +2036,4 @@ test_event_timer_adapter_func(void) #endif /* !RTE_EXEC_ENV_WINDOWS */ -REGISTER_TEST_COMMAND(event_timer_adapter_test, test_event_timer_adapter_func); +REGISTER_DRIVER_TEST(event_timer_adapter_test, test_event_timer_adapter_func); diff --git a/app/test/test_security_inline_macsec.c b/app/test/test_security_inline_macsec.c index 40436677017..a929ff5326a 100644 --- a/app/test/test_security_inline_macsec.c +++ b/app/test/test_security_inline_macsec.c @@ -2584,4 +2584,4 @@ test_inline_macsec(void) #endif /* !RTE_EXEC_ENV_WINDOWS */ -REGISTER_TEST_COMMAND(inline_macsec_autotest, test_inline_macsec); +REGISTER_DRIVER_TEST(inline_macsec_autotest, test_inline_macsec); diff --git a/app/test/test_security_inline_proto.c b/app/test/test_security_inline_proto.c index 04ecfd02c6a..09d710eff2f 100644 --- a/app/test/test_security_inline_proto.c +++ b/app/test/test_security_inline_proto.c @@ -3616,6 +3616,6 @@ test_event_inline_ipsec(void) #endif /* !RTE_EXEC_ENV_WINDOWS */ -REGISTER_TEST_COMMAND(inline_ipsec_autotest, test_inline_ipsec); -REGISTER_TEST_COMMAND(inline_ipsec_sg_autotest, test_inline_ipsec_sg); -REGISTER_TEST_COMMAND(event_inline_ipsec_autotest, test_event_inline_ipsec); +REGISTER_DRIVER_TEST(inline_ipsec_autotest, test_inline_ipsec); +REGISTER_DRIVER_TEST(inline_ipsec_sg_autotest, test_inline_ipsec_sg); +REGISTER_DRIVER_TEST(event_inline_ipsec_autotest, test_event_inline_ipsec); From 950b3a61fa8fe9bd5de1e896ed11f61fa07e71a0 Mon Sep 17 00:00:00 2001 From: Bruce Richardson Date: Thu, 4 Dec 2025 18:20:47 +0000 Subject: [PATCH 16/16] buildtools/get-test-suites: suppress empty output If there are no tests which are not assigned to a test suite, omit the line printing the non_suite_tests. This avoid having error messages from meson about test "" not being in any test suite. Fixes: 25065ef1f6c0 ("test: emit warning for orphaned tests") Cc: stable@dpdk.org Signed-off-by: Bruce Richardson Signed-off-by: 0-day Robot --- buildtools/get-test-suites.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/buildtools/get-test-suites.py b/buildtools/get-test-suites.py index 73f1d9c9e1d..36ed4bedc26 100644 --- a/buildtools/get-test-suites.py +++ b/buildtools/get-test-suites.py @@ -38,4 +38,5 @@ def get_fast_test_params(test_name, ln): for suite in test_suites.keys(): print(f"{suite}={','.join(test_suites[suite])}") -print(f"non_suite_tests={','.join(non_suite_tests)}") +if non_suite_tests: + print(f"non_suite_tests={','.join(non_suite_tests)}")