From patchwork Sun Jan 22 10:05:26 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 46926 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp1090517wrn; Sun, 22 Jan 2023 02:20:51 -0800 (PST) X-Google-Smtp-Source: AMrXdXvR1XsP0HJme4VnjWPszqcfY9ScX6CwDeN5tKfeOffQWr0+5RWdH0OqyyWX8FqUsdR+GeQe X-Received: by 2002:a17:90b:4fc2:b0:229:680:1729 with SMTP id qa2-20020a17090b4fc200b0022906801729mr21600611pjb.10.1674382850779; Sun, 22 Jan 2023 02:20:50 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674382850; cv=none; d=google.com; s=arc-20160816; b=SUurHVoUhvl4gRWBx4l74TFpc6sLO2W3qu3YG8UK+JGopGUyU6SeDSMOe0QQHMab4F 1egykMhbIAhdYWxq+R04XCesgaubSjdax++E+4xcAwOvYYV4l2NH3BI9gb8xLc2zQKci 0vOmnN42qiNXnakyonEvb4nl9l0ysf2CAxDxK/b92KvmodX/SOrIFFJBavwXAgxNQ5mx NHUoGxKeG8zNUtyHSWmiiC/jSUBmRjeiqJC8sVpPN0QcMYgB6fnxYSj3Jl33+L2c7brO s9J74uMuZeJVQdJgTXV1RTrtu17JAGWDiPUeIiYy8ZIjdzFU+RHSW3ySU103Ks1AX9q9 HDOg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:ui-outboundreport:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from; bh=VgDqWiMM6KtRMPRMoSoimYKKvVxPzbRji529n4WiuOg=; b=WUHC68S6mY6YlyzydV5omnAjRIQBJo8UbU2MdeRS4C95s39Pu1SUedJI5eTJc0iqxf tVrxLP7+i9cP7mHh69Bn+oNtUH30eVa3p09MCIE3ATRYjkPoFWYc2Y0P60a8YE95y4Lm 1XsJlpZSwMG55rqL62Er8h0ybg4JS9ygKqP352NS0WYHQjfBe4rZK2qZFZs6pyH+zlj8 dP846D+fBdx0rzfHqyT6ihJ1WTZc45pEdgpX2/rK27FOnq0dQHZMkdQq/mcQGBvxMfh2 6yj4VbGC1YYfNcPNOVEXlXw7O58mIYW4LkU2VQkhvI7CuOXgyaxunAZOmOl5rr7pNItp CCoQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id t12-20020a17090a3e4c00b00229f6a304a4si8220019pjm.62.2023.01.22.02.20.38; Sun, 22 Jan 2023 02:20:50 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229970AbjAVKMA (ORCPT + 99 others); Sun, 22 Jan 2023 05:12:00 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49768 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229966AbjAVKLw (ORCPT ); Sun, 22 Jan 2023 05:11:52 -0500 X-Greylist: delayed 318 seconds by postgrey-1.37 at lindbergh.monkeyblade.net; Sun, 22 Jan 2023 02:11:03 PST Received: from mout.kundenserver.de (mout.kundenserver.de [212.227.126.187]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C109C1D90F; Sun, 22 Jan 2023 02:11:03 -0800 (PST) Received: from lenovo-t14s.redhat.com ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue012 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MqINP-1oy0341K9z-00nPdI; Sun, 22 Jan 2023 11:05:33 +0100 From: Laurent Vivier To: linux-kernel@vger.kernel.org Cc: "Michael S. Tsirkin" , Parav Pandit , virtualization@lists.linux-foundation.org, netdev@vger.kernel.org, Eli Cohen , Jason Wang , Gautam Dawar , Cindy Lu , "David S. Miller" , =?utf-8?q?Eugenio_P=C3=A9rez?= Subject: [PATCH 4/4] virtio_net: fix virtnet_send_command() with vdpa_sim_net Date: Sun, 22 Jan 2023 11:05:26 +0100 Message-Id: <20230122100526.2302556-5-lvivier@redhat.com> X-Mailer: git-send-email 2.39.0 In-Reply-To: <20230122100526.2302556-1-lvivier@redhat.com> References: <20230122100526.2302556-1-lvivier@redhat.com> MIME-Version: 1.0 X-Provags-ID: V03:K1:YTjFLU1lj+k8vApmSwkjqxN3EBr0drRgQSUre+RfcDGSw4uTA+0 fpObHvWK8k3li6YWyS80RiUZHOX8MywdgaDytn/6t8T+DiaynYAOSnUv/FWk1HaQEOmrj5S KrovGMPtwrXHOQlFb5ZB7KBF2sy6BQdtTORgHlq35jPyVn4D7dbru2lBJVeYHfpcThtGErb +Fr/sA0/vvb/ZKDcaf4ag== UI-OutboundReport: notjunk:1;M01:P0:W/8CbaMJfHI=;CztS2YeNk03sPaZQmk0pcBJ6L43 XcTq3jVYTR1mPvip15m9kRcm4gx/fCYvZXXAiserRgQ9GFMVi/1LZ0b4jQkbYecKpXXQ+1YOU rBpVaXPROlsifSO1bNiEiHYAbudG2KcSeHDa4oueEPlBlJpIcVfy5U+3ZlKYLxT5ZRzdg50Qs g/IdVtnBO6yU19WOFGc0dYdOtjbIpFy66HsEykChNF0WWHZQhrOOJ2WhiAuzsvuBRJTgO05cc GLWOboaYKXGeWF74daHubX+BlE1K7ZZS9qZ6sIRQ2qMZO+rA8owLFae2Y/cg3W80pIRcNgW47 jkd67qMPk0vZjxCO9UrPIK3Tls1BKbZ2u91VxEMWay+YYAE1RqV/NhWBUjZ85vf/Jua4dzf9u UzzD3cflGJ9vqwlR003dHr1chEHCC6R+ff7po0WY+C8azbOlMMlJlx4lV5ntjVsWQkQgVzihl cgg+JKelqfGLSQlRJBSx6aNgedhV/zvuqXKnNPGdNSttYep61gKReoyF4gEDLnVmvpkLkjVzM nlV+b2ig0YvJfYiuFp4QMmD4FiCpy5+9MDcBhXTpaiIDFvMhaMsPdgwPCARDGRKYR8/7oPQku F5Nzmv3rfaax47qfuviRX2Dq8X+FsMmh0fbGYELuiT9zFEea8uCwaEwaW4BsNrsCbbzen8UtB xzMSe0bE+Kdl8LxR2gO5YF/TUzIUv4hfj3/YxuuEzA== X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1755717672313240774?= X-GMAIL-MSGID: =?utf-8?q?1755717672313240774?= virtnet_send_command() sends a command to the control virtqueue by adding the command to the virtqueue, kicking the queue and waiting in a loop. The vdpa simulator simulates the control virqueue using a work queue: the virqueue_kick() calls schedule_work() to start the queue processing. But as virtnet_send_command() uses a loop, the scheduler cannot schedule the workqueue and the virtqueue is never processed (and the command never executed). To fix that, replace in the loop the cpu_relax() by a schedule(). Signed-off-by: Laurent Vivier --- drivers/net/virtio_net.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index 29b3cc72082d..546c0b2baaca 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c @@ -2011,7 +2011,7 @@ static bool virtnet_send_command(struct virtnet_info *vi, u8 class, u8 cmd, while (!virtqueue_get_buf(vi->cvq, &tmp) && !virtqueue_is_broken(vi->cvq) && !time_after(jiffies, timeout)) - cpu_relax(); + schedule(); return vi->ctrl->status == VIRTIO_NET_OK; }