Test-Label: intel-Functional Test-Status: SUCCESS _Functional PASS_ DPDK git repo: dpdk commit 9e3223adfab71bc88e9ba67c520b87c529d34a35 Author: David Marchand Date: Thu Mar 23 15:44:33 2023 +0100 vhost: fix deadlock with no multiqueue This deadlock happens when a guest, that had virtio ports with multi queues configured, does not announce the multi q feature in SET_FEATURES. In such a situation, all vq locks are already taken before calling free_vq(), which itself takes the lock. As mentioned in the code, in this situation, the virtio device is not running yet and no datapath thread is using the vq. So we can release the lock before calling free_vq(). Bugzilla ID: 1196 Fixes: 4b02c2673757 ("vhost: annotate async accesses") Signed-off-by: David Marchand Reviewed-by: Maxime Coquelin Testing Summary : 30 Case Done, 30 Successful, 0 Failures OS : Ubuntu 20.04.5 LTS Kernel : 5.4.0-135-generic GCC : 9.4.0-1ubuntu1~20.04.1 NIC : Ethernet Controller XL710 for 40GbE QSFP+ Target : x86_64-native-linuxapp-gcc Test result details: +-----------------+---------------------------------------------------+-------+ | suite | case | status| +-----------------+---------------------------------------------------+-------+ | checksum_offload| test_checksum_offload_with_vlan | passed| | 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| | 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