From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 2B0DEA0540 for ; Wed, 6 Jul 2022 22:35:51 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 265194069D; Wed, 6 Jul 2022 22:35:51 +0200 (CEST) Received: from mail-wm1-f48.google.com (mail-wm1-f48.google.com [209.85.128.48]) by mails.dpdk.org (Postfix) with ESMTP id 3AAD04069D for ; Wed, 6 Jul 2022 22:35:49 +0200 (CEST) Received: by mail-wm1-f48.google.com with SMTP id c131-20020a1c3589000000b003a19b2bce36so6664996wma.4 for ; Wed, 06 Jul 2022 13:35:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Fgz5XDnBzDXuM9Z9jV9WmNZBRjPoy4Mo1yy1YjDXxx4=; b=q71/8Z29sXl6S8+YlXxScRCFZfSBUJx20In9uiNtQmaMu9u3SN6T020NXYKPAsr9hB FE21UzKhkO9teYrznVGJWcX8ee6tc1RtH1xPiOkEO3aguFxTo4rdCwRga7CM6zh2GpbF D1MdFEpqnp266+Eevz8veqM3TfjtwnRQZn88RoX00dIjxnoPyXl3vVvGIS4C+R19NmI5 v23HmWCPJfICdhoM3eUubPHSxNyblvS4eDFdI5KmwncWxZIBY4358BWT7/Ksz2bjiJQf dShRdHLy5hy3RlAH76vo2TjCYUoKkzeW3BdTIBYhr/3foovPRPfWdhtcXLTnDSFh3Ou+ v5dg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Fgz5XDnBzDXuM9Z9jV9WmNZBRjPoy4Mo1yy1YjDXxx4=; b=CVESQVdZiUAROTscjKixDunzdi6tuo7oMIlOBrNJpA8Xbmcmkdt2Za0sGRUH6XbDt4 W851yBDjo/ahDHuIau61xPXnSN50ts4cnYsmc/BwdPjuH1EhngOpm5I0aifTbWtfStpK bw+DceS/9dplto2t2tH/ZCrcXtJWDYfNoPrLrx17Q+WMAPey1W88JCqCnnBdVok/NOUy WEEvVsbvKPNtuiPFpc1OEhGkbbU0iSFvtHgEcEhu1Ubj5OcoZ8EkuSrKvtWYvaW1JbY3 sWl+N/G/LMxPCkNoXkzD2AweRUhsanKU6Cw9jqKOtOMtV841DNuOaypkjvvUBhg/o7vM 2ipQ== X-Gm-Message-State: AJIora/vRuEzgCif1LZmhplOwY5ee+8yDQF3h7fh0EEf8IR6WXQ4M1sr pngPxDJ3hjb66i+e5jaonGDcLiYWlbqliQ== X-Google-Smtp-Source: AGRyM1vtbjNHIodtUYoRu0lEAAUFtiNtu4J3vO1ST81au7sogc0k/uZeq/VlKczUepUalVOUA4b+1g== X-Received: by 2002:a05:600c:284a:b0:3a1:996f:3cad with SMTP id r10-20020a05600c284a00b003a1996f3cadmr429772wmb.95.1657139748965; Wed, 06 Jul 2022 13:35:48 -0700 (PDT) Received: from localhost ([2a01:4b00:f41a:3600:360b:9754:2e3a:c344]) by smtp.gmail.com with ESMTPSA id d11-20020a5d6dcb000000b0020e6ce4dabdsm35368090wrz.103.2022.07.06.13.35.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Jul 2022 13:35:48 -0700 (PDT) From: luca.boccassi@gmail.com To: Yuan Wang Cc: Stephen Hemminger , Chenbo Xia , dpdk stable Subject: patch 'net/virtio-user: fix socket non-blocking mode' has been queued to stable release 21.11.2 Date: Wed, 6 Jul 2022 21:34:46 +0100 Message-Id: <20220706203506.3422496-11-luca.boccassi@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220706203506.3422496-1-luca.boccassi@gmail.com> References: <20220628151938.2278711-26-ktraynor@redhat.com> <20220706203506.3422496-1-luca.boccassi@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Hi, FYI, your patch has been queued to stable release 21.11.2 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 07/08/22. So please shout if anyone has objections. Also note that after the patch there's a diff of the upstream commit vs the patch applied to the branch. This will indicate if there was any rebasing needed to apply to the stable branch. If there were code changes for rebasing (ie: not only metadata diffs), please double check that the rebase was correctly done. Queued patches are on a temporary branch at: https://github.com/kevintraynor/dpdk-stable This queued commit can be viewed at: https://github.com/kevintraynor/dpdk-stable/commit/19457a68eab5f145a21844c1edcf559a69dc7540 Thanks. Luca Boccassi --- >From 19457a68eab5f145a21844c1edcf559a69dc7540 Mon Sep 17 00:00:00 2001 From: Yuan Wang Date: Fri, 17 Jun 2022 10:42:29 +0800 Subject: [PATCH] net/virtio-user: fix socket non-blocking mode [ upstream commit 41f9a1757ffc010cc3debaad9a56af8ad88d0c6d ] 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") Signed-off-by: Yuan Wang Acked-by: Stephen Hemminger Reviewed-by: Chenbo Xia --- drivers/net/virtio/virtio_user/vhost_user.c | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/drivers/net/virtio/virtio_user/vhost_user.c b/drivers/net/virtio/virtio_user/vhost_user.c index 0a39393c45..77820bf967 100644 --- a/drivers/net/virtio/virtio_user/vhost_user.c +++ b/drivers/net/virtio/virtio_user/vhost_user.c @@ -942,15 +942,8 @@ vhost_user_update_link_state(struct virtio_user_dev *dev) if (data->vhostfd >= 0) { int r; - int flags; - flags = fcntl(data->vhostfd, F_GETFL); - if (fcntl(data->vhostfd, F_SETFL, flags | O_NONBLOCK) == -1) { - PMD_DRV_LOG(ERR, "error setting O_NONBLOCK flag"); - return -1; - } - - r = recv(data->vhostfd, buf, 128, MSG_PEEK); + r = recv(data->vhostfd, buf, 128, MSG_PEEK | MSG_DONTWAIT); if (r == 0 || (r < 0 && errno != EAGAIN)) { dev->net_status &= (~VIRTIO_NET_S_LINK_UP); PMD_DRV_LOG(ERR, "virtio-user port %u is down", dev->hw.port_id); @@ -965,12 +958,6 @@ vhost_user_update_link_state(struct virtio_user_dev *dev) } else { dev->net_status |= VIRTIO_NET_S_LINK_UP; } - - if (fcntl(data->vhostfd, F_SETFL, - flags & ~O_NONBLOCK) == -1) { - PMD_DRV_LOG(ERR, "error clearing O_NONBLOCK flag"); - return -1; - } } else if (dev->is_server) { dev->net_status &= (~VIRTIO_NET_S_LINK_UP); if (virtio_user_dev_server_reconnect(dev) >= 0) -- 2.34.1 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2022-07-06 21:07:53.952055233 +0100 +++ 0011-net-virtio-user-fix-socket-non-blocking-mode.patch 2022-07-06 21:07:53.539518631 +0100 @@ -1 +1 @@ -From 41f9a1757ffc010cc3debaad9a56af8ad88d0c6d Mon Sep 17 00:00:00 2001 +From 19457a68eab5f145a21844c1edcf559a69dc7540 Mon Sep 17 00:00:00 2001 @@ -5,0 +6,2 @@ +[ upstream commit 41f9a1757ffc010cc3debaad9a56af8ad88d0c6d ] + @@ -27 +28,0 @@ -Cc: stable@dpdk.org @@ -37 +38 @@ -index 7d1749114d..198bd63d3c 100644 +index 0a39393c45..77820bf967 100644 @@ -40 +41 @@ -@@ -940,15 +940,8 @@ vhost_user_update_link_state(struct virtio_user_dev *dev) +@@ -942,15 +942,8 @@ vhost_user_update_link_state(struct virtio_user_dev *dev) @@ -57 +58 @@ -@@ -963,12 +956,6 @@ vhost_user_update_link_state(struct virtio_user_dev *dev) +@@ -965,12 +958,6 @@ vhost_user_update_link_state(struct virtio_user_dev *dev)