From nobody Wed Apr 9 01:11:20 2025 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 ARC-Seal: i=1; a=rsa-sha256; t=1734353679; cv=none; d=zohomail.com; s=zohoarc; b=RXrcLOXT4/FBGUae6ZViNks+hY6/kQMo/N4Dp+F+KVSI8yP6uo2/1+l2iC8WQA0CPlsbfOJWD7Bv/PPUoFf6RnpKvzJW7ySzYB6C7+75a76YSsvnw3GYqw9Z3mSYhqboosSoPqa2TMKpPjdtwaJF+XNgGXuj4YABJAAMupuTQik= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1734353679; 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=pmWWCm3m8jeU1oMs4H2oiEOb++we7L+nlOhbpCWCeNo=; b=S619pLHqrg1TWG4tN92vNz1PlbfQ8IAhEdhQ98J8SG+ssBJakXpMRrlnzuG0xWav5+5lAT0G43HKiZ1FIzGY64X+U5QgOPUwoOlz4o+28wNDJLVEKiCFP6r7CvOWaU2oETABanAgqfZPMPU0SBbB06rQPmatcbYJuE2Cq1gdaeE= 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1734353679050424.9427639731889; Mon, 16 Dec 2024 04:54:39 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tNAbp-0006XT-DT; Mon, 16 Dec 2024 07:54:02 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tNAbl-0006Sc-Fo; Mon, 16 Dec 2024 07:53:58 -0500 Received: from fhigh-b5-smtp.messagingengine.com ([202.12.124.156]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tNAbj-0004pS-7M; Mon, 16 Dec 2024 07:53:57 -0500 Received: from phl-compute-11.internal (phl-compute-11.phl.internal [10.202.2.51]) by mailfhigh.stl.internal (Postfix) with ESMTP id 6807A254015A; Mon, 16 Dec 2024 07:53:52 -0500 (EST) Received: from phl-mailfrontend-02 ([10.202.2.163]) by phl-compute-11.internal (MEProxy); Mon, 16 Dec 2024 07:53:52 -0500 Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon, 16 Dec 2024 07:53:50 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=irrelevant.dk; h=cc:cc:content-transfer-encoding:content-type:content-type :date:date:from:from:in-reply-to:in-reply-to:message-id :mime-version:references:reply-to:subject:subject:to:to; s=fm3; t=1734353632; x=1734440032; bh=pmWWCm3m8jeU1oMs4H2oiEOb++we7L+n lOhbpCWCeNo=; b=IX8KlVS6CuqL7wF9QdlCow42LyHVQO+2jWtG6IFnwLhrUKq1 +rJ0fzriHWbZXPIaEGBCtRzc+q1YnKKf4YA1oSPYYGIDn4cOe8l1gAVT9c/uvVRL VMHwIdvNOpf9//wyeFCvTzIJ9kij0g8Yuw/L5tAMxem7yKQcN1hZghNCYAia4DCx mQaL/bg5a31f6/8lS9OERx9pK18a3rdvzawSB1TMRh1VVFg6yqom2H+aJIJ9eCT7 KgWFh0NCs1tXOPwgmfd32vXZJ6RlgfVEiOmImffIlgE9PgHaSoA8QSRwph8C+Oal RPgXKWnRqj+reTbzwnzb+9Vmd6cNLqhcE2L3Ig== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1734353632; x= 1734440032; bh=pmWWCm3m8jeU1oMs4H2oiEOb++we7L+nlOhbpCWCeNo=; b=w 82YFqCATjQs3a+j6kjYHZeFJkxXp3CVCFV9NJNmgpcE5xPxN+BM/Eh2hZPpPrAlZ XHZ5ZseXD63IFl/hGwlPtqavGAloW5cb+wLyf4m9jgulnTD1EU1RGa7g/oqy9osh qvHXfs5SnpiWMx6EJWeaHx05Tgp4pHUUwXI25XgCaTm60e8K74kJR2j8O5O/Iz93 kHSkARKQ4WLVdFnUUMuCh8XX3Zi/4OoaCXXj4v4F3IgYeCgNLOLwIPZcXC4xuNP+ QM0Snh/ulQfyMewMFz2/GSH89tNT7JdsWa+frEpQnBbF2jpSWyQGOCUuUgCfcv5I T2YdfJPv4fEBbzCswLEdw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefuddrleefgdeghecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpggftfghnshhusghstghrihgsvgdpuffr tefokffrpgfnqfghnecuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnth hsucdlqddutddtmdenucfjughrpefhfffugggtgffkfhgjvfevofesthejredtredtjeen ucfhrhhomhepmfhlrghushculfgvnhhsvghnuceoihhtshesihhrrhgvlhgvvhgrnhhtrd gukheqnecuggftrfgrthhtvghrnhepkeeivddtueehffefuddtleefkefhiedttdduveeg gfffieetveffhfehgfeghfffnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpe hmrghilhhfrhhomhepihhtshesihhrrhgvlhgvvhgrnhhtrdgukhdpnhgspghrtghpthht ohepiedpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtohepfhhoshhsseguvghfmhgrtg hrohdrihhtpdhrtghpthhtohepqhgvmhhuqdgslhhotghksehnohhnghhnuhdrohhrghdp rhgtphhtthhopehithhssehirhhrvghlvghvrghnthdrughkpdhrtghpthhtohepqhgvmh huqdguvghvvghlsehnohhnghhnuhdrohhrghdprhgtphhtthhopehksghushgthheskhgv rhhnvghlrdhorhhgpdhrtghpthhtohepkhdrjhgvnhhsvghnsehsrghmshhunhhgrdgtoh hm X-ME-Proxy: Feedback-ID: idc91472f:Fastmail From: Klaus Jensen Date: Mon, 16 Dec 2024 13:53:02 +0100 Subject: [PATCH 1/9] hw/nvme: always initialize a subsystem MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20241216-nvme-queue-v1-1-4e42212b92f7@samsung.com> References: <20241216-nvme-queue-v1-0-4e42212b92f7@samsung.com> In-Reply-To: <20241216-nvme-queue-v1-0-4e42212b92f7@samsung.com> To: Keith Busch , Klaus Jensen , Jesper Devantier , qemu-block@nongnu.org, qemu-devel@nongnu.org Cc: Klaus Jensen X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=5512; i=k.jensen@samsung.com; h=from:subject:message-id; bh=tJcP0mdagt+ZzbYB8t7jIv/wqlWN9cCEPZnTndma+9E=; b=LS0tLS1CRUdJTiBQR1AgTUVTU0FHRS0tLS0tCgpvd0o0bkFGdEFaTCtrQTBEQUFvQlRlR3ZNV zFQRGVrQnl5WmlBR2RnSXRqdmI3eFBFWmhoRzYvOWlaMnJTSkN3CmFHSHlCMjZlN2xlNTkvZ2hX Ry9RUzRrQk13UUFBUW9BSFJZaEJGSW9NNnAxNHR6bW9rZG13RTNocnpGdFR3M3AKQlFKbllDTFl BQW9KRUUzaHJ6RnRUdzNwRm9RSC8yM2t6MXBGRjRvVWNZNTl1QkdTQUJzSVlSd3BhcGlMem11Vg pJNHZGYytKS1lMNmRJVFhUd3l2bFF2a09MR0tNd3Jwb21uK2YwQUlVQkVWbzBOUnU5S0Z6U0VSZ 3JPbnVINzdMClU0dFNHV3E4MG1hRUp4bnNHUzF1SUN5WWZRZy9vMXFHSHBmQytFdG4vOUEwQnVV UmZEbzhTNTJnSkVnVWZEb0EKaUdkaVdvdUVsb0hkaXlDQU14MkcyK0M0STRGRGl0SWp6VHhwTzl pVi9pcFZzUG9ocnVhSG9CRVMrTnVlUlh5UgpWYUJCQWQzd3lpL01pSCtUdEkzeEpmMzRaSHN3UH hXUmF5UzQyVzJHRkZYelgxR2Y4UFoxUEh4NzBFR1J6cTZBCno2UnBVNVV5SVgzRll2NkUyVmVye Wh0aXhZdUN4bG0va2xFWEF4SUhWbXZWU05qTzIzU2lmcWFWCj1ZOE5OCi0tLS0tRU5EIFBHUCBN RVNTQUdFLS0tLS0K X-Developer-Key: i=k.jensen@samsung.com; a=openpgp; fpr=DDCA4D9C9EF931CC3468427263D56FC5E55DA838 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=lists.gnu.org; Received-SPF: pass client-ip=202.12.124.156; envelope-from=its@irrelevant.dk; helo=fhigh-b5-smtp.messagingengine.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 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 @irrelevant.dk) X-ZM-MESSAGEID: 1734353680980116600 From: Klaus Jensen If no nvme-subsys is explicitly configured, instantiate one. Signed-off-by: Klaus Jensen Reviewed-by: Jesper Wendel Devantier --- hw/nvme/ctrl.c | 36 ++++++++++++++++++--------------- hw/nvme/ns.c | 64 ++++++++++++++++++++----------------------------------= ---- 2 files changed, 42 insertions(+), 58 deletions(-) diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c index ec754195669598082dd573ff1237dbbfb9b8aff5..e1d54ee34d2cd073821ac398bc5= b4a51cb79e0e9 100644 --- a/hw/nvme/ctrl.c +++ b/hw/nvme/ctrl.c @@ -8759,15 +8759,13 @@ static void nvme_init_ctrl(NvmeCtrl *n, PCIDevice *= pci_dev) id->psd[0].enlat =3D cpu_to_le32(0x10); id->psd[0].exlat =3D cpu_to_le32(0x4); =20 - if (n->subsys) { - id->cmic |=3D NVME_CMIC_MULTI_CTRL; - ctratt |=3D NVME_CTRATT_ENDGRPS; + id->cmic |=3D NVME_CMIC_MULTI_CTRL; + ctratt |=3D NVME_CTRATT_ENDGRPS; =20 - id->endgidmax =3D cpu_to_le16(0x1); + id->endgidmax =3D cpu_to_le16(0x1); =20 - if (n->subsys->endgrp.fdp.enabled) { - ctratt |=3D NVME_CTRATT_FDPS; - } + if (n->subsys->endgrp.fdp.enabled) { + ctratt |=3D NVME_CTRATT_FDPS; } =20 id->ctratt =3D cpu_to_le32(ctratt); @@ -8796,7 +8794,15 @@ static int nvme_init_subsys(NvmeCtrl *n, Error **err= p) int cntlid; =20 if (!n->subsys) { - return 0; + DeviceState *dev =3D qdev_new(TYPE_NVME_SUBSYS); + + qdev_prop_set_string(dev, "nqn", n->params.serial); + + if (!qdev_realize(dev, NULL, errp)) { + return -1; + } + + n->subsys =3D NVME_SUBSYS(dev); } =20 cntlid =3D nvme_subsys_register_ctrl(n, errp); @@ -8886,17 +8892,15 @@ static void nvme_exit(PCIDevice *pci_dev) =20 nvme_ctrl_reset(n, NVME_RESET_FUNCTION); =20 - if (n->subsys) { - for (i =3D 1; i <=3D NVME_MAX_NAMESPACES; i++) { - ns =3D nvme_ns(n, i); - if (ns) { - ns->attached--; - } + for (i =3D 1; i <=3D NVME_MAX_NAMESPACES; i++) { + ns =3D nvme_ns(n, i); + if (ns) { + ns->attached--; } - - nvme_subsys_unregister_ctrl(n->subsys, n); } =20 + nvme_subsys_unregister_ctrl(n->subsys, n); + g_free(n->cq); g_free(n->sq); g_free(n->aer_reqs); diff --git a/hw/nvme/ns.c b/hw/nvme/ns.c index 526e15aa80187b82f9622445849b03fd472da8df..3be43503c50798db0ab528fe30a= d901bb6aa9db3 100644 --- a/hw/nvme/ns.c +++ b/hw/nvme/ns.c @@ -727,25 +727,14 @@ static void nvme_ns_realize(DeviceState *dev, Error *= *errp) uint32_t nsid =3D ns->params.nsid; int i; =20 - if (!n->subsys) { - /* If no subsys, the ns cannot be attached to more than one ctrl. = */ - ns->params.shared =3D false; - if (ns->params.detached) { - error_setg(errp, "detached requires that the nvme device is " - "linked to an nvme-subsys device"); - return; - } - } else { - /* - * If this namespace belongs to a subsystem (through a link on the - * controller device), reparent the device. - */ - if (!qdev_set_parent_bus(dev, &subsys->bus.parent_bus, errp)) { - return; - } - ns->subsys =3D subsys; - ns->endgrp =3D &subsys->endgrp; + assert(subsys); + + /* reparent to subsystem bus */ + if (!qdev_set_parent_bus(dev, &subsys->bus.parent_bus, errp)) { + return; } + ns->subsys =3D subsys; + ns->endgrp =3D &subsys->endgrp; =20 if (nvme_ns_setup(ns, errp)) { return; @@ -753,7 +742,7 @@ static void nvme_ns_realize(DeviceState *dev, Error **e= rrp) =20 if (!nsid) { for (i =3D 1; i <=3D NVME_MAX_NAMESPACES; i++) { - if (nvme_ns(n, i) || nvme_subsys_ns(subsys, i)) { + if (nvme_subsys_ns(subsys, i)) { continue; } =20 @@ -765,38 +754,29 @@ static void nvme_ns_realize(DeviceState *dev, Error *= *errp) error_setg(errp, "no free namespace id"); return; } - } else { - if (nvme_ns(n, nsid) || nvme_subsys_ns(subsys, nsid)) { - error_setg(errp, "namespace id '%d' already allocated", nsid); - return; - } + } else if (nvme_subsys_ns(subsys, nsid)) { + error_setg(errp, "namespace id '%d' already allocated", nsid); + return; } =20 - if (subsys) { - subsys->namespaces[nsid] =3D ns; + subsys->namespaces[nsid] =3D ns; =20 - ns->id_ns.endgid =3D cpu_to_le16(0x1); - ns->id_ns_ind.endgrpid =3D cpu_to_le16(0x1); + ns->id_ns.endgid =3D cpu_to_le16(0x1); + ns->id_ns_ind.endgrpid =3D cpu_to_le16(0x1); =20 - if (ns->params.detached) { - return; - } + if (ns->params.detached) { + return; + } =20 - if (ns->params.shared) { - for (i =3D 0; i < ARRAY_SIZE(subsys->ctrls); i++) { - NvmeCtrl *ctrl =3D subsys->ctrls[i]; + if (ns->params.shared) { + for (i =3D 0; i < ARRAY_SIZE(subsys->ctrls); i++) { + NvmeCtrl *ctrl =3D subsys->ctrls[i]; =20 - if (ctrl && ctrl !=3D SUBSYS_SLOT_RSVD) { - nvme_attach_ns(ctrl, ns); - } + if (ctrl && ctrl !=3D SUBSYS_SLOT_RSVD) { + nvme_attach_ns(ctrl, ns); } - - return; } - } - - nvme_attach_ns(n, ns); } =20 static Property nvme_ns_props[] =3D { --=20 2.45.2 From nobody Wed Apr 9 01:11:20 2025 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 ARC-Seal: i=1; a=rsa-sha256; t=1734353667; cv=none; d=zohomail.com; s=zohoarc; b=R1nAPH6BvKZvkJIfRD50oKmFPEYMqmk8CmWNtSCycbNYib6M8//279jqMhf+ZL+XX52zuEqU6lotED4xhBD8NjAKxGVIdoO+UIkobBTzIaqdNukN9jVLhouCqEVN2yQZSdTii16nlS+K1OwDKZIhnrB7MDh1bMER9YBVDhrA93Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1734353667; 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=QC1CzfddL2J0n0Ggg7BuuXFGbGNmT3JmTpOp7uOJnYI=; b=WriJX7w3jDjf/n4CUKhqaRmuGVagvsTNYgS6976AFS5WujEhxc9dfNHgwoL7/2hGXl00ciWDCupAK4E4dP1ye6Y9YzDVHvXndFoYB9pAqhYz7JYEaHfJ6Zegan7tHpIxdPqesZJoLSmN5oeK6HC6jVE++za/Zr+PvGDPhY+4aQI= 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1734353666867726.3669668092455; Mon, 16 Dec 2024 04:54:26 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tNAbp-0006XQ-CU; Mon, 16 Dec 2024 07:54:02 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tNAbl-0006Sb-Ed; Mon, 16 Dec 2024 07:53:58 -0500 Received: from fout-b4-smtp.messagingengine.com ([202.12.124.147]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tNAbj-0004pY-IR; Mon, 16 Dec 2024 07:53:57 -0500 Received: from phl-compute-06.internal (phl-compute-06.phl.internal [10.202.2.46]) by mailfout.stl.internal (Postfix) with ESMTP id 2FD33114010B; Mon, 16 Dec 2024 07:53:54 -0500 (EST) Received: from phl-mailfrontend-02 ([10.202.2.163]) by phl-compute-06.internal (MEProxy); Mon, 16 Dec 2024 07:53:54 -0500 Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon, 16 Dec 2024 07:53:52 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=irrelevant.dk; h=cc:cc:content-transfer-encoding:content-type:content-type :date:date:from:from:in-reply-to:in-reply-to:message-id :mime-version:references:reply-to:subject:subject:to:to; s=fm3; t=1734353634; x=1734440034; bh=QC1CzfddL2J0n0Ggg7BuuXFGbGNmT3Jm TpOp7uOJnYI=; b=fHtCPTMRPf4Ch0iIMjAFC33VYdaD/+XRWONxFCxyUzVycjJM IF3J3Jwq4/Dn/inVToYSR5WoHQD6fCVdHWZkmpb+y0tLUSGshXRmjloAmuurc/7P B+xIBubvr9+3BddjJEUX+ThmYiWb1obzjJ4maOgcTjUbWlcI8LZhcWP3n0XOWtOa z7NrN37pIi5iqeafiox1pz5FHo/IdH70NP2nVIsyh4TdePtJR5TfdjDHHu9+S2Zj MAp/doztSS6dy/YCp11FHshoqJmMmM6U0qKpeVI3KMaFQeKr87WAAF7TWE8vHji6 WQMDbqbdq1FluD7AB14EvYYjLFP4J9xt1uaCWA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1734353634; x= 1734440034; bh=QC1CzfddL2J0n0Ggg7BuuXFGbGNmT3JmTpOp7uOJnYI=; b=F Hy+ZHNSFMH2IG+o1+5hicwTpUgvTDeoLRGXA1S9iYedg69zwEednm9fQFMjz2AgM fdDJyXbC0d4I6/Ia/vyGDcOirmPt3KjiBVByBqkFhFqVDHgCl0FSLwxHAgT/55hz 5iqvSKh+odBUsAr3pTRNFcxWy7BiFYfAHwVm9VdxpHrENpOYfeXJexZNi0TQ5RZl yR3v1o3PYiS66wcG9g71u/a6rFEapOtW/FRsYDnrK356q3oe/wYU4fkCjbsD/JTD X/z9wqcOmg5+buFPDtWKWzx/uBB42u59B/StUpbNhWBMq3ESizjBUOzZkwACJv/6 0r7wAq/Pmgi7ON8A7fcqQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefuddrleefgdeghecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpggftfghnshhusghstghrihgsvgdpuffr tefokffrpgfnqfghnecuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnth hsucdlqddutddtmdenucfjughrpefhfffugggtgffkfhgjvfevofesthejredtredtjeen ucfhrhhomhepmfhlrghushculfgvnhhsvghnuceoihhtshesihhrrhgvlhgvvhgrnhhtrd gukheqnecuggftrfgrthhtvghrnhepkeeivddtueehffefuddtleefkefhiedttdduveeg gfffieetveffhfehgfeghfffnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpe hmrghilhhfrhhomhepihhtshesihhrrhgvlhgvvhgrnhhtrdgukhdpnhgspghrtghpthht ohepiedpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtohepfhhoshhsseguvghfmhgrtg hrohdrihhtpdhrtghpthhtohepqhgvmhhuqdgslhhotghksehnohhnghhnuhdrohhrghdp rhgtphhtthhopehithhssehirhhrvghlvghvrghnthdrughkpdhrtghpthhtohepqhgvmh huqdguvghvvghlsehnohhnghhnuhdrohhrghdprhgtphhtthhopehksghushgthheskhgv rhhnvghlrdhorhhgpdhrtghpthhtohepkhdrjhgvnhhsvghnsehsrghmshhunhhgrdgtoh hm X-ME-Proxy: Feedback-ID: idc91472f:Fastmail From: Klaus Jensen Date: Mon, 16 Dec 2024 13:53:03 +0100 Subject: [PATCH 2/9] hw/nvme: make oacs dynamic MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20241216-nvme-queue-v1-2-4e42212b92f7@samsung.com> References: <20241216-nvme-queue-v1-0-4e42212b92f7@samsung.com> In-Reply-To: <20241216-nvme-queue-v1-0-4e42212b92f7@samsung.com> To: Keith Busch , Klaus Jensen , Jesper Devantier , qemu-block@nongnu.org, qemu-devel@nongnu.org Cc: Klaus Jensen X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4432; i=k.jensen@samsung.com; h=from:subject:message-id; bh=58uwSgkiT8hh4hZnwccDV1UIm+ZNGURgwi/2bJqJPMA=; b=LS0tLS1CRUdJTiBQR1AgTUVTU0FHRS0tLS0tCgpvd0o0bkFGdEFaTCtrQTBEQUFvQlRlR3ZNV zFQRGVrQnl5WmlBR2RnSXRpcG1VQlRyQWFqaE9EODUxK1F6TG82CmRHaS9LUmZHUzM3QllPdjNH eCtvN1lrQk13UUFBUW9BSFJZaEJGSW9NNnAxNHR6bW9rZG13RTNocnpGdFR3M3AKQlFKbllDTFl BQW9KRUUzaHJ6RnRUdzNwa0RRSC8xTC9HclFEaWpaN0ZSODUva0JGY1NpMm50amhDUEE3YnUrbg prWUl0aTJYNWJBdkF2TGlzN3BFa3Q4VnF5dHhIUXVKYW1TbUo2TTJVYmNmQnNVaG82WXZudHRIT WUxWmVKWVI0ClRpMGMxdVpWT0ZYR2xWMTNMbmZFcGd2TDZrOSt2RWtIVnlrMFFkUGlsMkhKbUdN Uktod1RIK09lVUhEeHZpNFoKNGZSdzd3NUVQRkZkYXVyS3poTTFPZG1YYU52YWFXNkNEZVlteFF YT2ZWMjdtK0pOM2w3dTJ4U0VhTnR5K01mUgpOYmVMSCtyK0NSTDdVc3Q5TVVOalBGZFIydHBWRE szRmd6YjJUOWhoeDRvMWRHTGRZcXVqYXZDdFE5N0czUEZqCnRCenZ0NzBqS283RkxNdklLS0s0T WpWV3Fjb0d6UnplQUxGcUM0d1VWZHhIdHY0eDVGM0svcTlGCj1HbHowCi0tLS0tRU5EIFBHUCBN RVNTQUdFLS0tLS0K X-Developer-Key: i=k.jensen@samsung.com; a=openpgp; fpr=DDCA4D9C9EF931CC3468427263D56FC5E55DA838 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=lists.gnu.org; Received-SPF: pass client-ip=202.12.124.147; envelope-from=its@irrelevant.dk; helo=fout-b4-smtp.messagingengine.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 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 @irrelevant.dk) X-ZM-MESSAGEID: 1734353669305116600 From: Klaus Jensen Virtualization Management needs sriov-related parameters. Only report support for the command when that conditions are true. Signed-off-by: Klaus Jensen Reviewed-by: Jesper Wendel Devantier --- hw/nvme/ctrl.c | 25 ++++++++++++++++++------- hw/nvme/nvme.h | 4 ++++ include/block/nvme.h | 3 ++- 3 files changed, 24 insertions(+), 8 deletions(-) diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c index e1d54ee34d2cd073821ac398bc5b4a51cb79e0e9..0e95c07c5314fa33674963ef2ce= a74c78954e86b 100644 --- a/hw/nvme/ctrl.c +++ b/hw/nvme/ctrl.c @@ -266,7 +266,7 @@ static const uint32_t nvme_feature_cap[NVME_FID_MAX] = =3D { [NVME_FDP_EVENTS] =3D NVME_FEAT_CAP_CHANGE | NVME_FEAT_C= AP_NS, }; =20 -static const uint32_t nvme_cse_acs[256] =3D { +static const uint32_t nvme_cse_acs_default[256] =3D { [NVME_ADM_CMD_DELETE_SQ] =3D NVME_CMD_EFF_CSUPP, [NVME_ADM_CMD_CREATE_SQ] =3D NVME_CMD_EFF_CSUPP, [NVME_ADM_CMD_GET_LOG_PAGE] =3D NVME_CMD_EFF_CSUPP, @@ -278,7 +278,6 @@ static const uint32_t nvme_cse_acs[256] =3D { [NVME_ADM_CMD_GET_FEATURES] =3D NVME_CMD_EFF_CSUPP, [NVME_ADM_CMD_ASYNC_EV_REQ] =3D NVME_CMD_EFF_CSUPP, [NVME_ADM_CMD_NS_ATTACHMENT] =3D NVME_CMD_EFF_CSUPP | NVME_CMD_EFF_= NIC, - [NVME_ADM_CMD_VIRT_MNGMT] =3D NVME_CMD_EFF_CSUPP, [NVME_ADM_CMD_DBBUF_CONFIG] =3D NVME_CMD_EFF_CSUPP, [NVME_ADM_CMD_FORMAT_NVM] =3D NVME_CMD_EFF_CSUPP | NVME_CMD_EFF_= LBCC, [NVME_ADM_CMD_DIRECTIVE_RECV] =3D NVME_CMD_EFF_CSUPP, @@ -5135,7 +5134,7 @@ static uint16_t nvme_cmd_effects(NvmeCtrl *n, uint8_t= csi, uint32_t buf_len, } } =20 - memcpy(log.acs, nvme_cse_acs, sizeof(nvme_cse_acs)); + memcpy(log.acs, n->cse.acs, sizeof(log.acs)); =20 if (src_iocs) { memcpy(log.iocs, src_iocs, sizeof(log.iocs)); @@ -7242,7 +7241,7 @@ static uint16_t nvme_admin_cmd(NvmeCtrl *n, NvmeReque= st *req) trace_pci_nvme_admin_cmd(nvme_cid(req), nvme_sqid(req), req->cmd.opcod= e, nvme_adm_opc_str(req->cmd.opcode)); =20 - if (!(nvme_cse_acs[req->cmd.opcode] & NVME_CMD_EFF_CSUPP)) { + if (!(n->cse.acs[req->cmd.opcode] & NVME_CMD_EFF_CSUPP)) { trace_pci_nvme_err_invalid_admin_opc(req->cmd.opcode); return NVME_INVALID_OPCODE | NVME_DNR; } @@ -8676,6 +8675,9 @@ static void nvme_init_ctrl(NvmeCtrl *n, PCIDevice *pc= i_dev) uint64_t cap =3D ldq_le_p(&n->bar.cap); NvmeSecCtrlEntry *sctrl =3D nvme_sctrl(n); uint32_t ctratt; + uint16_t oacs; + + memcpy(n->cse.acs, nvme_cse_acs_default, sizeof(n->cse.acs)); =20 id->vid =3D cpu_to_le16(pci_get_word(pci_conf + PCI_VENDOR_ID)); id->ssvid =3D cpu_to_le16(pci_get_word(pci_conf + PCI_SUBSYSTEM_VENDOR= _ID)); @@ -8706,9 +8708,18 @@ static void nvme_init_ctrl(NvmeCtrl *n, PCIDevice *p= ci_dev) =20 id->mdts =3D n->params.mdts; id->ver =3D cpu_to_le32(NVME_SPEC_VER); - id->oacs =3D - cpu_to_le16(NVME_OACS_NS_MGMT | NVME_OACS_FORMAT | NVME_OACS_DBBUF= | - NVME_OACS_DIRECTIVES); + + oacs =3D NVME_OACS_NMS | NVME_OACS_FORMAT | NVME_OACS_DBBUF | + NVME_OACS_DIRECTIVES; + + if (n->params.sriov_max_vfs) { + oacs |=3D NVME_OACS_VMS; + + n->cse.acs[NVME_ADM_CMD_VIRT_MNGMT] =3D NVME_CMD_EFF_CSUPP; + } + + id->oacs =3D cpu_to_le16(oacs); + id->cntrltype =3D 0x1; =20 /* diff --git a/hw/nvme/nvme.h b/hw/nvme/nvme.h index 724220691057063a972be2a0ada44d2164266144..191b6c5398d0c4583051a6a9773= c677a49caffd6 100644 --- a/hw/nvme/nvme.h +++ b/hw/nvme/nvme.h @@ -583,6 +583,10 @@ typedef struct NvmeCtrl { uint64_t dbbuf_eis; bool dbbuf_enabled; =20 + struct { + uint32_t acs[256]; + } cse; + struct { MemoryRegion mem; uint8_t *buf; diff --git a/include/block/nvme.h b/include/block/nvme.h index f4d108841bf595f1176e9cb2c910e230181c67f6..9ebee69369d6bfa6835154a91b2= bdaaf7984bf0c 100644 --- a/include/block/nvme.h +++ b/include/block/nvme.h @@ -1192,8 +1192,9 @@ enum NvmeIdCtrlOacs { NVME_OACS_SECURITY =3D 1 << 0, NVME_OACS_FORMAT =3D 1 << 1, NVME_OACS_FW =3D 1 << 2, - NVME_OACS_NS_MGMT =3D 1 << 3, + NVME_OACS_NMS =3D 1 << 3, NVME_OACS_DIRECTIVES =3D 1 << 5, + NVME_OACS_VMS =3D 1 << 7, NVME_OACS_DBBUF =3D 1 << 8, }; =20 --=20 2.45.2 From nobody Wed Apr 9 01:11:20 2025 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 ARC-Seal: i=1; a=rsa-sha256; t=1734353680; cv=none; d=zohomail.com; s=zohoarc; b=j2gHbGYqLEBMkMUOU4Ny0hnyuFFpSEqVuGeor5tNhspoHN7sCVyVb7dkOaZb9C7ZudrgcyWA3Pi/sSIFtUKdxi4/flrAY3fW13FquBCXjxVPawWvPPAk1cDmY08vCatFrVFJEL/FzzdY+Khb3GNpKvjZF0XkBSNYjCia/PRb98c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1734353680; 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=9z/YDyajUnGWonhABTYCxOkzMyeMtyCBLStW9KJXm6I=; b=MWAqku+bNk4swC1Yc5m8Rrv1zE9kqe70xV0qxFD3NLq1u6ZozQhncGV73LS3FcbO5ti+MdSeyss8S3wxHidF5lRguEl6Alb0A9Q0zyXjYxltJ0n5nPCa2oIOt0ZpxxCSrqzeSbIE5HyswFm+Pyj0gQwr67XwqDJEv7DZR+hDO9Q= 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17343536807661009.9880358626876; Mon, 16 Dec 2024 04:54:40 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tNAbw-0006cY-M0; Mon, 16 Dec 2024 07:54:10 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tNAbp-0006WH-16; Mon, 16 Dec 2024 07:54:01 -0500 Received: from fout-b4-smtp.messagingengine.com ([202.12.124.147]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tNAbm-0004qC-7h; Mon, 16 Dec 2024 07:53:59 -0500 Received: from phl-compute-04.internal (phl-compute-04.phl.internal [10.202.2.44]) by mailfout.stl.internal (Postfix) with ESMTP id 01D2C114010F; Mon, 16 Dec 2024 07:53:56 -0500 (EST) Received: from phl-mailfrontend-02 ([10.202.2.163]) by phl-compute-04.internal (MEProxy); Mon, 16 Dec 2024 07:53:57 -0500 Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon, 16 Dec 2024 07:53:54 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=irrelevant.dk; h=cc:cc:content-transfer-encoding:content-type:content-type :date:date:from:from:in-reply-to:in-reply-to:message-id :mime-version:references:reply-to:subject:subject:to:to; s=fm3; t=1734353636; x=1734440036; bh=9z/YDyajUnGWonhABTYCxOkzMyeMtyCB LStW9KJXm6I=; b=M5ySqa5PoquflqIgLQ/DT5A3TQ4d0cEAbNiby1mOUhsPAdM5 cR+eevKt1LQ9v+oCqm2ojDXzqbIh2n/fhSuAoTm+2oePLjrEPybab5OnpgDcd104 ySdDRHAMGHB9Pc/f071unwdkhyg6KaBMo62Ctx/b1p4gQc9we3PD0kqn6RHfv5t/ 0CyPhaV2vnON9SdSGcpvMt/KmH6i1bhVli3DpEbOsG2x5JwcetquQ+CAqNwsDaOe re8pv1+lWbuWlK36vSBHH6ITycHQx7n4ZVPFoK2bq+clFyewPb0FIPRJU73MWbER FZxDOjuBe7Efu9WAeQi2U6byHThNgGzqWsPWGQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1734353636; x= 1734440036; bh=9z/YDyajUnGWonhABTYCxOkzMyeMtyCBLStW9KJXm6I=; b=R cwg5wqote14QFNwx2U5DHMzTgC+yLFwYXCi9dMj5spGDeYSgt0PjtV7+iC0NeZkE zY1foPJtZcGweQcj9X2I3low+1OVa5JptJubRaK14NvNaGup5Etm8NrUMAONB2t5 ECm+7VXYpsiKOA+C9UEPrS40pPesXmVmXrUDWlTIfKX9s+U/KREN5edLYEquxpfj kmt4+ckdNRcBKUnQ2HkLGLP2G63dPCdlWVxee9Z311Bfdzdbh2WQrArzvJAWgUEk +i3jAEGmxMJxIW/JxYMaMoHxMl7v1wCFjICQID+GhQZ4/SsALTZApQNRYelAv5jH QicV7xu/zkP9XZqv4USNQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefuddrleefgdegiecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpggftfghnshhusghstghrihgsvgdpuffr tefokffrpgfnqfghnecuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnth hsucdlqddutddtmdenucfjughrpefhfffugggtgffkfhgjvfevofesthejredtredtjeen ucfhrhhomhepmfhlrghushculfgvnhhsvghnuceoihhtshesihhrrhgvlhgvvhgrnhhtrd gukheqnecuggftrfgrthhtvghrnhepkeeivddtueehffefuddtleefkefhiedttdduveeg gfffieetveffhfehgfeghfffnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpe hmrghilhhfrhhomhepihhtshesihhrrhgvlhgvvhgrnhhtrdgukhdpnhgspghrtghpthht ohepiedpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtohepfhhoshhsseguvghfmhgrtg hrohdrihhtpdhrtghpthhtohepqhgvmhhuqdgslhhotghksehnohhnghhnuhdrohhrghdp rhgtphhtthhopehithhssehirhhrvghlvghvrghnthdrughkpdhrtghpthhtohepqhgvmh huqdguvghvvghlsehnohhnghhnuhdrohhrghdprhgtphhtthhopehksghushgthheskhgv rhhnvghlrdhorhhgpdhrtghpthhtohepkhdrjhgvnhhsvghnsehsrghmshhunhhgrdgtoh hm X-ME-Proxy: Feedback-ID: idc91472f:Fastmail From: Klaus Jensen Date: Mon, 16 Dec 2024 13:53:04 +0100 Subject: [PATCH 3/9] hw/nvme: add knob for doorbell buffer config support MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20241216-nvme-queue-v1-3-4e42212b92f7@samsung.com> References: <20241216-nvme-queue-v1-0-4e42212b92f7@samsung.com> In-Reply-To: <20241216-nvme-queue-v1-0-4e42212b92f7@samsung.com> To: Keith Busch , Klaus Jensen , Jesper Devantier , qemu-block@nongnu.org, qemu-devel@nongnu.org Cc: Klaus Jensen X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3034; i=k.jensen@samsung.com; h=from:subject:message-id; bh=fmOgDBvOD2dhh117ujn12LpGBM6Ktn4dln6NNvtv1L0=; b=LS0tLS1CRUdJTiBQR1AgTUVTU0FHRS0tLS0tCgpvd0o0bkFGdEFaTCtrQTBEQUFvQlRlR3ZNV zFQRGVrQnl5WmlBR2RnSXRsOE1RNnZtUklmL1ZZOEJiZzRnVnV0Ck15SElNNkN4d2pod3NwektG Uk1YZUlrQk13UUFBUW9BSFJZaEJGSW9NNnAxNHR6bW9rZG13RTNocnpGdFR3M3AKQlFKbllDTFp BQW9KRUUzaHJ6RnRUdzNwdklFSUFMb2YyVHE4M2gvS1d0NkUzTjcvemxVVTloYllOZGQ3djRLTA poUEJBVHJhUWhRR0JKc1VWSGM2aTJZQkZVRld3akNYbUtUOExlb2ZVVXM1UFJpcmdIbEpjQk93Q lpzSDNMaDFRCktic3NlWXdYRVNWWjZheFQ0Wko3WkR1UzlYRFlMaWEyUm0zSXAwZTFnd0Z3WjRa ZmFCVXh5SHlsdE9MMXZRZE8Kc0EyaDFUOFlmNUZxV005b3RvQUcyN2ZYV01pRldpSG50QjFFbU8 5OFR4c09JWmlhN04wUkpubGpWR2EwQXB0NApuTmY2ZnJBL3FDdE84MjVGbUZoaGE3dVVjMnNQZU 9CS2s3TnFQeHNueWFIemh0Z1VoTURwbUc2TW1SUEs1T3dMCmh1em44N3g5bTJkVXg3Z3dzcHI4V 3BuYkF2Y004TndaNFJxWVQxVDFjK0Z6a0hOZVUvVk5IS2V4Cj1ZQ3JQCi0tLS0tRU5EIFBHUCBN RVNTQUdFLS0tLS0K X-Developer-Key: i=k.jensen@samsung.com; a=openpgp; fpr=DDCA4D9C9EF931CC3468427263D56FC5E55DA838 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=lists.gnu.org; Received-SPF: pass client-ip=202.12.124.147; envelope-from=its@irrelevant.dk; helo=fout-b4-smtp.messagingengine.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 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 @irrelevant.dk) X-ZM-MESSAGEID: 1734353682723116600 From: Klaus Jensen Add a 'dbcs' knob to allow Doorbell Buffer Config command to be disabled. Signed-off-by: Klaus Jensen Reviewed-by: Jesper Wendel Devantier --- hw/nvme/ctrl.c | 11 ++++++++--- hw/nvme/nvme.h | 1 + include/block/nvme.h | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c index 0e95c07c5314fa33674963ef2cea74c78954e86b..d544789f92ffe6b758ce35cecfc= 025d87efb9b7e 100644 --- a/hw/nvme/ctrl.c +++ b/hw/nvme/ctrl.c @@ -278,7 +278,6 @@ static const uint32_t nvme_cse_acs_default[256] =3D { [NVME_ADM_CMD_GET_FEATURES] =3D NVME_CMD_EFF_CSUPP, [NVME_ADM_CMD_ASYNC_EV_REQ] =3D NVME_CMD_EFF_CSUPP, [NVME_ADM_CMD_NS_ATTACHMENT] =3D NVME_CMD_EFF_CSUPP | NVME_CMD_EFF_= NIC, - [NVME_ADM_CMD_DBBUF_CONFIG] =3D NVME_CMD_EFF_CSUPP, [NVME_ADM_CMD_FORMAT_NVM] =3D NVME_CMD_EFF_CSUPP | NVME_CMD_EFF_= LBCC, [NVME_ADM_CMD_DIRECTIVE_RECV] =3D NVME_CMD_EFF_CSUPP, [NVME_ADM_CMD_DIRECTIVE_SEND] =3D NVME_CMD_EFF_CSUPP, @@ -8709,8 +8708,13 @@ static void nvme_init_ctrl(NvmeCtrl *n, PCIDevice *p= ci_dev) id->mdts =3D n->params.mdts; id->ver =3D cpu_to_le32(NVME_SPEC_VER); =20 - oacs =3D NVME_OACS_NMS | NVME_OACS_FORMAT | NVME_OACS_DBBUF | - NVME_OACS_DIRECTIVES; + oacs =3D NVME_OACS_NMS | NVME_OACS_FORMAT | NVME_OACS_DIRECTIVES; + + if (n->params.dbcs) { + oacs |=3D NVME_OACS_DBCS; + + n->cse.acs[NVME_ADM_CMD_DBBUF_CONFIG] =3D NVME_CMD_EFF_CSUPP; + } =20 if (n->params.sriov_max_vfs) { oacs |=3D NVME_OACS_VMS; @@ -8960,6 +8964,7 @@ static Property nvme_props[] =3D { DEFINE_PROP_BOOL("use-intel-id", NvmeCtrl, params.use_intel_id, false), DEFINE_PROP_BOOL("legacy-cmb", NvmeCtrl, params.legacy_cmb, false), DEFINE_PROP_BOOL("ioeventfd", NvmeCtrl, params.ioeventfd, false), + DEFINE_PROP_BOOL("dbcs", NvmeCtrl, params.dbcs, true), DEFINE_PROP_UINT8("zoned.zasl", NvmeCtrl, params.zasl, 0), DEFINE_PROP_BOOL("zoned.auto_transition", NvmeCtrl, params.auto_transition_zones, true), diff --git a/hw/nvme/nvme.h b/hw/nvme/nvme.h index 191b6c5398d0c4583051a6a9773c677a49caffd6..cb314e91af32a20f47e0a393e24= 58b7d4bdd03d9 100644 --- a/hw/nvme/nvme.h +++ b/hw/nvme/nvme.h @@ -539,6 +539,7 @@ typedef struct NvmeParams { bool auto_transition_zones; bool legacy_cmb; bool ioeventfd; + bool dbcs; uint16_t sriov_max_vfs; uint16_t sriov_vq_flexible; uint16_t sriov_vi_flexible; diff --git a/include/block/nvme.h b/include/block/nvme.h index 9ebee69369d6bfa6835154a91b2bdaaf7984bf0c..a68a07455d0330b8f7cc283da0a= 5eadbcc140dab 100644 --- a/include/block/nvme.h +++ b/include/block/nvme.h @@ -1195,7 +1195,7 @@ enum NvmeIdCtrlOacs { NVME_OACS_NMS =3D 1 << 3, NVME_OACS_DIRECTIVES =3D 1 << 5, NVME_OACS_VMS =3D 1 << 7, - NVME_OACS_DBBUF =3D 1 << 8, + NVME_OACS_DBCS =3D 1 << 8, }; =20 enum NvmeIdCtrlOncs { --=20 2.45.2 From nobody Wed Apr 9 01:11:20 2025 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 ARC-Seal: i=1; a=rsa-sha256; t=1734353682; cv=none; d=zohomail.com; s=zohoarc; b=cDow3dHl4eC15L7pLI4JkDKrHQiSrWqoFZ0A21FZ43XksdXGg/M4RN1s0BeNNyDVmyEmPeSwUoIM8DqO6YI9pJagJzXE8/c8pD42CHhDwZ9q6VyrJWdHD+FHrJF2KqrbOib9fggmKvqf0ABgBFM0I+1nCmIHV9Rd2vaeSkNnN+0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1734353682; 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=r9epBbkm1wQQ7uw9a461rxWc+dB0unZNn4KULiKW6Oo=; b=YRBlAwper+tJ1OFCfLSUoI8+/J5u9vXbjfqbzN+DDIIqadv5ZvGIuwXF0+toyJxJAcqr0exxtx1VtdNkLhiwWGf1L4+/rhdiME/gcDA15S9ji21hxu4BYMKcVX91fOhNnZj4n0Jg9/COL2/j5OrtFTd+lg90GgRR5M0q9MyN0ZA= 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1734353682603155.61894605943178; Mon, 16 Dec 2024 04:54:42 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tNAcJ-0006sZ-02; Mon, 16 Dec 2024 07:54:31 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tNAbq-0006Xs-BW; Mon, 16 Dec 2024 07:54:02 -0500 Received: from fout-b4-smtp.messagingengine.com ([202.12.124.147]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tNAbo-0004qd-EP; Mon, 16 Dec 2024 07:54:02 -0500 Received: from phl-compute-04.internal (phl-compute-04.phl.internal [10.202.2.44]) by mailfout.stl.internal (Postfix) with ESMTP id 9B9AF114009C; Mon, 16 Dec 2024 07:53:58 -0500 (EST) Received: from phl-mailfrontend-02 ([10.202.2.163]) by phl-compute-04.internal (MEProxy); Mon, 16 Dec 2024 07:53:58 -0500 Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon, 16 Dec 2024 07:53:57 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=irrelevant.dk; h=cc:cc:content-transfer-encoding:content-type:content-type :date:date:from:from:in-reply-to:in-reply-to:message-id :mime-version:references:reply-to:subject:subject:to:to; s=fm3; t=1734353638; x=1734440038; bh=r9epBbkm1wQQ7uw9a461rxWc+dB0unZN n4KULiKW6Oo=; b=krxxo4rw/kunvkrsTO6MYsZr1zJkBYRMHb6HaKrrgfe9YcbB AxADMKNtUaW7Pu5AdcNzEKvi+wR+Zn/kMTUoXwtoHBEHgiyyeSkcY6wNvuyP5fEC 8Ukiedv16OqE89tPA28y3nGZODPEZvC8okWu8HVnXBW1hibrBibKwNc+jDmcJyyS BYzk0tHPpcmsLd90Dr+sIGLsbYrJXRy+CbF7MKQCZ/HgrXGDAvZ1nNaH/S2d/nxr XelaqYXiUxqO6VXf04VnNW8JZAUaOjh+2mvDb6r8tcDr53a2Ci47LlxP5BLmy2uT CAOIRxw31QTiX2ULmzlVu2jvUUEYJIvXTte6Wg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1734353638; x= 1734440038; bh=r9epBbkm1wQQ7uw9a461rxWc+dB0unZNn4KULiKW6Oo=; b=y 21wl1aoU58CmIfgtzWyQf153JIEh78pVFzSGxRFsj5idTuGfQIkZ6UKyb5XSbaWT ckITWCf5pRXFAtQc6RUqGuQ8DA8x3KyiJi3t/+lptJktlOzjuDhxLij39qMRbiZO iB9Qq/d5OjT5HpoU5uIePbcXsgmzJnPtQTarN6jiOaC4MjbKfUeNj5tG+sgWgQSd 0GK+fvyqOvWeljQrH923rLzhHAaspAyUXMqu/Xa+Dso3c6luI0ruysmhJi92Up01 O8wqEk0m0vrhLfrA9FvgwkU6x4oEvCLiOd93yI9m3szU9KwJ4Jgh8p81ndzeMjWz Hi8SYv5QWE51kRr94j5Mg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefuddrleefgdegiecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpggftfghnshhusghstghrihgsvgdpuffr tefokffrpgfnqfghnecuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnth hsucdlqddutddtmdenucfjughrpefhfffugggtgffkfhgjvfevofesthejredtredtjeen ucfhrhhomhepmfhlrghushculfgvnhhsvghnuceoihhtshesihhrrhgvlhgvvhgrnhhtrd gukheqnecuggftrfgrthhtvghrnhepkeeivddtueehffefuddtleefkefhiedttdduveeg gfffieetveffhfehgfeghfffnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpe hmrghilhhfrhhomhepihhtshesihhrrhgvlhgvvhgrnhhtrdgukhdpnhgspghrtghpthht ohepiedpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtohepfhhoshhsseguvghfmhgrtg hrohdrihhtpdhrtghpthhtohepqhgvmhhuqdgslhhotghksehnohhnghhnuhdrohhrghdp rhgtphhtthhopehithhssehirhhrvghlvghvrghnthdrughkpdhrtghpthhtohepqhgvmh huqdguvghvvghlsehnohhnghhnuhdrohhrghdprhgtphhtthhopehksghushgthheskhgv rhhnvghlrdhorhhgpdhrtghpthhtohepkhdrjhgvnhhsvghnsehsrghmshhunhhgrdgtoh hm X-ME-Proxy: Feedback-ID: idc91472f:Fastmail From: Klaus Jensen Date: Mon, 16 Dec 2024 13:53:05 +0100 Subject: [PATCH 4/9] nvme: fix iocs status code values MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20241216-nvme-queue-v1-4-4e42212b92f7@samsung.com> References: <20241216-nvme-queue-v1-0-4e42212b92f7@samsung.com> In-Reply-To: <20241216-nvme-queue-v1-0-4e42212b92f7@samsung.com> To: Keith Busch , Klaus Jensen , Jesper Devantier , qemu-block@nongnu.org, qemu-devel@nongnu.org Cc: Klaus Jensen X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2205; i=k.jensen@samsung.com; h=from:subject:message-id; bh=hVGGanRiCXCVL65SS7momc62QHYk6VKSLoOWiILVNxk=; b=LS0tLS1CRUdJTiBQR1AgTUVTU0FHRS0tLS0tCgpvd0o0bkFGdEFaTCtrQTBEQUFvQlRlR3ZNV zFQRGVrQnl5WmlBR2RnSXRtYXVMUWQ2ZG1ITS9mVXRqYXprSmZTCk15aktkTzdOV1ZCVEpxaGt1 Y2hZZ1lrQk13UUFBUW9BSFJZaEJGSW9NNnAxNHR6bW9rZG13RTNocnpGdFR3M3AKQlFKbllDTFp BQW9KRUUzaHJ6RnRUdzNwbUFvSC8zRitPTENaU3EwREU0dTYwcmRianpxYy9sR1RoRnRlQlNMZA p2YkhxYVVTRjJ5TFlyT1J0S0tIOE9Lc01zT1krSDlQTUo2Sm84Wm43TG93c2J1VUNaWGhXZEhHd 0lFaWI1THhHCmFMZWRVeEdLejBmWjluOXE0dGtmNG1veVJmUlFycnhoT0ZndjdtNUFDNk1SRGp3 WEhNdjJFdGo0aUxuc0tMZW0KUk5FVy9qY1MvWmRlN2JMMkRtdkNZTnkrVEhySXBsL0dBMXE5Zkd mUGlhMXFOUktGaDQrMFJFOEdJMGhtQTBrKwoxWTRaQXd5SHg4Wm1SMWlGb1dnTStESlc4YWVJQm x1WXFGV3I2b01Wa3FQVldUNWo5RFZTTENHVjZ0Rm5ZbTFSCllIKzlQU3ZSb3NoTkNRNGJrbHlZV jhaR2p1NHh1RDUzYUpXano3c3BKVU1GTlVONGpaaDFxNmRRCj13MEgwCi0tLS0tRU5EIFBHUCBN RVNTQUdFLS0tLS0K X-Developer-Key: i=k.jensen@samsung.com; a=openpgp; fpr=DDCA4D9C9EF931CC3468427263D56FC5E55DA838 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=lists.gnu.org; Received-SPF: pass client-ip=202.12.124.147; envelope-from=its@irrelevant.dk; helo=fout-b4-smtp.messagingengine.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 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 @irrelevant.dk) X-ZM-MESSAGEID: 1734353684571116600 From: Klaus Jensen The status codes related to I/O Command Sets are in the wrong group. Signed-off-by: Klaus Jensen Reviewed-by: Jesper Wendel Devantier --- hw/nvme/ctrl.c | 4 ++-- include/block/nvme.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c index d544789f92ffe6b758ce35cecfc025d87efb9b7e..120a1ca1076c8110d8550a5e750= 82c6ed4f23e16 100644 --- a/hw/nvme/ctrl.c +++ b/hw/nvme/ctrl.c @@ -5623,7 +5623,7 @@ static uint16_t nvme_identify_ns(NvmeCtrl *n, NvmeReq= uest *req, bool active) return nvme_c2h(n, (uint8_t *)&ns->id_ns, sizeof(NvmeIdNs), req); } =20 - return NVME_INVALID_CMD_SET | NVME_DNR; + return NVME_INVALID_IOCS | NVME_DNR; } =20 static uint16_t nvme_identify_ctrl_list(NvmeCtrl *n, NvmeRequest *req, @@ -6589,7 +6589,7 @@ static uint16_t nvme_set_feature(NvmeCtrl *n, NvmeReq= uest *req) case NVME_COMMAND_SET_PROFILE: if (dw11 & 0x1ff) { trace_pci_nvme_err_invalid_iocsci(dw11 & 0x1ff); - return NVME_CMD_SET_CMB_REJECTED | NVME_DNR; + return NVME_IOCS_COMBINATION_REJECTED | NVME_DNR; } break; case NVME_FDP_MODE: diff --git a/include/block/nvme.h b/include/block/nvme.h index a68a07455d0330b8f7cc283da0a5eadbcc140dab..145a0b65933a699504d6d89222f= 7979a06f615df 100644 --- a/include/block/nvme.h +++ b/include/block/nvme.h @@ -906,8 +906,6 @@ enum NvmeStatusCodes { NVME_SGL_DESCR_TYPE_INVALID =3D 0x0011, NVME_INVALID_USE_OF_CMB =3D 0x0012, NVME_INVALID_PRP_OFFSET =3D 0x0013, - NVME_CMD_SET_CMB_REJECTED =3D 0x002b, - NVME_INVALID_CMD_SET =3D 0x002c, NVME_FDP_DISABLED =3D 0x0029, NVME_INVALID_PHID_LIST =3D 0x002a, NVME_LBA_RANGE =3D 0x0080, @@ -940,6 +938,8 @@ enum NvmeStatusCodes { NVME_INVALID_SEC_CTRL_STATE =3D 0x0120, NVME_INVALID_NUM_RESOURCES =3D 0x0121, NVME_INVALID_RESOURCE_ID =3D 0x0122, + NVME_IOCS_COMBINATION_REJECTED =3D 0x012b, + NVME_INVALID_IOCS =3D 0x012c, NVME_CONFLICTING_ATTRS =3D 0x0180, NVME_INVALID_PROT_INFO =3D 0x0181, NVME_WRITE_TO_RO =3D 0x0182, --=20 2.45.2 From nobody Wed Apr 9 01:11:20 2025 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 ARC-Seal: i=1; a=rsa-sha256; t=1734353687; cv=none; d=zohomail.com; s=zohoarc; b=TQ2CuCYdZyFgEeJHoxK2+iKfD2iD/q2F+k3aSiokZqRHRkTAa3lVe/d7uCQ6WayAzkv4jmAUOAd9u1zJMLOcs7k7jconsVzd+1C9vzEc1OFv6CtJbRfhI6UL0KbiiL5HBaJisFlRCnC5ExCiyKDNlAPdV4opl+qIKOWpwmaqzu8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1734353687; 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=VPWCRxCkP/txFScLrXgxYvXqGl2JLpgIktmLuQFkXA8=; b=dEGH29uhoaEKUXQR9WtleyscmTxZ/Z50ap5+qMcODoXZ9yE0cEMj1jzsqZ/fOpA9/6WTNOJnZLIHaHDMgyAF38n0qt1zKsr8+uizEcz3heubwEYtub20hfXWvRZg6evkyjnMOkW5VrgzamrVUhNqZbV1/xefD2FGoHuEqZ0Gz+U= 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1734353687677915.6837793080273; Mon, 16 Dec 2024 04:54:47 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tNAcH-0006o5-VO; Mon, 16 Dec 2024 07:54:30 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tNAbs-0006YN-Co; Mon, 16 Dec 2024 07:54:04 -0500 Received: from fhigh-b5-smtp.messagingengine.com ([202.12.124.156]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tNAbq-0004qp-Dd; Mon, 16 Dec 2024 07:54:04 -0500 Received: from phl-compute-11.internal (phl-compute-11.phl.internal [10.202.2.51]) by mailfhigh.stl.internal (Postfix) with ESMTP id 58210254015B; Mon, 16 Dec 2024 07:54:00 -0500 (EST) Received: from phl-mailfrontend-02 ([10.202.2.163]) by phl-compute-11.internal (MEProxy); Mon, 16 Dec 2024 07:54:00 -0500 Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon, 16 Dec 2024 07:53:58 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=irrelevant.dk; h=cc:cc:content-transfer-encoding:content-type:content-type :date:date:from:from:in-reply-to:in-reply-to:message-id :mime-version:references:reply-to:subject:subject:to:to; s=fm3; t=1734353640; x=1734440040; bh=VPWCRxCkP/txFScLrXgxYvXqGl2JLpgI ktmLuQFkXA8=; b=g76iTodrPe4Qh7efZMTfiXoCs8rNnQi1yS+f13RAXUTxEzI5 gRp8io+08nn02eYaheSA2YchmRyP3edt84KZvp0Khr5ILAZkKVt4eur1ll08C2Jo xDvDCzbMPlp4OFM62uZl/LfOlJFkFvrxHgd+O8TsSQHicbQxanwTKS/DvIHqYOZ2 /zgqNpzX3Lfp/ZJh5PdksYC54n2vkT4sOrEE513mXhn1nIC+Yo9jOiEnKCHvbrX6 jrc4hdSd0pJq8tt8gU0unKXoWA/t5LpvopYISD9YHediPcpaKUW7PcTeg3Muz5PK T+p0KJ0F69pEYJgbscoS2fjfkrQ6OntioHbgRA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1734353640; x= 1734440040; bh=VPWCRxCkP/txFScLrXgxYvXqGl2JLpgIktmLuQFkXA8=; b=M GuI/EWipohWUm1xDKtQGYUtxc0FVnWR9hjaE9MbUDX/MS1G+Tn8Egb0eU62K+RrI lvTUmIKF4YXB4i/V87bHqLybBkDdFuylsoDA78shgnUoyVcPYCUaS7Xwx4LUjFyB JLohMYgkA4dL9nqhHmqQ3/bGcBftbPvFPAsLya5dHrir2UL3vHvkGGN0USqgN+Aw iZcrX2/zmcQLnMCKXZXREkG56Q8bWznhB/G4j9oQLTTcvZvDOEfZEpWepG6Nzky3 2qvLbzNDJiJ3RKcD7MIo+04wsy4kMOGfHYD1HOVlSQhHdNFiHuJgeGBbJtYM8HAp 4A7/8/lJJyeDcR4x7kdUA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefuddrleefgdeghecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpggftfghnshhusghstghrihgsvgdpuffr tefokffrpgfnqfghnecuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnth hsucdlqddutddtmdenucfjughrpefhfffugggtgffkfhgjvfevofesthejredtredtjeen ucfhrhhomhepmfhlrghushculfgvnhhsvghnuceoihhtshesihhrrhgvlhgvvhgrnhhtrd gukheqnecuggftrfgrthhtvghrnhepkeeivddtueehffefuddtleefkefhiedttdduveeg gfffieetveffhfehgfeghfffnecuvehluhhsthgvrhfuihiivgepudenucfrrghrrghmpe hmrghilhhfrhhomhepihhtshesihhrrhgvlhgvvhgrnhhtrdgukhdpnhgspghrtghpthht ohepiedpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtohepfhhoshhsseguvghfmhgrtg hrohdrihhtpdhrtghpthhtohepqhgvmhhuqdgslhhotghksehnohhnghhnuhdrohhrghdp rhgtphhtthhopehithhssehirhhrvghlvghvrghnthdrughkpdhrtghpthhtohepqhgvmh huqdguvghvvghlsehnohhnghhnuhdrohhrghdprhgtphhtthhopehksghushgthheskhgv rhhnvghlrdhorhhgpdhrtghpthhtohepkhdrjhgvnhhsvghnsehsrghmshhunhhgrdgtoh hm X-ME-Proxy: Feedback-ID: idc91472f:Fastmail From: Klaus Jensen Date: Mon, 16 Dec 2024 13:53:06 +0100 Subject: [PATCH 5/9] hw/nvme: be compliant wrt. dsm processing limits MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20241216-nvme-queue-v1-5-4e42212b92f7@samsung.com> References: <20241216-nvme-queue-v1-0-4e42212b92f7@samsung.com> In-Reply-To: <20241216-nvme-queue-v1-0-4e42212b92f7@samsung.com> To: Keith Busch , Klaus Jensen , Jesper Devantier , qemu-block@nongnu.org, qemu-devel@nongnu.org Cc: Klaus Jensen X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3053; i=k.jensen@samsung.com; h=from:subject:message-id; bh=ILTqjT2oAVsQ3hrSwEkMsd15ebn+Mt8eGJNOidlyM/g=; b=LS0tLS1CRUdJTiBQR1AgTUVTU0FHRS0tLS0tCgpvd0o0bkFGdEFaTCtrQTBEQUFvQlRlR3ZNV zFQRGVrQnl5WmlBR2RnSXRuZFBpTFpQL1k3TUZxenh6UEpSUHN3CmMzdmpjZDFWUmpad25wR0lY WWtnUElrQk13UUFBUW9BSFJZaEJGSW9NNnAxNHR6bW9rZG13RTNocnpGdFR3M3AKQlFKbllDTFp BQW9KRUUzaHJ6RnRUdzNwbFNVSC8yaENLZGRIdFJBZjVMM3JFTjg2eVhtaFFWcEZ5QzVySnhTVQ pNRTdvYVFCRDE0RlZBdmxhS2FzQzA3L25MckZUTWhpa0k5NmxiTWdWUFV2RFZ2cW8xVWdmeHJHb XR4TVl0UWNKCllWK0ZFM2RPdTErME1PSC9Ed3RSR09BNTFGa1U4dCtpUnkzdDNqQXFlSGNzUGo2 SlFTTWdaMlpBVUh6SlpidTkKaTF0OXZBbUNFZnFxdUdkVVJBUlprNmRwekYxS0puMDB0Z2NCR0U wWDdMSTExZVlMRldFYWxwckhzTkVvMk1ReAorUHpJWEw0djJNUnBhQm9RWm45UlpRNXl4U0Rxb2 VYaXdyQzl1UUYrWWdVb2FFMkhwamtTQWcvT3N1c0FxVjFJCldvZHZNQ0M0UXNxU3JKYW1jNGlUd 0F5MlJHUC9ZYklSbkxHNkliMFpuQTZwTzdmSGR6TkdMWjVQCj0wdG9RCi0tLS0tRU5EIFBHUCBN RVNTQUdFLS0tLS0K X-Developer-Key: i=k.jensen@samsung.com; a=openpgp; fpr=DDCA4D9C9EF931CC3468427263D56FC5E55DA838 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=lists.gnu.org; Received-SPF: pass client-ip=202.12.124.156; envelope-from=its@irrelevant.dk; helo=fhigh-b5-smtp.messagingengine.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 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 @irrelevant.dk) X-ZM-MESSAGEID: 1734353688589116600 From: Klaus Jensen The specification states that, > The controller shall set all three processing limit fields (i.e., the > DMRL, DMRSL and DMSL fields) to non-zero values or shall clear all > three processing limit fields to 0h. So, set the DMRL and DMSL fields in addition to DMRSL. Signed-off-by: Klaus Jensen Reviewed-by: Jesper Wendel Devantier --- hw/nvme/ctrl.c | 24 +++++++++++++++--------- include/block/nvme.h | 2 ++ 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c index 120a1ca1076c8110d8550a5e75082c6ed4f23e16..22a8c400bae332285d015e8b590= de159fd7d1b7a 100644 --- a/hw/nvme/ctrl.c +++ b/hw/nvme/ctrl.c @@ -5581,7 +5581,9 @@ static uint16_t nvme_identify_ctrl_csi(NvmeCtrl *n, N= vmeRequest *req) switch (c->csi) { case NVME_CSI_NVM: id_nvm->vsl =3D n->params.vsl; + id_nvm->dmrl =3D NVME_ID_CTRL_NVM_DMRL_MAX; id_nvm->dmrsl =3D cpu_to_le32(n->dmrsl); + id_nvm->dmsl =3D NVME_ID_CTRL_NVM_DMRL_MAX * n->dmrsl; break; =20 case NVME_CSI_ZONED: @@ -6638,18 +6640,23 @@ static uint16_t nvme_aer(NvmeCtrl *n, NvmeRequest *= req) return NVME_NO_COMPLETE; } =20 -static void nvme_update_dmrsl(NvmeCtrl *n) +static void nvme_update_dsm_limits(NvmeCtrl *n, NvmeNamespace *ns) { - int nsid; + if (ns) { + n->dmrsl =3D + MIN_NON_ZERO(n->dmrsl, BDRV_REQUEST_MAX_BYTES / nvme_l2b(ns, 1= )); =20 - for (nsid =3D 1; nsid <=3D NVME_MAX_NAMESPACES; nsid++) { - NvmeNamespace *ns =3D nvme_ns(n, nsid); + return; + } + + for (uint32_t nsid =3D 1; nsid <=3D NVME_MAX_NAMESPACES; nsid++) { + ns =3D nvme_ns(n, nsid); if (!ns) { continue; } =20 - n->dmrsl =3D MIN_NON_ZERO(n->dmrsl, - BDRV_REQUEST_MAX_BYTES / nvme_l2b(ns, 1)); + n->dmrsl =3D + MIN_NON_ZERO(n->dmrsl, BDRV_REQUEST_MAX_BYTES / nvme_l2b(ns, 1= )); } } =20 @@ -6737,7 +6744,7 @@ static uint16_t nvme_ns_attachment(NvmeCtrl *n, NvmeR= equest *req) ctrl->namespaces[nsid] =3D NULL; ns->attached--; =20 - nvme_update_dmrsl(ctrl); + nvme_update_dsm_limits(ctrl, NULL); =20 break; =20 @@ -8838,8 +8845,7 @@ void nvme_attach_ns(NvmeCtrl *n, NvmeNamespace *ns) n->namespaces[nsid] =3D ns; ns->attached++; =20 - n->dmrsl =3D MIN_NON_ZERO(n->dmrsl, - BDRV_REQUEST_MAX_BYTES / nvme_l2b(ns, 1)); + nvme_update_dsm_limits(n, ns); } =20 static void nvme_realize(PCIDevice *pci_dev, Error **errp) diff --git a/include/block/nvme.h b/include/block/nvme.h index 145a0b65933a699504d6d89222f7979a06f615df..f3f0317524d129f518698c6797e= d37a7ac0ac847 100644 --- a/include/block/nvme.h +++ b/include/block/nvme.h @@ -1167,6 +1167,8 @@ typedef struct NvmeIdCtrlZoned { uint8_t rsvd1[4095]; } NvmeIdCtrlZoned; =20 +#define NVME_ID_CTRL_NVM_DMRL_MAX 255 + typedef struct NvmeIdCtrlNvm { uint8_t vsl; uint8_t wzsl; --=20 2.45.2 From nobody Wed Apr 9 01:11:20 2025 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 ARC-Seal: i=1; a=rsa-sha256; t=1734353753; cv=none; d=zohomail.com; s=zohoarc; b=WBa5y/a1bMsbKAgSffJ9CiZ91Z8CJfZ+Fqxbt8EzdhAuSVrN7wjIuzzmnLePraMMUv8Ou0LnpbBfP5JYYcEix5FVDK/7Xgj+zgxdhCZFy5iIuGXihbGHaB4xQb+qxOogkZ9kiWqDr+zh3XO0JigvYvm2kcyGOTpLsxnTa/8GIrg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1734353753; 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=ZHtfnLASmiYdJIRuZCbPNkbdoTgJuXJs/ORYsFEuEyM=; b=aJjos8rF63PVb+byw4aUyNed18/Atw15Du7clEa4hZMgRJAM6OmVNxVtllGiplAFYlqoDyKTWNhc9WDUb0IzamCAX/OwmOrHG7BwLMavpvLUze/RLRzw48sZWplSAPtJ/thvKrAZqDbIgBa/adCqkVrQa8+aN8UIrMCdZDu3TTA= 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1734353753168829.556567031911; Mon, 16 Dec 2024 04:55:53 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tNAcD-0006e0-67; Mon, 16 Dec 2024 07:54:26 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tNAbu-0006bO-H1; Mon, 16 Dec 2024 07:54:06 -0500 Received: from fhigh-b5-smtp.messagingengine.com ([202.12.124.156]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tNAbr-0004rb-Bp; Mon, 16 Dec 2024 07:54:06 -0500 Received: from phl-compute-09.internal (phl-compute-09.phl.internal [10.202.2.49]) by mailfhigh.stl.internal (Postfix) with ESMTP id 2CE77254016E; Mon, 16 Dec 2024 07:54:02 -0500 (EST) Received: from phl-mailfrontend-02 ([10.202.2.163]) by phl-compute-09.internal (MEProxy); Mon, 16 Dec 2024 07:54:02 -0500 Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon, 16 Dec 2024 07:54:00 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=irrelevant.dk; h=cc:cc:content-transfer-encoding:content-type:content-type :date:date:from:from:in-reply-to:in-reply-to:message-id :mime-version:references:reply-to:subject:subject:to:to; s=fm3; t=1734353642; x=1734440042; bh=ZHtfnLASmiYdJIRuZCbPNkbdoTgJuXJs /ORYsFEuEyM=; b=ExZnlqvzvfD2oxlwz5+LJAexpfmGtMnyxWgqgzNxfFcBLgS0 d4CvLchYi4jcNCkHzJtdp0UDJe+P8GyY+RpnOw96HOhdBit+1FVBKyepWk1A77Lw yRK/RWUXjCHD4JK50dlBv3oyjKAqlaqUQF7CGGfxUtyR4Mgskjw6LPFMxkOBY5Oe Rh2qRRFLmF64ecJYU5OzkC8YdfiAYgmPVh8lNNEECKgbOs42aB24xHs+Ybw5x68N IrXH5L11Vm2CbNNCWbsqALCgMlbMNrVWGVZhKMjsB+W2bvjxgO9UVcZOg1V8Tpfh ZzwbYcTiShRQbWJPCMXxWrK3H05oOJBgBLKeqw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1734353642; x= 1734440042; bh=ZHtfnLASmiYdJIRuZCbPNkbdoTgJuXJs/ORYsFEuEyM=; b=x YNAV/stibF/477pDn8/bMbv0RQTvTZrXRXPAZUMjPjykaUCaQmePO86gqQblCS00 vzxImvSbZUprE3QyCirAoSFVBdSgYysUKmi27Cy84WdqfJESqjzoB878NANeHbTi 4M7skcocr2IT1cWQHLYHVbQSmXUoNEMOXA543USsyRvQHJ1r8IE8adbV24ibSGU+ KgFcRbg1KD8R4jwc9RHj10X4i/yy4OqXJWVFMZSz/xWNginRA0Dmuz8pSNT5u0CB P/MJFTyVleBnyJrgf8eDaDGv86rmdj0t8rufV7Q49iIe/uvTxfgB+ZJ1FTnurJdo aZlU6XOHfY/36yllQWDRg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefuddrleefgdegiecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpggftfghnshhusghstghrihgsvgdpuffr tefokffrpgfnqfghnecuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnth hsucdlqddutddtmdenucfjughrpefhfffugggtgffkfhgjvfevofesthejredtredtjeen ucfhrhhomhepmfhlrghushculfgvnhhsvghnuceoihhtshesihhrrhgvlhgvvhgrnhhtrd gukheqnecuggftrfgrthhtvghrnhepkeeivddtueehffefuddtleefkefhiedttdduveeg gfffieetveffhfehgfeghfffnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpe hmrghilhhfrhhomhepihhtshesihhrrhgvlhgvvhgrnhhtrdgukhdpnhgspghrtghpthht ohepiedpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtohepfhhoshhsseguvghfmhgrtg hrohdrihhtpdhrtghpthhtohepqhgvmhhuqdgslhhotghksehnohhnghhnuhdrohhrghdp rhgtphhtthhopehithhssehirhhrvghlvghvrghnthdrughkpdhrtghpthhtohepqhgvmh huqdguvghvvghlsehnohhnghhnuhdrohhrghdprhgtphhtthhopehksghushgthheskhgv rhhnvghlrdhorhhgpdhrtghpthhtohepkhdrjhgvnhhsvghnsehsrghmshhunhhgrdgtoh hm X-ME-Proxy: Feedback-ID: idc91472f:Fastmail From: Klaus Jensen Date: Mon, 16 Dec 2024 13:53:07 +0100 Subject: [PATCH 6/9] hw/nvme: rework csi handling MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20241216-nvme-queue-v1-6-4e42212b92f7@samsung.com> References: <20241216-nvme-queue-v1-0-4e42212b92f7@samsung.com> In-Reply-To: <20241216-nvme-queue-v1-0-4e42212b92f7@samsung.com> To: Keith Busch , Klaus Jensen , Jesper Devantier , qemu-block@nongnu.org, qemu-devel@nongnu.org Cc: Klaus Jensen X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=16728; i=k.jensen@samsung.com; h=from:subject:message-id; bh=kV5qmUe71f7pUk/qBMS3ROdqAD10Vs40tBcwf1Qf++I=; b=LS0tLS1CRUdJTiBQR1AgTUVTU0FHRS0tLS0tCgpvd0o0bkFGdEFaTCtrQTBEQUFvQlRlR3ZNV zFQRGVrQnl5WmlBR2RnSXRwKy9CUnhsUmEzdVVSWWpGZWgwRVZrCnM4U0wvUmUwejN6WTRhdnp2 UUZmL0lrQk13UUFBUW9BSFJZaEJGSW9NNnAxNHR6bW9rZG13RTNocnpGdFR3M3AKQlFKbllDTGF BQW9KRUUzaHJ6RnRUdzNwUkhrSUFKQ1ZLVjErenRydVpzTmdaU2JiVUI3VFh2elhwbnpLT1Yzcw pHQVU3SEpkN0NWbWN3V3lxc0hiNlVtanp3RkwxK3NJZ2IvYityRkhyRXFySWROVG5lZmpFcC9FU GNXZDUvNi91CkdKNHpiUGd3d3hhaW9qZS9tbjhIbVFvTXhwd0UyMHBrQndCM3krVlp0SUZhN2s0 UHZLRUZ6Rkg0WFd2OUtENGsKekRMUUZiN0tIMkpNSHcxRHpEbkZoZURTdWNCbW9EYUxOeElPZjN BcHJsRnUwNTFlZVMvV3JvVFFyWkE5S3VpQwpPUlRYaXEvRlIyVGdSOU5SL2h4ZzIxN1Fsam5nUF lJWkswd0FKK2czTk1XS2U2dm9kWll6eFp5U1hWdXA5TVBQCmdGKzVLTWdzWEVYTkRnUTBRU2NwT Uh3WE1GQjlPdzJSZWhud0VuUEhDMFhCZlhjQ3IzOHo4NmlqCj11dUw5Ci0tLS0tRU5EIFBHUCBN RVNTQUdFLS0tLS0K X-Developer-Key: i=k.jensen@samsung.com; a=openpgp; fpr=DDCA4D9C9EF931CC3468427263D56FC5E55DA838 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=lists.gnu.org; Received-SPF: pass client-ip=202.12.124.156; envelope-from=its@irrelevant.dk; helo=fhigh-b5-smtp.messagingengine.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 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 @irrelevant.dk) X-ZM-MESSAGEID: 1734353755297116600 From: Klaus Jensen The controller incorrectly allows a zoned namespace to be attached even if CS.CSS is configured to only support the NVM command set for I/O queues. Rework handling of namespace command sets in general by attaching supported namespaces when the controller is started instead of, like now, statically when realized. Signed-off-by: Klaus Jensen Reviewed-by: Jesper Wendel Devantier --- hw/nvme/ctrl.c | 242 ++++++++++++++++++++++++++++-------------------= ---- hw/nvme/ns.c | 14 --- hw/nvme/nvme.h | 5 +- include/block/nvme.h | 10 ++- 4 files changed, 142 insertions(+), 129 deletions(-) diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c index 22a8c400bae332285d015e8b590de159fd7d1b7a..8d3f62c40ac14fdc4bdc650e272= 023558cbbae0f 100644 --- a/hw/nvme/ctrl.c +++ b/hw/nvme/ctrl.c @@ -277,36 +277,32 @@ static const uint32_t nvme_cse_acs_default[256] =3D { [NVME_ADM_CMD_SET_FEATURES] =3D NVME_CMD_EFF_CSUPP, [NVME_ADM_CMD_GET_FEATURES] =3D NVME_CMD_EFF_CSUPP, [NVME_ADM_CMD_ASYNC_EV_REQ] =3D NVME_CMD_EFF_CSUPP, - [NVME_ADM_CMD_NS_ATTACHMENT] =3D NVME_CMD_EFF_CSUPP | NVME_CMD_EFF_= NIC, + [NVME_ADM_CMD_NS_ATTACHMENT] =3D NVME_CMD_EFF_CSUPP | NVME_CMD_EFF_= NIC | + NVME_CMD_EFF_CCC, [NVME_ADM_CMD_FORMAT_NVM] =3D NVME_CMD_EFF_CSUPP | NVME_CMD_EFF_= LBCC, [NVME_ADM_CMD_DIRECTIVE_RECV] =3D NVME_CMD_EFF_CSUPP, [NVME_ADM_CMD_DIRECTIVE_SEND] =3D NVME_CMD_EFF_CSUPP, }; =20 -static const uint32_t nvme_cse_iocs_none[256]; - -static const uint32_t nvme_cse_iocs_nvm[256] =3D { - [NVME_CMD_FLUSH] =3D NVME_CMD_EFF_CSUPP | NVME_CMD_EFF_= LBCC, - [NVME_CMD_WRITE_ZEROES] =3D NVME_CMD_EFF_CSUPP | NVME_CMD_EFF_= LBCC, - [NVME_CMD_WRITE] =3D NVME_CMD_EFF_CSUPP | NVME_CMD_EFF_= LBCC, - [NVME_CMD_READ] =3D NVME_CMD_EFF_CSUPP, - [NVME_CMD_DSM] =3D NVME_CMD_EFF_CSUPP | NVME_CMD_EFF_= LBCC, - [NVME_CMD_VERIFY] =3D NVME_CMD_EFF_CSUPP, - [NVME_CMD_COPY] =3D NVME_CMD_EFF_CSUPP | NVME_CMD_EFF_= LBCC, - [NVME_CMD_COMPARE] =3D NVME_CMD_EFF_CSUPP, - [NVME_CMD_IO_MGMT_RECV] =3D NVME_CMD_EFF_CSUPP, - [NVME_CMD_IO_MGMT_SEND] =3D NVME_CMD_EFF_CSUPP | NVME_CMD_EFF_= LBCC, +#define NVME_CSE_IOCS_NVM_DEFAULT \ + [NVME_CMD_FLUSH] =3D NVME_CMD_EFF_CSUPP | NVME_CMD_EFF_= LBCC, \ + [NVME_CMD_WRITE_ZEROES] =3D NVME_CMD_EFF_CSUPP | NVME_CMD_EFF_= LBCC, \ + [NVME_CMD_WRITE] =3D NVME_CMD_EFF_CSUPP | NVME_CMD_EFF_= LBCC, \ + [NVME_CMD_READ] =3D NVME_CMD_EFF_CSUPP, = \ + [NVME_CMD_DSM] =3D NVME_CMD_EFF_CSUPP | NVME_CMD_EFF_= LBCC, \ + [NVME_CMD_VERIFY] =3D NVME_CMD_EFF_CSUPP, = \ + [NVME_CMD_COPY] =3D NVME_CMD_EFF_CSUPP | NVME_CMD_EFF_= LBCC, \ + [NVME_CMD_COMPARE] =3D NVME_CMD_EFF_CSUPP, = \ + [NVME_CMD_IO_MGMT_RECV] =3D NVME_CMD_EFF_CSUPP, = \ + [NVME_CMD_IO_MGMT_SEND] =3D NVME_CMD_EFF_CSUPP | NVME_CMD_EFF_= LBCC + +static const uint32_t nvme_cse_iocs_nvm_default[256] =3D { + NVME_CSE_IOCS_NVM_DEFAULT, }; =20 -static const uint32_t nvme_cse_iocs_zoned[256] =3D { - [NVME_CMD_FLUSH] =3D NVME_CMD_EFF_CSUPP | NVME_CMD_EFF_= LBCC, - [NVME_CMD_WRITE_ZEROES] =3D NVME_CMD_EFF_CSUPP | NVME_CMD_EFF_= LBCC, - [NVME_CMD_WRITE] =3D NVME_CMD_EFF_CSUPP | NVME_CMD_EFF_= LBCC, - [NVME_CMD_READ] =3D NVME_CMD_EFF_CSUPP, - [NVME_CMD_DSM] =3D NVME_CMD_EFF_CSUPP | NVME_CMD_EFF_= LBCC, - [NVME_CMD_VERIFY] =3D NVME_CMD_EFF_CSUPP, - [NVME_CMD_COPY] =3D NVME_CMD_EFF_CSUPP | NVME_CMD_EFF_= LBCC, - [NVME_CMD_COMPARE] =3D NVME_CMD_EFF_CSUPP, +static const uint32_t nvme_cse_iocs_zoned_default[256] =3D { + NVME_CSE_IOCS_NVM_DEFAULT, + [NVME_CMD_ZONE_APPEND] =3D NVME_CMD_EFF_CSUPP | NVME_CMD_EFF_= LBCC, [NVME_CMD_ZONE_MGMT_SEND] =3D NVME_CMD_EFF_CSUPP | NVME_CMD_EFF_= LBCC, [NVME_CMD_ZONE_MGMT_RECV] =3D NVME_CMD_EFF_CSUPP, @@ -4603,6 +4599,61 @@ static uint16_t nvme_io_mgmt_send(NvmeCtrl *n, NvmeR= equest *req) }; } =20 +static uint16_t __nvme_io_cmd_nvm(NvmeCtrl *n, NvmeRequest *req) +{ + switch (req->cmd.opcode) { + case NVME_CMD_WRITE: + return nvme_write(n, req); + case NVME_CMD_READ: + return nvme_read(n, req); + case NVME_CMD_COMPARE: + return nvme_compare(n, req); + case NVME_CMD_WRITE_ZEROES: + return nvme_write_zeroes(n, req); + case NVME_CMD_DSM: + return nvme_dsm(n, req); + case NVME_CMD_VERIFY: + return nvme_verify(n, req); + case NVME_CMD_COPY: + return nvme_copy(n, req); + case NVME_CMD_IO_MGMT_RECV: + return nvme_io_mgmt_recv(n, req); + case NVME_CMD_IO_MGMT_SEND: + return nvme_io_mgmt_send(n, req); + } + + g_assert_not_reached(); +} + +static uint16_t nvme_io_cmd_nvm(NvmeCtrl *n, NvmeRequest *req) +{ + if (!(n->cse.iocs.nvm[req->cmd.opcode] & NVME_CMD_EFF_CSUPP)) { + trace_pci_nvme_err_invalid_opc(req->cmd.opcode); + return NVME_INVALID_OPCODE | NVME_DNR; + } + + return __nvme_io_cmd_nvm(n, req); +} + +static uint16_t nvme_io_cmd_zoned(NvmeCtrl *n, NvmeRequest *req) +{ + if (!(n->cse.iocs.zoned[req->cmd.opcode] & NVME_CMD_EFF_CSUPP)) { + trace_pci_nvme_err_invalid_opc(req->cmd.opcode); + return NVME_INVALID_OPCODE | NVME_DNR; + } + + switch (req->cmd.opcode) { + case NVME_CMD_ZONE_APPEND: + return nvme_zone_append(n, req); + case NVME_CMD_ZONE_MGMT_SEND: + return nvme_zone_mgmt_send(n, req); + case NVME_CMD_ZONE_MGMT_RECV: + return nvme_zone_mgmt_recv(n, req); + } + + return __nvme_io_cmd_nvm(n, req); +} + static uint16_t nvme_io_cmd(NvmeCtrl *n, NvmeRequest *req) { NvmeNamespace *ns; @@ -4644,11 +4695,6 @@ static uint16_t nvme_io_cmd(NvmeCtrl *n, NvmeRequest= *req) return NVME_INVALID_FIELD | NVME_DNR; } =20 - if (!(ns->iocs[req->cmd.opcode] & NVME_CMD_EFF_CSUPP)) { - trace_pci_nvme_err_invalid_opc(req->cmd.opcode); - return NVME_INVALID_OPCODE | NVME_DNR; - } - if (ns->status) { return ns->status; } @@ -4659,36 +4705,14 @@ static uint16_t nvme_io_cmd(NvmeCtrl *n, NvmeReques= t *req) =20 req->ns =3D ns; =20 - switch (req->cmd.opcode) { - case NVME_CMD_WRITE_ZEROES: - return nvme_write_zeroes(n, req); - case NVME_CMD_ZONE_APPEND: - return nvme_zone_append(n, req); - case NVME_CMD_WRITE: - return nvme_write(n, req); - case NVME_CMD_READ: - return nvme_read(n, req); - case NVME_CMD_COMPARE: - return nvme_compare(n, req); - case NVME_CMD_DSM: - return nvme_dsm(n, req); - case NVME_CMD_VERIFY: - return nvme_verify(n, req); - case NVME_CMD_COPY: - return nvme_copy(n, req); - case NVME_CMD_ZONE_MGMT_SEND: - return nvme_zone_mgmt_send(n, req); - case NVME_CMD_ZONE_MGMT_RECV: - return nvme_zone_mgmt_recv(n, req); - case NVME_CMD_IO_MGMT_RECV: - return nvme_io_mgmt_recv(n, req); - case NVME_CMD_IO_MGMT_SEND: - return nvme_io_mgmt_send(n, req); - default: - g_assert_not_reached(); + switch (ns->csi) { + case NVME_CSI_NVM: + return nvme_io_cmd_nvm(n, req); + case NVME_CSI_ZONED: + return nvme_io_cmd_zoned(n, req); } =20 - return NVME_INVALID_OPCODE | NVME_DNR; + g_assert_not_reached(); } =20 static void nvme_cq_notifier(EventNotifier *e) @@ -5108,7 +5132,7 @@ static uint16_t nvme_cmd_effects(NvmeCtrl *n, uint8_t= csi, uint32_t buf_len, uint64_t off, NvmeRequest *req) { NvmeEffectsLog log =3D {}; - const uint32_t *src_iocs =3D NULL; + const uint32_t *iocs =3D NULL; uint32_t trans_len; =20 if (off >=3D sizeof(log)) { @@ -5118,25 +5142,26 @@ static uint16_t nvme_cmd_effects(NvmeCtrl *n, uint8= _t csi, uint32_t buf_len, =20 switch (NVME_CC_CSS(ldl_le_p(&n->bar.cc))) { case NVME_CC_CSS_NVM: - src_iocs =3D nvme_cse_iocs_nvm; - /* fall through */ - case NVME_CC_CSS_ADMIN_ONLY: + iocs =3D n->cse.iocs.nvm; break; - case NVME_CC_CSS_CSI: + + case NVME_CC_CSS_ALL: switch (csi) { case NVME_CSI_NVM: - src_iocs =3D nvme_cse_iocs_nvm; + iocs =3D n->cse.iocs.nvm; break; case NVME_CSI_ZONED: - src_iocs =3D nvme_cse_iocs_zoned; + iocs =3D n->cse.iocs.zoned; break; } + + break; } =20 memcpy(log.acs, n->cse.acs, sizeof(log.acs)); =20 - if (src_iocs) { - memcpy(log.iocs, src_iocs, sizeof(log.iocs)); + if (iocs) { + memcpy(log.iocs, iocs, sizeof(log.iocs)); } =20 trans_len =3D MIN(sizeof(log) - off, buf_len); @@ -6660,25 +6685,29 @@ static void nvme_update_dsm_limits(NvmeCtrl *n, Nvm= eNamespace *ns) } } =20 -static void nvme_select_iocs_ns(NvmeCtrl *n, NvmeNamespace *ns) +static bool nvme_csi_supported(NvmeCtrl *n, uint8_t csi) { - uint32_t cc =3D ldl_le_p(&n->bar.cc); + uint32_t cc; =20 - ns->iocs =3D nvme_cse_iocs_none; - switch (ns->csi) { + switch (csi) { case NVME_CSI_NVM: - if (NVME_CC_CSS(cc) !=3D NVME_CC_CSS_ADMIN_ONLY) { - ns->iocs =3D nvme_cse_iocs_nvm; - } - break; + return true; + case NVME_CSI_ZONED: - if (NVME_CC_CSS(cc) =3D=3D NVME_CC_CSS_CSI) { - ns->iocs =3D nvme_cse_iocs_zoned; - } else if (NVME_CC_CSS(cc) =3D=3D NVME_CC_CSS_NVM) { - ns->iocs =3D nvme_cse_iocs_nvm; - } - break; + cc =3D ldl_le_p(&n->bar.cc); + + return NVME_CC_CSS(cc) =3D=3D NVME_CC_CSS_ALL; } + + g_assert_not_reached(); +} + +static void nvme_detach_ns(NvmeCtrl *n, NvmeNamespace *ns) +{ + assert(ns->attached > 0); + + n->namespaces[ns->params.nsid] =3D NULL; + ns->attached--; } =20 static uint16_t nvme_ns_attachment(NvmeCtrl *n, NvmeRequest *req) @@ -6723,7 +6752,7 @@ static uint16_t nvme_ns_attachment(NvmeCtrl *n, NvmeR= equest *req) =20 switch (sel) { case NVME_NS_ATTACHMENT_ATTACH: - if (nvme_ns(ctrl, nsid)) { + if (nvme_ns(n, nsid)) { return NVME_NS_ALREADY_ATTACHED | NVME_DNR; } =20 @@ -6731,19 +6760,17 @@ static uint16_t nvme_ns_attachment(NvmeCtrl *n, Nvm= eRequest *req) return NVME_NS_PRIVATE | NVME_DNR; } =20 + if (!nvme_csi_supported(n, ns->csi)) { + return NVME_IOCS_NOT_SUPPORTED | NVME_DNR; + } + nvme_attach_ns(ctrl, ns); - nvme_select_iocs_ns(ctrl, ns); + nvme_update_dsm_limits(ctrl, ns); =20 break; =20 case NVME_NS_ATTACHMENT_DETACH: - if (!nvme_ns(ctrl, nsid)) { - return NVME_NS_NOT_ATTACHED | NVME_DNR; - } - - ctrl->namespaces[nsid] =3D NULL; - ns->attached--; - + nvme_detach_ns(ctrl, ns); nvme_update_dsm_limits(ctrl, NULL); =20 break; @@ -7594,21 +7621,6 @@ static void nvme_ctrl_shutdown(NvmeCtrl *n) } } =20 -static void nvme_select_iocs(NvmeCtrl *n) -{ - NvmeNamespace *ns; - int i; - - for (i =3D 1; i <=3D NVME_MAX_NAMESPACES; i++) { - ns =3D nvme_ns(n, i); - if (!ns) { - continue; - } - - nvme_select_iocs_ns(n, ns); - } -} - static int nvme_start_ctrl(NvmeCtrl *n) { uint64_t cap =3D ldq_le_p(&n->bar.cap); @@ -7675,7 +7687,18 @@ static int nvme_start_ctrl(NvmeCtrl *n) =20 nvme_set_timestamp(n, 0ULL); =20 - nvme_select_iocs(n); + /* verify that the command sets of attached namespaces are supported */ + for (int i =3D 1; i <=3D NVME_MAX_NAMESPACES; i++) { + NvmeNamespace *ns =3D nvme_subsys_ns(n->subsys, i); + + if (ns && nvme_csi_supported(n, ns->csi) && !ns->params.detached) { + if (!ns->attached || ns->params.shared) { + nvme_attach_ns(n, ns); + } + } + } + + nvme_update_dsm_limits(n, NULL); =20 return 0; } @@ -8684,6 +8707,8 @@ static void nvme_init_ctrl(NvmeCtrl *n, PCIDevice *pc= i_dev) uint16_t oacs; =20 memcpy(n->cse.acs, nvme_cse_acs_default, sizeof(n->cse.acs)); + memcpy(n->cse.iocs.nvm, nvme_cse_iocs_nvm_default, sizeof(n->cse.iocs.= nvm)); + memcpy(n->cse.iocs.zoned, nvme_cse_iocs_zoned_default, sizeof(n->cse.i= ocs.zoned)); =20 id->vid =3D cpu_to_le16(pci_get_word(pci_conf + PCI_VENDOR_ID)); id->ssvid =3D cpu_to_le16(pci_get_word(pci_conf + PCI_SUBSYSTEM_VENDOR= _ID)); @@ -8795,9 +8820,8 @@ static void nvme_init_ctrl(NvmeCtrl *n, PCIDevice *pc= i_dev) NVME_CAP_SET_MQES(cap, n->params.mqes); NVME_CAP_SET_CQR(cap, 1); NVME_CAP_SET_TO(cap, 0xf); - NVME_CAP_SET_CSS(cap, NVME_CAP_CSS_NVM); - NVME_CAP_SET_CSS(cap, NVME_CAP_CSS_CSI_SUPP); - NVME_CAP_SET_CSS(cap, NVME_CAP_CSS_ADMIN_ONLY); + NVME_CAP_SET_CSS(cap, NVME_CAP_CSS_NCSS); + NVME_CAP_SET_CSS(cap, NVME_CAP_CSS_IOCSS); NVME_CAP_SET_MPSMAX(cap, 4); NVME_CAP_SET_CMBS(cap, n->params.cmb_size_mb ? 1 : 0); NVME_CAP_SET_PMRS(cap, n->pmr.dev ? 1 : 0); @@ -8844,8 +8868,6 @@ void nvme_attach_ns(NvmeCtrl *n, NvmeNamespace *ns) =20 n->namespaces[nsid] =3D ns; ns->attached++; - - nvme_update_dsm_limits(n, ns); } =20 static void nvme_realize(PCIDevice *pci_dev, Error **errp) @@ -8901,7 +8923,7 @@ static void nvme_realize(PCIDevice *pci_dev, Error **= errp) return; } =20 - nvme_attach_ns(n, ns); + n->subsys->namespaces[ns->params.nsid] =3D ns; } } =20 diff --git a/hw/nvme/ns.c b/hw/nvme/ns.c index 3be43503c50798db0ab528fe30ad901bb6aa9db3..2ac8544f1f6561076813c500af4= 210f8a99d6cb8 100644 --- a/hw/nvme/ns.c +++ b/hw/nvme/ns.c @@ -763,20 +763,6 @@ static void nvme_ns_realize(DeviceState *dev, Error **= errp) =20 ns->id_ns.endgid =3D cpu_to_le16(0x1); ns->id_ns_ind.endgrpid =3D cpu_to_le16(0x1); - - if (ns->params.detached) { - return; - } - - if (ns->params.shared) { - for (i =3D 0; i < ARRAY_SIZE(subsys->ctrls); i++) { - NvmeCtrl *ctrl =3D subsys->ctrls[i]; - - if (ctrl && ctrl !=3D SUBSYS_SLOT_RSVD) { - nvme_attach_ns(ctrl, ns); - } - } - } } =20 static Property nvme_ns_props[] =3D { diff --git a/hw/nvme/nvme.h b/hw/nvme/nvme.h index cb314e91af32a20f47e0a393e2458b7d4bdd03d9..f1b048c30dc90d8c3c18267d19d= 52e454a95fde9 100644 --- a/hw/nvme/nvme.h +++ b/hw/nvme/nvme.h @@ -237,7 +237,6 @@ typedef struct NvmeNamespace { NvmeLBAF lbaf; unsigned int nlbaf; size_t lbasz; - const uint32_t *iocs; uint8_t csi; uint16_t status; int attached; @@ -586,6 +585,10 @@ typedef struct NvmeCtrl { =20 struct { uint32_t acs[256]; + struct { + uint32_t nvm[256]; + uint32_t zoned[256]; + } iocs; } cse; =20 struct { diff --git a/include/block/nvme.h b/include/block/nvme.h index f3f0317524d129f518698c6797ed37a7ac0ac847..66d49b641aa1e89c12103e54832= 0d89995fbbfae 100644 --- a/include/block/nvme.h +++ b/include/block/nvme.h @@ -142,9 +142,9 @@ enum NvmeCapMask { ((cap) |=3D (uint64_t)((val) & CAP_CMBS_MASK) << CAP_CMBS_SHIFT) =20 enum NvmeCapCss { - NVME_CAP_CSS_NVM =3D 1 << 0, - NVME_CAP_CSS_CSI_SUPP =3D 1 << 6, - NVME_CAP_CSS_ADMIN_ONLY =3D 1 << 7, + NVME_CAP_CSS_NCSS =3D 1 << 0, + NVME_CAP_CSS_IOCSS =3D 1 << 6, + NVME_CAP_CSS_NOIOCSS =3D 1 << 7, }; =20 enum NvmeCcShift { @@ -177,7 +177,7 @@ enum NvmeCcMask { =20 enum NvmeCcCss { NVME_CC_CSS_NVM =3D 0x0, - NVME_CC_CSS_CSI =3D 0x6, + NVME_CC_CSS_ALL =3D 0x6, NVME_CC_CSS_ADMIN_ONLY =3D 0x7, }; =20 @@ -938,6 +938,8 @@ enum NvmeStatusCodes { NVME_INVALID_SEC_CTRL_STATE =3D 0x0120, NVME_INVALID_NUM_RESOURCES =3D 0x0121, NVME_INVALID_RESOURCE_ID =3D 0x0122, + NVME_IOCS_NOT_SUPPORTED =3D 0x0129, + NVME_IOCS_NOT_ENABLED =3D 0x012a, NVME_IOCS_COMBINATION_REJECTED =3D 0x012b, NVME_INVALID_IOCS =3D 0x012c, NVME_CONFLICTING_ATTRS =3D 0x0180, --=20 2.45.2 From nobody Wed Apr 9 01:11:20 2025 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 ARC-Seal: i=1; a=rsa-sha256; t=1734353732; cv=none; d=zohomail.com; s=zohoarc; b=oLCjkxDIXKsm0OPwvsdKky6H9wDVuTgghr/lcqAeNsvzkDZPl+FafX5G8QrBG782TmD+Wbu4M4SWZnaPTwXLa13/E2Lgw2RZR+aI14rA2J30zCB0EpGUqXpeMwxQWIIz0v2KX9xPSvsbU9glR7V+5syZmTeoVeK+hlBs6ZwJSVc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1734353732; 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=vVfMVAx+eVbV5OtdkXmcg0eIqsMNcBLLhgn4WD9j0D0=; b=iHWYvxWSQSR+KNHIDBHQCVOJbfHchblWYUQW8V8xvZWUM+1lMvx4+RwDDCtya9dYjj/IzilvQwBZwc7RzFab0ZoKQ8HXgpHDet0qNVKUC1CI7l1HGhvMQrW0pMrRqkKbr9kO38CCekpVwGqF0yFpdXU7LeIiv8qrGtu9DewC//g= 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 173435373226895.86187044131555; Mon, 16 Dec 2024 04:55:32 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tNAcK-0006vc-4g; Mon, 16 Dec 2024 07:54:32 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tNAbu-0006bd-L3; Mon, 16 Dec 2024 07:54:06 -0500 Received: from fout-b4-smtp.messagingengine.com ([202.12.124.147]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tNAbt-0004rm-1e; Mon, 16 Dec 2024 07:54:06 -0500 Received: from phl-compute-12.internal (phl-compute-12.phl.internal [10.202.2.52]) by mailfout.stl.internal (Postfix) with ESMTP id E076F114009C; Mon, 16 Dec 2024 07:54:03 -0500 (EST) Received: from phl-mailfrontend-02 ([10.202.2.163]) by phl-compute-12.internal (MEProxy); Mon, 16 Dec 2024 07:54:04 -0500 Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon, 16 Dec 2024 07:54:02 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=irrelevant.dk; h=cc:cc:content-transfer-encoding:content-type:content-type :date:date:from:from:in-reply-to:in-reply-to:message-id :mime-version:references:reply-to:subject:subject:to:to; s=fm3; t=1734353643; x=1734440043; bh=vVfMVAx+eVbV5OtdkXmcg0eIqsMNcBLL hgn4WD9j0D0=; b=YakfKyK/E1wYql1+A8RpuaPA8LtXDTM8zd1nBCMZ1woEt+Kw SNO5e17gZB3XdxXm0oVEQ4PG4mhR4ehJhIN+xhISNO6zeV5pSxsZEVOvW51c7/ud u3A4I5IYlNc+OZkJlNUV7c6YiyBSTTbrBLIqQgylTk5DppkjoRmkaCGKWdBymz4o GArTYcERoFultkzcADkxyFQUu6Q0AII4Vm1hl2KfxAkArLtEej9yMfs19jgmwPE+ Yg5zFxejXLLZug6qRqNQ8lxSRkhoVM1mrMQQGxGuMobStRuc9Zsh//O8pV6/lNAE RbjK0FBQGDpz/NegROfAeckTYpa8K9bkZo8f0Q== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1734353643; x= 1734440043; bh=vVfMVAx+eVbV5OtdkXmcg0eIqsMNcBLLhgn4WD9j0D0=; b=R vbWzMdViXAwwn+gh0a+AoKbZ3SNZPF7u7B1/ObIjjuY4Zpnm+fnVPwJkbsXsY10p rDPvHUsETGphoHfAzeerlnmf9DPH4GESCtpOxIZNmp3ViW/E00Z+FCOLveh4V2Cl 4oAOGx+uzbRcs1vxzW+ouiNAXPGWRaDjtmJJEbdp2id2kYqqePv5sqodF8gAJfBP Ay8AR6YFj0zSi2eui9Sdn92MDX7z2dXCS4NbEJWmVCcwNb7oNuxyuDgq0dD+zq1h NFArJxNCY/7jLQvQU3+XPnZQYmPB2gf+DPcc6G6Rb1MU5FDsws4DEy05YRVBnfMd YvMlaAucAsTtbmG0mmCfg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefuddrleefgdeghecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpggftfghnshhusghstghrihgsvgdpuffr tefokffrpgfnqfghnecuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnth hsucdlqddutddtmdenucfjughrpefhfffugggtgffkfhgjvfevofesthejredtredtjeen ucfhrhhomhepmfhlrghushculfgvnhhsvghnuceoihhtshesihhrrhgvlhgvvhgrnhhtrd gukheqnecuggftrfgrthhtvghrnhepkeeivddtueehffefuddtleefkefhiedttdduveeg gfffieetveffhfehgfeghfffnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpe hmrghilhhfrhhomhepihhtshesihhrrhgvlhgvvhgrnhhtrdgukhdpnhgspghrtghpthht ohepiedpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtohepfhhoshhsseguvghfmhgrtg hrohdrihhtpdhrtghpthhtohepqhgvmhhuqdgslhhotghksehnohhnghhnuhdrohhrghdp rhgtphhtthhopehithhssehirhhrvghlvghvrghnthdrughkpdhrtghpthhtohepqhgvmh huqdguvghvvghlsehnohhnghhnuhdrohhrghdprhgtphhtthhopehksghushgthheskhgv rhhnvghlrdhorhhgpdhrtghpthhtohepkhdrjhgvnhhsvghnsehsrghmshhunhhgrdgtoh hm X-ME-Proxy: Feedback-ID: idc91472f:Fastmail From: Klaus Jensen Date: Mon, 16 Dec 2024 13:53:08 +0100 Subject: [PATCH 7/9] hw/nvme: only set command abort requested when cancelled due to Abort MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20241216-nvme-queue-v1-7-4e42212b92f7@samsung.com> References: <20241216-nvme-queue-v1-0-4e42212b92f7@samsung.com> In-Reply-To: <20241216-nvme-queue-v1-0-4e42212b92f7@samsung.com> To: Keith Busch , Klaus Jensen , Jesper Devantier , qemu-block@nongnu.org, qemu-devel@nongnu.org Cc: Klaus Jensen X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1550; i=k.jensen@samsung.com; h=from:subject:message-id; bh=Lzmkuk5YaMJzGtZSA4ffX7+4Au6vE0d8ay3Yh5W3tCI=; b=LS0tLS1CRUdJTiBQR1AgTUVTU0FHRS0tLS0tCgpvd0o0bkFGdEFaTCtrQTBEQUFvQlRlR3ZNV zFQRGVrQnl5WmlBR2RnSXRwUHlsd3lUeDRic0liN3hPMW9lZHJyClZ4bC9kcEFRMmQ1cXRLc2FW Q2c2S1lrQk13UUFBUW9BSFJZaEJGSW9NNnAxNHR6bW9rZG13RTNocnpGdFR3M3AKQlFKbllDTGF BQW9KRUUzaHJ6RnRUdzNwdkpVSC8zVk1WMnd6TThjbVdDeXZTeWtsaWF5cUg2WmVxY2UwTVJEZw pZMzBvWnRETXN3TU94bVljTkplQk44elJLbGk1RVZmNERhaVpkNU5GV1lxZ05CTDIzOExCdi9GR ThkY3VvWUYwClJGb2pRRWxCNUJ4TEhLS1pBR0ZKQnFhbXc2SzZSaGw0KzIwU2VxNXlaalh3TlB2 STZmeVplWDUzWWNUZG0zL0QKMW9Uc1F1L0k4eHZQTUJrTXhsTEpGKzRQeHJ6dEN5VG5iNXJBZXd ZU0JjeGpNTkUycTZsODMyZTFxY2N0K0FGcQo0aDVwejd2OTJYelUwY1BmckJPR1l1RUhZS3F0MF ZPakdXTW9GUkVNSUhteU9vdmluR09iSXBWbVhjeWdwVmlqCk96RUVwR1BES1NiUDdzTnh0RThmY i93RXFEc01MMk9XcWNYVmRuRm1pQkFOdlcycStjcmVnNmVFCj1pYWVUCi0tLS0tRU5EIFBHUCBN RVNTQUdFLS0tLS0K X-Developer-Key: i=k.jensen@samsung.com; a=openpgp; fpr=DDCA4D9C9EF931CC3468427263D56FC5E55DA838 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=lists.gnu.org; Received-SPF: pass client-ip=202.12.124.147; envelope-from=its@irrelevant.dk; helo=fout-b4-smtp.messagingengine.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 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 @irrelevant.dk) X-ZM-MESSAGEID: 1734353732823116600 From: Klaus Jensen The Command Abort Requested status code should only be set if the command was explicitly cancelled due to an Abort command. Or, in the case the cancel was due to Submission Queue deletion, set the status code to Command Aborted due to SQ Deletion. Signed-off-by: Klaus Jensen Reviewed-by: Jesper Wendel Devantier --- hw/nvme/ctrl.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c index 8d3f62c40ac14fdc4bdc650e272023558cbbae0f..5b1bac020f049cc2a2f869b12e1= d2a7e13cef316 100644 --- a/hw/nvme/ctrl.c +++ b/hw/nvme/ctrl.c @@ -1777,10 +1777,6 @@ static void nvme_aio_err(NvmeRequest *req, int ret) break; } =20 - if (ret =3D=3D -ECANCELED) { - status =3D NVME_CMD_ABORT_REQ; - } - trace_pci_nvme_err_aio(nvme_cid(req), strerror(-ret), status); =20 error_setg_errno(&local_err, -ret, "aio failed"); @@ -4821,6 +4817,7 @@ static uint16_t nvme_del_sq(NvmeCtrl *n, NvmeRequest = *req) while (!QTAILQ_EMPTY(&sq->out_req_list)) { r =3D QTAILQ_FIRST(&sq->out_req_list); assert(r->aiocb); + r->status =3D NVME_CMD_ABORT_SQ_DEL; blk_aio_cancel(r->aiocb); } =20 @@ -6073,6 +6070,7 @@ static uint16_t nvme_abort(NvmeCtrl *n, NvmeRequest *= req) QTAILQ_FOREACH_SAFE(r, &sq->out_req_list, entry, next) { if (r->cqe.cid =3D=3D cid) { if (r->aiocb) { + r->status =3D NVME_CMD_ABORT_REQ; blk_aio_cancel_async(r->aiocb); } break; --=20 2.45.2 From nobody Wed Apr 9 01:11:20 2025 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 ARC-Seal: i=1; a=rsa-sha256; t=1734353707; cv=none; d=zohomail.com; s=zohoarc; b=IkE1RlX8OHzx5OxkFP7xKfAxuEw0Lqoy6V63wEB3znXoEoE8VnxCp+MS+vGOfXTH/hCbUtAbt2+ENwqwME+YWxbHu01lm1p6S/4v5Jp36HpJ+DrI6aD9ObQFH9tJkExnksgRl+gCtciUNaGck2DcTQZ0FHVUcCxqjIUsceaI/jg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1734353707; 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=7VYhBCDI5Xi9dHyV4nyGNN4Y0oYF0wnx7wNTd3egdec=; b=cO8f+0iyfUnBeoj2gSyRXx10ylBrolUCMj3fC5vuAdKlq4KIfZnJVlJqT+EYW6DullLj/4zq8CsC1aiS5MrSTJTEooENSX+qmX/eC8rkJhYCemQk7ThAxMcuoUpxmV3PJfJ0SjS8nycN3hDZEyZH3LX4CPdiBYuk1Etfp6PUivA= 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1734353707472246.462819184993; Mon, 16 Dec 2024 04:55:07 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tNAcL-0006zW-Bm; Mon, 16 Dec 2024 07:54:33 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tNAbw-0006d9-QB; Mon, 16 Dec 2024 07:54:10 -0500 Received: from fhigh-b5-smtp.messagingengine.com ([202.12.124.156]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tNAbu-0004s4-M9; Mon, 16 Dec 2024 07:54:08 -0500 Received: from phl-compute-09.internal (phl-compute-09.phl.internal [10.202.2.49]) by mailfhigh.stl.internal (Postfix) with ESMTP id 8757B254015A; Mon, 16 Dec 2024 07:54:05 -0500 (EST) Received: from phl-mailfrontend-02 ([10.202.2.163]) by phl-compute-09.internal (MEProxy); Mon, 16 Dec 2024 07:54:05 -0500 Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon, 16 Dec 2024 07:54:04 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=irrelevant.dk; h=cc:cc:content-transfer-encoding:content-type:content-type :date:date:from:from:in-reply-to:in-reply-to:message-id :mime-version:references:reply-to:subject:subject:to:to; s=fm3; t=1734353645; x=1734440045; bh=7VYhBCDI5Xi9dHyV4nyGNN4Y0oYF0wnx 7wNTd3egdec=; b=a5aIyNZiy+H5VgXzFsa/5l+jMIQetDUX9XKOoZuWSrqEVwF9 qJaTAevPdJYU8A9LMK4Qajf6xSPyN+PYNU+sn4fW0Bki01QVo8xIEY0C0r/qavbr t7RxQageAthAn2PraxXJNTykPTby/KQAEQjPlqcLRsE2mc7ad+SWcJF8P1g9Fg8k JGM9UfDyPTn/OeqxYBIC/m0WOLHKUmGleZBXV9qy30DdBTQm6kpaFepe4JNrRKMI g3D5ew1RYOH4p6Xy7ahfmCpUNXjguo7iylKsDuSVU9ZHa/f31kHewOkCF1YMKzJB UYRSh2iDbNkbCs7PqGU+oyJ/QBfsPr7Nqu4ScA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1734353645; x= 1734440045; bh=7VYhBCDI5Xi9dHyV4nyGNN4Y0oYF0wnx7wNTd3egdec=; b=C DgDeoqb7g/2kRJ50g0wNgKPkMN3VFfHlBlNexpUNmi3yceed8VriIhQs8UCK6Z+Z urQ5+7NnT/TOPGxiwA2kEXZKLrrnkL4bPJlKJFD42Su1PIZH+eBbLhYNj4vXz95e +4WIHKRn82y9geK3s9SthkLdVy2paxVPXQ6tETbxFTE2cfgx1/VNCq/rgnJofuXe veo/4yCNfYzaQnf2cHP+8N3yXLBuCCJBoZlr0AqPYrcJhGVktANgupVgNDvtR/rX II/Vor2SWl5bSy2x8BXYhD3bK6HxHU07axg2rMbut1C/0tJBt5pklxbbVA3+m+x6 GKhsKI9RpQpWm7ZeLqhJg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefuddrleefgdegiecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpggftfghnshhusghstghrihgsvgdpuffr tefokffrpgfnqfghnecuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnth hsucdlqddutddtmdenucfjughrpefhfffugggtgffkfhgjvfevofesthejredtredtjeen ucfhrhhomhepmfhlrghushculfgvnhhsvghnuceoihhtshesihhrrhgvlhgvvhgrnhhtrd gukheqnecuggftrfgrthhtvghrnhepkeeivddtueehffefuddtleefkefhiedttdduveeg gfffieetveffhfehgfeghfffnecuvehluhhsthgvrhfuihiivgepudenucfrrghrrghmpe hmrghilhhfrhhomhepihhtshesihhrrhgvlhgvvhgrnhhtrdgukhdpnhgspghrtghpthht ohepiedpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtohepfhhoshhsseguvghfmhgrtg hrohdrihhtpdhrtghpthhtohepqhgvmhhuqdgslhhotghksehnohhnghhnuhdrohhrghdp rhgtphhtthhopehithhssehirhhrvghlvghvrghnthdrughkpdhrtghpthhtohepqhgvmh huqdguvghvvghlsehnohhnghhnuhdrohhrghdprhgtphhtthhopehksghushgthheskhgv rhhnvghlrdhorhhgpdhrtghpthhtohepkhdrjhgvnhhsvghnsehsrghmshhunhhgrdgtoh hm X-ME-Proxy: Feedback-ID: idc91472f:Fastmail From: Klaus Jensen Date: Mon, 16 Dec 2024 13:53:09 +0100 Subject: [PATCH 8/9] hw/nvme: set error status code explicitly for misc commands MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20241216-nvme-queue-v1-8-4e42212b92f7@samsung.com> References: <20241216-nvme-queue-v1-0-4e42212b92f7@samsung.com> In-Reply-To: <20241216-nvme-queue-v1-0-4e42212b92f7@samsung.com> To: Keith Busch , Klaus Jensen , Jesper Devantier , qemu-block@nongnu.org, qemu-devel@nongnu.org Cc: Klaus Jensen X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3990; i=k.jensen@samsung.com; h=from:subject:message-id; bh=hxOM4hD4Xb6bWY7Wjdk928pX9fL0ZwzmOu8los/ey2w=; b=LS0tLS1CRUdJTiBQR1AgTUVTU0FHRS0tLS0tCgpvd0o0bkFGdEFaTCtrQTBEQUFvQlRlR3ZNV zFQRGVrQnl5WmlBR2RnSXR1OG11bUNIWmcxREtscmZNejZGbXZlCkhRZ1E4YmtNTWVjbjErV29U cGRaVFlrQk13UUFBUW9BSFJZaEJGSW9NNnAxNHR6bW9rZG13RTNocnpGdFR3M3AKQlFKbllDTGJ BQW9KRUUzaHJ6RnRUdzNwcFNBSC9qWVE1bTNKYmtuL1owUlBBMmtsUG0zMXpnTWYreERRVE9hNw o2bWxENmhWRUNKSXBPcHhjS0krWkpBa0VIaVNtODNxeTBqRUFhQkZNS0VvL1UvdWhSSVBlZzhqW DhoMndXd3IwCnZHQ1BtamRMSDRWcFErUlNxbXdqbXk0ZHhvWWZjMHEreENLeStId0w5N0lSd1ZS dzM5UjkzYlNlRG43R25wVHYKNDV1SGs2dTF1N25tM0NiQVhmRFBzYSsvRVliZ3o3YjJpNnRseG1 IREh3WnZ0bWRGL0V4R01nL0FHdVU5YUF3SwpFZmVWOVc4Z1VWbEZTK2JDU1BFUGNnVGRSSTYyT1 pRbGs0U1Z5YUljNjNkUWRlbHNQdGJFQnBBYzJwR3N4c2hVCnNlLzkrWjZDRzJ0Tnk0TnVUTmMxS ktRc2J6elRKa3MyRkhLRHpjUUFNY0FFVG9ibHVUQ05jS2NzCj1xMVVuCi0tLS0tRU5EIFBHUCBN RVNTQUdFLS0tLS0K X-Developer-Key: i=k.jensen@samsung.com; a=openpgp; fpr=DDCA4D9C9EF931CC3468427263D56FC5E55DA838 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=lists.gnu.org; Received-SPF: pass client-ip=202.12.124.156; envelope-from=its@irrelevant.dk; helo=fhigh-b5-smtp.messagingengine.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 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 @irrelevant.dk) X-ZM-MESSAGEID: 1734353708773116600 From: Klaus Jensen The nvme_aio_err() does not handle Verify, Compare, Copy and other misc commands and defaults to setting the error status code to Internal Device Error. For some of these commands, we know better, so set it explicitly. For the commands using the nvme_misc_cb() callback (Copy, Flush, ...), if no status code has explicitly been set by the lower handlers, default to Internal Device Error as previously. Signed-off-by: Klaus Jensen Reviewed-by: Jesper Wendel Devantier --- hw/nvme/ctrl.c | 28 ++++++++++++++++++++++------ include/block/nvme.h | 1 + 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c index 5b1bac020f049cc2a2f869b12e1d2a7e13cef316..8192f92227d6509b8d15fde9d91= 97a59277eb86f 100644 --- a/hw/nvme/ctrl.c +++ b/hw/nvme/ctrl.c @@ -1765,7 +1765,6 @@ static void nvme_aio_err(NvmeRequest *req, int ret) case NVME_CMD_READ: status =3D NVME_UNRECOVERED_READ; break; - case NVME_CMD_FLUSH: case NVME_CMD_WRITE: case NVME_CMD_WRITE_ZEROES: case NVME_CMD_ZONE_APPEND: @@ -2151,11 +2150,16 @@ static inline bool nvme_is_write(NvmeRequest *req) static void nvme_misc_cb(void *opaque, int ret) { NvmeRequest *req =3D opaque; + uint16_t cid =3D nvme_cid(req); =20 - trace_pci_nvme_misc_cb(nvme_cid(req)); + trace_pci_nvme_misc_cb(cid); =20 if (ret) { - nvme_aio_err(req, ret); + if (!req->status) { + req->status =3D NVME_INTERNAL_DEV_ERROR; + } + + trace_pci_nvme_err_aio(cid, strerror(-ret), req->status); } =20 nvme_enqueue_req_completion(nvme_cq(req), req); @@ -2258,7 +2262,10 @@ static void nvme_verify_cb(void *opaque, int ret) =20 if (ret) { block_acct_failed(stats, acct); - nvme_aio_err(req, ret); + req->status =3D NVME_UNRECOVERED_READ; + + trace_pci_nvme_err_aio(nvme_cid(req), strerror(-ret), req->status); + goto out; } =20 @@ -2357,7 +2364,10 @@ static void nvme_compare_mdata_cb(void *opaque, int = ret) =20 if (ret) { block_acct_failed(stats, acct); - nvme_aio_err(req, ret); + req->status =3D NVME_UNRECOVERED_READ; + + trace_pci_nvme_err_aio(nvme_cid(req), strerror(-ret), req->status); + goto out; } =20 @@ -2439,7 +2449,10 @@ static void nvme_compare_data_cb(void *opaque, int r= et) =20 if (ret) { block_acct_failed(stats, acct); - nvme_aio_err(req, ret); + req->status =3D NVME_UNRECOVERED_READ; + + trace_pci_nvme_err_aio(nvme_cid(req), strerror(-ret), req->status); + goto out; } =20 @@ -2918,6 +2931,7 @@ static void nvme_copy_out_completed_cb(void *opaque, = int ret) =20 if (ret < 0) { iocb->ret =3D ret; + req->status =3D NVME_WRITE_FAULT; goto out; } else if (iocb->ret < 0) { goto out; @@ -2982,6 +2996,7 @@ static void nvme_copy_in_completed_cb(void *opaque, i= nt ret) =20 if (ret < 0) { iocb->ret =3D ret; + req->status =3D NVME_UNRECOVERED_READ; goto out; } else if (iocb->ret < 0) { goto out; @@ -3504,6 +3519,7 @@ static void nvme_flush_ns_cb(void *opaque, int ret) =20 if (ret < 0) { iocb->ret =3D ret; + iocb->req->status =3D NVME_WRITE_FAULT; goto out; } else if (iocb->ret < 0) { goto out; diff --git a/include/block/nvme.h b/include/block/nvme.h index 66d49b641aa1e89c12103e548320d89995fbbfae..3c8a9ba3c7956c1d475857a1068= 074338643f77f 100644 --- a/include/block/nvme.h +++ b/include/block/nvme.h @@ -906,6 +906,7 @@ enum NvmeStatusCodes { NVME_SGL_DESCR_TYPE_INVALID =3D 0x0011, NVME_INVALID_USE_OF_CMB =3D 0x0012, NVME_INVALID_PRP_OFFSET =3D 0x0013, + NVME_COMMAND_INTERRUPTED =3D 0x0021, NVME_FDP_DISABLED =3D 0x0029, NVME_INVALID_PHID_LIST =3D 0x002a, NVME_LBA_RANGE =3D 0x0080, --=20 2.45.2 From nobody Wed Apr 9 01:11:20 2025 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 ARC-Seal: i=1; a=rsa-sha256; t=1734353767; cv=none; d=zohomail.com; s=zohoarc; b=bsixG1V54dUIEmZZFnLMoY6ssyXg04Jo88/9A/HaAAa4AtKbFJiCBJvJOjaOoe5YekZJS7FEBW2KdmJy8MIGlo84h7GCo7D0vmqEkeCQ47GLMAlCgoLOqFd1fydlwpEmStjsAWbUD/6SYQfYc/iuoj3yBU8KqtzBveDKXNX3kWU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1734353767; 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=vhSco4gcriDq04rx4WWzfriM2dprAZWnsff5e2aVQKE=; b=Pikx10DNor4iOqe1QbYOKSphJcerdk+lDQXFOIkvhCCn2d5N7c9c8ZUQVQrkBZFm4D7zNU6gba3JkMsnjSBHBlW9bKySzUtwdQ+iV7wFuL2GcbJAu+thxxraEhozTCj0kic2oZBmu/57qsPTVKFb9iHm4B/EQgsoEGsgXpr+TSA= 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 173435376733135.342241356594286; Mon, 16 Dec 2024 04:56:07 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tNAcM-00070O-9z; Mon, 16 Dec 2024 07:54:34 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tNAby-0006dG-G7; Mon, 16 Dec 2024 07:54:10 -0500 Received: from fout-b4-smtp.messagingengine.com ([202.12.124.147]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tNAbw-0004sP-U7; Mon, 16 Dec 2024 07:54:10 -0500 Received: from phl-compute-11.internal (phl-compute-11.phl.internal [10.202.2.51]) by mailfout.stl.internal (Postfix) with ESMTP id 30B78114010B; Mon, 16 Dec 2024 07:54:07 -0500 (EST) Received: from phl-mailfrontend-02 ([10.202.2.163]) by phl-compute-11.internal (MEProxy); Mon, 16 Dec 2024 07:54:07 -0500 Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon, 16 Dec 2024 07:54:05 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=irrelevant.dk; h=cc:cc:content-transfer-encoding:content-type:content-type :date:date:from:from:in-reply-to:in-reply-to:message-id :mime-version:references:reply-to:subject:subject:to:to; s=fm3; t=1734353647; x=1734440047; bh=vhSco4gcriDq04rx4WWzfriM2dprAZWn sff5e2aVQKE=; b=CZTCVnHgmwtPwMnbgSGutAi+UDX3dlkfpwc7uRWIqb8ku0vl B4m7jvrJPeP4NxIVKaCOLsekRzZdpJ2AiUrOARQXB0S9dbIkoq8nB5BcYX83Y9kJ wLZmhsaW8UlKd8OYzC8RsVWazFyWS5QVnmMbO2RdFYLjSUDvaCVfn6I/lr8WBCpC IcBAzdR0vruLySxNpct9qOTjAc8G/G+Oy/WyNDLtCBLdb7UA6CfCxeM8XjXmykeB LNwMnyr/9hGqCCklzzGyzHQShx+/N5I7TNSc1NSW/gf/2DqFKQQhl2NW4P9tG+UK kU2Dfe0zPsrfrO1vRk6RbU3t8FsexByjO6SzSw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1734353647; x= 1734440047; bh=vhSco4gcriDq04rx4WWzfriM2dprAZWnsff5e2aVQKE=; b=G sCBBJ2Qzv1mXfMWhOkzdefNkH3zr7AoLlT2IssJuFT5nja+qs7eugdEzpzB1L8T/ FOOzlMiZ1xU7ClzAdoRdsuQWwnTt42ERQXXddiG/Y65s+deUE5iWD7na976Scypg DffGboP8EKiMzrRpItNOuvAerfzqWQkjCHhbr/UnVGizlrEa3Glrcndj7gcp8X9o JPyG0cpHgGMnGEki8cCVYzXJMw+oBZNybO11xaugY45r915FWnjPRYWba2U0KXX8 CH6t454XsyT35q95kutXp4jRzUgkff7AMsq0pgHPTFdxCvW7b2RqsevRmdxd3Rul PQU0PIJnB9YsHxzDrkUJQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefuddrleefgdeghecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpggftfghnshhusghstghrihgsvgdpuffr tefokffrpgfnqfghnecuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnth hsucdlqddutddtmdenucfjughrpefhfffugggtgffkfhgjvfevofesthejredtredtjeen ucfhrhhomhepmfhlrghushculfgvnhhsvghnuceoihhtshesihhrrhgvlhgvvhgrnhhtrd gukheqnecuggftrfgrthhtvghrnhepkeeivddtueehffefuddtleefkefhiedttdduveeg gfffieetveffhfehgfeghfffnecuvehluhhsthgvrhfuihiivgepvdenucfrrghrrghmpe hmrghilhhfrhhomhepihhtshesihhrrhgvlhgvvhgrnhhtrdgukhdpnhgspghrtghpthht ohepiedpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtohepfhhoshhsseguvghfmhgrtg hrohdrihhtpdhrtghpthhtohepqhgvmhhuqdgslhhotghksehnohhnghhnuhdrohhrghdp rhgtphhtthhopehithhssehirhhrvghlvghvrghnthdrughkpdhrtghpthhtohepqhgvmh huqdguvghvvghlsehnohhnghhnuhdrohhrghdprhgtphhtthhopehksghushgthheskhgv rhhnvghlrdhorhhgpdhrtghpthhtohepkhdrjhgvnhhsvghnsehsrghmshhunhhgrdgtoh hm X-ME-Proxy: Feedback-ID: idc91472f:Fastmail From: Klaus Jensen Date: Mon, 16 Dec 2024 13:53:10 +0100 Subject: [PATCH 9/9] hw/nvme: remove nvme_aio_err() MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20241216-nvme-queue-v1-9-4e42212b92f7@samsung.com> References: <20241216-nvme-queue-v1-0-4e42212b92f7@samsung.com> In-Reply-To: <20241216-nvme-queue-v1-0-4e42212b92f7@samsung.com> To: Keith Busch , Klaus Jensen , Jesper Devantier , qemu-block@nongnu.org, qemu-devel@nongnu.org Cc: Klaus Jensen X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2663; i=k.jensen@samsung.com; h=from:subject:message-id; bh=6MFFr7ovftAu1ssrPvwHNYhO0kA83E792RYldng9RiQ=; b=LS0tLS1CRUdJTiBQR1AgTUVTU0FHRS0tLS0tCgpvd0o0bkFGdEFaTCtrQTBEQUFvQlRlR3ZNV zFQRGVrQnl5WmlBR2RnSXR0RUo4LzFKVjJTTFpRQW9jcjlId3V2CkhRWWhwRlQrNjY4eTFScHVI S2h1aG9rQk13UUFBUW9BSFJZaEJGSW9NNnAxNHR6bW9rZG13RTNocnpGdFR3M3AKQlFKbllDTGJ BQW9KRUUzaHJ6RnRUdzNweHNVSUFMUDlUMjFvRjk4cE9nRnc4SzZDMzdiUFk4NVNpQWVQcldkZA pOdW8wM2o4WVN3dkxzUHdWMlQ5aC9tNWgyZzF0QjYrcnEzdE14RnIyWVZaT2RyT2JBK28vdUNiU URQWW9xR3RtCmxRL0E4N3RIS3BoV2dQSUtaSEcxWlExZzFDZFlmdDc3NWl0NFVHYTRzT1BRSTdT YWxCYmhOVE5Ub2tQYVJKN0cKUlN3c1RWZDBMY2hrUGNoNGVMS0ZkdExXT1RYNUNleUZKemtBem5 BUHNVOXg2SFg1Qm1uYVBYZ2RvOEZ3VS80ZwovUWhwUjVJTmFRZSt4V0ltL1YzMDVPcHRKU0NiaU x1d0FBalRDT0dpYjJhakhQdHVkbUJjRGI5YldMTnpYNkdTCitZQXdrMldtOEExd1J1RmQ0UDNLT 1BrR3hpNm9kUFl4cDdmWHAxdHFOcy9WRGhTQTdib2srS2R1Cj1lZitTCi0tLS0tRU5EIFBHUCBN RVNTQUdFLS0tLS0K X-Developer-Key: i=k.jensen@samsung.com; a=openpgp; fpr=DDCA4D9C9EF931CC3468427263D56FC5E55DA838 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=lists.gnu.org; Received-SPF: pass client-ip=202.12.124.147; envelope-from=its@irrelevant.dk; helo=fout-b4-smtp.messagingengine.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 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 @irrelevant.dk) X-ZM-MESSAGEID: 1734353768987116600 From: Klaus Jensen nvme_rw_complete_cb() is the only remaining user of nvme_aio_err(), so open code the status code setting instead. Signed-off-by: Klaus Jensen Reviewed-by: Jesper Wendel Devantier --- hw/nvme/ctrl.c | 60 ++++++++++++++++++++++--------------------------------= ---- 1 file changed, 23 insertions(+), 37 deletions(-) diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c index 8192f92227d6509b8d15fde9d9197a59277eb86f..40f535b03316ed45f6cbb2894fd= 89f9ce258423e 100644 --- a/hw/nvme/ctrl.c +++ b/hw/nvme/ctrl.c @@ -1756,42 +1756,6 @@ static uint16_t nvme_check_dulbe(NvmeNamespace *ns, = uint64_t slba, return NVME_SUCCESS; } =20 -static void nvme_aio_err(NvmeRequest *req, int ret) -{ - uint16_t status =3D NVME_SUCCESS; - Error *local_err =3D NULL; - - switch (req->cmd.opcode) { - case NVME_CMD_READ: - status =3D NVME_UNRECOVERED_READ; - break; - case NVME_CMD_WRITE: - case NVME_CMD_WRITE_ZEROES: - case NVME_CMD_ZONE_APPEND: - case NVME_CMD_COPY: - status =3D NVME_WRITE_FAULT; - break; - default: - status =3D NVME_INTERNAL_DEV_ERROR; - break; - } - - trace_pci_nvme_err_aio(nvme_cid(req), strerror(-ret), status); - - error_setg_errno(&local_err, -ret, "aio failed"); - error_report_err(local_err); - - /* - * Set the command status code to the first encountered error but allo= w a - * subsequent Internal Device Error to trump it. - */ - if (req->status && status !=3D NVME_INTERNAL_DEV_ERROR) { - return; - } - - req->status =3D status; -} - static inline uint32_t nvme_zone_idx(NvmeNamespace *ns, uint64_t slba) { return ns->zone_size_log2 > 0 ? slba >> ns->zone_size_log2 : @@ -2176,8 +2140,30 @@ void nvme_rw_complete_cb(void *opaque, int ret) trace_pci_nvme_rw_complete_cb(nvme_cid(req), blk_name(blk)); =20 if (ret) { + Error *err =3D NULL; + block_acct_failed(stats, acct); - nvme_aio_err(req, ret); + + switch (req->cmd.opcode) { + case NVME_CMD_READ: + req->status =3D NVME_UNRECOVERED_READ; + break; + + case NVME_CMD_WRITE: + case NVME_CMD_WRITE_ZEROES: + case NVME_CMD_ZONE_APPEND: + req->status =3D NVME_WRITE_FAULT; + break; + + default: + req->status =3D NVME_INTERNAL_DEV_ERROR; + break; + } + + trace_pci_nvme_err_aio(nvme_cid(req), strerror(-ret), req->status); + + error_setg_errno(&err, -ret, "aio failed"); + error_report_err(err); } else { block_acct_done(stats, acct); } --=20 2.45.2 From nobody Wed Apr 9 01:11:20 2025 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; arc=pass (i=1 dmarc=pass fromdomain=oracle.com); dmarc=fail(p=reject dis=none) header.from=oracle.com ARC-Seal: i=2; a=rsa-sha256; t=1743789232; cv=pass; d=zohomail.com; s=zohoarc; b=iID7WDflo/g+Z5wRqm2zSFwX5icEDTc9uJ7a5p8jY2gKpq7IJ0hyQ9j3chAfzT4FjyT0Czm6w2VR+lD91UU6WUiCIAlwn0KBdieH6N+1rQ4i9O3TMdWt3Kz1TIJC65G6tW/rwBQYguyXtfqTkwYPK9NkOv7P52R2kG70VHuYZoA= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1743789232; 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=vzV8g9fJPZGF77ua2zGkv53ILveshittuorSGiKk7UI=; b=BBdHOTjbVEDLWC0raE0GVwNC2dAveDnrxiSGI+qwEzdaI71PH9zewVFDTyShMYJgIjwHy5jvudH3gXXLFwzD7MzFeMe3rmP/dupSSjthFJHs4Gd7IigldBIFZLuj7SUxupWFwrCbyCMbK1Pk8HR7UKBM1eo9ew8i3pq+FlKITgU= ARC-Authentication-Results: i=2; 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; arc=pass (i=1 dmarc=pass fromdomain=oracle.com); dmarc=fail header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1743789232529237.70402152569307; Fri, 4 Apr 2025 10:53:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u0lDo-0006IO-E5; Fri, 04 Apr 2025 13:52:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1u0lDc-0006Co-7J; Fri, 04 Apr 2025 13:52:43 -0400 Received: from mx0b-00069f02.pphosted.com ([205.220.177.32]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1u0lDW-00046D-59; Fri, 04 Apr 2025 13:52:39 -0400 Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 534Du3b2012162; Fri, 4 Apr 2025 17:52:19 GMT Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 45p8fsfwn5-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 04 Apr 2025 17:52:19 +0000 (GMT) Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 534GbtTK036168; Fri, 4 Apr 2025 17:52:19 GMT Received: from nam11-bn8-obe.outbound.protection.outlook.com (mail-bn8nam11lp2170.outbound.protection.outlook.com [104.47.58.170]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 45t2nuc8ny-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 04 Apr 2025 17:52:18 +0000 Received: from SA1SPRMB0044.namprd10.prod.outlook.com (2603:10b6:806:33a::9) by SA1PR10MB5759.namprd10.prod.outlook.com (2603:10b6:806:23d::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8583.35; Fri, 4 Apr 2025 17:52:17 +0000 Received: from SA1SPRMB0044.namprd10.prod.outlook.com ([fe80::8263:a1ff:1b60:b0f7]) by SA1SPRMB0044.namprd10.prod.outlook.com ([fe80::8263:a1ff:1b60:b0f7%4]) with mapi id 15.20.8511.028; Fri, 4 Apr 2025 17:52:17 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2023-11-20; bh=vzV8g9fJPZGF77ua2zGkv53ILveshittuorSGiKk7UI=; b= nmEnrLiZUz4zOkRKPNLV9PGxAx+eFkWQLdRdgrfJV2rfPn5ZxHtb1K+wkNOl3TdJ T6HGWmnmoRNjyrjBb7N70gde76Dqv6u64N2Y2jdo7UsYKmNkETebgjINGIhQX6mj JPVpdo5pZlYNIW8erZZD25pjvWFno8NBk98ES4nVhCDc4cwj74RDto8LE5HXtFNp qCddBX+TeJm/OYxPmFNiOMsAnYqbTS7zB8SSFgoGfalZZogGsjnUjcULYN9CO1zj PfGeigZ49NtgF0dmSJmaOEIUHmBl+yoGKnZPS3vO1xknyoaV+C1XSDQCiUc9niHJ uCo+eT+pLxeWvRXbaRk0DA== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=JnNL6k5gyiBka2SHeoH0xXL29WN0O2h3gXCkU1md71r2QXbUZL+fZC2AzW84COhFSnJeBHlLxjDqJ4alAdEFmOhe5cRn6tpm0gOkRo5RP2GOTGobubDe9GmJbyQhCkW15dEjBVmkFhSwoVLxJ0hA+GgZTDMk0R+RWS3c85sY++E2gjSUSEhgzUN/ft3gc5tn3ZfbQ6JE6Dfxzf/nxKg2aaGk1gR91p/XivRPntr5rukmTdRvDPaydo/FgNbkYwLUpTtzvRtu11PrW/g5B1vmQ6QR51Ir/CQ6fD5WoM5KfPEL+/56bG6lSr4xQ9tdQdoAiDzYoC+x7WI0Mvgz6Yysdg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=vzV8g9fJPZGF77ua2zGkv53ILveshittuorSGiKk7UI=; b=o9JHXRiLVkdj0bUakOfuTMyo2qZcPAsR1z0dvbhDiW+wLNz3HYmT6s4Xa94z5ppVduZ/f4uBkZil5+yDsE1OzOcFGfrLjO27SYTWcpLHHWQPTe4srZ5/y8CoyG2JO1tKffCpsQyObGaRqf90zGHP6rAdGgjFYtXbaJzf8DIZdCbTCrOHJWW3QbmPmkuTXNb33/odw9dXLQMC75zROXrxCxZDdt4uYskmqlVMwHUiV5w582UYKQygBF6ujOjDDNKm6dxAbH6KeoOXWZi8+XICB4Brke2pNZkBgd2hKhNk/7BDPzkH2Bd12kI8r765RVeK/uXEUmalRsk60+q/HOd+Cg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vzV8g9fJPZGF77ua2zGkv53ILveshittuorSGiKk7UI=; b=tCfutWILXXjHRhhZftvCqOexJB/7SjMNy+A0pPY/V/rUe0FJ4qdOwbqyReSzNDLAxvp20imbKLRxqZ+tJTt2AOXS0pA18mS46MdgW/fp+fgkZctsBLTlud3PSvEONOsgPOf2dv/LxRs1ZkjvZ3SvlqyJpr7E5nakWJg64Cw8w5I= Message-ID: <0e1a7bfd-ac33-4779-928c-bb486b878bcf@oracle.com> Date: Fri, 4 Apr 2025 10:52:13 -0700 User-Agent: Mozilla Thunderbird Subject: hw/nvme: Issue with multiple controllers behind a subsystem To: Klaus Jensen , Keith Busch , Jesper Devantier , qemu-block@nongnu.org, qemu-devel@nongnu.org Cc: alan.adamson@oracle.com References: <20241216-nvme-queue-v1-0-4e42212b92f7@samsung.com> Content-Language: en-US From: alan.adamson@oracle.com In-Reply-To: <20241216-nvme-queue-v1-0-4e42212b92f7@samsung.com> Content-Type: text/plain; charset="utf-8"; format="flowed" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MN2PR03CA0026.namprd03.prod.outlook.com (2603:10b6:208:23a::31) To SA1SPRMB0044.namprd10.prod.outlook.com (2603:10b6:806:33a::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA1SPRMB0044:EE_|SA1PR10MB5759:EE_ X-MS-Office365-Filtering-Correlation-Id: 2f7dcb74-9096-42ac-3a28-08dd73a1705e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?U0pUT0grTDJ2ek5rbXNKc1AzcmxBTVdYaElMb0syRXovam5ESFhLYmU3Nk5v?= =?utf-8?B?YkVyelc3Wm9BTmhMbG9Fa09FWmo0YUNVOHRZdDJnM3Z2dlFXaWZhY1Z1SjhZ?= =?utf-8?B?bUthb2dqeE5BRlkxOWc3S1l3OXBLWjFHRGEweVNoYllVeXIrOGhwZHZaWUJQ?= =?utf-8?B?OUFDUng1Q1FTeUhOUWNaT1pITXRnbnFaT1BiZ3Byck5hNFppS0Z5NnFNRHBS?= =?utf-8?B?OGJlOE94c1p4OTBkSUxkR2RCQUhTQUZCZ0ltYU5Hb1RGZkpxOU1ZWjMzYWZm?= =?utf-8?B?RHpHZUhuUTY4ODlwZDVoUUh5Z2FITHU1V3dQSnVmU0hOc2pqd1pRQU5vQng4?= =?utf-8?B?L0dzWVhBRnR1ZkxGZllwVEd6Q2ZpZ3crWFM2YWJLZFI3NkpTbE8yRHl2bE9G?= =?utf-8?B?UHllazBYVGxKaENtQUJPM2I4L21SeG81WGIxUVU0OWR3WGNTTlNkTGNVMnhr?= =?utf-8?B?NmE0MGNsajhkZVhLZkZXV1NuQ01VOHJZSWJvbTd1TTJDeFlnS0FvT2pzVUhm?= =?utf-8?B?ZDB3ZnlHcEs2bHhPcHVFbXVJajQ2L3RlUzY0eDNUWW5oNW5IUWwzdjRMUnRW?= =?utf-8?B?VkZyQjhyVmFvY3VRcyt0VjhHYXUzUWlvM1NKRVBQNnd0dHBoS25YVFJFc3Q1?= =?utf-8?B?cVhiSmRIbndpSE5EeTQ1NW5RSEYxUUhnR0FFbVNkSXdkdzRTRmN3dlB3elR6?= =?utf-8?B?SHpPenJwSDEzNUY4QzNWNHJPNVBHa2V1SWFVbEVHTHFsb1lnbmtMdEJ2clpm?= =?utf-8?B?OWpxQlVTLzh3TjVyTSttVkh0UU1ZbUhXamZuZFNDTUNxdENLcS9lYTlHU0Ux?= =?utf-8?B?c3FDczZxQ1FscTV0aEVjeGc2Z3pJU1F0bG9nazlsM2hFbVVhNWtJVTZMaFVH?= =?utf-8?B?RGJHK2NsRTJVbkdLTC9odDJiVnpOMHVjam9EUzZ4QXpGVWF0UnM4eExsR2pY?= =?utf-8?B?RThvYlBCN2pzUDI3WmdzS0N3MEFIakFqbi9VNEhPTTBHT2tsRkxKbWljNkhH?= =?utf-8?B?SWQ5N2hJbnVmSkU5RlNoUkhtUWJrVUt1bFdNTVVMMFVJVThoMFNZRjVHaHpI?= =?utf-8?B?QWlKRGxDLzMwSFNleVJUZUxuVXdmaDhxQkdlaDFzVXYyQTNNN0w2MWJJd0dF?= =?utf-8?B?NFBhWUJwY0I2Qyt0dy96TzlpM3ZQYnlEZ1pYS1lNa291SndSa1ZrSDNPNFdQ?= =?utf-8?B?NGZUd0xDa1dSRlBpZGhEWjVscXQ5V1BMZEM3TTBxSVJSd0lvVnlIWjJYZmJy?= =?utf-8?B?OXVjWlBkOTlScHNhdHJMK2lFeTkveGpkdFpiRE9lVDhqb1ExWmFvYUxyam44?= =?utf-8?B?cnpENGlvM1hDUmhqcmNBbjE0dGxIUnlFLys2QXdZMWZ1dnZqV1NDVkRDeFRV?= =?utf-8?B?OU9PRzBVb0VLdVlBWS82VGhUcU9RNXJNblVPdjVhRXE5ZXQ1R1hsTTYzd3M0?= =?utf-8?B?YWN1Zk93UlUxN2w5ek9PakdnS0ZyUjl5NE1ocmJhY25RSXVMREY4UzFTWmJ5?= =?utf-8?B?NmpUazVvRktmVnRoUmVVQm1GS2xjWUtNZWkvOUZDOXc3WDU3UmhmL1VucklM?= =?utf-8?B?YS92OFNjOCtQaE5NN2EvdzNrZWpPNlpNNmZtcEVRNUJtRk8yRHpjWHgxNXlK?= =?utf-8?B?YjU3Wnh5ZUpHOStzYzR5Zy9nNDVPdDJmU1FEdC9OdmkvUllranM0cW91NmhK?= =?utf-8?B?KzFSM0FzNUV1WHFzaTR4ZFZvaGw2NmF1MUhPek1kc3JrR2orRVMrcjdRZVBo?= =?utf-8?B?MkEyZkRMcmlaQWdQUVNhS2NlNmhDcy9yQVplRVRuR3hZeUpwUVgzNkh1UnRs?= =?utf-8?B?RHJRaUh6NnUvSDZiMkVSQXRFOWFEY1BJYzVVMTJ3NEhhZVZHa3B3TkZDZ0Qw?= =?utf-8?Q?TiWjH3uh4LjxK?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SA1SPRMB0044.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(1800799024)(376014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Y01XU1JsSFV5dU1JNXZoYll0alNFZ3pUTWZhTzF0LzBudXlrUWl5K1BYM2Rz?= =?utf-8?B?ZmJkVXR4anNDZEZhTnpuUmhoeDE1WnVEOXhDWVd0NGQvdFI4ZTYyeVNxRHRC?= =?utf-8?B?VWhQRm5BV2JPZng2SzI3V2l0Y2Y3MHZOSWF3UkFJWmhiVlpTRnFhVVpBNFVv?= =?utf-8?B?bXF4TXY3MFVWSFJRSmJUMVduYXQ4ZmxMdzN0VDlhOE1OMC9XWUFKei9RV0VS?= =?utf-8?B?ZFUzN0F1eVBjQXNrTFZBNnJCUFREK2YzeUUxUE5QUzY1eFdpSG00aVBTQ1pQ?= =?utf-8?B?WmVFMEJqRWhtcXNRMXd0L2ttZWE2Y3ZPR25PWlFiM0oxa2tVU0dWODdoNWpJ?= =?utf-8?B?Ty90eThnbkpWTHFneEpmWDZyemFicXZVZXhqbFIyYWh2ZmRiR2lvKytBR3pr?= =?utf-8?B?TnNuOUlBZnBvRXphTktkT09xTVJwTSt1TUg0QUJvT09TN1NRa0tCS0JJbUtU?= =?utf-8?B?MHZab3hGVmYyVDU5dFRhV2I5WFc4TWZVQlBCQXdvOTBZTTRUVTA0VEVxNnVZ?= =?utf-8?B?emJmUEF4SHF4UENURWFUSHI5NXRrYXhleUEwRHAyMHFhN21jUmJXTGNNWnJv?= =?utf-8?B?YUdUcEhjRzMvcDUzR0ZQUDBiaWs5WE5LOG1idDVMOE9EWkY1MjdlaWdwdmIz?= =?utf-8?B?WlQxSXI4Uzc5RDJXRm44a0dUTGppMG4xQkdNbGFQRDZ0cWFYQ0R2Skh6TGtj?= =?utf-8?B?ZVBad2I3bnR2eFR4eE85TTRlb05rWTFGS3FnZnBjbHo1M3hNRFdLdDV4VFVh?= =?utf-8?B?V2hsVGozN0xTellQMU95dkdDKzZjTkVHYW55THNVQ25NMi8va0k5c0FtVlJW?= =?utf-8?B?SmJuMGQ4TngrRHErZzlnd1Jlc2hTOUFQOUwwd2dLYTNRRGxXOGZuMmNWeVRi?= =?utf-8?B?dW5lZlhwZFpNM09GeVZFOXFtTGRqK2NBQkpQeXg0ZGo1aFdpdy9id3VOcWNz?= =?utf-8?B?Wk81UFBNQ2dKODl0ZGpmNFU4bXJySWhYc1NyenpjRTVoVXVFdk4xa3NEbE5D?= =?utf-8?B?UDcxQlU4ajVwc3NiUExqUGJqOXE1eUoyNnlJbDVyRWxYb2VYelBYU1ZTWXh1?= =?utf-8?B?cW11VmpZWlFBc2dBSnNOcFVDaGVRZDA3a1FmeTFuUTBDd1p1cTlNV2xCS1Jz?= =?utf-8?B?MEFsS2VhdytVSktHWmZ1WG8yQlJacmlOd3dySnBFaTFPL3hiSFVuVk9WOW9V?= =?utf-8?B?dEIzcCtoSFFPQ1Z1MmZJU1Q0WmZZcXZBTUJiSFdZZmNxUlN6bzRyVkxVVGRK?= =?utf-8?B?ZDNScXprNzdrYkJVbzVaRHRkTXAyVkdRZ04xbHhOZnd4T1M1Mk9JK2lKWUxS?= =?utf-8?B?bllrcUpya0ZQUVdTcEdjcEhWOVdhRC9VR29PMXFWRHpQckJvTzh4cUN3U256?= =?utf-8?B?QVZWWkNCVDFlRy9xa2FYVzNYQ01pcXJVcUwxN1lYSy9nekVTMFFJeTNUVFZm?= =?utf-8?B?TUUwQlZ0SVB4MURWWDBwVG55aVFzZUpwRnZKV00yY3BDTnArK1lNZkFJSE9O?= =?utf-8?B?Q2huNjduek5EY3JuU0ZpdnJPdlcvODFOL25zYUtzZlpLODlxV252dTJ1bks1?= =?utf-8?B?bTdZWUxWQW45M3JXSGxsM3E3VUpiZkxVaEROakpmN1BiNmlFd280aUpnUWE0?= =?utf-8?B?Q251STBMRmFhT3dldVNPWCs1emM5NG4zRW0xcWVQS2Z4WVZGVXd1d2doZ1dF?= =?utf-8?B?ZkFaelJqZDdUWndnQk8zRW5mdkt6TXQ0SUhLUitXOVJRMVQyVFdwdE5BUFU5?= =?utf-8?B?S0NjZjVJWDlod1JrYXdNQVlaU2paRVVSU2VXdHFvZnV3MHlpMGF3ZmdST3RO?= =?utf-8?B?RWxIdkVvUFhlRFAyYThIWlJtVGg4eWhHMFVhY1BTR25JS3dSd3lScjdHckJm?= =?utf-8?B?THlsQnJ6S3FuRkF2YkFyb28xbUxhK3FzQmFxbVM3eS9tR1JtUVFFTDQ5QnVx?= =?utf-8?B?SUZreCtDTFc5cXVBeXhjZkJjMUtLWkR6RUw4VFBWbVZ0SG5CVjRjMGttVkh2?= =?utf-8?B?MlcyZmsvK1VyRVdsSzBnRVNkSWJ6WE9QbFcxaHZKazFKcmFpdGd0ZXYrNW93?= =?utf-8?B?MkZyZ3l3R21iSUhFVUd6MytyN0JyRTZlc3RuV2NVWDVtcVNpbUhoVmhXZXNR?= =?utf-8?B?NGJ0YXNVRk56d290bFN3SVRNUUVLL0p2QW1WRXpXV2dCTHo0aHpnVG1yOTVp?= =?utf-8?B?c1E9PQ==?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: TgRt/v/ZTUxU/W+WSUuqravLVUlRoJKy+HGArFfaLwbRydRivUUiSCH7Dzk4T5SkrwWGhgpypFhc3z8v1L/GMn4rkeIDiSMzqIEgxVh0+OH0OCnABdyBWRGNjzJ5CebL7qttfoX0shVbMS1lStXG2MZ6BB0nW61MEoUaYHzGv5ryjACq4RdAJ64+v+sO5o+VvwH0HjylYsLmj8DUZNc9agK9CBCrRbpLYuCgHVF2nk+lwWz0Y7Qa8ZyHmfnLh0nrHn/Vew6lwtaHUtcY6jhZvWAGbrpys9SyAQc2KeFuFKxA5uoQX+LYMchbtOORtMih6MU8goCYPD2ATWjclJqoYL54bxHu3dLpKjD8pCULN5RKv7RjhIXcGqs+KT0yozVJb6E4xUiOHHE5F1bQkAH4L3Q6SZszI8sbe7FL4/KWG5hQexTjEGQ/7UxW+LSzZx8I/WfLAowHRViIo5tig7Bmy3XhI0qZYq/jxDN9zURTvsKqr9frz7mE3Q5UB4RNDAbS5Ggq2Wyus16AFMUXThKDIfELaTCzkYFcfNffhLydDe8P9TrJOuuMX4DVP5EeIA2i9mVaTCR+NGdi3STm42UZGP6GAz+AUsujGmkkjf9N3is= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2f7dcb74-9096-42ac-3a28-08dd73a1705e X-MS-Exchange-CrossTenant-AuthSource: SA1SPRMB0044.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Apr 2025 17:52:17.1515 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 96mUfe7YKpCANNy0LrCj2jtkIXo7avyiUapltFRlNH8AdcoLRuH0KKZJSd0fImbCZcppJIa40CwjwO9q6xgZzA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR10MB5759 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1095,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-04-04_07,2025-04-03_03,2024-11-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 mlxscore=0 adultscore=0 suspectscore=0 spamscore=0 phishscore=0 bulkscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2502280000 definitions=main-2504040123 X-Proofpoint-ORIG-GUID: zt4DRkUarN5hnT-XXoTkmc7cyel8pE4- X-Proofpoint-GUID: zt4DRkUarN5hnT-XXoTkmc7cyel8pE4- 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=lists.gnu.org; Received-SPF: pass client-ip=205.220.177.32; envelope-from=alan.adamson@oracle.com; helo=mx0b-00069f02.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, 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: 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 @oracle.onmicrosoft.com) X-ZM-MESSAGEID: 1743789234295019000 I'm running into a issue with the latest qemu-nvme with v10.0.0-rc2 with=20 regards to multiple controllers behind a subsystem.=C2=A0 When I setup a=20 subsystem with 2 controllers, each with a private/non-shared namespace,=20 the two private/non-shared namespaces all get attached to one of the=20 controllers. I'm sending out diffs that resolve the problem but would like to get=20 some feedback before sending a formal patch. See below. Thanks, Alan Adamson [root@localhost qemu-subsys]# git describe v10.0.0-rc2 [root@localhost qemu-subsys]# QEMU NVMe Config =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D -device nvme-subsys,id=3Dsubsys0 \ -device=20 nvme,serial=3Ddeadbeef,id=3Dnvme0,subsys=3Dsubsys0,atomic.dn=3Doff,atomic.a= wun=3D31,atomic.awupf=3D15=20 \ -device=20 nvme,serial=3Ddeadbeef,id=3Dnvme1,subsys=3Dsubsys0,atomic.dn=3Doff,atomic.a= wun=3D127,atomic.awupf=3D63=20 \ -drive id=3Dns1,file=3D/dev/nullb3,if=3Dnone \ -drive id=3Dns2,file=3D/dev/nullb2,if=3Dnone \ -drive id=3Dns3,file=3D/dev/nullb1,if=3Dnone \ -device nvme-ns,drive=3Dns1,bus=3Dnvme0,nsid=3D1,shared=3Dfalse \ -device nvme-ns,drive=3Dns2,bus=3Dnvme1,nsid=3D2,shared=3Dfalse \ -device nvme-ns,drive=3Dns3,bus=3Dnvme1,nsid=3D3,shared=3Dtrue=C2=A0 \ 1 Subsystem (subsys0) =C2=A0=C2=A0=C2=A0 2 Controllers (nvme0/nvme1) nvme0 =C2=A0=C2=A0=C2=A0 private namespace (nsid=3D1) =C2=A0=C2=A0=C2=A0 shared namespace (nsid=3D3) nvme1 =C2=A0=C2=A0=C2=A0 private namespace (nsid=3D2) =C2=A0=C2=A0=C2=A0 shared namespace (nsid=3D3) What Linux is seeing =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D [root@localhost ~]# nvme list -v Subsystem Subsystem-NQN Controllers Reviewed-by: Jesper Wendel Devantier ----------------=20 ---------------------------------------------------------------------------= ---------------------=20 ---------------- nvme-subsys1 nqn.2019-08.org.qemu:subsys0 nvme0, nvme1 Device=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 Cntlid S= N MN=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=20 FR=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 TxPort Address=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0 Slot=C2=A0=C2=A0 Subsystem=C2=A0=C2=A0=C2=A0 Namespac= es ---------------- ------ --------------------=20 ---------------------------------------- -------- ------ --------------=20 ------ ------------ ---------------- nvme0=C2=A0=C2=A0=C2=A0 0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 deadbeef=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 QEMU NVMe=20 Ctrl=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0 9.2.92=C2=A0=C2=A0 pcie=C2=A0=C2=A0 0000:00:04.0=C2=A0=C2=A0 4=20 nvme-subsys1 nvme1n1, nvme1n2, nvme1n3 nvme1=C2=A0=C2=A0=C2=A0 1=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 deadbeef=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 QEMU NVMe=20 Ctrl=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0 9.2.92=C2=A0=C2=A0 pcie=C2=A0=C2=A0 0000:00:05.0=C2=A0=C2=A0 5=20 nvme-subsys1 nvme1n1 Device=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 Ge= neric=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 NSID Usag= e=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=20 Format=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 Controll= ers ----------------- ----------------- ----------=20 -------------------------- ---------------- ---------------- /dev/nvme1n1 /dev/ng1n1=C2=A0=C2=A0 0x3=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0 268.44=C2=A0 GB / 268.44=C2=A0 GB 512=C2=A0=C2=A0 B +=C2=A0=20 0 B=C2=A0=C2=A0 nvme0, nvme1 /dev/nvme1n2 /dev/ng1n2=C2=A0=C2=A0 0x2=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0 268.44=C2=A0 GB / 268.44=C2=A0 GB 512=C2=A0=C2=A0 B +=C2=A0=20 0 B=C2=A0=C2=A0 nvme0 /dev/nvme1n3 /dev/ng1n3=C2=A0=C2=A0 0x1=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0 268.44=C2=A0 GB / 268.44=C2=A0 GB 512=C2=A0=C2=A0 B +=C2=A0=20 0 B=C2=A0=C2=A0 nvme0 [root@localhost ~]# nvme id-ctrl /dev/nvme1n2 |=C2=A0 grep awupf awupf=C2=A0=C2=A0=C2=A0=C2=A0 : 15 [root@localhost ~]# nvme id-ctrl /dev/nvme1n3 |=C2=A0 grep awupf awupf=C2=A0=C2=A0=C2=A0=C2=A0 : 15 [root@localhost ~]# =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Both private namspaces are being attached to the same controller (nvme0) Fix =3D=3D=3D Need to keep track of the controller that registers a namespace with the=20 subsystem and only allow other controllers to attach to the namespace if it is shared. Non-shared namespaces can only be attached to a controller than=20 registers it. Proposal =3D=3D=3D=3D=3D=3D=3D=3D diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c index 518d02dc6670..883d8d4722fd 100644 --- a/hw/nvme/ctrl.c +++ b/hw/nvme/ctrl.c @@ -5063,7 +5063,8 @@ static uint16_t nvme_endgrp_info(NvmeCtrl *n,=20 uint8_t rae, uint32_t buf_len, =C2=A0=C2=A0=C2=A0=C2=A0 } =C2=A0=C2=A0=C2=A0=C2=A0 for (i =3D 1; i <=3D NVME_MAX_NAMESPACES; i++) { -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 NvmeNamespace *ns =3D nvme_subs= ys_ns(n->subsys, i); +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 NvmeNamespace *ns =3D nvme_subs= ys_ns(n, i); + =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if (!ns) { =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 c= ontinue; =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 } @@ -5700,7 +5701,7 @@ static uint16_t nvme_identify_ns(NvmeCtrl *n,=20 NvmeRequest *req, bool active) =C2=A0=C2=A0=C2=A0=C2=A0 ns =3D nvme_ns(n, nsid); =C2=A0=C2=A0=C2=A0=C2=A0 if (unlikely(!ns)) { =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if (!active) { -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ns =3D = nvme_subsys_ns(n->subsys, nsid); +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ns =3D = nvme_subsys_ns(n, nsid); =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 i= f (!ns) { [root@localhost qemu-subsys]# git log -p=20 f4b9f10a80c30f1d6b9850d476eb8226bda3f553 > /tmp/p ^C [root@localhost qemu-subsys]# vi /tmp/p [root@localhost qemu-subsys]# cat /tmp/p commit f4b9f10a80c30f1d6b9850d476eb8226bda3f553 Author: Alan Adamson Date:=C2=A0=C2=A0 2025-04-03 14:10:30 -0400 =C2=A0=C2=A0=C2=A0 subsys multi controller shared fix diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c index 518d02dc6670..883d8d4722fd 100644 --- a/hw/nvme/ctrl.c +++ b/hw/nvme/ctrl.c @@ -5063,7 +5063,8 @@ static uint16_t nvme_endgrp_info(NvmeCtrl *n,=20 uint8_t rae, uint32_t buf_len, =C2=A0=C2=A0=C2=A0=C2=A0 } =C2=A0=C2=A0=C2=A0=C2=A0 for (i =3D 1; i <=3D NVME_MAX_NAMESPACES; i++) { -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 NvmeNamespace *ns =3D nvme_subs= ys_ns(n->subsys, i); +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 NvmeNamespace *ns =3D nvme_subs= ys_ns(n, i); + =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if (!ns) { =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 c= ontinue; =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 } @@ -5700,7 +5701,7 @@ static uint16_t nvme_identify_ns(NvmeCtrl *n,=20 NvmeRequest *req, bool active) =C2=A0=C2=A0=C2=A0=C2=A0 ns =3D nvme_ns(n, nsid); =C2=A0=C2=A0=C2=A0=C2=A0 if (unlikely(!ns)) { =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if (!active) { -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ns =3D = nvme_subsys_ns(n->subsys, nsid); +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ns =3D = nvme_subsys_ns(n, nsid); =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 i= f (!ns) { =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0 return nvme_rpt_empty_id_struct(n, req); =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 } @@ -5739,7 +5740,7 @@ static uint16_t nvme_identify_ctrl_list(NvmeCtrl=20 *n, NvmeRequest *req, =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 r= eturn NVME_INVALID_FIELD | NVME_DNR; =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 } -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ns =3D nvme_subsys_ns(n->subsys= , nsid); +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ns =3D nvme_subsys_ns(n, nsid); =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if (!ns) { =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 r= eturn NVME_INVALID_FIELD | NVME_DNR; =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 } @@ -5809,7 +5810,7 @@ static uint16_t nvme_identify_ns_ind(NvmeCtrl *n,=20 NvmeRequest *req, bool alloc) =C2=A0=C2=A0=C2=A0=C2=A0 ns =3D nvme_ns(n, nsid); =C2=A0=C2=A0=C2=A0=C2=A0 if (unlikely(!ns)) { =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if (alloc) { -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ns =3D = nvme_subsys_ns(n->subsys, nsid); +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ns =3D = nvme_subsys_ns(n, nsid); =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 i= f (!ns) { =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0 return nvme_rpt_empty_id_struct(n, req); =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 } @@ -5837,7 +5838,7 @@ static uint16_t nvme_identify_ns_csi(NvmeCtrl *n,=20 NvmeRequest *req, =C2=A0=C2=A0=C2=A0=C2=A0 ns =3D nvme_ns(n, nsid); =C2=A0=C2=A0=C2=A0=C2=A0 if (unlikely(!ns)) { =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if (!active) { -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ns =3D = nvme_subsys_ns(n->subsys, nsid); +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ns =3D = nvme_subsys_ns(n, nsid); =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 i= f (!ns) { =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0 return nvme_rpt_empty_id_struct(n, req); =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 } @@ -5884,7 +5885,7 @@ static uint16_t nvme_identify_nslist(NvmeCtrl *n,=20 NvmeRequest *req, =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ns =3D nvme_ns(n, i); =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if (!ns) { =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 i= f (!active) { -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 ns =3D nvme_subsys_ns(n->subsys, i); +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 ns =3D nvme_subsys_ns(n, i); =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0 if (!ns) { =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 continue; =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0 } @@ -5932,7 +5933,7 @@ static uint16_t nvme_identify_nslist_csi(NvmeCtrl=20 *n, NvmeRequest *req, =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ns =3D nvme_ns(n, i); =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if (!ns) { =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 i= f (!active) { -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 ns =3D nvme_subsys_ns(n->subsys, i); +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 ns =3D nvme_subsys_ns(n, i); =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0 if (!ns) { =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 continue; =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0 } @@ -6793,7 +6794,7 @@ static uint16_t nvme_ns_attachment(NvmeCtrl *n,=20 NvmeRequest *req) =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return NVME_INVALID_NSID = | NVME_DNR; =C2=A0=C2=A0=C2=A0=C2=A0 } -=C2=A0=C2=A0=C2=A0 ns =3D nvme_subsys_ns(n->subsys, nsid); +=C2=A0=C2=A0=C2=A0 ns =3D nvme_subsys_ns(n, nsid); =C2=A0=C2=A0=C2=A0=C2=A0 if (!ns) { =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return NVME_INVALID_FIELD= | NVME_DNR; =C2=A0=C2=A0=C2=A0=C2=A0 } @@ -7751,17 +7752,23 @@ static int nvme_start_ctrl(NvmeCtrl *n) =C2=A0=C2=A0=C2=A0=C2=A0 nvme_set_timestamp(n, 0ULL); -=C2=A0=C2=A0=C2=A0 /* verify that the command sets of attached namespaces = are supported */ -=C2=A0=C2=A0=C2=A0 for (int i =3D 1; i <=3D NVME_MAX_NAMESPACES; i++) { -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 NvmeNamespace *ns =3D nvme_subs= ys_ns(n->subsys, i); +=C2=A0=C2=A0=C2=A0 if (n->subsys) { +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 for (int i =3D 1; i <=3D NVME_M= AX_NAMESPACES; i++) { +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 NvmeNamespace *ns =3D n->subsys= ->namespaces[i].namespace; -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if (ns && nvme_csi_supported(n,= ns->csi) && !ns->params.detached) { -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if (!ns= ->attached || ns->params.shared) { -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 nvme_attach_ns(n, ns); +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if (!ns) { +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 continue; =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 } +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if (!(n->subsys->namespaces[i].= ctrl =3D=3D n) && !ns->params.shared) { +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 continue; +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 } +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if (nvme_csi_supported(n, ns->c= si) && !ns->params.detached) { +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 if (!ns->attached || ns->params.shared) { +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 nvme_at= tach_ns(n, ns); +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 } +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 } =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 } =C2=A0=C2=A0=C2=A0=C2=A0 } - =C2=A0=C2=A0=C2=A0=C2=A0 nvme_update_dsm_limits(n, NULL); =C2=A0=C2=A0=C2=A0=C2=A0 return 0; @@ -8993,7 +9000,8 @@ static void nvme_realize(PCIDevice *pci_dev, Error=20 **errp) =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 r= eturn; =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 } -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 n->subsys->namespaces[ns->param= s.nsid] =3D ns; +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 n->subsys->namespaces[ns->param= s.nsid].namespace =3D ns; +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 n->subsys->namespaces[ns->param= s.nsid].ctrl =3D n; =C2=A0=C2=A0=C2=A0=C2=A0 } =C2=A0} diff --git a/hw/nvme/ns.c b/hw/nvme/ns.c index 98c1e75a5d29..9cca699b354f 100644 --- a/hw/nvme/ns.c +++ b/hw/nvme/ns.c @@ -742,7 +742,7 @@ static void nvme_ns_realize(DeviceState *dev, Error=20 **errp) =C2=A0=C2=A0=C2=A0=C2=A0 if (!nsid) { =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 for (i =3D 1; i <=3D NVME= _MAX_NAMESPACES; i++) { -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if (nvm= e_subsys_ns(subsys, i)) { +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if (nvm= e_subsys_ns(n, i)) { =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0 continue; =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 } @@ -754,12 +754,13 @@ static void nvme_ns_realize(DeviceState *dev,=20 Error **errp) =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 e= rror_setg(errp, "no free namespace id"); =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 r= eturn; =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 } -=C2=A0=C2=A0=C2=A0 } else if (nvme_subsys_ns(subsys, nsid)) { +=C2=A0=C2=A0=C2=A0 } else if (nvme_subsys_ns(n, nsid)) { =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 error_setg(errp, "namespa= ce id '%d' already allocated", nsid); =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return; =C2=A0=C2=A0=C2=A0=C2=A0 } -=C2=A0=C2=A0=C2=A0 subsys->namespaces[nsid] =3D ns; +=C2=A0=C2=A0=C2=A0 subsys->namespaces[nsid].namespace =3D ns; +=C2=A0=C2=A0=C2=A0 subsys->namespaces[nsid].ctrl =3D n; =C2=A0=C2=A0=C2=A0=C2=A0 ns->id_ns.endgid =3D cpu_to_le16(0x1); =C2=A0=C2=A0=C2=A0=C2=A0 ns->id_ns_ind.endgrpid =3D cpu_to_le16(0x1); diff --git a/hw/nvme/nvme.h b/hw/nvme/nvme.h index 6f782ba18826..bea3b96a6dfa 100644 --- a/hw/nvme/nvme.h +++ b/hw/nvme/nvme.h @@ -97,6 +97,11 @@ typedef struct NvmeEnduranceGroup { =C2=A0=C2=A0=C2=A0=C2=A0 } fdp; =C2=A0} NvmeEnduranceGroup; +typedef struct Namespaces { +=C2=A0=C2=A0=C2=A0 NvmeCtrl=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0 *ctrl; +=C2=A0=C2=A0=C2=A0 NvmeNamespace=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 *namespace; +} Namespaces; + =C2=A0typedef struct NvmeSubsystem { =C2=A0=C2=A0=C2=A0=C2=A0 DeviceState parent_obj; =C2=A0=C2=A0=C2=A0=C2=A0 NvmeBus=C2=A0=C2=A0=C2=A0=C2=A0 bus; @@ -104,7 +109,7 @@ typedef struct NvmeSubsystem { =C2=A0=C2=A0=C2=A0=C2=A0 char=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 *s= erial; =C2=A0=C2=A0=C2=A0=C2=A0 NvmeCtrl=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0 *ctrls[NVME_MAX_CONTROLLERS]; -=C2=A0=C2=A0=C2=A0 NvmeNamespace=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 *namespaces= [NVME_MAX_NAMESPACES + 1]; +=C2=A0=C2=A0=C2=A0 Namespaces=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0 namespaces[NVME_MAX_NAMESPACES + 1]; =C2=A0=C2=A0=C2=A0=C2=A0 NvmeEnduranceGroup endgrp; =C2=A0=C2=A0=C2=A0=C2=A0 struct { @@ -136,16 +141,6 @@ static inline NvmeCtrl=20 *nvme_subsys_ctrl(NvmeSubsystem *subsys, =C2=A0=C2=A0=C2=A0=C2=A0 return subsys->ctrls[cntlid]; =C2=A0} -static inline NvmeNamespace *nvme_subsys_ns(NvmeSubsystem *subsys, -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 uint32_t nsid) -{ -=C2=A0=C2=A0=C2=A0 if (!subsys || !nsid || nsid > NVME_MAX_NAMESPACES) { -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return NULL; -=C2=A0=C2=A0=C2=A0 } - -=C2=A0=C2=A0=C2=A0 return subsys->namespaces[nsid]; -} - =C2=A0#define TYPE_NVME_NS "nvme-ns" =C2=A0#define NVME_NS(obj) \ =C2=A0=C2=A0=C2=A0=C2=A0 OBJECT_CHECK(NvmeNamespace, (obj), TYPE_NVME_NS) @@ -711,6 +706,14 @@ static inline NvmeSecCtrlEntry=20 *nvme_sctrl_for_cntlid(NvmeCtrl *n, =C2=A0=C2=A0=C2=A0=C2=A0 return NULL; =C2=A0} +static inline NvmeNamespace *nvme_subsys_ns(NvmeCtrl *n, uint32_t nsid) +{ +=C2=A0=C2=A0=C2=A0 if (!n->subsys || !nsid || nsid > NVME_MAX_NAMESPACES) { +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return NULL; +=C2=A0=C2=A0=C2=A0 } +=C2=A0=C2=A0=C2=A0 return n->subsys->namespaces[nsid].namespace; +} + =C2=A0void nvme_attach_ns(NvmeCtrl *n, NvmeNamespace *ns); =C2=A0uint16_t nvme_bounce_data(NvmeCtrl *n, void *ptr, uint32_t len, =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0 NvmeTxDirection dir, NvmeRequest *req); diff --git a/hw/nvme/subsys.c b/hw/nvme/subsys.c index 2ae56f12a596..d5751564c05c 100644 --- a/hw/nvme/subsys.c +++ b/hw/nvme/subsys.c @@ -92,13 +92,19 @@ int nvme_subsys_register_ctrl(NvmeCtrl *n, Error **errp) =C2=A0=C2=A0=C2=A0=C2=A0 subsys->ctrls[cntlid] =3D n; -=C2=A0=C2=A0=C2=A0 for (nsid =3D 1; nsid < ARRAY_SIZE(subsys->namespaces);= nsid++) { -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 NvmeNamespace *ns =3D subsys->n= amespaces[nsid]; -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if (ns && ns->params.shared && = !ns->params.detached) { -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 nvme_at= tach_ns(n, ns); +=C2=A0=C2=A0=C2=A0 for (nsid =3D 1; nsid <=3D NVME_MAX_NAMESPACES; nsid++)= { +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 NvmeNamespace *ns =3D subsys->n= amespaces[nsid].namespace; + +=C2=A0=C2=A0=C2=A0 if (!ns) { +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 continu= e; +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 } +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if (!(subsys->namespaces[nsid].= ctrl =3D=3D n) && !ns->params.shared) { +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 continu= e; =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 } +=C2=A0=C2=A0=C2=A0 if (ns->params.shared && !ns->params.detached) { +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 nvme_at= tach_ns(n, ns); +=C2=A0=C2=A0=C2=A0 } =C2=A0=C2=A0=C2=A0=C2=A0 } - =C2=A0=C2=A0=C2=A0=C2=A0 return cntlid; =C2=A0} With this fix: =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D [root@localhost ~]# nvme list -v Subsystem Subsystem-NQN Controllers ----------------=20 ---------------------------------------------------------------------------= ---------------------=20 ---------------- nvme-subsys1 nqn.2019-08.org.qemu:subsys0 nvme0, nvme1 Device=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 Cntlid S= N MN=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=20 FR=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 TxPort Address=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0 Slot=C2=A0=C2=A0 Subsystem=C2=A0=C2=A0=C2=A0 Namespac= es ---------------- ------ --------------------=20 ---------------------------------------- -------- ------ --------------=20 ------ ------------ ---------------- nvme0=C2=A0=C2=A0=C2=A0 0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 deadbeef=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 QEMU NVMe=20 Ctrl=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0 9.2.92=C2=A0=C2=A0 pcie=C2=A0=C2=A0 0000:00:04.0=C2=A0=C2=A0 4=20 nvme-subsys1 nvme1n2, nvme1n3 nvme1=C2=A0=C2=A0=C2=A0 1=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 deadbeef=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 QEMU NVMe=20 Ctrl=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0 9.2.92=C2=A0=C2=A0 pcie=C2=A0=C2=A0 0000:00:05.0=C2=A0=C2=A0 5=20 nvme-subsys1 nvme1n1, nvme1n3 Device=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 Ge= neric=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 NSID Usag= e=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=20 Format=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 Controll= ers ----------------- ----------------- ----------=20 -------------------------- ---------------- ---------------- /dev/nvme1n1 /dev/ng1n1=C2=A0=C2=A0 0x2=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0 268.44=C2=A0 GB / 268.44=C2=A0 GB 512=C2=A0=C2=A0 B +=C2=A0=20 0 B=C2=A0=C2=A0 nvme1 /dev/nvme1n2 /dev/ng1n2=C2=A0=C2=A0 0x1=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0 268.44=C2=A0 GB / 268.44=C2=A0 GB 512=C2=A0=C2=A0 B +=C2=A0=20 0 B=C2=A0=C2=A0 nvme0 /dev/nvme1n3 /dev/ng1n3=C2=A0=C2=A0 0x3=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0 268.44=C2=A0 GB / 268.44=C2=A0 GB 512=C2=A0=C2=A0 B +=C2=A0=20 0 B=C2=A0=C2=A0 nvme0, nvme1 [root@localhost ~]# nvme id-ctrl /dev/nvme1n1 |=C2=A0 grep awupf awupf=C2=A0=C2=A0=C2=A0=C2=A0 : 63 [root@localhost ~]# nvme id-ctrl /dev/nvme1n2 |=C2=A0 grep awupf awupf=C2=A0=C2=A0=C2=A0=C2=A0 : 15 [root@localhost ~]# Each private namespace is attached to its own controller and that is=20 verified with the AWUPF values.