From nobody Sat Sep 26 23:53:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=kernel.org ARC-Seal: i=1; a=rsa-sha256; t=1787153170; cv=none; d=zohomail.com; s=zohoarc; b=d/MULsg871NoVNXJitSi4hYMZq2NyDIct9kmPbyNCuey4theIcvlGcWkWkmHzF1eLjYB5jxjyy/ot+S0Yqrg0QGbHyBmUyNh0zX1LrSASsk7qJYu9+68J3zTCaMxMQUGmNwLWKcHcryGF1lLiIXs2FnDmDrz5fMzY45wzALOyec= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787153170; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=IREy8EB96C1MiD0mEG/d5BXVokkM1ryvcxBbR+GIu9o=; b=d18dCxZwqod+EVnTlS9WcTM4dmhj0Z3BsPMH5VZJDBTfLdEape61lHUgNUC4YjSF4/aWYcnzrNuCL6lHtyAh/IcopoaExiCzajHKhVSTd/v0y3rGmaTq/y5rLvi9StGXDaPaImSr/CNo8FAo2YEW7wbHvtuIESJvkwOHmOlByzE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787153170684808.8212556366971; Wed, 19 Aug 2026 08:26:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwiA1-0005yG-O7; Wed, 19 Aug 2026 11:25:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwi9u-0005uh-6N; Wed, 19 Aug 2026 11:24:54 -0400 Received: from sea.source.kernel.org ([172.234.252.31]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwi9r-0005lK-By; Wed, 19 Aug 2026 11:24:52 -0400 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id E7F6D434A1; Wed, 19 Aug 2026 15:24:41 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 58B611F000E9; Wed, 19 Aug 2026 15:24:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1787153081; bh=IREy8EB96C1MiD0mEG/d5BXVokkM1ryvcxBbR+GIu9o=; h=From:Date:Subject:References:In-Reply-To:To:Cc; b=Eg0quPQh4YGGkMrExTswW6zAFvK0XnaOo6zb6DbP0X3FcwQfMvgQNl/PA5W7SaFy4 QEJRKoHVcMvT87KrtYAYVTW4MvCAPoOjG4B20WlGqsCMQF6z/pFJ0g0069YAE7maU8 65QQ0yvdNumv2o3NbKdqPnc6bH8IVGfJ0FhywTfJt7Rjzsaj4HdKWS7fjEU3z7vGvP TfE23y9pIIxxYTgEoy0p6VT7JGplMhogccAOvcsNu9tr2MmPyKAlQnzbFNN2NQJJBR freVDSgbQT4Woq3XeyjeZH2aFFg8fGbm7YXmMnL+xEwd2NaLsI35b9lKgy1+rTFd7E me4gNX0JgBtKA== From: Daniel Gomez Date: Wed, 19 Aug 2026 17:24:03 +0200 Subject: [PATCH v2 1/7] dma-helpers: fix unaligned discard_back MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260819-align-nvme-mdts-with-linux-v2-1-351ac2dfed64@samsung.com> References: <20260819-align-nvme-mdts-with-linux-v2-0-351ac2dfed64@samsung.com> In-Reply-To: <20260819-align-nvme-mdts-with-linux-v2-0-351ac2dfed64@samsung.com> To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Peter Xu , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Keith Busch , Klaus Jensen , Klaus Jensen , Jesper Devantier , qemu-block@nongnu.org, Daniel Gomez , Daniel Gomez , GOST X-Mailer: b4 0.16-dev X-Developer-Signature: v=1; a=ed25519-sha256; t=1787153075; l=1921; i=da.gomez@samsung.com; s=20240621; h=from:subject:message-id; bh=/MZTHLfOR6cSdrgu2MY61TXisIENUG7f98Jkjp3D4Yc=; b=8kQ6hcBxhkTrVCm0N0ipJoGzkIZ2FonDhBEOQZXjh5wN0cpHxaqiMooAIA3ERWO7OMdN7yBlm DRsRYPp4IfbCfn1vEJ7fbSdjXT3Bv/Z9FhYNngQPWvkkt4dSJr16Xuj X-Developer-Key: i=da.gomez@samsung.com; a=ed25519; pk=BqYk31UHkmv0WZShES6pIZcdmPPGay5LbzifAdZ2Ia4= Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=172.234.252.31; envelope-from=da.gomez@kernel.org; helo=sea.source.kernel.org X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.341, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @kernel.org) X-ZM-MESSAGEID: 1787153173301158500 From: Daniel Gomez Commit 99868af3d0 ("dma-helpers: explicitly pass alignment into DMA helpers") replaced the sub-sector remainder with the aligned size as the amount passed to qemu_iovec_discard_back(), effectively discarding the wrong chunk. Go back to discarding the tail bytes of unaligned IO. It was found while chunking dma_blk_cb() at IOV_MAX to batch large IO: a chunk boundary that is not a multiple of the alignment lands here and dma_blk_cb() submits the wrong bytes. Reproducer (with dma_blk_cb() chunked at IOV_MAX and mdts >=3D 10): fio --name=3Ddemo --filename=3D/dev/nvme0n1 --rw=3Dwrite --bs=3D8M --direct= =3D1 \ --iomem_align=3D4 --size=3D64M --verify=3Dcrc32c --do_verify=3D1 Logs: demo: (g=3D0): rw=3Dwrite, bs=3D(R) 8192KiB-8192KiB, (W) 8192KiB-8192KiB, (= T) 8192KiB-8192KiB, ioengine=3Dpsync, iodepth=3D1 fio-3.41 Starting 1 process crc32c: verify failed at file /dev/nvme0n1 offset 0, length 8388608 (reques= ted block: offset=3D0, length=3D8388608, flags=3D88) Expected CRC: db932ec1 Received CRC: d3b6f2dc fio: pid=3D2755, err=3D84/file:io_u.c:2280, func=3Dio_u_sync_complete, erro= r=3DInvalid or incomplete multibyte or wide character Fixes: 99868af3d0 ("dma-helpers: explicitly pass alignment into DMA helpers= ") Signed-off-by: Daniel Gomez Reviewed-by: Keith Busch --- system/dma-helpers.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/system/dma-helpers.c b/system/dma-helpers.c index 0d592f64680..8ee83ce9e75 100644 --- a/system/dma-helpers.c +++ b/system/dma-helpers.c @@ -174,8 +174,7 @@ static void dma_blk_cb(void *opaque, int ret) } =20 if (!QEMU_IS_ALIGNED(dbs->iov.size, dbs->align)) { - qemu_iovec_discard_back(&dbs->iov, - QEMU_ALIGN_DOWN(dbs->iov.size, dbs->align)= ); + qemu_iovec_discard_back(&dbs->iov, dbs->iov.size % dbs->align); } =20 dbs->acb =3D dbs->io_func(dbs->offset, &dbs->iov, --=20 2.55.0 From nobody Sat Sep 26 23:53:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=kernel.org ARC-Seal: i=1; a=rsa-sha256; t=1787153128; cv=none; d=zohomail.com; s=zohoarc; b=j/kfwqMyTSR6LsJGBnVX/TYux0Ylwg1k8xKGgixLkUn9by6TxmuBt7SIMZXIihytYHeiilcQx1QNxY32Kk6Mkc3H8OE4X/e280xQ16fm55vLIfiqDJA09hMg531aUeFDXd9vgePH+NDiCxwsjHuKvHwSfJTXh+UA2nc4dfegz1w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787153128; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=mzD3z/pk9Zs6BYJt8B/2je9gOLBN9kfdU7oHdLKxVBU=; b=lohAKj8PwBL30iXlz4GSlzvUF6eVzbW1ommuavODbKkM0gwC2ljNaVX5ImWWeN3XHHa2/VIc97Npa9k3U5Fq4BMFz0k8KJZrGU4PqU7s/U+EKuyO2VtdNWXrHT3YWZcpRRJRmfUfnUGeF6gubNjuev3htdsAgGUn80Vl/g4qSFc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787153128740344.62414383903774; Wed, 19 Aug 2026 08:25:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwiA0-0005wF-0m; Wed, 19 Aug 2026 11:25:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwi9r-0005tk-Iz; Wed, 19 Aug 2026 11:24:51 -0400 Received: from tor.source.kernel.org ([2600:3c04:e001:324:0:1991:8:25]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwi9o-0005lg-1r; Wed, 19 Aug 2026 11:24:50 -0400 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by tor.source.kernel.org (Postfix) with ESMTP id 08CD960A92; Wed, 19 Aug 2026 15:24:45 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 495FC1F000E9; Wed, 19 Aug 2026 15:24:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1787153084; bh=mzD3z/pk9Zs6BYJt8B/2je9gOLBN9kfdU7oHdLKxVBU=; h=From:Date:Subject:References:In-Reply-To:To:Cc; b=iu35lgsthINtwTrVbGZYww4a0X+zwxovQdMgY3mzQnZ6dri8X48hoM/crQlo/XNYn MdI7/Jj48kpp9vJnWUfR79XjjpdMvuNHyy+ZKULCcXXJSTdUZcdj89nrXfKfNpTDpz wxDerlF8X6lcoIoYx4aSXDtMe7se1+mets5j/XVS1uLHc1Mr8wzQld/6MxUICtL+uN 1Kf7io8Q0tLaAhQphpF/BbSYC8jpWWYdbWcUAM1x/sjCc2DruT1/fDaKZ1nsejacXA +FSgXnUtiO8O7Z0sljPnzxXADprBYd/Ln1e3Tvq5ptfdFisWMnSt5fSFkPC+66Wj0W lm8MWb1sqECXQ== From: Daniel Gomez Date: Wed, 19 Aug 2026 17:24:04 +0200 Subject: [PATCH v2 2/7] dma-helpers: ensure IOV_MAX chunks end aligned MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260819-align-nvme-mdts-with-linux-v2-2-351ac2dfed64@samsung.com> References: <20260819-align-nvme-mdts-with-linux-v2-0-351ac2dfed64@samsung.com> In-Reply-To: <20260819-align-nvme-mdts-with-linux-v2-0-351ac2dfed64@samsung.com> To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Peter Xu , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Keith Busch , Klaus Jensen , Klaus Jensen , Jesper Devantier , qemu-block@nongnu.org, Daniel Gomez , Daniel Gomez , GOST X-Mailer: b4 0.16-dev X-Developer-Signature: v=1; a=ed25519-sha256; t=1787153075; l=1682; i=da.gomez@samsung.com; s=20240621; h=from:subject:message-id; bh=0ojqGEoe2usyhxOfOLEvmAi0XG8/nb35wK6rygUtG5I=; b=uWuw5nDw5p5kLE0/qRepyT2yp6XAbq/W4R+G1H8dV9d83bLduEO+9TYK+z3z7EX9YX+dR8lJn YNQVhlfeKRRDiP9eoU92Lh2vbkuf7DbPISjhBGfs9c7sUSB3baSQ+1e X-Developer-Key: i=da.gomez@samsung.com; a=ed25519; pk=BqYk31UHkmv0WZShES6pIZcdmPPGay5LbzifAdZ2Ia4= Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2600:3c04:e001:324:0:1991:8:25; envelope-from=da.gomez@kernel.org; helo=tor.source.kernel.org X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.341, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @kernel.org) X-ZM-MESSAGEID: 1787153131523158500 From: Daniel Gomez When submitting large IO beyond IOV_MAX, ensure the last dma mapped chunk ends on an aligned boundary and unmap the remainder so the next chunk submission takes it. Otherwise the discard path at the end of dma_blk_cb() drops the unaligned tail and those bytes are lost. Reproducer: Write 8 MiB through unaligned path and read it back using the aligned path: fio --name=3Ddemo --filename=3D/dev/nvme0n1 --rw=3Dwrite --bs=3D8M --size= =3D8M \ --direct=3D1 --iomem_align=3D4 --verify=3Dcrc32c fio --name=3Ddemo --filename=3D/dev/nvme0n1 --rw=3Dwrite --bs=3D8M --size= =3D8M \ --direct=3D1 --verify=3Dcrc32c --verify_only Signed-off-by: Daniel Gomez Reviewed-by: Keith Busch --- system/dma-helpers.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/system/dma-helpers.c b/system/dma-helpers.c index 8ee83ce9e75..9004ad50ae3 100644 --- a/system/dma-helpers.c +++ b/system/dma-helpers.c @@ -158,6 +158,17 @@ static void dma_blk_cb(void *opaque, int ret) } if (!mem) break; + + /* Ensure the last slot in the chunk ends on an aligned boundary */ + if (dbs->iov.niov =3D=3D IOV_MAX - 1) { + dma_addr_t aligned =3D QEMU_ALIGN_DOWN(dbs->iov.size + cur_len, + dbs->align); + if (aligned <=3D dbs->iov.size) { + dma_memory_unmap(dbs->sg->as, mem, cur_len, dbs->dir, 0); + break; + } + cur_len =3D aligned - dbs->iov.size; + } qemu_iovec_add(&dbs->iov, mem, cur_len); dbs->sg_cur_byte +=3D cur_len; if (dbs->sg_cur_byte =3D=3D dbs->sg->sg[dbs->sg_cur_index].len) { --=20 2.55.0 From nobody Sat Sep 26 23:53:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=kernel.org ARC-Seal: i=1; a=rsa-sha256; t=1787153149; cv=none; d=zohomail.com; s=zohoarc; b=fcQJzi5A7/VuXQ16t9zci5Zrv/tJZ7P2YcXpex5JAGI8Xjok6WcWQRRV5h3x3fUHIAqj/j7BNvXMOPEcyCN45YSMLIxRxiCjdwJQ33k23VTVeNx6Ru5jdo4JBgRsA8xtLZ4xDlOmGstUG3BDTpZLXguyTcDcSEs68DsSqHbWnRg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787153149; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=gjCb8zTFkhIu6c15SE0OJTQGeNM1apl9N+TyJKrY+9w=; b=UI7Rvxq6NMHxcg3DBUzsfvJQv7hwCA+n+jFdi1XmErQPZod8kT0F7YDIWIv1P3jESCgD0s6KWH28W1uBuSn7IjwXW+/PqbKnaVhJ9kZc5LMmgB0rsypvZJ5LoOj13LOCw3zaf4qIOd83eWc7gPwLfTHLcN/WFMm8l4voWlXvAoM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787153149744371.6799897994945; Wed, 19 Aug 2026 08:25:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwiA0-0005wq-7r; Wed, 19 Aug 2026 11:25:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwi9r-0005tc-EB; Wed, 19 Aug 2026 11:24:51 -0400 Received: from tor.source.kernel.org ([172.105.4.254]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwi9o-0005m2-W3; Wed, 19 Aug 2026 11:24:50 -0400 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by tor.source.kernel.org (Postfix) with ESMTP id F11C860DB5; Wed, 19 Aug 2026 15:24:47 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 30FBE1F000E9; Wed, 19 Aug 2026 15:24:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1787153087; bh=gjCb8zTFkhIu6c15SE0OJTQGeNM1apl9N+TyJKrY+9w=; h=From:Date:Subject:References:In-Reply-To:To:Cc; b=fXtbiFf13eqOuFNyvA+HeGs2wFv4KHDTYqFmdLiFGrVzuPVepiV1G/RFAjvNMD852 9RCz7OodhOIcYg6YkVUVj7Hj9FWaDMMU3o2BnOsQF+iBWIsed/Q1wup4hz88+RpDu1 AxopWCCkywXHCf1MO38+byEUSq8Anf9UvkgqDSsqkBkY97Mqtud3v6tM61p7cIJfhi 0bGrXmDkBMnOdHIW0vPrHwmUE85xEc3VBX1WB+kZFMiC8KFPeAQGOOF2lGlsgbMak4 l2CVvL3wzSwUdmFJnB3IpiVl37DXUuaL3MFuiaP1i8K2BXDhQfujUadG+72oQ1T62j yDQBQEeS56PdA== From: Daniel Gomez Date: Wed, 19 Aug 2026 17:24:05 +0200 Subject: [PATCH v2 3/7] dma-helpers: cap iovec allocation at IOV_MAX MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260819-align-nvme-mdts-with-linux-v2-3-351ac2dfed64@samsung.com> References: <20260819-align-nvme-mdts-with-linux-v2-0-351ac2dfed64@samsung.com> In-Reply-To: <20260819-align-nvme-mdts-with-linux-v2-0-351ac2dfed64@samsung.com> To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Peter Xu , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Keith Busch , Klaus Jensen , Klaus Jensen , Jesper Devantier , qemu-block@nongnu.org, Daniel Gomez , Daniel Gomez , GOST X-Mailer: b4 0.16-dev X-Developer-Signature: v=1; a=ed25519-sha256; t=1787153075; l=924; i=da.gomez@samsung.com; s=20240621; h=from:subject:message-id; bh=6EBj0zw+9t8L+7Z+Vce461Ptz5kZuOS6B1xv2C7EEVs=; b=iI2BriUPyJpS4nE/9tyOBPqjxv8oHNz6KowT8B9dl9BZP2qRMzHNS/I74wv+/1EjSuMl9o58z XTTInSiGCTxCrakI4JRgsK8SHtBa8Rv4nrJTUV3jGVBiJMYyGPHzR0J X-Developer-Key: i=da.gomez@samsung.com; a=ed25519; pk=BqYk31UHkmv0WZShES6pIZcdmPPGay5LbzifAdZ2Ia4= Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=172.105.4.254; envelope-from=da.gomez@kernel.org; helo=tor.source.kernel.org X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.341, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @kernel.org) X-ZM-MESSAGEID: 1787153151594158500 From: Daniel Gomez Cap the initial iovec allocation at IOV_MAX instead of sizing it for the whole sg list, which over-allocates for large IO where the number of sg entries exceeds IOV_MAX. This is preparatory work for chunking dma_blk_cb() at IOV_MAX to batch large IO: once chunked, dbs->iov never holds more than IOV_MAX iovecs. Signed-off-by: Daniel Gomez Reviewed-by: Keith Busch --- system/dma-helpers.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system/dma-helpers.c b/system/dma-helpers.c index 9004ad50ae3..d4fd33a3d4c 100644 --- a/system/dma-helpers.c +++ b/system/dma-helpers.c @@ -242,7 +242,7 @@ BlockAIOCB *dma_blk_io( dbs->io_func =3D io_func; dbs->io_func_opaque =3D io_func_opaque; dbs->bh =3D NULL; - qemu_iovec_init(&dbs->iov, sg->nsg); + qemu_iovec_init(&dbs->iov, MIN(sg->nsg, IOV_MAX)); dma_blk_cb(dbs, 0); return &dbs->common; } --=20 2.55.0 From nobody Sat Sep 26 23:53:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=kernel.org ARC-Seal: i=1; a=rsa-sha256; t=1787153149; cv=none; d=zohomail.com; s=zohoarc; b=mVf93q/Z/zK1hUouWa2ABHYgcYbHfrlRChz0ujNbzZANVbMTe5m9zH2L1UtN88Bx0knY53G0CWx91aPCvQLG5X1KwTFAG7ZxmGxfZW8ftoDIx+55IcOay4zfU1pJU436Dcr3f2Sa4MurXn4Mxi9IZmDtogI8IDEJ2JsK+HCcW0w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787153149; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=GAblJtoF1ite2nCaZlx6g3pEY9g6y0mrLZhXuRuNLnA=; b=GTgWH4P6huwUwd7PjElwUp6YLp8sAldsqOn15oLK8lMCM3kCApOWdtZi02YZmDkv7HsWR8JWA4MZBJkwZBSiB707HisqP2rvvrQra12xo5Yal6Zs7MIPW8zu85KRu7kJLLBUHEqiFwc/1jOVd5J15Npbalh9rKr/vb9fslwxWRc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787153149484382.1764092508796; Wed, 19 Aug 2026 08:25:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwiA2-0005yr-Vc; Wed, 19 Aug 2026 11:25:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwi9w-0005v8-A0; Wed, 19 Aug 2026 11:24:57 -0400 Received: from tor.source.kernel.org ([2600:3c04:e001:324:0:1991:8:25]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwi9s-0005mb-35; Wed, 19 Aug 2026 11:24:54 -0400 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by tor.source.kernel.org (Postfix) with ESMTP id 0305E60DC0; Wed, 19 Aug 2026 15:24:51 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 26A171F000E9; Wed, 19 Aug 2026 15:24:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1787153090; bh=GAblJtoF1ite2nCaZlx6g3pEY9g6y0mrLZhXuRuNLnA=; h=From:Date:Subject:References:In-Reply-To:To:Cc; b=cCUtwdV+iF4zexxzawMydBF/OdtWEPkwuC5O+zMOsij5sn6LcON20ghGPZHxa3eTU 9XVc/v4mw10WC8e1nP7SlzrQSfpE9Czi5befPlNBNCmg4j48hFzGdaIOtLapICC08H sAgHZWfO2wTSauC3ImrYOv57cMCyC+XJsGlY/2CgAdHQRA9d2G+b1xKl5/YW0quD0g yMyhiJOM/6z2rRugOXtC62Fl5a37ECIYwPozbu8kdwnRVrrxSAz+Gr4JgsUAZfRNjY yG5r4+Vr2l1dU7WtVNYpFSKb/U3IDGX+BR1DIAnnwT2EkX5tdeVyx7kplmLuTv8Xw+ 3ae5/1gXgd6bA== From: Daniel Gomez Date: Wed, 19 Aug 2026 17:24:06 +0200 Subject: [PATCH v2 4/7] dma-helpers: chunk dma_blk_cb at IOV_MAX MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260819-align-nvme-mdts-with-linux-v2-4-351ac2dfed64@samsung.com> References: <20260819-align-nvme-mdts-with-linux-v2-0-351ac2dfed64@samsung.com> In-Reply-To: <20260819-align-nvme-mdts-with-linux-v2-0-351ac2dfed64@samsung.com> To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Peter Xu , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Keith Busch , Klaus Jensen , Klaus Jensen , Jesper Devantier , qemu-block@nongnu.org, Daniel Gomez , Daniel Gomez , GOST X-Mailer: b4 0.16-dev X-Developer-Signature: v=1; a=ed25519-sha256; t=1787153075; l=969; i=da.gomez@samsung.com; s=20240621; h=from:subject:message-id; bh=PlgFs9C/2C5N/Yk2iUBNUFtNgCYAxRiq7T7jRH6XWbg=; b=A59Ufv+0QaSmycUHol4UBil+QOn+nexDIQr3jY7NN8mny9aQ2/grsRjRxcdZQQ5s+WBnFXHio ef+gsJkmqNjAGHyCyGEHiqJCEEepF8adoVc2t5nlbFgsIBpn4nVXLxP X-Developer-Key: i=da.gomez@samsung.com; a=ed25519; pk=BqYk31UHkmv0WZShES6pIZcdmPPGay5LbzifAdZ2Ia4= Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2600:3c04:e001:324:0:1991:8:25; envelope-from=da.gomez@kernel.org; helo=tor.source.kernel.org X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.341, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @kernel.org) X-ZM-MESSAGEID: 1787153151594158501 From: Daniel Gomez dma_blk_cb() submits dbs->iov to io_func() in one shot, so callers must keep dbs->iov.niov below IOV_MAX or the host preadv()/pwritev() rejects the call. Break the accumulation loop when niov reaches IOV_MAX. The existing re-entry path resumes mapping and submits a follow-up chunk under the same AIOCB, so callers no longer carry that constraint. Suggested-by: Klaus Jensen Signed-off-by: Daniel Gomez Reviewed-by: Keith Busch --- system/dma-helpers.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/system/dma-helpers.c b/system/dma-helpers.c index d4fd33a3d4c..613fa548669 100644 --- a/system/dma-helpers.c +++ b/system/dma-helpers.c @@ -175,6 +175,9 @@ static void dma_blk_cb(void *opaque, int ret) dbs->sg_cur_byte =3D 0; ++dbs->sg_cur_index; } + if (dbs->iov.niov >=3D IOV_MAX) { + break; + } } =20 if (dbs->iov.size =3D=3D 0) { --=20 2.55.0 From nobody Sat Sep 26 23:53:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=kernel.org ARC-Seal: i=1; a=rsa-sha256; t=1787153128; cv=none; d=zohomail.com; s=zohoarc; b=Ea7Wj8+iRShzH5fuBQtbSm4zl72D+3ygLgC4E2R9jutzHqfJ0Io65fSEsaU+74vtsli0qONabX9z1QR2LlmjHyrPcZvh/enZSf58BvoLA7alO+YhEtTNT3v/h6SRIRwN3V5hrpsW9xmtxHFkOlAlXqA+ehNgB4eCd/Yk5g8bjxE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787153128; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=HM693KI6NDehBscoX7RDjmC7+M+rGxWmkVW9+Tj4ayI=; b=lqq1vlK8Mrcn9J8r0Kx9adj9HCwvUROImmSgSTF+01AodxcRVT8NPCvWippj/WnNHxhQUd12cg6/+lopLkKH8k627zPTm6pKJ8n9Cgp4bsHm+wc2jAy2Xy0579N6HBo29wQsXi8NaQBcCAZM0jg0cdNG6HABmIBpD2zopsUxMTE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787153128743361.17255225819645; Wed, 19 Aug 2026 08:25:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwiA4-00060x-7h; Wed, 19 Aug 2026 11:25:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwi9y-0005wD-6k; Wed, 19 Aug 2026 11:24:59 -0400 Received: from sea.source.kernel.org ([172.234.252.31]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwi9v-0005nK-QJ; Wed, 19 Aug 2026 11:24:57 -0400 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id DB0C443876; Wed, 19 Aug 2026 15:24:53 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 45C051F000E9; Wed, 19 Aug 2026 15:24:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1787153093; bh=HM693KI6NDehBscoX7RDjmC7+M+rGxWmkVW9+Tj4ayI=; h=From:Date:Subject:References:In-Reply-To:To:Cc; b=cNGM3piFuR0umJjlp42AzVGZ6TXeVpsEc/GMoSpF/zTfLd42F2znZ1epKuhYSZEQS kWYADTMsbVY8BJJCSpzVouEdX6hTVuNhmgeFmWcUJ4K6CVL0AgbQxl22VDTW4sRRYH GhLZxOF5Fei27fWeciiy6hjqJRFrW/MFLcdEJlKbuGpzXP2W7Vn3evhf7rly+ksWv8 eDjeooAQzv01UY/uRFwQJXHD+QeLPVducMRpq/XdJvZZMRxZtP+4Xgn5x6wdHYxjPl uakYufIMAKZdUoX4XBy1kGf+A6MHls3hdhrjS8fTapHXQBIM9LWFVFMGs5cUZGSYCg VqlMBGpHnklag== From: Daniel Gomez Date: Wed, 19 Aug 2026 17:24:07 +0200 Subject: [PATCH v2 5/7] hw/nvme: clamp mdts and zasl shifts MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260819-align-nvme-mdts-with-linux-v2-5-351ac2dfed64@samsung.com> References: <20260819-align-nvme-mdts-with-linux-v2-0-351ac2dfed64@samsung.com> In-Reply-To: <20260819-align-nvme-mdts-with-linux-v2-0-351ac2dfed64@samsung.com> To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Peter Xu , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Keith Busch , Klaus Jensen , Klaus Jensen , Jesper Devantier , qemu-block@nongnu.org, Daniel Gomez , Daniel Gomez , GOST X-Mailer: b4 0.16-dev X-Developer-Signature: v=1; a=ed25519-sha256; t=1787153075; l=1822; i=da.gomez@samsung.com; s=20240621; h=from:subject:message-id; bh=V8UXJ/HAjuXyOpqBOxXDYTuhV7TkWdT24ek2q3pDRAk=; b=UawG5kWO63oWGJZfmSwlzDyyQ/T7VDMJamBmKHT5QR2u+40y/qS4wLSSlYdlUaNjvUcTYhjEd FXIoIZ4NJvaBy9rNxBpduu+aKYSUz4VxuOVdAZvGkpEx03PcjTX6dyl X-Developer-Key: i=da.gomez@samsung.com; a=ed25519; pk=BqYk31UHkmv0WZShES6pIZcdmPPGay5LbzifAdZ2Ia4= Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=172.234.252.31; envelope-from=da.gomez@kernel.org; helo=sea.source.kernel.org X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.341, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @kernel.org) X-ZM-MESSAGEID: 1787153131527158500 From: Daniel Gomez Once dma_blk_cb() chunks at IOV_MAX, a later patch drops the current mdts 2 MiB cap, allowing mdts (and zasl, which may be as large as mdts) to essentially be 32 or more. Ensure shifting doesn't go out of range by adding a static inline helper that clamps to UINT64_MAX when mdts or zasl shift operations exceed uint64_t width. Fixes error with ubsan enabled and large mdts: ../hw/nvme/ctrl.c:1685:36: runtime error: shift exponent 32 is too large for 32-bit type 'unsigned int' Signed-off-by: Daniel Gomez Reviewed-by: Keith Busch --- hw/nvme/ctrl.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c index 4893cf7e741..a24a674a4c5 100644 --- a/hw/nvme/ctrl.c +++ b/hw/nvme/ctrl.c @@ -1713,11 +1713,18 @@ static void nvme_clear_events(NvmeCtrl *n, uint8_t = event_type) } } =20 +static inline uint64_t nvme_max_data_transfer_size(NvmeCtrl *n, uint8_t ex= p) +{ + unsigned shift =3D n->page_bits + exp; + + return shift >=3D 64 ? UINT64_MAX : 1ULL << shift; +} + static inline uint16_t nvme_check_mdts(NvmeCtrl *n, size_t len) { uint8_t mdts =3D n->params.mdts; =20 - if (mdts && len > n->page_size << mdts) { + if (mdts && len > nvme_max_data_transfer_size(n, mdts)) { trace_pci_nvme_err_mdts(len); return NVME_INVALID_FIELD | NVME_DNR; } @@ -3809,7 +3816,7 @@ static uint16_t nvme_do_write(NvmeCtrl *n, NvmeReques= t *req, bool append, } =20 if (n->params.zasl && - data_size > (uint64_t)n->page_size << n->params.zasl) { + data_size > nvme_max_data_transfer_size(n, n->params.zasl)= ) { trace_pci_nvme_err_zasl(data_size); return NVME_INVALID_FIELD | NVME_DNR; } --=20 2.55.0 From nobody Sat Sep 26 23:53:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=kernel.org ARC-Seal: i=1; a=rsa-sha256; t=1787153142; cv=none; d=zohomail.com; s=zohoarc; b=IMzP25gqQRPLYZiZLrmuiZBVcOrs0FTV/zzV4Iwfutp9ACUCb3+bEb7YSjcEY6o6J1jTx8Y39I0J+fgNOfHQTeOU+cEJnSqE/bWZSbpjhm6DRLH2F+WNaDVvRIpClqNoHvn05ZOe8BgW8atn5VsREp7CT+NbHWEQRlpN//OYhlY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787153142; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=M0g8prnLZTF2UJq7FAuexAvTsNGXlcwIKLz2CKU78aI=; b=GIBSZ0B6WkZGmrqx/+8XnoFVjrrShOYgvUzSaXtp3s4vIbjhdXF2fJmLyIoq1j8oUWqXN6WFA60jehvKRGgEMoo2TSXnITnDhBPvBkm7EhtmVpzVzCooQsfY+eHwDpFxrcWkMJ9IBvb8yDPE1UmbhsRlip+2TQmeExoPwkif/1E= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178715314251668.07990415103507; Wed, 19 Aug 2026 08:25:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwiA1-0005yD-FY; Wed, 19 Aug 2026 11:25:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwiA0-0005xM-Hk; Wed, 19 Aug 2026 11:25:00 -0400 Received: from tor.source.kernel.org ([2600:3c04:e001:324:0:1991:8:25]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwi9y-0005np-8f; Wed, 19 Aug 2026 11:25:00 -0400 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by tor.source.kernel.org (Postfix) with ESMTP id 31F4060AAA; Wed, 19 Aug 2026 15:24:57 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3D3CF1F000E9; Wed, 19 Aug 2026 15:24:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1787153096; bh=M0g8prnLZTF2UJq7FAuexAvTsNGXlcwIKLz2CKU78aI=; h=From:Date:Subject:References:In-Reply-To:To:Cc; b=Mj9vJsW9tihBT7qT6SlhvPESbH0JkVbRmwWuREt3j47tIX/HeH8CH9FqpmhQBN8ry M37v7b1L//gPMiUfm0+1PxUP4uw9xZxEZQtdCc1GciyfRW2mXtKaIaRnp6b+3dyB19 PU9j0/29xlreEzEUMSnqXEaNzhXodIj7QGlZlP9wP45tteczpvtH8Bzh5QAxkVXSEs 5Vr5T2c2iK8IYb0rOINwJuDHWpv18oqpW+nDfgsb4WF6fkDLFLPbUW11oNOIv9zNT1 wn8GlNwDc8PWVdPnQfqU0/X+gaeAqBE1alviAZz5oEtJEdjcsGv00gV1iWjwbL4gWz IdRs/aSTpE7AA== From: Daniel Gomez Date: Wed, 19 Aug 2026 17:24:08 +0200 Subject: [PATCH v2 6/7] hw/nvme: drop DMA-path IOV_MAX guard MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260819-align-nvme-mdts-with-linux-v2-6-351ac2dfed64@samsung.com> References: <20260819-align-nvme-mdts-with-linux-v2-0-351ac2dfed64@samsung.com> In-Reply-To: <20260819-align-nvme-mdts-with-linux-v2-0-351ac2dfed64@samsung.com> To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Peter Xu , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Keith Busch , Klaus Jensen , Klaus Jensen , Jesper Devantier , qemu-block@nongnu.org, Daniel Gomez , Daniel Gomez , GOST X-Mailer: b4 0.16-dev X-Developer-Signature: v=1; a=ed25519-sha256; t=1787153076; l=757; i=da.gomez@samsung.com; s=20240621; h=from:subject:message-id; bh=TerySl42tlCdTV7qZGn08VqgwSosK3aNu3nk1Pmru7o=; b=C8GPd1K9SHmzLDwFlU+ALqh2UCZpAn/YsnhxdbvMWMWNWprc08QsgIcNyy+PIBabBoh0or4ZO sGcoT/7d+jGC3mg30pYaHRiLvLWATiroagTfCXik3XY4Gx3RbrJ2xFb X-Developer-Key: i=da.gomez@samsung.com; a=ed25519; pk=BqYk31UHkmv0WZShES6pIZcdmPPGay5LbzifAdZ2Ia4= Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2600:3c04:e001:324:0:1991:8:25; envelope-from=da.gomez@kernel.org; helo=tor.source.kernel.org X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.341, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @kernel.org) X-ZM-MESSAGEID: 1787153145360158500 From: Daniel Gomez dma_blk_cb() now chunks at IOV_MAX, so the per-mapping cap on sg->qsg in nvme_map_addr() is redundant. Drop it. Suggested-by: Klaus Jensen Signed-off-by: Daniel Gomez Reviewed-by: Keith Busch --- hw/nvme/ctrl.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c index a24a674a4c5..7861d8f2521 100644 --- a/hw/nvme/ctrl.c +++ b/hw/nvme/ctrl.c @@ -872,10 +872,6 @@ static uint16_t nvme_map_addr(NvmeCtrl *n, NvmeSg *sg,= hwaddr addr, size_t len) return NVME_INVALID_USE_OF_CMB | NVME_DNR; } =20 - if (sg->qsg.nsg + 1 > IOV_MAX) { - goto max_mappings_exceeded; - } - qemu_sglist_add(&sg->qsg, addr, len); =20 return NVME_SUCCESS; --=20 2.55.0 From nobody Sat Sep 26 23:53:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=kernel.org ARC-Seal: i=1; a=rsa-sha256; t=1787153138; cv=none; d=zohomail.com; s=zohoarc; b=PkTnoKL5j1S2QbNFru8qGpXgSWt1Is4cYR3ujm3UH/DVqmEAV51Wu0WGgp3ftVmQN9KUjaDrZ6hHsz1gSjfnD6L69A6XHkEVPXkqcbKqAr4AaPjj5z+vMarhQ3bxB7ikDR7iXLf+SE2SXASiLgu94veesY4GO+6Kemitbl5GeZk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787153138; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=/8JZe4QUxylfRYcVX3vsTlHWrrEwATnl6VKsOCHBNJw=; b=c5Yivu7rkVJbSje9I+GEvR1oYpaAbSBO91vuMRR3H1rBesYY0AYw+ayhxW+CX19FD7JoGWyv/VuYto9x6q4Dvmt0ohYuA+7h0d2D1MTtgE/1qPWQsRqIMdRJg20eHL6KwUpbnmmE8KdRkWZBkAN0JBZlU+TmIpyHiJWdfrHBfqM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787153138655107.95570472958968; Wed, 19 Aug 2026 08:25:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwiA5-00062Q-O8; Wed, 19 Aug 2026 11:25:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwiA4-00060z-7U; Wed, 19 Aug 2026 11:25:04 -0400 Received: from tor.source.kernel.org ([2600:3c04:e001:324:0:1991:8:25]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwiA2-0005oU-KR; Wed, 19 Aug 2026 11:25:03 -0400 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by tor.source.kernel.org (Postfix) with ESMTP id F09EE61126; Wed, 19 Aug 2026 15:25:00 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5E2A21F000E9; Wed, 19 Aug 2026 15:24:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1787153100; bh=/8JZe4QUxylfRYcVX3vsTlHWrrEwATnl6VKsOCHBNJw=; h=From:Date:Subject:References:In-Reply-To:To:Cc; b=VGFZQTwA11ayTUPKVl6JGzpECKp66A5g/uWs5h8XjJAINi8Y6I7EspQCUHgJIAjuQ pae+l9R7GXNqdrYfN2jmSrSw75+/e53gNBdHKIFOGMmlt3RGF8dLdOkUpWaW3uMJUH a14eAEcvCFKMtKSBUp/7kpJkMgAuLLIX0sL8vsLOqZi9O56EqCqcMNE6H+tUqMqC8d gWiiHRZaaFbd+q/YMj5gFDeIPNrMGCrn73w1kwuYoLxgEmv56QQfav3xngDGZJtZSI vYlb1bqg+b9foM6+5bQgRMwKuVpouZ03AN4nnQg5PCu35y5PpWetQqekbzMqzlmCgw BBquylsmCXL5g== From: Daniel Gomez Date: Wed, 19 Aug 2026 17:24:09 +0200 Subject: [PATCH v2 7/7] hw/nvme: cap mdts for CMB/PMR-only MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260819-align-nvme-mdts-with-linux-v2-7-351ac2dfed64@samsung.com> References: <20260819-align-nvme-mdts-with-linux-v2-0-351ac2dfed64@samsung.com> In-Reply-To: <20260819-align-nvme-mdts-with-linux-v2-0-351ac2dfed64@samsung.com> To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Peter Xu , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Keith Busch , Klaus Jensen , Klaus Jensen , Jesper Devantier , qemu-block@nongnu.org, Daniel Gomez , Daniel Gomez , GOST X-Mailer: b4 0.16-dev X-Developer-Signature: v=1; a=ed25519-sha256; t=1787153076; l=1413; i=da.gomez@samsung.com; s=20240621; h=from:subject:message-id; bh=GbtsNLf3gaz/U4mHrWr6MfrBe4wgKrtKkyfeOVMbI0E=; b=4q1YzkQxCyTWHTefQjqobRiuWkfeQRB3gPlPSw33nBwAJ12bKA240LRFdy+S3M8LKv4qmgOfW VBHP02Fg8inCJbI816pYCPWC+DTvebgLOCoGIJCT9AJovQV2yrLmRhL X-Developer-Key: i=da.gomez@samsung.com; a=ed25519; pk=BqYk31UHkmv0WZShES6pIZcdmPPGay5LbzifAdZ2Ia4= Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2600:3c04:e001:324:0:1991:8:25; envelope-from=da.gomez@kernel.org; helo=tor.source.kernel.org X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.341, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @kernel.org) X-ZM-MESSAGEID: 1787153141441158500 From: Daniel Gomez Commit 53493c1f83 ("hw/nvme: cap MDTS value for internal limitation") capped MDTS so the worst-case PRP count would fit in IOV_MAX, leaving transfers limited to 2 MiB. Now that dma_blk_cb() can batch IOs up to IOV_MAX instead of limiting to IOV_MAX, remove it, except for CMB/PMR-only where the limit still applies. In addition, fix UB when mdts >=3D 31 by dropping the shift and making the cap explicit. Fixes error with ubsan: ../hw/nvme/ctrl.c:8638:33: runtime error: shift exponent 32 is too large for 32-bit type 'int' Suggested-by: Klaus Jensen Signed-off-by: Daniel Gomez Reviewed-by: Keith Busch --- hw/nvme/ctrl.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c index 7861d8f2521..ff7e4a055b8 100644 --- a/hw/nvme/ctrl.c +++ b/hw/nvme/ctrl.c @@ -8802,8 +8802,10 @@ static bool nvme_check_params(NvmeCtrl *n, Error **e= rrp) host_memory_backend_set_mapped(n->pmr.dev, true); } =20 - if (!n->params.mdts || ((1 << n->params.mdts) + 1) > IOV_MAX) { - error_setg(errp, "mdts exceeds IOV_MAX"); + /* 2^mdts + 1 must fit IOV_MAX */ + if ((n->params.cmb_size_mb || n->pmr.dev) && + (!n->params.mdts || (params->mdts > 9))) { + error_setg(errp, "mdts=3D%u is incompatible with CMB/PMR", params-= >mdts); return false; } =20 --=20 2.55.0