automatic DPDK test reports
 help / color / mirror / Atom feed
* [dpdk-test-report]|SUCCESS | dpdk-next-net-intel|cb48ce37b2| Intel-Testing
@ 2023-06-13 12:41 sys_stv
  0 siblings, 0 replies; only message in thread
From: sys_stv @ 2023-06-13 12:41 UTC (permalink / raw)
  To: test-report; +Cc: Min Zhou, Qi Zhang, daxuex.gao, chenyux.huang, lijuan.tu

[-- Attachment #1: Type: text/plain, Size: 5231 bytes --]


Test-Label: intel-Testing
Test-Status: SUCCESS 
_Testing PASS 

DPDK git repo: dpdk-next-net-intel

commit cb48ce37b2eb93bfd4be5ca8ca4d110c72695cf1
Author: Min Zhou <zhoumin@loongson.cn>
Date:   Tue Jun 13 17:44:25 2023 +0800

    net/ixgbe: add proper memory barriers for some Rx functions
    
    Segmentation fault has been observed while running the
    ixgbe_recv_pkts_lro() function to receive packets on the Loongson 3C5000
    processor which has 64 cores and 4 NUMA nodes.
    
    From the ixgbe_recv_pkts_lro() function, we found that as long as the first
    packet has the EOP bit set, and the length of this packet is less than or
    equal to rxq->crc_len, the segmentation fault will definitely happen even
    though on the other platforms. For example, if we made the first packet
    which had the EOP bit set had a zero length by force, the segmentation
    fault would happen on X86.
    
    Because when processd the first packet the first_seg->next will be NULL, if
    at the same time this packet has the EOP bit set and its length is less
    than or equal to rxq->crc_len, the following loop will be executed:
    
        for (lp = first_seg; lp->next != rxm; lp = lp->next)
            ;
    
    We know that the first_seg->next will be NULL under this condition. So the
    expression of lp->next->next will cause the segmentation fault.
    
    Normally, the length of the first packet with EOP bit set will be greater
    than rxq->crc_len. However, the out-of-order execution of CPU may make the
    read ordering of the status and the rest of the descriptor fields in this
    function not be correct. The related codes are as following:
    
            rxdp = &rx_ring[rx_id];
     #1     staterr = rte_le_to_cpu_32(rxdp->wb.upper.status_error);
    
            if (!(staterr & IXGBE_RXDADV_STAT_DD))
                break;
    
     #2     rxd = *rxdp;
    
    The sentence #2 may be executed before sentence #1. This action is likely
    to make the ready packet zero length. If the packet is the first packet and
    has the EOP bit set, the above segmentation fault will happen.
    
    So, we should add a proper memory barrier to ensure the read ordering be
    correct. We also did the same thing in the ixgbe_recv_pkts() function to
    make the rxd data be valid even though we did not find segmentation fault
    in this function.
    
    Fixes: 8eecb3295ae ("ixgbe: add LRO support")
    Cc: stable@dpdk.org
    
    Signed-off-by: Min Zhou <zhoumin@loongson.cn>

Testing Summary : 18 Case Done, 18 Successful, 0 Failures

Testbed #1: 9 Case Done, 9 Successful, 0 Failures 
	* Test result details:
	  +-------------+---------------------------+-------+
	  | suite       | case                      | status|
	  +-------------+---------------------------+-------+
	  | asan_smoke  | test_rxtx_with_ASan_enable| passed|
	  | pf_smoke    | test_pf_jumbo_frames      | passed|
	  | pf_smoke    | test_pf_rss               | passed|
	  | pf_smoke    | test_pf_tx_rx_queue       | passed|
	  | vf_smoke    | test_vf_jumbo_frames      | passed|
	  | vf_smoke    | test_vf_rss               | passed|
	  | vf_smoke    | test_vf_tx_rx_queue       | passed|
	  | virtio_smoke| test_virtio_loopback      | passed|
	  | virtio_smoke| test_virtio_pvp           | passed|
	  +-------------+---------------------------+-------+
	* Environment:
	  OS : Ubuntu 22.04.2 LTS       
	  Kernel : 5.15.0-60-generic         
	  GCC : 11.3.0-1ubuntu1~22.04        
	  NIC : Ethernet Controller E810-C for SFP         
	  Target : x86_64-native-linuxapp-gcc      

Testbed #2: 9 Case Done, 9 Successful, 0 Failures 
	* Test result details:
	  +-------------+---------------------------+-------+
	  | suite       | case                      | status|
	  +-------------+---------------------------+-------+
	  | asan_smoke  | test_rxtx_with_ASan_enable| passed|
	  | pf_smoke    | test_pf_jumbo_frames      | passed|
	  | pf_smoke    | test_pf_rss               | passed|
	  | pf_smoke    | test_pf_tx_rx_queue       | passed|
	  | vf_smoke    | test_vf_rss               | passed|
	  | vf_smoke    | test_vf_tx_rx_queue       | passed|
	  | vf_smoke    | test_vf_jumbo_frames      | n/a   |
	  | virtio_smoke| test_virtio_loopback      | passed|
	  | virtio_smoke| test_virtio_pvp           | passed|
	  +-------------+---------------------------+-------+
	* Environment:
	  OS : Ubuntu 22.04.2 LTS       
	  Kernel : 5.15.0-60-generic         
	  GCC : 11.3.0-1ubuntu1~22.04        
	  NIC : Ethernet Controller XL710 for 40GbE QSFP+         
	  Target : x86_64-native-linuxapp-gcc      

TestPlan:
	   pf_smoke: http://git.dpdk.org/tools/dts/tree/test_plans/pf_smoke_test_plan.rst
	   vf_smoke: http://git.dpdk.org/tools/dts/tree/test_plans/vf_smoke_test_plan.rst
	   asan_smoke: http://git.dpdk.org/tools/dts/tree/test_plans/asan_smoke_test_plan.rst

TestSuite:
	   pf_smoke: http://git.dpdk.org/tools/dts/tree/tests/TestSuite_pf_smoke.py
	   vf_smoke: http://git.dpdk.org/tools/dts/tree/tests/TestSuite_vf_smoke.py
	   virtio_smoke: http://git.dpdk.org/tools/dts/tree/tests/TestSuite_virtio_smoke.py
	   asan_smoke: http://git.dpdk.org/tools/dts/tree/tests/TestSuite_asan_smoke.py


DPDK STV team

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2023-06-13 12:41 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-06-13 12:41 [dpdk-test-report]|SUCCESS | dpdk-next-net-intel|cb48ce37b2| Intel-Testing sys_stv

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).