* [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).