Test-Label: intel-Testing Test-Status: SUCCESS _Testing PASS DPDK git repo: dpdk-next-net-mrvl commit 9acb447c72a27228b520ff833cafa5aa8f43a431 Author: Harman Kalra Date: Mon Jun 5 14:14:23 2023 +0530 common/cnxk: fix mailbox timeout due to deadlock PF receives all the VFs mailbox/FLR messages which it forwards to AF. This is all handled by interrupt thread. Due to mailbox locking in place a deadlock situation may arise which may lead to mailbox timeout. Say at T1 - PF sends its own mailbox to AF and wait for response (PF is holding mailbox lock) T2 - VF mailbox/FLR interrupt comes and interrupt thread process it. Mailbox handling requires mailbox lock to send messages to AF, but lock is hold by PF. Interrupt thread spins at this point only and misses to ack the AFs response of PF messages which was sent at T1. Hence message sent at T1 gets timed out. As a solution to this scenario, creating a dedicated thread which does the VFs mailbox and FLR processing. When no message this thread waits on conditional variable and get waken up by interrupt thread on any mailbox/FLR interrupt reception. Fixes: 585bb3e538f9 ("common/cnxk: add VF support to base device class") Cc: stable@dpdk.org Signed-off-by: Harman Kalra Testing Summary : 15 Case Done, 15 Successful, 0 Failures Testbed #1: 6 Case Done, 6 Successful, 0 Failures * Test result details: +---------+---------------------+-------+ | suite | case | status| +---------+---------------------+-------+ | 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| +---------+---------------------+-------+ * 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