From nobody Sat Sep 26 20:01:45 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=1788979172; cv=none; d=zohomail.com; s=zohoarc; b=PjPKTHRW+MOHsaYdannVIdBAhvLShjqhR3O+pOCw5IYALkQ6v3wLENXlj5RfzZdUQYyUQ7wOvSy0J0+WoSI4e1dtX3ApgvFLgYVinmuzfy90yN9uCPUAI9OWscOn8xofSd9pis+MULC2BOWwAwfGSB8rDJtZHZzdjiVembfq7dc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788979172; 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=ZvJ6FrMPjn+U502lyxNDEH47T7MEXntaAjN59mhs29w=; b=Y0jcWPWn3PVkFsNqBngfVQ46HZsWCWeV6eHN5R5TVCDcLLCaacyVswMDLXKsRL2IsBYvcnZB98HEWNpDsylDyfcM1kVEyVqIF2OLTau13qoETt787gfJ1j9dBRYjMtA2cz1kxx73TyUAby4qgmJvZa7S99BSMo3VwSuVfaqHqrs= 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 1788979172303270.6037761410172; Wed, 9 Sep 2026 11:39:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x4NBp-000677-MO; Wed, 09 Sep 2026 14:38:33 -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 1x4NBn-00063H-J5; Wed, 09 Sep 2026 14:38:31 -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 1x4NBk-000718-O4; Wed, 09 Sep 2026 14:38:31 -0400 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by tor.source.kernel.org (Postfix) with ESMTP id 87F90601EF; Wed, 9 Sep 2026 18:38:23 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id DEDD21F000FF; Wed, 9 Sep 2026 18:38:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1788979103; bh=ZvJ6FrMPjn+U502lyxNDEH47T7MEXntaAjN59mhs29w=; h=From:Date:Subject:References:In-Reply-To:To:Cc; b=T7yXkwe4QI8TDt0+AcJjkO4eHsClFO3JnsI+Nog9ZNgWikoMsIKkdpjIVoPqaCRg4 mhTUdMlAZoUaGLCb5eYiONWgdR+lNfH/B24tU3uz/iiiMQsL7NkYZjcF3w0jP75FaX CuqSkaSNC/sT4+A0tYbDKZFZ67171i9OPGMvKWwSOBfRh0xjHVrv7Odc/h4kBXCikq dVFYSo5HrsU0jTTKaHZ7qnHc6YSJEFsOg6UwfYVaLk+jweIP2B29rZ5aFQaP1m6Lc3 YvhV0OmjkzVfFepZsjrR9CWOErv/v8TvK+KF7Kl6kgSAYy0uQ5lhB+7ZxeD9Z+Rty6 HdYCSlPr+R81A== From: Daniel Gomez Date: Wed, 09 Sep 2026 20:36:50 +0200 Subject: [PATCH v3 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: <20260909-align-nvme-mdts-with-linux-v3-1-1cee970cc8c8@samsung.com> References: <20260909-align-nvme-mdts-with-linux-v3-0-1cee970cc8c8@samsung.com> In-Reply-To: <20260909-align-nvme-mdts-with-linux-v3-0-1cee970cc8c8@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=1788979097; l=1169; i=da.gomez@samsung.com; s=20240621; h=from:subject:message-id; bh=/LOqtu087vIHIonGTB284w0mpWeAIrIfgwUoZzf8bA4=; b=f0d5QoO0I7psSSI0PfaE1mehGMG/c8Glbbque1/INBz0PLaC2FiHVJXVa4JMpaG32pvPanCBw 7ci309NE2bYA71exd2iPp4Dd5XHPLwhnfhfAGhxZ08EsfsMW1m4WfLP 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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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: 1788979174293158500 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. Fixes: 99868af3d0 ("dma-helpers: explicitly pass alignment into DMA helpers= ") Acked-by: Jesper Wendel Devantier Reviewed-by: Keith Busch Signed-off-by: Daniel Gomez --- 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 20:01:45 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=1788979167; cv=none; d=zohomail.com; s=zohoarc; b=QiFsartL2IrbM9CmdYWzOTXCU7nHjDAwK/qzXvHV2KQeNveEWeeP24QlxGZd3o8vJrKCozllbr3DbeyE5D22eodGppcatQ16dBKH0EWsqPn76HoGVXkzl9+9JB+nMy8pjfI6c7780GCm6C1Ve8LYK5TXjpUmlqPf0PC9lYtv7xA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788979167; 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=fY7VhNjS+YS66fqCEYppapw54Dwmf31D2fpqlwzq12w=; b=A7LtNL0CYiOZAZ4zD2k4YPOmwh03VYX2XIQlz+t9+kUws83HfJb9e2rdrRCEAjnxaYegbVK5GOI/bq/1WAeAEYihQ2PqJC4rXrQLHqkW8GQyRXVsIF6yUeciFr76NHo6r/RU9cm9aGbFEyDhGjJ5L2JLtwRyGsFZQz8soHMyGPc= 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 1788979167778365.7307775794161; Wed, 9 Sep 2026 11:39:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x4NBq-00067C-2h; Wed, 09 Sep 2026 14:38:34 -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 1x4NBn-00063n-Li; Wed, 09 Sep 2026 14:38:31 -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 1x4NBk-00071H-PY; Wed, 09 Sep 2026 14:38:31 -0400 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by tor.source.kernel.org (Postfix) with ESMTP id 55602601F0; Wed, 9 Sep 2026 18:38:26 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id AD0451F000FF; Wed, 9 Sep 2026 18:38:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1788979106; bh=fY7VhNjS+YS66fqCEYppapw54Dwmf31D2fpqlwzq12w=; h=From:Date:Subject:References:In-Reply-To:To:Cc; b=iyvwwa13Ae+wfZ8j46v5T3xva4NLDFvetHCdZoTxmCItSgL2MOUw6RND2aFkTdmae dhlJj3QZMsRFEyeB0OGGdNi9xCrBdKPEsAr3jTu0yRpZSOYJ8byvjnXZI6d91O9uYJ 324A5lzgGG6qZ5++1i6CL3c2oJGVy28bun7qFKDH6Ds58FngPIJlKNKaP/+pdcOYSu 19tCKO2juXQP2L6R3USkLdx7vKoHLLdnAT07OMx8NDmRuWz+7AKgaqUEqKIqFHdEok 4al2GPr6217hD8lVkd75Bk1flyWO9n2Ak5LLpZotXitoy0tlb6S4UDeNN8eTeU6I09 gVHvCfxtq0e4w== From: Daniel Gomez Date: Wed, 09 Sep 2026 20:36:51 +0200 Subject: [PATCH v3 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: <20260909-align-nvme-mdts-with-linux-v3-2-1cee970cc8c8@samsung.com> References: <20260909-align-nvme-mdts-with-linux-v3-0-1cee970cc8c8@samsung.com> In-Reply-To: <20260909-align-nvme-mdts-with-linux-v3-0-1cee970cc8c8@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=1788979097; l=1728; i=da.gomez@samsung.com; s=20240621; h=from:subject:message-id; bh=MqX1Q8SVcAFaPh9zrzIYsRFs+ouywqJFwg4bJ9LZBzQ=; b=bXVKtQqPGkZLJThFpOAd6XVvcm15mRUgHaTU2pR53vKPF2j68PepJEkXz8I2D9buv3Mg3HvDv WJfO/ffRnxsAlx6m78s5zipX/W3bIw/FVRq0fBNRnxmHy9qCngS35mP 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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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: 1788979168128158500 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 Reviewed-by: Keith Busch Signed-off-by: Daniel Gomez --- 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 20:01:45 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=1788979139; cv=none; d=zohomail.com; s=zohoarc; b=Em6HX+o9oByW7Sab97iRd6ifEK1meGHD4zAEiTWCstr+HuDw1vrQuFO3U4o9MhEGCJJ7UDbfdGTneta6sd+NxGABPr2veRgqCPpaB4wO/CIKQmJbphz9OTucXuzsQJbiTQXa8yK/vdusWX77qtxh7yE0Fpc8vFyfUXDwKgaT6bc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788979139; 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=ex788BieU15UIgGrxotsclRXJlLNkO5kYkezLjTWSYo=; b=NPqZYqI5gWxRfcX6tc0pmTGnZNYJVyCawPjSSpGGHS77GE8c/OqegjumCIZh/ur/LEvuA5rWWitn+9pEDU2U4c52JrJDQCrteqZjrj20E+xvP8Vi+Xg4gp3nDrnAlEHMLs80MSYVR+LT12ifC1vNk1AnQyENKuY4H2TEZEBNEjQ= 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 1788979139152559.3717136180311; Wed, 9 Sep 2026 11:38:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x4NBr-000681-I7; Wed, 09 Sep 2026 14:38:35 -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 1x4NBo-00066W-Pw; Wed, 09 Sep 2026 14:38:32 -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 1x4NBm-00071Y-1X; Wed, 09 Sep 2026 14:38:32 -0400 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by tor.source.kernel.org (Postfix) with ESMTP id 26C34600CB; Wed, 9 Sep 2026 18:38:29 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7AC601F000FF; Wed, 9 Sep 2026 18:38:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1788979108; bh=ex788BieU15UIgGrxotsclRXJlLNkO5kYkezLjTWSYo=; h=From:Date:Subject:References:In-Reply-To:To:Cc; b=K5eXFU2fF+UB6ZsZmFQZk0VcakT3/aiPQSJha/q5Y9KFuJNIG7FAoVwn3zZUG4rfL UGhr5XM81gHhgDoqA9JgzISrPedIn14MixuBn1nAIe0yLxwxRyn8v9sKfM5wPh2ICR ZZ4GARKWOrixZN9zRr/K0Rrv69clmLWS8NZRRtY+NnKmC8mjSFVMQ3h4xjQWlBrVsz /Lb00Bvd/0cahOkOejdZV0hjM2NCxNoZAP2BIEiRDmzIouovzEgyk9OXn5Sq+7/x+L iNCQYNdge8WdAz950hveCiA1UVp/5JZRjAjBXOJsqAtXkc9SgnasokrkFoaPKOyCuk RhNYrjArmTKkA== From: Daniel Gomez Date: Wed, 09 Sep 2026 20:36:52 +0200 Subject: [PATCH v3 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: <20260909-align-nvme-mdts-with-linux-v3-3-1cee970cc8c8@samsung.com> References: <20260909-align-nvme-mdts-with-linux-v3-0-1cee970cc8c8@samsung.com> In-Reply-To: <20260909-align-nvme-mdts-with-linux-v3-0-1cee970cc8c8@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=1788979097; l=1024; i=da.gomez@samsung.com; s=20240621; h=from:subject:message-id; bh=ghcHKmlCHO13Hcl8xPIIL+bQAT/yi3JzQScu8ZdCfnI=; b=BwC0JGtJjhVcM81Z/m573Y5tSMn9ax/S42foR0ZzaZvbcpRE/Ln5+NGjREneBOJ9lb//FRNIa 9CpAICkKk1XAFLaJjIb6ltgQ1mqrt2Tai3zZtPftVudEDjNzqKT0vYa 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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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: 1788979140840158500 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. Acked-by: Jesper Wendel Devantier Reviewed-by: Keith Busch Signed-off-by: Daniel Gomez --- 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 20:01:45 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=1788979135; cv=none; d=zohomail.com; s=zohoarc; b=G0zhqGGpMla14PDAiaAZQnzEN9fvtzOagK6RukSHGL0qgE6W8UWIqganRZ2NRqR0Hk+AMsnYXBt9rNThuUaRv+yAOMS/f9xc7H/aG53Y/wc55P7qMmSc5oTX5YV4FLTWBCADzmDCqkTv0CFQjcpkObJkR3A4AJY2x4EDIFrNonQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788979135; 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=psoQShLqT6+yJV1dS5Y85vhVuzwxt9jvlzJ6J91iiVk=; b=JRTz4FgUr8F2KKso1h7i+8ZTdWhEin04N374L5ZSay7SMmMYKOb57MrX/9xXHjZL72skKLPzcpwpBi2nPKaX9q5xGvJ/oc4G/I8HEAKzWeBxmzxXU6kiv98uwdKA1xxM6teu0MW+eNkZQxGW2shSfnn6OlPGj12i40NtOE1TbTQ= 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 1788979135224274.0858865157154; Wed, 9 Sep 2026 11:38:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x4NBy-00069v-Ax; Wed, 09 Sep 2026 14:38:42 -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 1x4NBr-00067V-68; Wed, 09 Sep 2026 14:38:35 -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 1x4NBp-00072Y-ME; Wed, 09 Sep 2026 14:38:34 -0400 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id BA23540A43; Wed, 9 Sep 2026 18:38:31 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4B83D1F000FF; Wed, 9 Sep 2026 18:38:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1788979111; bh=psoQShLqT6+yJV1dS5Y85vhVuzwxt9jvlzJ6J91iiVk=; h=From:Date:Subject:References:In-Reply-To:To:Cc; b=a1YY0raUx9vHTAQSRW3uhkdmXoFX/SG/z1ZecSK+B1RBJ+S6gSmiOAqEryiNrkGwl pQSxR8s7CSe3P4r/KOI3KAeZ0Teo/EWhg7oeXlTJ/imyK6FC2CPDslL3f/KRt1hHso YpDbroz1oNkJhdh3yfF2jMZyBKZLdMe4v3H0h0S/S5FZIrazOQ0N79JiELxTHjzr3a UK7S9kWx0cFuYKVxdeUtR0wbBAAFhwsX9FQqSphiWT7caTJwEy6pV/unQoSxhAZZaa SxCkuibIENz/XPAhUEkBejsI/UHz6jQ4rBuGZUyKBp47sjdqUgN92l3wTjlOjrl+jO tc5chewIp1y9A== From: Daniel Gomez Date: Wed, 09 Sep 2026 20:36:53 +0200 Subject: [PATCH v3 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: <20260909-align-nvme-mdts-with-linux-v3-4-1cee970cc8c8@samsung.com> References: <20260909-align-nvme-mdts-with-linux-v3-0-1cee970cc8c8@samsung.com> In-Reply-To: <20260909-align-nvme-mdts-with-linux-v3-0-1cee970cc8c8@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=1788979097; l=1069; i=da.gomez@samsung.com; s=20240621; h=from:subject:message-id; bh=pwviRsrqUtdVfz/fQZeanc/8A6kQn0kCksJJk+P7S0w=; b=qrVop/xKzHRGSlgGWvOJmC9QHibXH69h9e/+TibV58ZxLGvuLQI0xRuRIrcPhiwyTPCzJVBWU llsUorO2uqxATFPqo+sq2FYkEXNK4FDSLob8R2RbzOu+Up+k//yd0wM 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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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: 1788979136521158500 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 Acked-by: Jesper Wendel Devantier Reviewed-by: Keith Busch Signed-off-by: Daniel Gomez --- 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 20:01:45 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=1788979226; cv=none; d=zohomail.com; s=zohoarc; b=gJJRplT+D0sg25Ydg6ou/d7hUmqLSry/k3q5geoONiZhClpugRFMlpcmr49/ZIGEAjcse07cWz7DLHgVOftM2TmooaQaHul3bHYq10DTJkwDj7VK3PjyDS90HhLWI0EHwxER40VAl1h3f1ZTsPsFbB9AUSrXxYQgbRFwFIjx2N8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788979226; 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=dvI98fvABUP1myNZ9vcuXBLIL+rLa6AzQD4wx9YFz5A=; b=mvv703tr45Vw+RbzKdk+1nxTtDJGR5TJ1R2tT4DkQ3da2+V3pL07qdW06isDrd8OWDc5sVOiwzZ38Qu8iXEolB8R2x9YclHtwZOveXFzmf1nYUjc5Ai2RL2RZ0vSQ7zCV1LeAiLxa42+mcqFLRi8Ghf0UXECBM+m4/uRm+LQvmU= 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 178897922688412.7891912937273; Wed, 9 Sep 2026 11:40:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x4NDY-0007BB-AW; Wed, 09 Sep 2026 14:40:20 -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 1x4NBt-00069x-6o; Wed, 09 Sep 2026 14:38:42 -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 1x4NBr-00073S-Kv; Wed, 09 Sep 2026 14:38:36 -0400 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by tor.source.kernel.org (Postfix) with ESMTP id B61FA600CB; Wed, 9 Sep 2026 18:38:34 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 194251F000FF; Wed, 9 Sep 2026 18:38:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1788979114; bh=dvI98fvABUP1myNZ9vcuXBLIL+rLa6AzQD4wx9YFz5A=; h=From:Date:Subject:References:In-Reply-To:To:Cc; b=HAyS+dZtGj41LVskWT+UJmN9zgWcwVnWde6Vm7HLZt+aNrwkCVJcVEew9Xg9OHJQP SjMK29LMlqB0DGjt4H1aJLzePg5irm6FHsDjuTTqBz1HC1C5ocuVbjAO2buhR70N/n hh3ZnMBND6QT5EEezRP3WCwmIXWV5RxttVqVH510KgeeXz+uv0url7fUd8Or+bj0kw Z8bNxzWxwXT/XuPGvP0fd16IwVk/xGTduagAz/3ywOugIxtHoDPV6RZKunROv8PYDS gpxcxDZyRchiS/yOVFW3pdOt99Gu8+pJ3orDUdnHYn1iMheaTwfq0AzW7Bp44UQWkG 2vlKFPpHCeE1w== From: Daniel Gomez Date: Wed, 09 Sep 2026 20:36:54 +0200 Subject: [PATCH v3 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: <20260909-align-nvme-mdts-with-linux-v3-5-1cee970cc8c8@samsung.com> References: <20260909-align-nvme-mdts-with-linux-v3-0-1cee970cc8c8@samsung.com> In-Reply-To: <20260909-align-nvme-mdts-with-linux-v3-0-1cee970cc8c8@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=1788979097; l=1925; i=da.gomez@samsung.com; s=20240621; h=from:subject:message-id; bh=6LSYpYL/3LjluMewDgXzlk2sAyaqYsHOuYLECsXAu1Q=; b=gzIhTJTkYZfd1BLexarxF/yyjcTJAFrXwWm3D2I7dkHulCqzmQmHsWQORWpcT/1eLrDQqwxiA Z2Pq6R/D/xsDMSC6wIH3rUzDVYBX4sELb4Ci38vik6O6NPpzrGDewZ7 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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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: 1788979228584158500 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' Reviewed-by: Jesper Wendel Devantier Reviewed-by: Keith Busch Signed-off-by: Daniel Gomez --- 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 20:01:45 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=1788979218; cv=none; d=zohomail.com; s=zohoarc; b=Kc/R5INXLkB5wwPsdsjEc6pP5wfXscEngYRsUP2s9M7dFBg+WfL6qknboXn0jXCIruDfZyGJghR8CpKTsIECy+TF7Sr0PC4Am2zeaWt9AxrjpTII6E2fKbEP3p2kTYWgp49BYqc5dwEjWRmuub2Iq78BLJmAMUgytUL9ffWIUBA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788979218; 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=INPL6GjU3It09px70eSyFlscorg/ibGtabVxCQM6X0k=; b=Vxh2Ip9L2f1XnhxlAYJNImxeSkI3mDg4VFYWDqLH1MbPLqOtjyXRZC6BA1ZGGOgJhPgZTQ/Vkw6fy9aYnlBOhvcZtmONGOyO9uEpY9ojX6fbOSMs8WEOxFyFQ2cwVWvFaTqq7V2cjGwRtYxo5+Khc+X+Rq54d8YZe4AxhY2FyKw= 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 1788979218328124.87645355350503; Wed, 9 Sep 2026 11:40:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x4NCi-0006Tr-E2; Wed, 09 Sep 2026 14:39:33 -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 1x4NBx-0006AB-Rx; Wed, 09 Sep 2026 14:38:42 -0400 Received: from sea.source.kernel.org ([2600:3c0a:e001:78e: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 1x4NBv-000741-94; Wed, 09 Sep 2026 14:38:41 -0400 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id 578FA40A43; Wed, 9 Sep 2026 18:38:37 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id DBAE91F000FF; Wed, 9 Sep 2026 18:38:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1788979117; bh=INPL6GjU3It09px70eSyFlscorg/ibGtabVxCQM6X0k=; h=From:Date:Subject:References:In-Reply-To:To:Cc; b=DmBXRgsXfna6UbgBC1+RU73gkl24xex5f+aDQ5C5+kvXVaNNKTmKWLyZjp7MJsrWB DrOP0aYZMm7pGksBWGAPEOoh9rX2wuhKI4dktb2Jzv33JiCX4uuTFvSM8Ll6qaCoRx CxQz2PNcsVCXzxm+GzwqvO370dKyrY6vp6g7gVvzfzDxQERog9wS9VJwpgYL0Z8pEM TI52aV0B5NjZZA0GVRQcIdrN0g0gY0nWZoJDJZbmrQF/W6+WhnEpcOC6M+rauySwwf zQHvm44lkAf1gyzTy2YSkauo2RGU2Wy0nS6gRw/wjribQDFRFY73kniyZJUpZ1awOn CA1sqMPibdqbA== From: Daniel Gomez Date: Wed, 09 Sep 2026 20:36:55 +0200 Subject: [PATCH v3 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: <20260909-align-nvme-mdts-with-linux-v3-6-1cee970cc8c8@samsung.com> References: <20260909-align-nvme-mdts-with-linux-v3-0-1cee970cc8c8@samsung.com> In-Reply-To: <20260909-align-nvme-mdts-with-linux-v3-0-1cee970cc8c8@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=1788979097; l=860; i=da.gomez@samsung.com; s=20240621; h=from:subject:message-id; bh=mJPV5DYqQ9EMwh9VaXYQAglb51wnFe8RlqnU1YjGlcs=; b=vjSRHMZhl3NcsH1zm2kZylOvj2H+gwYf0zcEWV7sH0mtj4KOlnUpPR/gASJMml4KSyZ8R1xuf HSDsq2EN3CSA69/jc5i/5OwjaP8TgA2/Zl6B91oKcdLxc+iodIl2N8Q 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:3c0a:e001:78e:0:1991:8:25; envelope-from=da.gomez@kernel.org; helo=sea.source.kernel.org X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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: 1788979220936158500 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 Reviewed-by: Jesper Wendel Devantier Reviewed-by: Keith Busch Signed-off-by: Daniel Gomez --- 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 20:01:45 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=1788979242; cv=none; d=zohomail.com; s=zohoarc; b=JN4cmioXDVn5gWd+X8Pqxen22bkNmRzn6R59YPi2KSLD4OmiaKugk9G5BuY2tZrrvQty1Px+rdTWX6p9Rg+QPF/WYVxQjKoqxoZHtrKpUZp1MCf4cgiRrZvVLrhN2L0dHF26iyM7+B8XnTyF8+Lno995Tw+RqPT0xcPkoVu2V6E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788979242; 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=Xob8NsqOBoZjbWo1s35N0zCmHyuwjpWh2O9NS/qcXvw=; b=TR/fYMkNH7VMZESx4rxNW9cxDr/vqYkHuMD0Swuz7dozsPs57EKJBZSE33lEu6Le5OhXBb0meRc5MgFMDSjSWfd8U0eLV8bidvB/sPyGNSoHERLzwOG0VOzA2wsfK6e+pZmOmK5uoVRyIdxG4Ttjse5PySAzcpNFm2+RTjtNQdI= 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 178897924255256.43242077932621; Wed, 9 Sep 2026 11:40:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x4NDj-0007jH-Qz; Wed, 09 Sep 2026 14:40:32 -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 1x4NC4-0006Ap-89; Wed, 09 Sep 2026 14:38:55 -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 1x4NBx-00074r-Tz; Wed, 09 Sep 2026 14:38:44 -0400 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by tor.source.kernel.org (Postfix) with ESMTP id 5318B600CB; Wed, 9 Sep 2026 18:38:40 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id AAB0E1F000FF; Wed, 9 Sep 2026 18:38:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1788979120; bh=Xob8NsqOBoZjbWo1s35N0zCmHyuwjpWh2O9NS/qcXvw=; h=From:Date:Subject:References:In-Reply-To:To:Cc; b=IdvgT66PBvfb9XHYtzwZej45S+HvUabnbFCwZn8eVVv1RSUT7Ne6hgoAxX7NOrX9t nE5hJAde+rD9TaaBhflNL0pxI8g4Cl1Ci64ph9gNkozMrigqu1rRGJKgwDGT9VPAvE SocEcSKuS6aS0An/uoJj9PcFkEZGL3oLR1j10m3j55pZWdNafNQQIZLj2OEFUd1FqW 606oZQRKlQSZ0Du6+147w4iUG7rK1/xsVInURIlc/SqbXIVp0zAC8/5aUeBd6T1llG ctyw3xIwOKZLykbRP/gVOXxFk9ERU1OpqDEPzDfm+BCP9c0PUlI3HAHLWCrDvYrEd7 4IOFCTaBIXF1A== From: Daniel Gomez Date: Wed, 09 Sep 2026 20:36:56 +0200 Subject: [PATCH v3 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: <20260909-align-nvme-mdts-with-linux-v3-7-1cee970cc8c8@samsung.com> References: <20260909-align-nvme-mdts-with-linux-v3-0-1cee970cc8c8@samsung.com> In-Reply-To: <20260909-align-nvme-mdts-with-linux-v3-0-1cee970cc8c8@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=1788979097; l=1786; i=da.gomez@samsung.com; s=20240621; h=from:subject:message-id; bh=HkTv7Vn4/V7k/VYyPKeIRujrQm0Dbp94qHpsEZy05w0=; b=dZEU4leYyoL2VJ+G92oQbeIoEZuk53S+C07P0DXnguEAvxbZcPArna8hRsTnMruiSoSGDHG0y a3BwF5x0EPbBcKt3pIURI9QJEyWoI/mV34WS07Brg8yOWy6fcR5ieJg 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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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: 1788979244947158500 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 calculating the worst-case iovec count with a width-bounded shift helper. 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 Reviewed-by: Keith Busch Signed-off-by: Daniel Gomez --- hw/nvme/ctrl.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c index 7861d8f2521..f219bf524dd 100644 --- a/hw/nvme/ctrl.c +++ b/hw/nvme/ctrl.c @@ -8720,6 +8720,11 @@ static const MemoryRegionOps nvme_cmb_ops =3D { }, }; =20 +static inline uint64_t nvme_mdts_max_iovs(uint8_t mdts) +{ + return mdts >=3D 64 ? UINT64_MAX : (1ULL << mdts) + 1; +} + static bool nvme_check_params(NvmeCtrl *n, Error **errp) { NvmeParams *params =3D &n->params; @@ -8802,8 +8807,9 @@ static bool nvme_check_params(NvmeCtrl *n, Error **er= rp) 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"); + if ((params->cmb_size_mb || n->pmr.dev) && + (!params->mdts || nvme_mdts_max_iovs(params->mdts) > IOV_MAX)) { + error_setg(errp, "mdts=3D%u is incompatible with CMB/PMR", params-= >mdts); return false; } =20 --=20 2.55.0