On 6/17/22 04:42, Yuan Wang wrote:
The virtio-user initialization requires unix socket to receive backend messages in block mode. However, vhost_user_update_link_state() sets the same socket to nonblocking via fcntl, which affects all threads. Enabling the rxq interrupt can causes both of these behaviors to occur concurrently, with the result that the initialization may fail because no messages are received in nonblocking socket. Thread 1: virtio_init_device() --> virtio_user_start_device() --> vhost_user_set_memory_table() --> vhost_user_check_reply_ack() Thread 2: virtio_interrupt_handler() --> vhost_user_update_link_state() Fix that by replacing O_NONBLOCK with the recv per-call option MSG_DONTWAIT. Fixes: ef53b6030039 ("net/virtio-user: support LSC") Cc: sta...@dpdk.org Signed-off-by: Yuan Wang <yuanx.w...@intel.com> --- drivers/net/virtio/virtio_user/vhost_user.c | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-)
Applied to dpdk-next-virtio/main. Thanks, Maxime