From nobody Sat May 18 16:46:52 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; 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=1603373891; cv=none; d=zohomail.com; s=zohoarc; b=ed5yXS1zYKQoRIC++nnEiOU8Ivmb/xrhyo2AACbFtKrcPaFb0265pxEL6N1LH1XYlw9dXXHyWvROSLhPLQe1mTT2t5UT0cFJXcCZ3noa/OMGzRs0TZZszvWIeV/b6TOBZ6oUj9m8Zpswq9eesnuScgRwkFBazWu/gVSIDufRyvg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1603373891; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=QoRKagGBtngGiX0d3aHQKdOjVuGkdsnPPfn8jCZ4n7s=; b=kipw48rCEl7xzcph1zZiyr1WPkoCxGC5gMEelbzGZeQDZ987w4mJZeIj6qiv4vq7KYlLNYq2cmWoGAB3DJe7avKwXtYHQuDondlWzXQt3xmGV9btEbstTb0v1zR6oaPAmw9M+GfrBNPhDKBr5tIAAMLtkWRnH48/OqW72JRhc8U= ARC-Authentication-Results: i=1; mx.zohomail.com; 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 1603373891729215.4268980109972; Thu, 22 Oct 2020 06:38:11 -0700 (PDT) Received: from localhost ([::1]:55550 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kVanC-0007mL-7B for importer@patchew.org; Thu, 22 Oct 2020 09:38:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33766) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kVaZf-0007iD-IV; Thu, 22 Oct 2020 09:24:11 -0400 Received: from out4-smtp.messagingengine.com ([66.111.4.28]:43325) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kVaZd-0003O9-PM; Thu, 22 Oct 2020 09:24:11 -0400 Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.nyi.internal (Postfix) with ESMTP id F1FBB5C0138; Thu, 22 Oct 2020 09:24:08 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute4.internal (MEProxy); Thu, 22 Oct 2020 09:24:08 -0400 Received: from apples.local (80-167-98-190-cable.dk.customer.tdc.net [80.167.98.190]) by mail.messagingengine.com (Postfix) with ESMTPA id B13FA306467E; Thu, 22 Oct 2020 09:24:07 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=irrelevant.dk; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; s=fm1; bh=QoRKagGBtngGi X0d3aHQKdOjVuGkdsnPPfn8jCZ4n7s=; b=c3tYvwzAQux8NHHv0AeZQl2jZO6Ft 126xEQtzVcnzhE5y+RbBxdawVTa7USYXqsVTOaOu8l7s6DxmkUBg9VuckHIvnf/H z+VaxVdvUM0rjL/zT1fRIFaUR3NcQnDbHnTDw+mWpFJA+q3Nynj/vs0oOW3i+8yJ RrVGZtvF/wEwtgqzUUFIg6kCqITaUwCWMIYJzj/Zyig8iJMYk6myiz/Gh1f7fsDk ncCr08JWRta3d+D/HGPkN4ZQY3SJ1/CwYovNHBb6dgEFX9DAZNcz41Dl97kG+mMX rWE1rVRLiJSj/eltvrUXT/px/Z+NDAbBaVowPYBU0RoynL3QsR1oxPtVA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:date:from :in-reply-to:message-id:mime-version:references:subject:to :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= fm1; bh=QoRKagGBtngGiX0d3aHQKdOjVuGkdsnPPfn8jCZ4n7s=; b=pli+7+dx lSkwumNfrXlN9oRPZBZBBzSom4pdUhB56znu81HEN+wuaeO+g6W45iUP213GkWLJ 2L34mMxfqOe3dG1/b0Vfv+daaSo6pmpjCJdYVe3UFYTece8S5hWhAyTJ2680PUdR b8oVaY8/sGjpw4SkRNF7oQqTxXQMBKnBobBx0BsemNXxnbOId/9DNPlAqjbvQgeV gX2Q9dIvz4ia+9S/4ABYU68l2DxGamBSkYQ9/+Pff4emw2IYSmNLvmq/48U+OteU c0zhQE/JSPu9kBfQwqeF6Dyyy3vSNzjBTNJZJ/lNn4bAzBK5uMLiDn43jKPa6b6m fkeoKpb0QjvtMg== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedujedrjeejgdeivdcutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefhvffufffkofgjfhgggfestdekredtredttdenucfhrhhomhepmfhlrghushcu lfgvnhhsvghnuceoihhtshesihhrrhgvlhgvvhgrnhhtrdgukheqnecuggftrfgrthhtvg hrnhepueelteegieeuhffgkeefgfevjeeigfetkeeitdfgtdeifefhtdfhfeeuffevgfek necukfhppeektddrudeijedrleekrdduledtnecuvehluhhsthgvrhfuihiivgeptdenuc frrghrrghmpehmrghilhhfrhhomhepihhtshesihhrrhgvlhgvvhgrnhhtrdgukh X-ME-Proxy: From: Klaus Jensen To: qemu-devel@nongnu.org Subject: [PATCH 1/2] nvme: fix create IO SQ/CQ status codes Date: Thu, 22 Oct 2020 15:24:03 +0200 Message-Id: <20201022132404.190695-2-its@irrelevant.dk> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201022132404.190695-1-its@irrelevant.dk> References: <20201022132404.190695-1-its@irrelevant.dk> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=66.111.4.28; envelope-from=its@irrelevant.dk; helo=out4-smtp.messagingengine.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/22 09:17:09 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] 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_H3=0.001, RCVD_IN_MSPIKE_WL=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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , qemu-block@nongnu.org, Klaus Jensen , Gollu Appalanaidu , Max Reitz , Keith Busch , Klaus Jensen Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: Gollu Appalanaidu Replace the Invalid Field in Command with the Invalid PRP Offset status code in the nvme_create_{cq,sq} functions. Also, allow PRP1 to be address 0x0. Also replace the Completion Queue Invalid status code returned in nvme_create_cq when the the queue identifier is invalid with the Invalid Queue Identifier. The Completion Queue Invalid status code is exclusively for indicating that the completion queue identifer given when creating a submission queue is invalid. See NVM Express v1.3d, Section 5.3 ("Create I/O Completion Queue command") and 5.4("Create I/O Submission Queue command"). Signed-off-by: Gollu Appalanaidu Signed-off-by: Klaus Jensen Reviewed-by: Keith Busch --- hw/block/nvme.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/hw/block/nvme.c b/hw/block/nvme.c index 2896bb49b9c0..5dfef0204c2c 100644 --- a/hw/block/nvme.c +++ b/hw/block/nvme.c @@ -1151,9 +1151,9 @@ static uint16_t nvme_create_sq(NvmeCtrl *n, NvmeReque= st *req) trace_pci_nvme_err_invalid_create_sq_size(qsize); return NVME_MAX_QSIZE_EXCEEDED | NVME_DNR; } - if (unlikely(!prp1 || prp1 & (n->page_size - 1))) { + if (unlikely(prp1 & (n->page_size - 1))) { trace_pci_nvme_err_invalid_create_sq_addr(prp1); - return NVME_INVALID_FIELD | NVME_DNR; + return NVME_INVALID_PRP_OFFSET | NVME_DNR; } if (unlikely(!(NVME_SQ_FLAGS_PC(qflags)))) { trace_pci_nvme_err_invalid_create_sq_qflags(NVME_SQ_FLAGS_PC(qflag= s)); @@ -1400,15 +1400,15 @@ static uint16_t nvme_create_cq(NvmeCtrl *n, NvmeReq= uest *req) =20 if (unlikely(!cqid || !nvme_check_cqid(n, cqid))) { trace_pci_nvme_err_invalid_create_cq_cqid(cqid); - return NVME_INVALID_CQID | NVME_DNR; + return NVME_INVALID_QID | NVME_DNR; } if (unlikely(!qsize || qsize > NVME_CAP_MQES(n->bar.cap))) { trace_pci_nvme_err_invalid_create_cq_size(qsize); return NVME_MAX_QSIZE_EXCEEDED | NVME_DNR; } - if (unlikely(!prp1)) { + if (unlikely(prp1 & (n->page_size - 1))) { trace_pci_nvme_err_invalid_create_cq_addr(prp1); - return NVME_INVALID_FIELD | NVME_DNR; + return NVME_INVALID_PRP_OFFSET | NVME_DNR; } if (unlikely(!msix_enabled(&n->parent_obj) && vector)) { trace_pci_nvme_err_invalid_create_cq_vector(vector); --=20 2.28.0 From nobody Sat May 18 16:46:52 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; 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=1603374288; cv=none; d=zohomail.com; s=zohoarc; b=EtiHt0lwR8SC0rVWlfsiFlAx3jSUsR2lLP06+Hkeec6Y4jROuQkT3B0CvNwon4a6NSOinmFRK4b15dnCBWiDWK3bLZJ9H6AYi5LUnsKGyjjs13ryPVqVhQiceVruKotkMCEzpTZa6EJJGm6bieSo5Z4bh1AoxMOcuV2Gz4AXFCU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1603374288; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=rDmengqHKe1VY9G06a15wup3LUz8qjNGDmc2bf6/D5A=; b=d/Ae+Idcxs3kx/Zqwc1sP6h9VNqGgywS/IBZWLBBZ8C0TsHpmjHeZhJgy8THEgTidA6RA+0AJO+Uh5azYlWikpFXg5/W6nvYHbwZKTlvNE3MDUWt74qUFh8o07mfr9UgJN4wxwO2uioS5ZnKY33rcvg/dXWe4v3UDkqpC0f9QeE= ARC-Authentication-Results: i=1; mx.zohomail.com; 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 1603374288210511.96083134396565; Thu, 22 Oct 2020 06:44:48 -0700 (PDT) Received: from localhost ([::1]:35152 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kVatY-0002xq-CZ for importer@patchew.org; Thu, 22 Oct 2020 09:44:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33794) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kVaZh-0007lM-HP; Thu, 22 Oct 2020 09:24:13 -0400 Received: from out4-smtp.messagingengine.com ([66.111.4.28]:42525) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kVaZf-0003Ou-2V; Thu, 22 Oct 2020 09:24:13 -0400 Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.nyi.internal (Postfix) with ESMTP id 4A3B75C00C4; Thu, 22 Oct 2020 09:24:10 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute4.internal (MEProxy); Thu, 22 Oct 2020 09:24:10 -0400 Received: from apples.local (80-167-98-190-cable.dk.customer.tdc.net [80.167.98.190]) by mail.messagingengine.com (Postfix) with ESMTPA id F2D2F3064610; Thu, 22 Oct 2020 09:24:08 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=irrelevant.dk; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; s=fm1; bh=rDmengqHKe1VY 9G06a15wup3LUz8qjNGDmc2bf6/D5A=; b=oSrU8Nd5e+DULZOYbQP5Jkq9M8EP4 77YSP03NWnVsxtD7GSRRtWWPCkY+erz2TGjKU5PuVoHITvvtPTf2QS63Fw7H7gmA G2Dw7T6HV4VOlPlkPDePsZHkyiSt5Z5PsYI3VcLRbro2hoqrg4L9B5mRuRrV+c6S +z71KvlMs+TEholVaXmtzEIyw5ejaUuB9+m6xjVDQE87D2J6gMzksAw0yoZcKfXf tb5cXTochDMUw6tVNxQDx46u6yXHO5PfolHaSF7Dqt3/T9LZV2Kcd8kdBCkZFWpx whb1q6vvbE7DnYwFcxZKq4YLpBL1ml/s/c4gCBmOyAKrNZh75X3/EAOBQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:date:from :in-reply-to:message-id:mime-version:references:subject:to :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= fm1; bh=rDmengqHKe1VY9G06a15wup3LUz8qjNGDmc2bf6/D5A=; b=RnCh2yjk fX+Ou2E4S3+IbjW5xjCo6LA93MxhOkaVT+aGELqG2JW7SjSVOFePUaN/nePSqwBD z9uiY1RPSopmmh18NddsDDwdyy+HOQQ+msKLEmCi4eFULfrtLjMQn0pZW5Lt1bpS mQa0g4xWq0amWGNpoEvLOhwZdH+7roQ1fJLxi7lvQaoCmEWHUJvs7AMqNJRDQ1a7 s7HWCpT2sBMYH0Z9ao2fqsEJzOX8KmNupyJ1N3sD3bq+XV4UCu8RfPGVroKz3QeG QRzjjAElVNz8TC7NZwI2geOYNsRB4uBn+fmwDxRGaaAH9TZ7SnDfrgtb40ZygyG9 O6Rxphkcsf3vUA== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedujedrjeejgdeivdcutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefhvffufffkofgjfhgggfestdekredtredttdenucfhrhhomhepmfhlrghushcu lfgvnhhsvghnuceoihhtshesihhrrhgvlhgvvhgrnhhtrdgukheqnecuggftrfgrthhtvg hrnhepueelteegieeuhffgkeefgfevjeeigfetkeeitdfgtdeifefhtdfhfeeuffevgfek necukfhppeektddrudeijedrleekrdduledtnecuvehluhhsthgvrhfuihiivgeptdenuc frrghrrghmpehmrghilhhfrhhomhepihhtshesihhrrhgvlhgvvhgrnhhtrdgukh X-ME-Proxy: From: Klaus Jensen To: qemu-devel@nongnu.org Subject: [PATCH 2/2] nvme: fix queue identifer validation Date: Thu, 22 Oct 2020 15:24:04 +0200 Message-Id: <20201022132404.190695-3-its@irrelevant.dk> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201022132404.190695-1-its@irrelevant.dk> References: <20201022132404.190695-1-its@irrelevant.dk> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=66.111.4.28; envelope-from=its@irrelevant.dk; helo=out4-smtp.messagingengine.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/22 09:17:09 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] 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_H3=0.001, RCVD_IN_MSPIKE_WL=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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , qemu-block@nongnu.org, Klaus Jensen , Gollu Appalanaidu , Max Reitz , Keith Busch , Klaus Jensen Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: Gollu Appalanaidu The nvme_check_{sq,cq} functions check if the given queue identifer is valid *and* that the queue exists. Thus, the function return value cannot simply be inverted to check if the identifer is valid and that the queue does *not* exist. Replace the call with an OR'ed version of the checks. Signed-off-by: Gollu Appalanaidu Signed-off-by: Klaus Jensen Reviewed-by: Keith Busch --- hw/block/nvme.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/hw/block/nvme.c b/hw/block/nvme.c index 5dfef0204c2c..fa2cba744b57 100644 --- a/hw/block/nvme.c +++ b/hw/block/nvme.c @@ -1143,7 +1143,8 @@ static uint16_t nvme_create_sq(NvmeCtrl *n, NvmeReque= st *req) trace_pci_nvme_err_invalid_create_sq_cqid(cqid); return NVME_INVALID_CQID | NVME_DNR; } - if (unlikely(!sqid || !nvme_check_sqid(n, sqid))) { + if (unlikely(!sqid || sqid > n->params.max_ioqpairs || + n->sq[sqid] !=3D NULL)) { trace_pci_nvme_err_invalid_create_sq_sqid(sqid); return NVME_INVALID_QID | NVME_DNR; } @@ -1398,7 +1399,8 @@ static uint16_t nvme_create_cq(NvmeCtrl *n, NvmeReque= st *req) trace_pci_nvme_create_cq(prp1, cqid, vector, qsize, qflags, NVME_CQ_FLAGS_IEN(qflags) !=3D 0); =20 - if (unlikely(!cqid || !nvme_check_cqid(n, cqid))) { + if (unlikely(!cqid || cqid > n->params.max_ioqpairs || + n->cq[cqid] !=3D NULL)) { trace_pci_nvme_err_invalid_create_cq_cqid(cqid); return NVME_INVALID_QID | NVME_DNR; } --=20 2.28.0