From nobody Sun Feb 8 11:16:29 2026 Received: from smtp-relay-internal-0.canonical.com (smtp-relay-internal-0.canonical.com [185.125.188.122]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E2E0718DF81 for ; Tue, 3 Dec 2024 07:30:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.125.188.122 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1733211062; cv=none; b=I77MjIQVo6hZ/uLECTup6OmjUeAegDaJXyU8EV23BEkBdocceiLytWJFuM2KYz6T+m0Lm1/P4NJdkjS3WMF94rCn6i5/6gtUFXa8ZzT+Js23hj/8PNhvnufTR7Jw/urPozFPp7sM1QfRUp2hJCDwQPHC76GoxC7HmdrcnogOdbA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1733211062; c=relaxed/simple; bh=hM3TSWI+eWAZK1GQuQ4ljeW5GtUNvTvSlHAiQfkse1Q=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=GKS3bV9sCjHyVMvalPWjOv76k0ECuoNYrj53tnoCVwh6g27SJuLfKYbn/co0nw+cEtI96hBD4fEoHETxM9GBxH9R1BKXCnklTSjHAY4XL0SbJLcBvNAMjJHR1ntiZocIfQ9jRG1AH59aggKGpTfy3Tff6FwNiVpYaIMGiUtYIOI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=canonical.com; spf=pass smtp.mailfrom=canonical.com; dkim=pass (2048-bit key) header.d=canonical.com header.i=@canonical.com header.b=eLylPdfC; arc=none smtp.client-ip=185.125.188.122 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=canonical.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=canonical.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=canonical.com header.i=@canonical.com header.b="eLylPdfC" Received: from mail-pl1-f197.google.com (mail-pl1-f197.google.com [209.85.214.197]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-0.canonical.com (Postfix) with ESMTPS id DE7B33F297 for ; Tue, 3 Dec 2024 07:30:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1733211057; bh=rn0yafvxR+rgXFWM/3BvoQL8ErZXVisWsjUhy9aKjNw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=eLylPdfCPhiV1N1U4BnwTPiks3Cahm9jHCg1BNTld7pk2v7yIb05L14xihxGssrMH sY4agVdUgDdmrcGL6BsR/X/DeZKkpJSFs+v9ffK+wNPdujR/7u27Etp0K+UWNJx72P XxHYQZTDbk13EIE5b6JnY2ZX2HBNOlwGhV7RZG/ZFCwfK9l4q38Hv3p/3/BUXYDg8B QGRdPnVVHS41Errntq0xGbOfw1JidVoUxsFLeefo84tfeMVHyn9WT0d1yXATe/cEr+ 8flhVRaK6Dfcw7vqrJsXGbU+obNRtOfyMV4WmnL1Go1CQ2UU8xfuKJTrafH04PVuFY ttnTpb5IFEFdw== Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-2150e4a9f3cso45215395ad.1 for ; Mon, 02 Dec 2024 23:30:57 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1733211056; x=1733815856; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=rn0yafvxR+rgXFWM/3BvoQL8ErZXVisWsjUhy9aKjNw=; b=Gx45ZHgIcQl4El7pqAEiA3rbBqrbFymwLpjt4L8JRlAr1lA+f4ee62yolmfAxcJUSC /fF0iseo9kLAnEavhSMg3+WWwC6asnlTsprwo0CENefKuvjVeAq0J5C94hHKz2FDln8L bYa6vMmq3cxInK0OSjIdzQdelji34IGLjRODwf1MdGy7lBSTVMXmeN4HkORL/YQ4ucZQ o/OFjokWkktfTfNCJr+BqsDXLnWJ9EGgh+wjP+hVr3q70A9g8ylceVANiUK4HLEJRlFA SrNHNFGrrqCI8Cn5JCda9ITVyUp06LjViQDnuxVriim6thO/reiGQh0ZrzWogCJEBgdG qDjA== X-Forwarded-Encrypted: i=1; AJvYcCVfEOvgLmU3N0y55nBeSgFezOeLhgxO+gD9LV/XxWjmAspJPEHXFcqGMjEFSLHiqIcoxwFSSQhl68jGwrc=@vger.kernel.org X-Gm-Message-State: AOJu0Yzr56K9c7RgcYM1PlpwQHw9KiRua2vR+JQ5FAzM8QKu37tz6R57 XKVTrKdUZAzBs5tdUZl+HvcFSWGijprHR70iJ+CkIGY/B0NKJHaZz1ud+DfkUGgyJnkYs7UtUSA quOUrzOj+Q715qPixX5b8wLBBiBzHy4/IqPthWyGQmi2lCfnf68UzheW6I25mMTJs4b3X0qQP0Q M+SA== X-Gm-Gg: ASbGncusQzO+lPrBDm2CpubR1s6QcKvnMKU/uA6CVzyndPDr8Zq8gO+6OrBomqRyo9K Qv/DhrsUaR+to4OTDXqxWT5oPkn80j29qvQ510t3/3kFFGLUXEHjjNhlpjHg4uTSGkrFqitrgsZ nwVe/MCoCta1/PNwBTfnZ78bHNLnXqOrKko7VKJsa+NvGrejBDr41Moz0//EHrptlW2V4F+NVWE 8IKa6N1QGrVGRENrOtyxhqdBLXd5wbi+B8SjfSOHxL2AEiYP4AEtq+iwLaP+vJccmQE X-Received: by 2002:a17:903:191:b0:215:7cd2:1132 with SMTP id d9443c01a7336-215bd0e7d81mr19717645ad.29.1733211056438; Mon, 02 Dec 2024 23:30:56 -0800 (PST) X-Google-Smtp-Source: AGHT+IG7gi3gIAf+lQKauh1LZNO6nUm9eJREawvVeJIpAEFisTXFFb5l8sD9JG8LDx7etuoxazJyYg== X-Received: by 2002:a17:903:191:b0:215:7cd2:1132 with SMTP id d9443c01a7336-215bd0e7d81mr19717435ad.29.1733211056018; Mon, 02 Dec 2024 23:30:56 -0800 (PST) Received: from localhost.localdomain ([240f:74:7be:1:b2b6:e8c2:50d0:c558]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-21586d40afasm35735165ad.270.2024.12.02.23.30.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Dec 2024 23:30:55 -0800 (PST) From: Koichiro Den To: virtualization@lists.linux.dev Cc: mst@redhat.com, jasowang@redhat.com, xuanzhuo@linux.alibaba.com, eperezma@redhat.com, andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, jiri@resnulli.us, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org Subject: [PATCH net-next v2 1/5] virtio_net: correct netdev_tx_reset_queue() invocation point Date: Tue, 3 Dec 2024 16:30:21 +0900 Message-ID: <20241203073025.67065-2-koichiro.den@canonical.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20241203073025.67065-1-koichiro.den@canonical.com> References: <20241203073025.67065-1-koichiro.den@canonical.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" When virtnet_close is followed by virtnet_open, some TX completions can possibly remain unconsumed, until they are finally processed during the first NAPI poll after the netdev_tx_reset_queue(), resulting in a crash [1]. Commit b96ed2c97c79 ("virtio_net: move netdev_tx_reset_queue() call before RX napi enable") was not sufficient to eliminate all BQL crash cases for virtio-net. This issue can be reproduced with the latest net-next master by running: `while :; do ip l set DEV down; ip l set DEV up; done` under heavy network TX load from inside the machine. netdev_tx_reset_queue() can actually be dropped from virtnet_open path; the device is not stopped in any case. For BQL core part, it's just like traffic nearly ceases to exist for some period. For stall detector added to BQL, even if virtnet_close could somehow lead to some TX completions delayed for long, followed by virtnet_open, we can just take it as stall as mentioned in commit 6025b9135f7a ("net: dqs: add NIC stall detector based on BQL"). Note also that users can still reset stall_max via sysfs. So, drop netdev_tx_reset_queue() from virtnet_enable_queue_pair(). This eliminates the BQL crashes. Note that netdev_tx_reset_queue() is now explicitly required in freeze/restore path, so this patch adds it to free_unused_bufs(). [1]: Acked-by: Jason Wang ------------[ cut here ]------------ kernel BUG at lib/dynamic_queue_limits.c:99! Oops: invalid opcode: 0000 [#1] PREEMPT SMP NOPTI CPU: 7 UID: 0 PID: 1598 Comm: ip Tainted: G N 6.12.0net-next_main+ #2 Tainted: [N]=3DTEST Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), \ BIOS rel-1.16.3-0-ga6ed6b701f0a-prebuilt.qemu.org 04/01/2014 RIP: 0010:dql_completed+0x26b/0x290 Code: b7 c2 49 89 e9 44 89 da 89 c6 4c 89 d7 e8 ed 17 47 00 58 65 ff 0d 4d 27 90 7e 0f 85 fd fe ff ff e8 ea 53 8d ff e9 f3 fe ff ff <0f> 0b 01 d2 44 89 d1 29 d1 ba 00 00 00 00 0f 48 ca e9 28 ff ff ff RSP: 0018:ffffc900002b0d08 EFLAGS: 00010297 RAX: 0000000000000000 RBX: ffff888102398c80 RCX: 0000000080190009 RDX: 0000000000000000 RSI: 000000000000006a RDI: 0000000000000000 RBP: ffff888102398c00 R08: 0000000000000000 R09: 0000000000000000 R10: 00000000000000ca R11: 0000000000015681 R12: 0000000000000001 R13: ffffc900002b0d68 R14: ffff88811115e000 R15: ffff8881107aca40 FS: 00007f41ded69500(0000) GS:ffff888667dc0000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 0000556ccc2dc1a0 CR3: 0000000104fd8003 CR4: 0000000000772ef0 PKRU: 55555554 Call Trace: ? die+0x32/0x80 ? do_trap+0xd9/0x100 ? dql_completed+0x26b/0x290 ? dql_completed+0x26b/0x290 ? do_error_trap+0x6d/0xb0 ? dql_completed+0x26b/0x290 ? exc_invalid_op+0x4c/0x60 ? dql_completed+0x26b/0x290 ? asm_exc_invalid_op+0x16/0x20 ? dql_completed+0x26b/0x290 __free_old_xmit+0xff/0x170 [virtio_net] free_old_xmit+0x54/0xc0 [virtio_net] virtnet_poll+0xf4/0xe30 [virtio_net] ? __update_load_avg_cfs_rq+0x264/0x2d0 ? update_curr+0x35/0x260 ? reweight_entity+0x1be/0x260 __napi_poll.constprop.0+0x28/0x1c0 net_rx_action+0x329/0x420 ? enqueue_hrtimer+0x35/0x90 ? trace_hardirqs_on+0x1d/0x80 ? kvm_sched_clock_read+0xd/0x20 ? sched_clock+0xc/0x30 ? kvm_sched_clock_read+0xd/0x20 ? sched_clock+0xc/0x30 ? sched_clock_cpu+0xd/0x1a0 handle_softirqs+0x138/0x3e0 do_softirq.part.0+0x89/0xc0 __local_bh_enable_ip+0xa7/0xb0 virtnet_open+0xc8/0x310 [virtio_net] __dev_open+0xfa/0x1b0 __dev_change_flags+0x1de/0x250 dev_change_flags+0x22/0x60 do_setlink.isra.0+0x2df/0x10b0 ? rtnetlink_rcv_msg+0x34f/0x3f0 ? netlink_rcv_skb+0x54/0x100 ? netlink_unicast+0x23e/0x390 ? netlink_sendmsg+0x21e/0x490 ? ____sys_sendmsg+0x31b/0x350 ? avc_has_perm_noaudit+0x67/0xf0 ? cred_has_capability.isra.0+0x75/0x110 ? __nla_validate_parse+0x5f/0xee0 ? __pfx___probestub_irq_enable+0x3/0x10 ? __create_object+0x5e/0x90 ? security_capable+0x3b/0x70 rtnl_newlink+0x784/0xaf0 ? avc_has_perm_noaudit+0x67/0xf0 ? cred_has_capability.isra.0+0x75/0x110 ? stack_depot_save_flags+0x24/0x6d0 ? __pfx_rtnl_newlink+0x10/0x10 rtnetlink_rcv_msg+0x34f/0x3f0 ? do_syscall_64+0x6c/0x180 ? entry_SYSCALL_64_after_hwframe+0x76/0x7e ? __pfx_rtnetlink_rcv_msg+0x10/0x10 netlink_rcv_skb+0x54/0x100 netlink_unicast+0x23e/0x390 netlink_sendmsg+0x21e/0x490 ____sys_sendmsg+0x31b/0x350 ? copy_msghdr_from_user+0x6d/0xa0 ___sys_sendmsg+0x86/0xd0 ? __pte_offset_map+0x17/0x160 ? preempt_count_add+0x69/0xa0 ? __call_rcu_common.constprop.0+0x147/0x610 ? preempt_count_add+0x69/0xa0 ? preempt_count_add+0x69/0xa0 ? _raw_spin_trylock+0x13/0x60 ? trace_hardirqs_on+0x1d/0x80 __sys_sendmsg+0x66/0xc0 do_syscall_64+0x6c/0x180 entry_SYSCALL_64_after_hwframe+0x76/0x7e RIP: 0033:0x7f41defe5b34 Code: 15 e1 12 0f 00 f7 d8 64 89 02 b8 ff ff ff ff eb bf 0f 1f 44 00 00 f3 0f 1e fa 80 3d 35 95 0f 00 00 74 13 b8 2e 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 4c c3 0f 1f 00 55 48 89 e5 48 83 ec 20 89 55 RSP: 002b:00007ffe5336ecc8 EFLAGS: 00000202 ORIG_RAX: 000000000000002e RAX: ffffffffffffffda RBX: 0000000000000003 RCX: 00007f41defe5b34 RDX: 0000000000000000 RSI: 00007ffe5336ed30 RDI: 0000000000000003 RBP: 00007ffe5336eda0 R08: 0000000000000010 R09: 0000000000000001 R10: 00007ffe5336f6f9 R11: 0000000000000202 R12: 0000000000000003 R13: 0000000067452259 R14: 0000556ccc28b040 R15: 0000000000000000 [...] ---[ end Kernel panic - not syncing: Fatal exception in interrupt ]--- Fixes: c8bd1f7f3e61 ("virtio_net: add support for Byte Queue Limits") Cc: # v6.11+ Signed-off-by: Koichiro Den --- 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 64c87bb48a41..48ce8b3881b6 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c @@ -3054,7 +3054,6 @@ static int virtnet_enable_queue_pair(struct virtnet_i= nfo *vi, int qp_index) if (err < 0) goto err_xdp_reg_mem_model; =20 - netdev_tx_reset_queue(netdev_get_tx_queue(vi->dev, qp_index)); virtnet_napi_enable(vi->rq[qp_index].vq, &vi->rq[qp_index].napi); virtnet_napi_tx_enable(vi, vi->sq[qp_index].vq, &vi->sq[qp_index].napi); =20 @@ -6243,6 +6242,7 @@ static void free_unused_bufs(struct virtnet_info *vi) struct virtqueue *vq =3D vi->sq[i].vq; while ((buf =3D virtqueue_detach_unused_buf(vq)) !=3D NULL) virtnet_sq_free_unused_buf(vq, buf); + netdev_tx_reset_queue(netdev_get_tx_queue(vi->dev, i)); cond_resched(); } =20 --=20 2.43.0 From nobody Sun Feb 8 11:16:29 2026 Received: from smtp-relay-internal-0.canonical.com (smtp-relay-internal-0.canonical.com [185.125.188.122]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0BD6E189F45 for ; Tue, 3 Dec 2024 07:31:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.125.188.122 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1733211065; cv=none; b=mAKbQ71NTR2aWUzJPv0lWHIc/7YZU6daLrsP2uScoh535OrlggwP/QDtEbo59rfgobIMz5j/xnMCgnGJH87B2TUWJoOwN4fuNk88YC1YcjdzkAuMaI3WObN0X+OIGT0z0SzCRNC7k9W4gED/K8fCjR7cJ6fFvn38t1tc45UNHE0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1733211065; c=relaxed/simple; bh=w5AGnCRzxvkv5uIQocaLa71YmtI6LxwVdo9vgigsjyc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=D9R7UK3WOfKE5THzMzk30tQRJ8EfNvcda7WJ9VYfoitqQMeUzquvviPv4BypCBU+P+jbia020I8KqokiAl5ibBtc/6uXFX/GYvM6erh067S6cgMoGWAy6E5JdmmWWxPsArWGjHL6qWyfqRJbLaQV+EcvnCAz+MfyTuX96mMLPTk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=canonical.com; spf=pass smtp.mailfrom=canonical.com; dkim=pass (2048-bit key) header.d=canonical.com header.i=@canonical.com header.b=QoSkUbSG; arc=none smtp.client-ip=185.125.188.122 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=canonical.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=canonical.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=canonical.com header.i=@canonical.com header.b="QoSkUbSG" Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-0.canonical.com (Postfix) with ESMTPS id 89D303FDB1 for ; Tue, 3 Dec 2024 07:31:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1733211061; bh=fW9S3ivOx/vCR/Vpb6zGlhQWyPtyKwj/7WKI3Nel5z4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=QoSkUbSG4sn0AdiFfXD0l9vSJzLdEnz5weCkV+IhLUyhySqlIuzFD9x6EXuCkjbot iHMhpGpaAPjBwZaHOWgjclclDBJwNRzPUCwpgpBXc4Asgx5EtSIB0LiRQDKVHCnBMz CQVvJSizHFDNLR2ZTZYm91IsB3qnXgctPZj2Um3lMYtX8LfMb8G8TANLPcSULUArfs j9j04/CLmUniB3i2jwufIFiVszieQjX6E0TMa4XN5PKcV2sehraAS4H01/OmYV024c ExB14VxSSb+dl8lIsF5yhwMmckM7foLzaxAN+1hI3ns7X37VwmGJXmrFnjpCLygK5c 8oxitsmza5UwA== Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-215576aca41so23173575ad.0 for ; Mon, 02 Dec 2024 23:31:01 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1733211060; x=1733815860; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=fW9S3ivOx/vCR/Vpb6zGlhQWyPtyKwj/7WKI3Nel5z4=; b=D5NTOOE5Tu17zDiK0PPHP3hCv0bAEHmlC7lhdq4kzHQcXvpJtJKFQyBqBVhXnOtgeW jwuiI7duok8dTn0nCDGyytxSCQ+H03eGFO6/QAynOjXf+xU5Q0QBOMD0pV416QoS3dH9 k1XWnxzkm4g5ikzRFK3mprZSvnujZ969nwVAlq+g5GEuKiX2AIy5SYeo1fZWJ50D+7+1 me3yf5+83RGYEoLojni8U+duMpYqj1rWV7AobmLz9qkehZbeqNlK7lpqRQMV97wdLOkv dNYANxHHvG4JAw1onVtaab2f9sOj0zsFJ8L7Hmbq2n8tXszOT3TxKAFmROAAYx008XO7 gnwA== X-Forwarded-Encrypted: i=1; AJvYcCXYQzhnsyeozbyOf8na16EEcbA3OT/Vc42fS5iEXo4BRBwLg0p39rSP+P47aw+n6Nx+jV7tF6amKhD98Es=@vger.kernel.org X-Gm-Message-State: AOJu0Ywq1mTjXYbqQs4idrB3IOryfi+JHV3ZOvxap0Du3tGj54evrqNw 45M4hfvLbm9xEITsThTm64WBUEN7dpZ4HBK6bsJQG64PZg0gOzEjTKg6pr+4paamm6nr8E0T1g0 D/B6bG77+gDyPMeyFmTPg66ui7bg8pgvWnED/BG1YyQBh5rzXqlLyBY6gqLVfKrHlb3VoMqpMJ/ S7KQ== X-Gm-Gg: ASbGncvKmGMdxwVD66OQsYPhA0yRybSU4N0NG7hQLmRLwUlegfYkFJs5alKOCrMRKJf PDgEtl/KM20AiRQxslRI7sZtIPHBOW1FuqNsQ7xCpaYjf6beCGju2qCdDWPoW2CsRgQZF3uvAYt 1Pv6FKhzZ7MU3tUx81wCw50HTa1rXQ1ZToPXovdMRxtmdoQT3/iNovTkgxXDKGdngk6xZZF9mDl qWE9u+paqloct9B0TARv0QM/pLWMtxJGeJ+DbtVzGU4vCyIC5QsBOIkGWn3AITkL8at X-Received: by 2002:a17:902:cec7:b0:215:a3e4:d26b with SMTP id d9443c01a7336-215a3e4dc89mr79434805ad.0.1733211060068; Mon, 02 Dec 2024 23:31:00 -0800 (PST) X-Google-Smtp-Source: AGHT+IEwtFDsd1WSbUlFVtINv5gpljD9oqMcZ9HvNspEp3AWCkY/mGPNDUp8oHCemJTryvY2p/FvlA== X-Received: by 2002:a17:902:cec7:b0:215:a3e4:d26b with SMTP id d9443c01a7336-215a3e4dc89mr79434565ad.0.1733211059765; Mon, 02 Dec 2024 23:30:59 -0800 (PST) Received: from localhost.localdomain ([240f:74:7be:1:b2b6:e8c2:50d0:c558]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-21586d40afasm35735165ad.270.2024.12.02.23.30.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Dec 2024 23:30:59 -0800 (PST) From: Koichiro Den To: virtualization@lists.linux.dev Cc: mst@redhat.com, jasowang@redhat.com, xuanzhuo@linux.alibaba.com, eperezma@redhat.com, andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, jiri@resnulli.us, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org Subject: [PATCH net-next v2 2/5] virtio_ring: add 'flushed' as an argument to virtqueue_resize() Date: Tue, 3 Dec 2024 16:30:22 +0900 Message-ID: <20241203073025.67065-3-koichiro.den@canonical.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20241203073025.67065-1-koichiro.den@canonical.com> References: <20241203073025.67065-1-koichiro.den@canonical.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" When virtqueue_resize() has actually recycled all unused buffers, additional work may be required in some cases. Relying solely on its return status is fragile, so introduce a new argument 'flushed' to explicitly indicate whether it has really occurred. Signed-off-by: Koichiro Den Acked-by: Jason Wang --- drivers/net/virtio_net.c | 6 ++++-- drivers/virtio/virtio_ring.c | 7 ++++++- include/linux/virtio.h | 3 ++- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index 48ce8b3881b6..df9bfe31aa6d 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c @@ -3326,12 +3326,13 @@ static int virtnet_rx_resize(struct virtnet_info *v= i, struct receive_queue *rq, u32 ring_num) { int err, qindex; + bool flushed; =20 qindex =3D rq - vi->rq; =20 virtnet_rx_pause(vi, rq); =20 - err =3D virtqueue_resize(rq->vq, ring_num, virtnet_rq_unmap_free_buf); + err =3D virtqueue_resize(rq->vq, ring_num, virtnet_rq_unmap_free_buf, &fl= ushed); if (err) netdev_err(vi->dev, "resize rx fail: rx queue index: %d err: %d\n", qind= ex, err); =20 @@ -3389,12 +3390,13 @@ static int virtnet_tx_resize(struct virtnet_info *v= i, struct send_queue *sq, u32 ring_num) { int qindex, err; + bool flushed; =20 qindex =3D sq - vi->sq; =20 virtnet_tx_pause(vi, sq); =20 - err =3D virtqueue_resize(sq->vq, ring_num, virtnet_sq_free_unused_buf); + err =3D virtqueue_resize(sq->vq, ring_num, virtnet_sq_free_unused_buf, &f= lushed); if (err) netdev_err(vi->dev, "resize tx fail: tx queue index: %d err: %d\n", qind= ex, err); =20 diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c index 82a7d2cbc704..34a068d401ec 100644 --- a/drivers/virtio/virtio_ring.c +++ b/drivers/virtio/virtio_ring.c @@ -2772,6 +2772,7 @@ EXPORT_SYMBOL_GPL(vring_create_virtqueue_dma); * @_vq: the struct virtqueue we're talking about. * @num: new ring num * @recycle: callback to recycle unused buffers + * @flushed: whether or not unused buffers are all flushed * * When it is really necessary to create a new vring, it will set the curr= ent vq * into the reset state. Then call the passed callback to recycle the buff= er @@ -2792,11 +2793,14 @@ EXPORT_SYMBOL_GPL(vring_create_virtqueue_dma); * */ int virtqueue_resize(struct virtqueue *_vq, u32 num, - void (*recycle)(struct virtqueue *vq, void *buf)) + void (*recycle)(struct virtqueue *vq, void *buf), + bool *flushed) { struct vring_virtqueue *vq =3D to_vvq(_vq); int err; =20 + *flushed =3D false; + if (num > vq->vq.num_max) return -E2BIG; =20 @@ -2809,6 +2813,7 @@ int virtqueue_resize(struct virtqueue *_vq, u32 num, err =3D virtqueue_disable_and_recycle(_vq, recycle); if (err) return err; + *flushed =3D true; =20 if (vq->packed_ring) err =3D virtqueue_resize_packed(_vq, num); diff --git a/include/linux/virtio.h b/include/linux/virtio.h index 57cc4b07fd17..878feda08af9 100644 --- a/include/linux/virtio.h +++ b/include/linux/virtio.h @@ -109,7 +109,8 @@ dma_addr_t virtqueue_get_avail_addr(const struct virtqu= eue *vq); dma_addr_t virtqueue_get_used_addr(const struct virtqueue *vq); =20 int virtqueue_resize(struct virtqueue *vq, u32 num, - void (*recycle)(struct virtqueue *vq, void *buf)); + void (*recycle)(struct virtqueue *vq, void *buf), + bool *flushed); int virtqueue_reset(struct virtqueue *vq, void (*recycle)(struct virtqueue *vq, void *buf)); =20 --=20 2.43.0 From nobody Sun Feb 8 11:16:29 2026 Received: from smtp-relay-internal-1.canonical.com (smtp-relay-internal-1.canonical.com [185.125.188.123]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B8FC71C0DE2 for ; Tue, 3 Dec 2024 07:31:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.125.188.123 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1733211069; cv=none; b=W90vic5Gq5FrzXqJpL46/yagZhTE6woDcp6tdinZoQPtpcXeR8KsjE84WuTYPCOli16rQpeQy6WBuxhaguI7SMDe2oRWHFMfMsYehAGAWtQuU2GtsEdhXf+Ky66bAG4dICQkMShfVC0715ldXqeRsPpIeC73tPKssE/JDmIRerg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1733211069; c=relaxed/simple; bh=ONGQeGV/Lo+dvZaz/MxmBnTpy+k0yha3gjPk1y+HOIY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=rfNG7tcXU9/XBu0IscT6lNMoeOnwzuqesTIs/iEFM3eefc1AuSr0GPOuXElxgnCNtuw98aAleV2z8haXjraDMbvruNVJu4wiXmOh6iFVmmmpcUErCL7M1WdxZClFwwbc0/auTW8DF25+1KzdPFV+vfg4XNI1Lx6QtoQ62VWg8RY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=canonical.com; spf=pass smtp.mailfrom=canonical.com; dkim=pass (2048-bit key) header.d=canonical.com header.i=@canonical.com header.b=og5pTrpR; arc=none smtp.client-ip=185.125.188.123 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=canonical.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=canonical.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=canonical.com header.i=@canonical.com header.b="og5pTrpR" Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-1.canonical.com (Postfix) with ESMTPS id 8F7A03F626 for ; Tue, 3 Dec 2024 07:31:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1733211065; bh=5NLMnu2Z46KkDgOBwjL355ay2S58qzCZBNzBIFOkdbw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=og5pTrpRvLJr0XSW2GAPqyptSvzFiPq9P25nRwiD6RklmYc4qDy4rvVU9T3KAfj/x Kof18ZoRu2x9ict/CHI2zJFFgFlnisNZJDC5EBmFIvzAp3IyH/I6AnGj6wQFPR8q1w zbXemcHYEdDkJS1yXV2fTgikPPjukJndYPlIPy866fkR8/bemteoziajT0nGS1brC+ Ih4il8+C72+0fyb+YPTyc5qnsfMHHI4OkkyFX3QeTY3HbQ1wShBkEjDA58NiYyloHw ng8xxkWAkYp3nJ7RNl8RLA7S/ixHNBID+0F0F7RXLwqWJMomQZt58oZk2zSkT7n41Y fhH5R9zpnNlbA== Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-21567f825d2so25688985ad.3 for ; Mon, 02 Dec 2024 23:31:05 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1733211063; x=1733815863; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=5NLMnu2Z46KkDgOBwjL355ay2S58qzCZBNzBIFOkdbw=; b=sBa0psNaPKrryzWRgoQXNwOQphAI331ibS1Hs0cwBj3KjEV5jxjJgauNCQUM9VsYk4 MOKO8HZyI5AvpsSI7wD6Le5ifn6mUt5F3V1735aXdoCWSURXVW73wLKy4tRR/Z2LiPLK T4mvHUIG3CoKipWv6pplNGNyELU0kRaho48/wjD8TyOsDb+aeE4KoTdTHpMjX/6niZ72 DUvzjvkTPOa8X4rpg+MqXZe1Y2m8W5hpTTT5JebQi6Ii+1s8l9s8gdMA+dAENz7DZo8D JAbrvaIOIx9KgIpxezKGzHdzti5TYxzh073TTGV5jnCMJJvcvbEvuwEpMeeTo+F81qtU NHBA== X-Forwarded-Encrypted: i=1; AJvYcCUSrg59e71+7V0RyMzkJa+V1h0if8lnpyyOSvrKE9C7vLsuPmQDHxoPRPlX+lv8xZGk6JRIU7p2ZQMt47k=@vger.kernel.org X-Gm-Message-State: AOJu0Yx58zl68c+32E2OgIvjuKYAAmxv/nEnvWwwpb+FU9JTbzdGgI+h BGxTkcT1Ipo0v9Ugns60dFPHEh5x+PTQDrVtucI44QJTChpBOXCXFE3o6DkRsVUlYQXCUIAn/AI GYZujg+lRTVECNf64KGwhpmMk/VQYTvlCP/TdyFCl7cXt7j+bsM2xhAuY+3Of8u11WiypRd24CB JU4w== X-Gm-Gg: ASbGnctemJwdrEmYzRNdP+EpZB3vFPuvs5C1TicWGjHFYyirg+aipnv0g+DGvUYqwZz 0ES55/HvoSksk/hWtg5J+Kx1PuNatGN6kXphY3YEBimuehbMpwnKWW4cvIRmmm1RxdcsziU0y6w S3SPx7r0OVcJKKV99ku9LhBDiPd9wX0p9YBcavmj38uJKw29wdGosVvYqxJV3QSrxX0ezyXWgm5 wzAixv2yhjDzVPQmSKA/GuhhzBpp09qk9VXPeh7RnlYHmwBhoF3slTnESRsWsGG0t4R X-Received: by 2002:a17:903:32cc:b0:215:6e07:e0c9 with SMTP id d9443c01a7336-215bd25580bmr20893725ad.53.1733211063425; Mon, 02 Dec 2024 23:31:03 -0800 (PST) X-Google-Smtp-Source: AGHT+IEeKLM2ys5e0Q3udqn6af/fNUMQYdUmFkZT/mCzd4RS2FR0h2mYZFsi+zEkr90jaY94M2UwGw== X-Received: by 2002:a17:903:32cc:b0:215:6e07:e0c9 with SMTP id d9443c01a7336-215bd25580bmr20893465ad.53.1733211063136; Mon, 02 Dec 2024 23:31:03 -0800 (PST) Received: from localhost.localdomain ([240f:74:7be:1:b2b6:e8c2:50d0:c558]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-21586d40afasm35735165ad.270.2024.12.02.23.31.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Dec 2024 23:31:02 -0800 (PST) From: Koichiro Den To: virtualization@lists.linux.dev Cc: mst@redhat.com, jasowang@redhat.com, xuanzhuo@linux.alibaba.com, eperezma@redhat.com, andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, jiri@resnulli.us, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org Subject: [PATCH net-next v2 3/5] virtio_net: add missing netdev_tx_reset_queue() to virtnet_tx_resize() Date: Tue, 3 Dec 2024 16:30:23 +0900 Message-ID: <20241203073025.67065-4-koichiro.den@canonical.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20241203073025.67065-1-koichiro.den@canonical.com> References: <20241203073025.67065-1-koichiro.den@canonical.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" virtnet_tx_resize() flushes remaining tx skbs, so DQL counters need to be reset. Fixes: c8bd1f7f3e61 ("virtio_net: add support for Byte Queue Limits") Cc: # v6.11+ Signed-off-by: Koichiro Den Acked-by: Jason Wang --- drivers/net/virtio_net.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index df9bfe31aa6d..0103d7990e44 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c @@ -3399,6 +3399,8 @@ static int virtnet_tx_resize(struct virtnet_info *vi,= struct send_queue *sq, err =3D virtqueue_resize(sq->vq, ring_num, virtnet_sq_free_unused_buf, &f= lushed); if (err) netdev_err(vi->dev, "resize tx fail: tx queue index: %d err: %d\n", qind= ex, err); + if (flushed) + netdev_tx_reset_queue(netdev_get_tx_queue(vi->dev, qindex)); =20 virtnet_tx_resume(vi, sq); =20 --=20 2.43.0 From nobody Sun Feb 8 11:16:29 2026 Received: from smtp-relay-internal-1.canonical.com (smtp-relay-internal-1.canonical.com [185.125.188.123]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C8B8B1B85EB for ; Tue, 3 Dec 2024 07:31:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.125.188.123 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1733211071; cv=none; b=HU9wJVNEy2bQPjh4f13FesmY8JHBbYJtJDVAJzMna/plh6NB768pR5GeXV34k/Rr5WE2urV4wQ+Rpf+YSp2k6/xLQjpYFLI7UllUcajZ6iLATSta+YpMyjlCCj4B6n12hjvhSwZqZkEX6O3wSmlLTV66FfwJEUs17yxxH/Ujz+4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1733211071; c=relaxed/simple; bh=B35FJqtVrA6/g3cRJDtf6i8TWPwah/QahNofj7yw7FU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=tIj1V2JZSuRwkfB8HjtOnY+I1VkH5FWcs9yL2fOdLPZoYRW4gV88kTWz848FvMZ/oB+mq149/toT2RfpC8PRIQTwSwggF5vR3OwZyDj3E9PFUACMLd3ZjVhy/akMUoGKVLtwOIkDdzSeol8dLZArtMRJffk3GroJZ0reH50M0g8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=canonical.com; spf=pass smtp.mailfrom=canonical.com; dkim=pass (2048-bit key) header.d=canonical.com header.i=@canonical.com header.b=LKpRDxmZ; arc=none smtp.client-ip=185.125.188.123 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=canonical.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=canonical.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=canonical.com header.i=@canonical.com header.b="LKpRDxmZ" Received: from mail-pl1-f200.google.com (mail-pl1-f200.google.com [209.85.214.200]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-1.canonical.com (Postfix) with ESMTPS id 6D692402C7 for ; Tue, 3 Dec 2024 07:31:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1733211068; bh=0tIoR4M/e1hC8XWEPJavp463x0u2oxmCDdWZ8pN4UWM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=LKpRDxmZRdRR+v13SSCn6JGZ2d/jh0meD7tb5qxZtwWBP8TX39Hi2RMvdSPIerkDq eU9epCYO46m5JaKvRktGXooROdY+o2ukLXNSQYO/F8294xVruHxUotb8PpUjseYv+/ azkjBbBKVv1emvQRnH+xYOQzvZx/Qey0auKjDplpXwjjJ6d9ac6UkeHCAbrulYW+6Q lluCdy/HCT8YfXWwV4rN2u1rwRPxK1jIOjnrUoom8hbYDRXVVClswsiI7yI6D4l3gA NkiUnEys5eh2T1cloHRdz1cPuqboVTZMP5tpIkA31MVSFNKkHBuNFFTTYdl0bLrdbN NhI6jbJJ+UNQw== Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-2157b83f656so29821605ad.0 for ; Mon, 02 Dec 2024 23:31:08 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1733211067; x=1733815867; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=0tIoR4M/e1hC8XWEPJavp463x0u2oxmCDdWZ8pN4UWM=; b=BWExP2EVEZ2JT94YAZHFIxro44XkYOooffnFfP85Lmz6rLwh+18nb7tC2XcR9dycxa HqN0InAO47UmxZs47UDUIP3yadkFIbrilmvDRudbmKMsY/3qI1E3YC+/BfpF2FnFZ7hW +xhBa65YPLndzTSPZWfEqiC4vY36LEpDxEw+HtK5BKsCVrtzrmQuFETi2o2rZ+1I5L29 NsmBb0FZR4HHhlbE1Wl8PXPgyJgEqXj3oJifx73HHugGCR6mbJf7B4bZ/kbu0wEf2U6x aNUs2T9ti5XYKSsEFOuy2DrgwwWnGxLND3Qp0Sdq6YPY7lz1xzNXUV6MknMSZ4j158WH D3zg== X-Forwarded-Encrypted: i=1; AJvYcCWwlw8RUlb2W50tOvusoZMBnTPH1/XmbfjtEEUabcIHGkohnZ0FL6YGQkiRzHxDY7uCMoIL9ELteawfHp4=@vger.kernel.org X-Gm-Message-State: AOJu0Yxw2bFAYVt5KbZRQH2HdMg9VRAWy9Ps/ffP05GVNF2KVkFzxU3+ NmblateEctY3uJeO/XAG42RI9dLlt1afMKxcJ/OpO48Me8oS4HbdiHrhWQiUqb4kfRzP5WmrR/C jdvtcFQaY9mrnM9YYZ4dkv4DsozlsY1d185MqGyPGW8qiAx+56DZmoFB3sUYUtDJsB0q+asHlCP ieRQ== X-Gm-Gg: ASbGnctKYf7n7hsMhpHdNHCErDXbFwh3N/+q1EfW5+9/7K1DZcoxq5NAu5iP+Su/i7A BdZ+AGo8x+VuYJLtKP2oDigG3ByPmepu+Anw6/elHUL0Vm87JhVxXSBOfpk0yOIA5Ra/jXqOKYm swLmCtp7pGZ8yR6rN58NeIHVZgIOmAcel1mU7xW0m4QFh6qcQgeOydXcX5AIU0DYSOEIFxO8PZ6 bp1yQju8nEQWMbAuI9LEmowygTWvCzhw4wBmp6K4mdz14B7KTpnlm4tHlxSDwmWxbG9 X-Received: by 2002:a17:902:c945:b0:215:a57e:88e7 with SMTP id d9443c01a7336-215bd1b46b0mr13127545ad.3.1733211067088; Mon, 02 Dec 2024 23:31:07 -0800 (PST) X-Google-Smtp-Source: AGHT+IHP4XjzXdT7YSH9p2iSEiXeF4vQERCA9UmM9iKOMdbRsv+ACtukLlabl71vKcQSJKNxhflm3g== X-Received: by 2002:a17:902:c945:b0:215:a57e:88e7 with SMTP id d9443c01a7336-215bd1b46b0mr13127345ad.3.1733211066776; Mon, 02 Dec 2024 23:31:06 -0800 (PST) Received: from localhost.localdomain ([240f:74:7be:1:b2b6:e8c2:50d0:c558]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-21586d40afasm35735165ad.270.2024.12.02.23.31.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Dec 2024 23:31:06 -0800 (PST) From: Koichiro Den To: virtualization@lists.linux.dev Cc: mst@redhat.com, jasowang@redhat.com, xuanzhuo@linux.alibaba.com, eperezma@redhat.com, andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, jiri@resnulli.us, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org Subject: [PATCH net-next v2 4/5] virtio_ring: add 'flushed' as an argument to virtqueue_reset() Date: Tue, 3 Dec 2024 16:30:24 +0900 Message-ID: <20241203073025.67065-5-koichiro.den@canonical.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20241203073025.67065-1-koichiro.den@canonical.com> References: <20241203073025.67065-1-koichiro.den@canonical.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" When virtqueue_reset() has actually recycled all unused buffers, additional work may be required in some cases. Relying solely on its return status is fragile, so introduce a new argument 'flushed' to explicitly indicate whether it has really occurred. Signed-off-by: Koichiro Den --- drivers/net/virtio_net.c | 6 ++++-- drivers/virtio/virtio_ring.c | 6 +++++- include/linux/virtio.h | 3 ++- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index 0103d7990e44..d5240a03b7d6 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c @@ -5695,6 +5695,7 @@ static int virtnet_rq_bind_xsk_pool(struct virtnet_in= fo *vi, struct receive_queu struct xsk_buff_pool *pool) { int err, qindex; + bool flushed; =20 qindex =3D rq - vi->rq; =20 @@ -5713,7 +5714,7 @@ static int virtnet_rq_bind_xsk_pool(struct virtnet_in= fo *vi, struct receive_queu =20 virtnet_rx_pause(vi, rq); =20 - err =3D virtqueue_reset(rq->vq, virtnet_rq_unmap_free_buf); + err =3D virtqueue_reset(rq->vq, virtnet_rq_unmap_free_buf, &flushed); if (err) { netdev_err(vi->dev, "reset rx fail: rx queue index: %d err: %d\n", qinde= x, err); =20 @@ -5737,12 +5738,13 @@ static int virtnet_sq_bind_xsk_pool(struct virtnet_= info *vi, struct xsk_buff_pool *pool) { int err, qindex; + bool flushed; =20 qindex =3D sq - vi->sq; =20 virtnet_tx_pause(vi, sq); =20 - err =3D virtqueue_reset(sq->vq, virtnet_sq_free_unused_buf); + err =3D virtqueue_reset(sq->vq, virtnet_sq_free_unused_buf, &flushed); if (err) { netdev_err(vi->dev, "reset tx fail: tx queue index: %d err: %d\n", qinde= x, err); pool =3D NULL; diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c index 34a068d401ec..b522ef798946 100644 --- a/drivers/virtio/virtio_ring.c +++ b/drivers/virtio/virtio_ring.c @@ -2828,6 +2828,7 @@ EXPORT_SYMBOL_GPL(virtqueue_resize); * virtqueue_reset - detach and recycle all unused buffers * @_vq: the struct virtqueue we're talking about. * @recycle: callback to recycle unused buffers + * @flushed: whether or not unused buffers are all flushed * * Caller must ensure we don't call this with other virtqueue operations * at the same time (except where noted). @@ -2839,14 +2840,17 @@ EXPORT_SYMBOL_GPL(virtqueue_resize); * -EPERM: Operation not permitted */ int virtqueue_reset(struct virtqueue *_vq, - void (*recycle)(struct virtqueue *vq, void *buf)) + void (*recycle)(struct virtqueue *vq, void *buf), + bool *flushed) { struct vring_virtqueue *vq =3D to_vvq(_vq); int err; =20 + *flushed =3D false; err =3D virtqueue_disable_and_recycle(_vq, recycle); if (err) return err; + *flushed =3D true; =20 if (vq->packed_ring) virtqueue_reinit_packed(vq); diff --git a/include/linux/virtio.h b/include/linux/virtio.h index 878feda08af9..e5072d64a364 100644 --- a/include/linux/virtio.h +++ b/include/linux/virtio.h @@ -112,7 +112,8 @@ int virtqueue_resize(struct virtqueue *vq, u32 num, void (*recycle)(struct virtqueue *vq, void *buf), bool *flushed); int virtqueue_reset(struct virtqueue *vq, - void (*recycle)(struct virtqueue *vq, void *buf)); + void (*recycle)(struct virtqueue *vq, void *buf), + bool *flushed); =20 struct virtio_admin_cmd { __le16 opcode; --=20 2.43.0 From nobody Sun Feb 8 11:16:29 2026 Received: from smtp-relay-internal-0.canonical.com (smtp-relay-internal-0.canonical.com [185.125.188.122]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 34D0D1DB37B for ; Tue, 3 Dec 2024 07:31:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.125.188.122 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1733211076; cv=none; b=ogjbcMm4PmKdMXVGfpaI4ZpfsprOA0PBIK3aZhTM3aA9E0ooosUNzfTo6iZgv97AiFsBUrS/XqqhlCH9w4a4i2nBIONPIYtcwhm/C2LqaG2agjmoQBXabTUmdLNriIhPF2Pg7BfjlOdEMwXWFV9SFQrCtqM70tLhwWMwXlCD8ec= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1733211076; c=relaxed/simple; bh=Hk5ke9nzypkJaxk8bCoKEHSofdwMIA0X2l10CVp/tS8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=VQlc6xIBsexCrZVKzkAP5bcNWPCBX01WNL+u/V6IL0Q2ShS5NsXOE5ulsXCNw4awzT4GAtzxZcVVfbU/KhmQeqFS5B0Ls9ICrE2XMcabDut8i4O8IBJcqXGOFiG67+SwgGNGBW5F7+xp78Uv2ipCtut7iuKZWp56Ac+SanoBMQk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=canonical.com; spf=pass smtp.mailfrom=canonical.com; dkim=pass (2048-bit key) header.d=canonical.com header.i=@canonical.com header.b=Sual1XW9; arc=none smtp.client-ip=185.125.188.122 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=canonical.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=canonical.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=canonical.com header.i=@canonical.com header.b="Sual1XW9" Received: from mail-pf1-f197.google.com (mail-pf1-f197.google.com [209.85.210.197]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-0.canonical.com (Postfix) with ESMTPS id 0D34240C4B for ; Tue, 3 Dec 2024 07:31:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1733211072; bh=pP1rcV8yFT6KeAKHqqLHhUue0tX/F8YDnxUvKh8M2mo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Sual1XW9VZaDPoADr+Z59NUqD4MCuqrdgobTZKXtFq+pRw34V1JGkKTa+cOrSWEzH 3yp81bDvCrYb0d8mRXBsAPzF+ZXsqRBlc/m54xOsgTQrSrYIuUCeZ1ew9eyQGtOlR1 f7ro3cRfW79HrkK3uD0KyvX+bZonYMvUqRd+ia6wjfNAaWUC8JBwSwteudwXFGHJYO 7OwxxHxmdRd5nUGHpHzuJw/G8Xim+N/61l9OP4cSjLpg7adrt7XilXNq33AP8pQIEk 2/lfwOK/ZAwhhl6cD993XEV0h9WMNRhnt2QrbAusc53bMMY8awze1z77i1l8E4iN/f 4u8WFP6i1l+Qg== Received: by mail-pf1-f197.google.com with SMTP id d2e1a72fcca58-724f5009c7dso5129664b3a.2 for ; Mon, 02 Dec 2024 23:31:11 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1733211070; x=1733815870; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=pP1rcV8yFT6KeAKHqqLHhUue0tX/F8YDnxUvKh8M2mo=; b=mt0GbCpEOhFB8i89rZyBb47P4ptWXrXzGHb4oDFtF/6UDGa6JlsNZMExRHUoEoXpHM f/lNrcWz2jMIWgKneg5JmhoIXx+qSoLh4FBQ5beNZG9BUDytU5wB/bN8maYRP8LgBOX4 j8G+y6K+nS7rgUuk895xGLpia8/JfkqmUy0NPV4R0EgDjfdm9JE6CYURBEIxQ2UzOgtT egcmcanV7mUkOOphD6kIf5Ak97wlDn81oKyUU2K0ASsH1PzEh9kbBjtGFlcUflG0Rtzo tw8R4MSCKY/lVeg9bOB2qMA75YES90Pt2vsgRxgakPispK9oyreSCd9nJFHdULDtnEti y+hA== X-Forwarded-Encrypted: i=1; AJvYcCXvfYgVLiT85DayOcJt11UYh6cctp8af9Kz9YRjFbegrLiSVZrRNmHTLyOWefSk2a3iLd0P1OX21Ake6Qc=@vger.kernel.org X-Gm-Message-State: AOJu0YyiL7QwLU/iNXyWL4+avwDHMqYn++3LZjkzP5Q0oKnvs1MKZmG3 wRUjXp/PdU5bAupNlYZj+G7ldEkqWb6MkthOjSf95LJJAvq1g4WM59HvufoMmdpYWhW/ahQ9/O2 7cEMIGdIkrtm93kHmRB15OVt/xmNHsV5RcNzca+QNWp/9EuIYwGIr/6iJRWTkTuodprY/OVMATn KUSg== X-Gm-Gg: ASbGncvRb3Av3y9I1dY3QhyrOkHvSV0esg2s/xm4OuMoD6yfO0yt3qONZx/9z3jfszD eYSJPdsHoJAXt/GUgGO3zwVno23Yq7AEphRZRSc8lUmi7zE2ND2dp7T/HEp+bcbyZ19DwU8Nscx kOTKcz/cAkVrK9m/DdphTHkj4Hmqi19FBp5t5UwVoEokcqBDDhB+Pw0PxKhRebTNWk76aPzKfk7 DV1g4KsklDwYfC54ig8PhESmenxYCsAS2YG8be3MHEtTXcn1hhA8v+9FFlJ71ubUQoG X-Received: by 2002:a17:902:e88b:b0:215:6816:6333 with SMTP id d9443c01a7336-215bd1c4a4cmr18393835ad.15.1733211070590; Mon, 02 Dec 2024 23:31:10 -0800 (PST) X-Google-Smtp-Source: AGHT+IEND0UzhbAQRYul9CwlhlE8NsG8OZop+RaB8RyNyzhSiQjfU17kWK9qXqZeOdr2+snjte5ZcQ== X-Received: by 2002:a17:902:e88b:b0:215:6816:6333 with SMTP id d9443c01a7336-215bd1c4a4cmr18393625ad.15.1733211070289; Mon, 02 Dec 2024 23:31:10 -0800 (PST) Received: from localhost.localdomain ([240f:74:7be:1:b2b6:e8c2:50d0:c558]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-21586d40afasm35735165ad.270.2024.12.02.23.31.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Dec 2024 23:31:10 -0800 (PST) From: Koichiro Den To: virtualization@lists.linux.dev Cc: mst@redhat.com, jasowang@redhat.com, xuanzhuo@linux.alibaba.com, eperezma@redhat.com, andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, jiri@resnulli.us, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org Subject: [PATCH net-next v2 5/5] virtio_net: add missing netdev_tx_reset_queue to virtnet_sq_bind_xsk_pool() Date: Tue, 3 Dec 2024 16:30:25 +0900 Message-ID: <20241203073025.67065-6-koichiro.den@canonical.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20241203073025.67065-1-koichiro.den@canonical.com> References: <20241203073025.67065-1-koichiro.den@canonical.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" virtnet_sq_bind_xsk_pool() flushes tx skbs and then resets tx queue, so DQL counters need to be reset. Fixes: 21a4e3ce6dc7 ("virtio_net: xsk: bind/unbind xsk for tx") Signed-off-by: Koichiro Den --- drivers/net/virtio_net.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index d5240a03b7d6..27d58fb47b07 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c @@ -5749,6 +5749,8 @@ static int virtnet_sq_bind_xsk_pool(struct virtnet_in= fo *vi, netdev_err(vi->dev, "reset tx fail: tx queue index: %d err: %d\n", qinde= x, err); pool =3D NULL; } + if (flushed) + netdev_tx_reset_queue(netdev_get_tx_queue(vi->dev, qindex)); =20 sq->xsk_pool =3D pool; =20 --=20 2.43.0