|SUCCESS|dpdk|b482a764c6| intel-Functional

sys_stv at intel.com sys_stv at intel.com
Thu Jun 18 16:07:12 CEST 2026


Test-Label: intel-Functional
Test-Status: SUCCESS
_Functional PASS_

DPDK git repo: dpdk
commit b482a764c613c7921710061114c1dbe3d96568c3
Author: Maxime Peim <maxime.peim at gmail.com>
Date:   Wed Jun 17 10:09:49 2026 +0200

    eal: fix index for non-EAL lcores
    
    Threads registered via rte_thread_register() are assigned a valid
    lcore_id by eal_lcore_non_eal_allocate(), but their core_index in
    lcore_config is left at -1. This value was set during rte_eal_cpu_init()
    for lcores with ROLE_OFF (undetected CPUs) and is never updated when the
    lcore is later allocated to a non-EAL thread.
    
    As a result, rte_lcore_index() returns -1 for registered non-EAL
    threads. Libraries that use rte_lcore_index() to select per-lcore
    caches fall back to a shared global path when it returns -1, causing
    severe contention under concurrent access from multiple registered
    threads.
    
    A concrete example is the mlx5 indexed memory pool (mlx5_ipool), which
    uses rte_lcore_index() in mlx5_ipool_malloc_cache() to select a per-core
    cache slot. When core_index is -1, all registered threads are funneled
    into a single shared slot protected by a spinlock. In testing with VPP
    (which registers worker threads via rte_thread_register()), this caused
    async flow rule insertion throughput to drop from ~6.4M rules/sec to
    ~1.2M rules/sec with 4 workers -- a 5x regression attributable entirely
    to spinlock contention in the ipool allocator.
    
    Fix by tracking currently allocated core_index values in a bitset and
    assigning non-EAL threads the first free index. Keep the bitset in sync
    when initial EAL lcores are configured, when EAL core-list parsing
    remaps lcores, and when non-EAL registration fails or releases an lcore.
    
    Fixes: 5c307ba2a5b1 ("eal: register non-EAL threads as lcores")
    Cc: stable at dpdk.org
    
    Signed-off-by: Maxime Peim <maxime.peim at gmail.com>
    Acked-by: David Marchand <david.marchand at redhat.com>

Smoke-Testing Summary : 31 Case Done, 31 Successful, 0 Failures      


OS : Ubuntu 24.04.4 LTS       
Kernel : 6.8.0-71-generic         
GCC : 13.3.0-6ubuntu2~24.04.1        
NIC : Ethernet Controller XL710 for 40GbE QSFP+         
Target : x86_64-native-linuxapp-gcc      

	Test result details:
	+-----------------+---------------------------------------------------+-------+
	| suite           | case                                              | status|
	+-----------------+---------------------------------------------------+-------+
	| checksum_offload| test_do_not_insert_checksum_on_the_transmit_packet| passed|
	| checksum_offload| test_hardware_checksum_check_ip_rx                | passed|
	| checksum_offload| test_hardware_checksum_check_ip_tx                | passed|
	| checksum_offload| test_hardware_checksum_check_l4_rx                | passed|
	| checksum_offload| test_hardware_checksum_check_l4_tx                | passed|
	| checksum_offload| test_insert_checksum_on_the_transmit_packet       | passed|
	| checksum_offload| test_rx_checksum_valid_flags                      | passed|
	| checksum_offload| test_checksum_offload_with_vlan                   | n/a   |
	| dual_vlan       | test_dual_vlan_priority_rxtx                      | passed|
	| dual_vlan       | test_vlan_filter_config                           | passed|
	| dual_vlan       | test_vlan_filter_table                            | passed|
	| dual_vlan       | test_vlan_insert_config                           | passed|
	| dual_vlan       | test_vlan_random_test                             | passed|
	| dual_vlan       | test_vlan_strip_config                            | passed|
	| dual_vlan       | test_vlan_synthetic_test                          | passed|
	| dual_vlan       | test_vlan_tpid_config                             | passed|
	| dual_vlan       | test_vlan_stripq_config                           | n/a   |
	| jumboframes     | test_jumboframes_bigger_jumbo                     | passed|
	| jumboframes     | test_jumboframes_jumbo_jumbo                      | passed|
	| jumboframes     | test_jumboframes_jumbo_nojumbo                    | passed|
	| jumboframes     | test_jumboframes_normal_jumbo                     | passed|
	| jumboframes     | test_jumboframes_normal_nojumbo                   | passed|
	| rxtx_offload    | test_rxoffload_port_all                           | passed|
	| rxtx_offload    | test_rxoffload_port_cmdline                       | passed|
	| rxtx_offload    | test_txoffload_port                               | passed|
	| rxtx_offload    | test_txoffload_port_all                           | passed|
	| rxtx_offload    | test_txoffload_port_checksum                      | passed|
	| rxtx_offload    | test_txoffload_port_cmdline                       | passed|
	| rxtx_offload    | test_txoffload_port_multi_segs                    | passed|
	| rxtx_offload    | test_txoffload_queue                              | passed|
	| rxtx_offload    | test_rxoffload_queue                              | n/a   |
	+-----------------+---------------------------------------------------+-------+


DPDK STV team


More information about the test-report mailing list