From nobody Sat Sep 26 21:37:55 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=1787688608; cv=none; d=zohomail.com; s=zohoarc; b=nGWaukt8r8jixV3i8ILASvQdQDzUGrgFCoh+pPy5VHplLOnwylorIvvYguP7PXmfqRn5vwLAMXQ038f0FDrjhb8Y0E/qrp1ivHQ3O0Ym9BZP0KRxSTymX6GBQajN/kuqSUOeVHF/bZ9/3W9Icc0GRReedfhayuBKA1/HBsHST9E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787688608; 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=K+iHgnhZpPLMCJVSJiBspKcNbZdBCypYJAqvU/cgBhg=; b=PijVjFzCgo+bHaSiBRDW9gbHr2rx7DKLgz/Uobs5GrZREf63aQgvq5z6QITZAWvcbAPmf0FhB6ddLrm/fqb2d8WylOBFYbecqD36INemA0FmxkQM9we+H1WCinPlDpVVGil15BNTPYlqCWuVXByUBtZvDbndYfCpEobemezVGK4= 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 1787688608140874.050581903098; Tue, 25 Aug 2026 13:10:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wyxST-00028y-Af; Tue, 25 Aug 2026 16:09:21 -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 1wyxSR-000251-FU; Tue, 25 Aug 2026 16:09:19 -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 1wyxSP-0003Lz-2J; Tue, 25 Aug 2026 16:09:18 -0400 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by tor.source.kernel.org (Postfix) with ESMTP id 6B4AF600C4; Tue, 25 Aug 2026 20:09:09 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7EA341F000E9; Tue, 25 Aug 2026 20:09:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1787688549; bh=K+iHgnhZpPLMCJVSJiBspKcNbZdBCypYJAqvU/cgBhg=; h=From:Date:Subject:References:In-Reply-To:To:Cc; b=IWW5mZwZZu4wAGVOvBBeI4JNO0IOmpWcXG+fg7Gft2q6QeXgBq7G31H6OBblgyA6c lifAY+svvxh3s0BgqP5rInKFl2dYICMq1z5EPT+0CDHSOLLBShTMkSBm3/Ukh0kkxN T+fF55m/f312w744s3bux1ZIE+4QdXHl4fgpSOu6Bk00qnIauMInxryDFXVdUVtLdf drLnl4TLOjFxQIjJsPRR7VLRGvUA73uJt+I6WJst5mbk5vzJhuK0TFvajNvRNzLtq+ lx6E3uFQdWZvjt6WgZ6lwFOkHrOhqa0t5rZ/BzMpdy6sv4j0D9SdXGTB3/UEyk/EhO mjZhxwBlUMufQ== From: Daniel Gomez Date: Tue, 25 Aug 2026 22:08:01 +0200 Subject: [PATCH 1/5] hw/nvme: fix endianness handling in the atomic write path MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260825-nvme-mam-v1-1-afc38ac713ef@samsung.com> References: <20260825-nvme-mam-v1-0-afc38ac713ef@samsung.com> In-Reply-To: <20260825-nvme-mam-v1-0-afc38ac713ef@samsung.com> To: qemu-devel@nongnu.org Cc: Keith Busch , Klaus Jensen , Klaus Jensen , Jesper Devantier , Daniel Gomez , Daniel Gomez , GOST , qemu-block@nongnu.org X-Mailer: b4 0.16-dev X-Developer-Signature: v=1; a=ed25519-sha256; t=1787688545; l=3074; i=da.gomez@samsung.com; s=20240621; h=from:subject:message-id; bh=LObKqwvSfMPa+j8ZY+uXK3SSHFH3Na6h8R/mD+JvHBg=; b=WzkRVt6WmzJrRVUks39EUDt8muIlaxCEoRjjP6lNbi+O64O+/MRPApn7soAFFo9LFbSEZTuEN veK/s0y1WgzBUOB6K7oQlE3F2qjy2SKNpXnjJzZYay5zx7AgSJIQdg1 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: 1787688610432158500 From: Daniel Gomez NvmeCmd, NvmeRwCmd, and NvmeIdCtrl are NVMe data structures in little-endian, fix the cases where their fields are used as host values. Note that in the case of nvme_atomic_configure_max_write_size() we now pass the clamped AWUPF instead of the unclamped one. Fixes: ebd1568fc732 ("hw/nvme: add atomic write support") Fixes: 3b41acc96299 ("hw/nvme: enable ns atomic writes") Signed-off-by: Daniel Gomez --- hw/nvme/ctrl.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c index 4893cf7e741..c884ca8a181 100644 --- a/hw/nvme/ctrl.c +++ b/hw/nvme/ctrl.c @@ -7832,7 +7832,7 @@ static int nvme_atomic_write_check(NvmeCtrl *n, NvmeC= md *cmd, int i; =20 if ((cmd->opcode =3D=3D NVME_CMD_READ) || ((cmd->opcode =3D=3D NVME_CM= D_WRITE) && - ((rw->nlb + 1) > atomic->atomic_max_write_size))) { + ((nlb + 1) > atomic->atomic_max_write_size))) { cmd_atomic_wr =3D false; } =20 @@ -7869,7 +7869,7 @@ static int nvme_atomic_write_check(NvmeCtrl *n, NvmeC= md *cmd, =20 if (((req_rw->opcode =3D=3D NVME_CMD_WRITE) || (req_rw->opcode =3D=3D NVME_CMD_READ)) && - (cmd->nsid =3D=3D req->ns->params.nsid)) { + (le32_to_cpu(cmd->nsid) =3D=3D req->ns->params.nsid)) { req_slba =3D le64_to_cpu(req_rw->slba); req_nlb =3D (uint32_t)le16_to_cpu(req_rw->nlb); req_elba =3D req_slba + req_nlb; @@ -7895,7 +7895,7 @@ static int nvme_atomic_write_check(NvmeCtrl *n, NvmeC= md *cmd, =20 static NvmeAtomic *nvme_get_atomic(NvmeCtrl *n, NvmeCmd *cmd) { - NvmeNamespace *ns =3D nvme_ns(n, cmd->nsid); + NvmeNamespace *ns =3D nvme_ns(n, le32_to_cpu(cmd->nsid)); =20 if (ns && ns->atomic.atomic_writes) { return &ns->atomic; @@ -8889,6 +8889,7 @@ static void nvme_init_state(NvmeCtrl *n) NvmeSecCtrlEntry *sctrl; PCIDevice *pci =3D PCI_DEVICE(n); NvmeIdCtrl *id =3D &n->id_ctrl; + uint16_t awun, awupf; uint8_t max_vfs; int i; =20 @@ -8950,19 +8951,20 @@ static void nvme_init_state(NvmeCtrl *n) } =20 /* Atomic Write */ - id->awun =3D cpu_to_le16(n->params.atomic_awun); - id->awupf =3D cpu_to_le16(n->params.atomic_awupf); n->dn =3D n->params.atomic_dn; + awun =3D n->params.atomic_awun; + awupf =3D n->params.atomic_awupf; =20 - if (id->awun || id->awupf) { - if (id->awupf > id->awun) { - id->awupf =3D 0; + if (awun || awupf) { + if (awupf > awun) { + awupf =3D 0; } =20 - nvme_atomic_configure_max_write_size(n->dn, n->params.atomic_awun, - n->params.atomic_awupf, - &n->atomic); + nvme_atomic_configure_max_write_size(n->dn, awun, awupf, &n->atomi= c); } + + id->awun =3D cpu_to_le16(awun); + id->awupf =3D cpu_to_le16(awupf); } =20 static void nvme_init_cmb(NvmeCtrl *n, PCIDevice *pci_dev) --=20 2.55.0 From nobody Sat Sep 26 21:37:55 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=1787688612; cv=none; d=zohomail.com; s=zohoarc; b=WiPbgZqNPgQlgb3n2dzg/f5aJ+ZeJr3aopFtS9ukAUbG48m4qHGprjY69SStxFgO00PcsUjkXe0D6rmaEZsYCNjeBreyWRo09GSHPK43vriIuJW3ZIAD+A/ef6kVj8Jnzfg4dX4u+LKJDdMrq2wvCrNbZiA+R46JiGYIPxTP1a4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787688612; 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=mjWt2eG9bGCBu6fo83T7HNOlfG653ZKTc+ZgqhLkw38=; b=havaQFalcXX0aG2RnW+u811v2lFu3RpGKdIIpB4EiwdSRrC/NMl5n+YUAGtKiKsOk6jnhhDDQGIahVkigSeHUE17ZFCBN4ctmvZPM80LxYvDIhGpNbTBsjCami+SPqIvhRHcboEv5DMAtJ/GaMFDjkiSBKjua7jKOSMl6t4AW4o= 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 1787688612524985.2745266674609; Tue, 25 Aug 2026 13:10:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wyxSW-0002Ew-4b; Tue, 25 Aug 2026 16:09:24 -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 1wyxSU-0002Bp-EY; Tue, 25 Aug 2026 16:09:22 -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 1wyxSS-0003M3-SO; Tue, 25 Aug 2026 16:09:22 -0400 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id 498D6417A4; Tue, 25 Aug 2026 20:09:11 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8A8341F000E9; Tue, 25 Aug 2026 20:09:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1787688551; bh=mjWt2eG9bGCBu6fo83T7HNOlfG653ZKTc+ZgqhLkw38=; h=From:Date:Subject:References:In-Reply-To:To:Cc; b=FrUTp4TgLn1Oii7ZyKh4Zgjrj74s1x0Cks4Y6VUAHKnRTTaS9UaEx1kP2LJoSubSI z2UfCp7CZH+fsOIzlgjkf3Yz/WY63yiOPb7SBTuseRRDFGjLIt3yKI+f8KHzFUDEp+ SvbQJdBFgvJqYtQjmYwzl7UnvG8zvPNQFJumdjbZu0pXAZEBBcW8kXLGVVAvi1iq/l dRSjKyeCezVfBcIlotbLz8UIZPXuERjb5Uy517bKWvPCE6RGkE4CzuGAorD956z4pv lfrAsYeGXlS5jSasYzBIy6NwJagTmy7vtqTJJ+hffSS9R/ppoU18IYN0a4Lq3iYXGb K7aC11RwTUaKg== From: Daniel Gomez Date: Tue, 25 Aug 2026 22:08:02 +0200 Subject: [PATCH 2/5] hw/nvme: add missing atomic.* fields in usage MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260825-nvme-mam-v1-2-afc38ac713ef@samsung.com> References: <20260825-nvme-mam-v1-0-afc38ac713ef@samsung.com> In-Reply-To: <20260825-nvme-mam-v1-0-afc38ac713ef@samsung.com> To: qemu-devel@nongnu.org Cc: Keith Busch , Klaus Jensen , Klaus Jensen , Jesper Devantier , Daniel Gomez , Daniel Gomez , GOST , qemu-block@nongnu.org X-Mailer: b4 0.16-dev X-Developer-Signature: v=1; a=ed25519-sha256; t=1787688545; l=1619; i=da.gomez@samsung.com; s=20240621; h=from:subject:message-id; bh=LZPT5SX6Uwbh9kVjr+dYBKu3eyw+0VX3INwwwIT8kfU=; b=KgGxejFHsf4+Y4a43A1C7kgdPH6pYhJYR4W6va7eLYGtpuBFmHmKZ2fkLeCJLfv6MQ+G8UmLQ KYjFYFMcaX8CU4cqr2T1cnZjfFSkXFjPzTZcEMen5dT0voDA54uTeQR 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: 1787688613955158500 From: Daniel Gomez Add the missing atomic.* namespace fields in the usage comment section. While at it, fix the missing '=3D' in the atomic.{awun,awupf} fields. Signed-off-by: Daniel Gomez --- hw/nvme/ctrl.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c index c884ca8a181..3baf57af634 100644 --- a/hw/nvme/ctrl.c +++ b/hw/nvme/ctrl.c @@ -41,8 +41,8 @@ * sriov_max_vi_per_vf=3D \ * sriov_max_vq_per_vf=3D \ * atomic.dn=3D, \ - * atomic.awun, \ - * atomic.awupf, \ + * atomic.awun=3D, \ + * atomic.awupf=3D, \ * subsys=3D, \ * model=3D, \ * firmware-version=3D @@ -55,7 +55,12 @@ * zoned.descr_ext_size=3D, \ * zoned.max_active=3D, \ * zoned.max_open=3D, \ - * zoned.cross_read=3D + * zoned.cross_read=3D, \ + * atomic.nabo=3D, \ + * atomic.nabsn=3D, \ + * atomic.nabspf=3D, \ + * atomic.nawun=3D, \ + * atomic.nawupf=3D * * Note cmb_size_mb denotes size of CMB in MB. CMB is assumed to be at * offset 0 in BAR2 and supports only WDS, RDS and SQS for now. By default= , the --=20 2.55.0 From nobody Sat Sep 26 21:37:55 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=1787688649; cv=none; d=zohomail.com; s=zohoarc; b=ajXG03aGv1x0+HudUKx1ZJdJ/5vonWaT478nrG5NVqwipLTj/BmhdZVaMOWsRJSJx+hEFtcNBGxYzXpxnYGnHN+xlz9DcFppkdCZ47hIIDdW5VhyaStHMdtnuA77ZYK8m0T/378CzRFhJH+s6DNqYFkZNn6wmIkTA0Hyp5ZpXYE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787688649; 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=LwWR7zUnszifL+10OLV4lfkrO2s6LsshfY8NTWEiGag=; b=ZujwKSieGdNchBmroAYlT8EFZdwg4BKuI2G6K052/Oy28GvFAEQAES98N19Rd+6FBFknCelErk+nShLmLm1MyE2NOSomQ94e5TMLFO1rAf3Lie+8LLtnmxoqbj0IkFQmuTLR/BntzZiUViyAhmuiy2PRHsdnMH7G3J3xgedhL4w= 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 1787688649527984.0498570822741; Tue, 25 Aug 2026 13:10:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wyxSX-0002G6-Mp; Tue, 25 Aug 2026 16:09:25 -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 1wyxSV-0002E3-Dh; Tue, 25 Aug 2026 16:09:23 -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 1wyxST-0003M7-Qy; Tue, 25 Aug 2026 16:09:23 -0400 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by tor.source.kernel.org (Postfix) with ESMTP id 7FEEF6011F; Tue, 25 Aug 2026 20:09:13 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 94C8D1F000E9; Tue, 25 Aug 2026 20:09:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1787688553; bh=LwWR7zUnszifL+10OLV4lfkrO2s6LsshfY8NTWEiGag=; h=From:Date:Subject:References:In-Reply-To:To:Cc; b=SQbk1XYnfJShz28RBAvSib3JhZjL1YtxOSrbXfOQzAIxabbnluMJftp2x8IhAUcZo 4CB7Tuo1habhRrdKS1oOvw5fj39xSfOuEHeu0S3kUxOFxKpHKFrm+cQ/Bnqq7rVB3o 7D5+DCa1bB/0NLtt9EsmPwBUXCFvBdKuW4hgcQiChNw1GQwFpeQfiFLe77a2//uLpJ UZulGG9iJjf7p9Z1xz3voQi6qyYv0HfqM2MVi9K7DXJIuJUojGYpZA+Uyw1eF1Xn4U gx6n10hd0Zl+KUkLNxFRb0Sdq4V2yH+1IHYsaKda4T9peDvNaSg4xW5jgGCFPWN9xa 4JatG/Ug4gW4g== From: Daniel Gomez Date: Tue, 25 Aug 2026 22:08:03 +0200 Subject: [PATCH 3/5] docs: add hw/nvme atomics section MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260825-nvme-mam-v1-3-afc38ac713ef@samsung.com> References: <20260825-nvme-mam-v1-0-afc38ac713ef@samsung.com> In-Reply-To: <20260825-nvme-mam-v1-0-afc38ac713ef@samsung.com> To: qemu-devel@nongnu.org Cc: Keith Busch , Klaus Jensen , Klaus Jensen , Jesper Devantier , Daniel Gomez , Daniel Gomez , GOST , qemu-block@nongnu.org X-Mailer: b4 0.16-dev X-Developer-Signature: v=1; a=ed25519-sha256; t=1787688545; l=2459; i=da.gomez@samsung.com; s=20240621; h=from:subject:message-id; bh=DOKKiMr0NWxb2+WItuoEQJ4wUBThlPrd0mzZQVyJxG8=; b=C9gEQVM63JbppgWcYamjSQ9egDIjSreLLSsnhlwdBmZR9gVkNCkxrvwXe33X9tOxI1ydq4WOu LXLFEA7EJqUDm8MOH9sOApDLDVFtw09I6gIrMaaxlxOkQqzHjMdomHm 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: 1787688651976158500 From: Daniel Gomez Document the atomic.* parameters of the nvme and nvme-ns devices. Signed-off-by: Daniel Gomez --- docs/system/devices/nvme.rst | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/docs/system/devices/nvme.rst b/docs/system/devices/nvme.rst index 98a44010438..ab3bb395ab4 100644 --- a/docs/system/devices/nvme.rst +++ b/docs/system/devices/nvme.rst @@ -9,8 +9,8 @@ See the following sections for specific information on =20 * `Adding NVMe Devices`_, `additional namespaces`_ and `NVM subsystems`_. * Configuration of `Optional Features`_ such as `Controller Memory Buffe= r`_, - `Simple Copy`_, `Zoned Namespaces`_, `metadata`_ and `End-to-End Data - Protection`_, + `Simple Copy`_, `Zoned Namespaces`_, `metadata`_, `End-to-End Data + Protection`_, and `Atomic Writes`_. =20 Adding NVMe Devices =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D @@ -386,3 +386,40 @@ controller are: .. code-block:: console =20 echo 0000:01:00.1 > /sys/bus/pci/drivers/nvme/bind + +Atomic Writes +------------- + +Specific Atomic Boundaries parameters for ``nvme`` devices. Unless specifi= ed, +values are in logical block units. + +``atomic.awun=3DUINT16`` (default: ``0``) + Set the Atomic Write Unit Normal (``AWUN``). + +``atomic.awupf=3DUINT16`` (default: ``0``) + Set the Atomic Write Unit Power Fail (``AWUPF``). + +``atomic.dn=3DBOOL`` (default: ``off``) + Set the Disable Normal (``DN``). When set, the controller ignores ``AWUN= `` + and ``NAWUN``. + +Namespace specific Atomic Boundaries parameters for ``nvme-ns`` devices: + +``atomic.nabo=3DUINT16`` (default: ``0``) + Set the Namespace Atomic Boundary Offset (``NABO``). + +``atomic.nabsn=3DUINT16`` (default: ``0``) + Set the Namespace Atomic Boundary Size Normal (``NABSN``). ``0`` means no + atomic boundaries for normal operations. + +``atomic.nabspf=3DUINT16`` (default: ``0``) + Set the Namespace Atomic Boundary Size Power Fail (``NABSPF``). ``0`` me= ans no + atomic boundaries for power fail operations. + +``atomic.nawun=3DUINT16`` (default: ``0``) + Set the Namespace Atomic Write Unit Normal (``NAWUN``). ``0`` means that + ``AWUN`` will be used for the size of this namespace. + +``atomic.nawupf=3DUINT16`` (default: ``0``) + Set the Namespace Atomic Write Unit Power Fail (``NAWUPF``). ``0`` means= that + ``AWUPF`` will be used for the size of this namespace. --=20 2.55.0 From nobody Sat Sep 26 21:37:55 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=1787688622; cv=none; d=zohomail.com; s=zohoarc; b=Molop2/RD96rGXCOufGOEr+EDoxcmIkyO331OO66rcIuPBAmsuoWz9n6GquazUzbnzBaW1Xek4VbPzt6T8o8D/xwR2Iu4Oyg6yQe2aeqAGXd8gJm5VkihsBtvFwRVRBFx6vZHHCJq74PXwQCOLX5j7FlQcr0UUa5xAc7HyVZ4iw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787688622; 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=lov6FtWlxfVm0pVc0Jhf6HlxqVKuPvC2RZEnlr1r+Cw=; b=GsUiJgyFkczF+SAq2IefXUS0uONikL1HQge3yPrk24+QChsdR9y4Qw438LprDXYS+j3xMk7dZTEwOMd4Y0H1yhBmbUM3HSNSGJBPjTEL68DitYk4gXQfcxj/DNN0jNWRiPtAN132PATnj8+lePPWLPnAtayYQLyG3kTeNT3uiqM= 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 1787688622900616.2680048411238; Tue, 25 Aug 2026 13:10:22 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wyxSV-0002Dz-FZ; Tue, 25 Aug 2026 16:09:23 -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 1wyxSR-00025W-Kl; Tue, 25 Aug 2026 16:09:19 -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 1wyxSP-0003MB-OH; Tue, 25 Aug 2026 16:09:19 -0400 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id 5F47E417A6; Tue, 25 Aug 2026 20:09:15 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9F42A1F000E9; Tue, 25 Aug 2026 20:09:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1787688555; bh=lov6FtWlxfVm0pVc0Jhf6HlxqVKuPvC2RZEnlr1r+Cw=; h=From:Date:Subject:References:In-Reply-To:To:Cc; b=jAnS9dpRIERzx62PpMZylNKeWEjBmv3qrif1kNYerZs2t5s9BDlVDGK3jFkAnlcY/ lgJPCexR+UJV2tlaOKFkcIaplWY6UfXAA/1SRPmc+y51ydpA4r8opQUM6LlpiWzk0n YLi4WmEYF4VPROg0tMNsq64TEeBEmNtEuz/1OVAZoVABF0y4aragvJ0yl9p1RzFIit BRPwuvctZ5DZIbleWs/ypkeQqltysyHu2cy1nw1BmCBeHu/4dPFi14TfdNBU58Kl6v yQ4d4TvQ2DfpA+BP0yfoiAj7SwfPiXQmq6qxZzlT/Sm5PBoXSWVWwUUhbEbmDZzSS7 mqUnl77hZw0AQ== From: Daniel Gomez Date: Tue, 25 Aug 2026 22:08:04 +0200 Subject: [PATCH 4/5] hw/nvme: add multiple atomicity mode support MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260825-nvme-mam-v1-4-afc38ac713ef@samsung.com> References: <20260825-nvme-mam-v1-0-afc38ac713ef@samsung.com> In-Reply-To: <20260825-nvme-mam-v1-0-afc38ac713ef@samsung.com> To: qemu-devel@nongnu.org Cc: Keith Busch , Klaus Jensen , Klaus Jensen , Jesper Devantier , Daniel Gomez , Daniel Gomez , GOST , qemu-block@nongnu.org X-Mailer: b4 0.16-dev X-Developer-Signature: v=1; a=ed25519-sha256; t=1787688545; l=5312; i=da.gomez@samsung.com; s=20240621; h=from:subject:message-id; bh=OJsG2BQTAPGdVlzjuyJJ8XD/BBfxKOQDDzyA101GWGs=; b=3bqHvUMr3ZMwJPXLclM4z7GN8fpnUtLeO9u6N2yAUOuGixuj1ih9X3ly6xfBG94OkEAK23pb1 ILhqlSNX1m+AOOQzPZpURhhcpqKBBSZR1iJ7ycBvN9TIMLIAJ5GQRsZ 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: 1787688623828158500 From: Daniel Gomez NVMe spec defines Multiple Atomicity Mode (MAM) as a superset of Single Atomicity Mode (SAM) where the controller works in either mode. In this mode, a write command that crosses the Namespace Atomic Boundaries is divided at those boundaries into atomic LBA subranges, each written atomically, although the full command is not atomic as a whole. Add an "atomic.mam" nvme-ns boolean that sets the existing NVME_ID_NS_NSFEAT_MAM bit once the configured geometry satisfies the mode's requirements: NSABP, with a nonzero NABSN/NABSPF and =3D=3D NAWUN/NAWUPF. This lets a guest use the atomic-write/MAM path with the following emulated NVMe option atomic.mam=3Don, e.g.: -device nvme,serial=3Dfoo,id=3Dnvme0\ -drive file=3Dnvme0.qcow2,if=3Dnone,format=3Dqcow2,id=3Dnvme0-ns0\ -device nvme-ns,drive=3Dnvme0-ns0,bus=3Dnvme0,atomic.nawun=3D7,\ atomic.nawupf=3D7,atomic.nabsn=3D7,atomic.nabspf=3D7,atomic.mam=3Don Note that for MAM emulation, the atomic boundaries limits are skipped and the whole command is serialized as one atomic write. Also, fix a typo in the error message reported when nabspf and nawupf are checked when setting the Namespace Atomic Boundaries. Signed-off-by: Daniel Gomez --- hw/nvme/ctrl.c | 7 +++++-- hw/nvme/ns.c | 27 ++++++++++++++++++++++++++- hw/nvme/nvme.h | 1 + 3 files changed, 32 insertions(+), 3 deletions(-) diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c index 3baf57af634..c912a4df8da 100644 --- a/hw/nvme/ctrl.c +++ b/hw/nvme/ctrl.c @@ -56,6 +56,7 @@ * zoned.max_active=3D, \ * zoned.max_open=3D, \ * zoned.cross_read=3D, \ + * atomic.mam=3D, \ * atomic.nabo=3D, \ * atomic.nabsn=3D, \ * atomic.nabspf=3D, \ @@ -7830,6 +7831,8 @@ static int nvme_atomic_write_check(NvmeCtrl *n, NvmeC= md *cmd, NvmeAtomic *atomic) { NvmeRwCmd *rw =3D (NvmeRwCmd *)cmd; + NvmeNamespace *ns =3D nvme_ns(n, le32_to_cpu(cmd->nsid)); + bool mam =3D ns && (ns->id_ns.nsfeat & NVME_ID_NS_NSFEAT_MAM); uint64_t slba =3D le64_to_cpu(rw->slba); uint32_t nlb =3D (uint32_t)le16_to_cpu(rw->nlb); uint64_t elba =3D slba + nlb; @@ -7837,14 +7840,14 @@ static int nvme_atomic_write_check(NvmeCtrl *n, Nvm= eCmd *cmd, int i; =20 if ((cmd->opcode =3D=3D NVME_CMD_READ) || ((cmd->opcode =3D=3D NVME_CM= D_WRITE) && - ((nlb + 1) > atomic->atomic_max_write_size))) { + !mam && ((nlb + 1) > atomic->atomic_max_write_size))) { cmd_atomic_wr =3D false; } =20 /* * Check if a write crosses an atomic boundary. */ - if (cmd->opcode =3D=3D NVME_CMD_WRITE) { + if (cmd->opcode =3D=3D NVME_CMD_WRITE && !mam) { if (!nvme_atomic_boundary_check(n, cmd, atomic)) { cmd_atomic_wr =3D false; } diff --git a/hw/nvme/ns.c b/hw/nvme/ns.c index 7f0f9ac7662..344c16d1aa0 100644 --- a/hw/nvme/ns.c +++ b/hw/nvme/ns.c @@ -769,7 +769,7 @@ static bool nvme_ns_set_nab(NvmeCtrl *n, NvmeNamespace = *ns, Error **errp) } =20 if (nabspf && nabspf < le16_to_cpu(id_ns->nawupf)) { - error_setg(errp, "nabspf must be great than or equal to nawupf= "); + error_setg(errp, "nabspf must be greater than or equal to nawu= pf"); return false; } } @@ -787,6 +787,30 @@ static bool nvme_ns_set_nab(NvmeCtrl *n, NvmeNamespace= *ns, Error **errp) =20 nvme_ns_atomic_configure_boundary(n->dn, nabsn, nabspf, &ns->atomic); =20 + if (ns->params.atomic.mam) { + uint16_t nawupf =3D le16_to_cpu(id_ns->nawupf); + uint16_t nawun =3D le16_to_cpu(id_ns->nawun); + + if (!(id_ns->nsfeat & NVME_ID_NS_NSFEAT_NSABP)) { + error_setg(errp, "atomic.mam requires per-namespace atomic wri= tes"); + return false; + } + + if (!nabsn || !nabspf) { + error_setg(errp, "atomic.mam requires a nonzero atomic.nabsn a= nd " + "atomic.nabspf"); + return false; + } + + if (nabsn !=3D nawun || nabspf !=3D nawupf || nawun !=3D nawupf) { + error_setg(errp, "atomic.mam requires atomic.nabsn =3D=3D atom= ic.nawun " + "=3D=3D atomic.nabspf =3D=3D atomic.nawupf"); + return false; + } + + id_ns->nsfeat |=3D NVME_ID_NS_NSFEAT_MAM; + } + return true; } =20 @@ -1096,6 +1120,7 @@ static const Property nvme_ns_props[] =3D { DEFINE_PROP_UINT16("atomic.nabsn", NvmeNamespace, params.atomic.nabsn,= 0), DEFINE_PROP_UINT16("atomic.nabspf", NvmeNamespace, params.atomic.nabsp= f, 0), DEFINE_PROP_UINT16("atomic.nabo", NvmeNamespace, params.atomic.nabo, 0= ), + DEFINE_PROP_BOOL("atomic.mam", NvmeNamespace, params.atomic.mam, 0), }; =20 static void nvme_ns_class_init(ObjectClass *oc, const void *data) diff --git a/hw/nvme/nvme.h b/hw/nvme/nvme.h index 43e3c916f73..edc84f347b3 100644 --- a/hw/nvme/nvme.h +++ b/hw/nvme/nvme.h @@ -232,6 +232,7 @@ typedef struct NvmeNamespaceParams { uint16_t nabsn; uint16_t nabspf; uint16_t nabo; + bool mam; } atomic; } NvmeNamespaceParams; =20 --=20 2.55.0 From nobody Sat Sep 26 21:37:55 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=1787688607; cv=none; d=zohomail.com; s=zohoarc; b=ZiLCgXKmgyF9UpxL9DBP6UdW6vhN1vMCl5MDpo5k1JJrwoaXjDF9TM0jLnSfN8ToJ4pmLWk/fN8cUdnWwrsgmxt43O77HsEbsJ5N0UEthupfiv1mCundbkO/UTEn+3616fqL8cZjL+DRYnw+XAyiIGzfzpOx0BOKELWhxRwDwM8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787688607; 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=FDrkPD5ObLfJHUFTJ06KX67fB7PZHqtaH4lmBtJxURE=; b=Y658rayOKRa9pGDZeo+SrGC+cWUaRW1W6FVO/Kzd8WnV7npw/2Wy39DQHMG09whnIneJsKH7B5gSEUbH2npsG8lDP+Vv4A5M9q6FhGcOA4gHGvgjHANODF6iM2uAZv1Eo9REwNXcfHGI45CeKB5tbXzoFX7knpeT89/AxhUyy2I= 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 1787688607687124.39868858001637; Tue, 25 Aug 2026 13:10:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wyxSU-0002BN-BD; Tue, 25 Aug 2026 16:09:22 -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 1wyxSS-00026l-23; Tue, 25 Aug 2026 16:09:20 -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 1wyxSQ-0003ML-KU; Tue, 25 Aug 2026 16:09:19 -0400 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id 69BF5417AB; Tue, 25 Aug 2026 20:09:17 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id AA5B51F000E9; Tue, 25 Aug 2026 20:09:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1787688557; bh=FDrkPD5ObLfJHUFTJ06KX67fB7PZHqtaH4lmBtJxURE=; h=From:Date:Subject:References:In-Reply-To:To:Cc; b=B+7WtJZshOOjFW+yLZy6ljfsR2zZVWip3pjt22z9nYpSMw30yA9tA3wpe8Jc6Ml74 sGf6v0MiEFrbl2+4C0oGn/UnVhuchfJSUTXDb0nQ63B5mk8+69ylaZ5rbH/ZP6HDTT DKnhLon50VewTR/anmeP7CTkTQ+3PBlFJD4wiE1KeY5P17OT+0ZhHpnSOywtkrMtmd mv2J9Z1Hz5Lsxe7Tg7fiEFFgLWwVdS/3DekJF6waJUEl8RS5pT4M6aQBIseiNtpw/E igsYDH4F55G1+k4IGDGh2OU7hZaJ0xM9xTnXon02f+J8I56iHCuwQ1J0/By67R6GiK jKDkpEhsUO0Qg== From: Daniel Gomez Date: Tue, 25 Aug 2026 22:08:05 +0200 Subject: [PATCH 5/5] docs: update hw/nvme atomics with mam MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260825-nvme-mam-v1-5-afc38ac713ef@samsung.com> References: <20260825-nvme-mam-v1-0-afc38ac713ef@samsung.com> In-Reply-To: <20260825-nvme-mam-v1-0-afc38ac713ef@samsung.com> To: qemu-devel@nongnu.org Cc: Keith Busch , Klaus Jensen , Klaus Jensen , Jesper Devantier , Daniel Gomez , Daniel Gomez , GOST , qemu-block@nongnu.org X-Mailer: b4 0.16-dev X-Developer-Signature: v=1; a=ed25519-sha256; t=1787688545; l=997; i=da.gomez@samsung.com; s=20240621; h=from:subject:message-id; bh=bXb68Ts72E8566BriOUvYWi/wdEdKcvMt5kLv1iA+2E=; b=Xc62ddX4hRlncEqKuMrQTa6DG/u8y89rumULSR0EmRM8sJrmZhOt/T3SHBzZGLZlyicmmIiYN CiGl+7x3RBgBQjCVc6g5woAOaGnidhjrYDOJDZikfWYOs5K65lnzPNA 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: 1787688610923158500 From: Daniel Gomez Update hw/nvme atomics section with Multiple Atomicity Mode (MAM) namespace parameter. Signed-off-by: Daniel Gomez --- docs/system/devices/nvme.rst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/system/devices/nvme.rst b/docs/system/devices/nvme.rst index ab3bb395ab4..6a6eb918e71 100644 --- a/docs/system/devices/nvme.rst +++ b/docs/system/devices/nvme.rst @@ -405,6 +405,12 @@ values are in logical block units. =20 Namespace specific Atomic Boundaries parameters for ``nvme-ns`` devices: =20 +``atomic.mam=3DBOOL`` (default: ``off``) + Set the Multiple Atomicity Mode (``MAM``). ``off`` means the controller + works in Single Atomicity Mode ``SAM``. When ``MAM`` is enabled, a write= that + crosses the Namespace Atomic Boundary is divided into atomic LBA subrang= es, + each written atomically at those boundaries. + ``atomic.nabo=3DUINT16`` (default: ``0``) Set the Namespace Atomic Boundary Offset (``NABO``). =20 --=20 2.55.0