From patchwork Mon Dec 12 11:44:09 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Klaus Jensen X-Patchwork-Id: 1714953 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=irrelevant.dk header.i=@irrelevant.dk header.a=rsa-sha256 header.s=fm1 header.b=U14bREhc; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=messagingengine.com header.i=@messagingengine.com header.a=rsa-sha256 header.s=fm2 header.b=upg01wsI; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4NW0W94CrVz240J for ; Mon, 12 Dec 2022 22:57:57 +1100 (AEDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p4hES-00065h-AP; Mon, 12 Dec 2022 06:44:28 -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 1p4hEN-0005zl-VD; Mon, 12 Dec 2022 06:44:23 -0500 Received: from out5-smtp.messagingengine.com ([66.111.4.29]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p4hEM-0003Ml-D6; Mon, 12 Dec 2022 06:44:23 -0500 Received: from compute6.internal (compute6.nyi.internal [10.202.2.47]) by mailout.nyi.internal (Postfix) with ESMTP id 128125C0151; Mon, 12 Dec 2022 06:44:21 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute6.internal (MEProxy); Mon, 12 Dec 2022 06:44:21 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=irrelevant.dk; h=cc:cc:content-transfer-encoding:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to; s=fm1; t=1670845461; x= 1670931861; bh=vZ+OOsnZYJL8GkKEt4CioC1k5V+A7SG820NOYkn+cXE=; b=U 14bREhcVi6EtRbfAQW4+7TQ28+TFq/nADAUj6470Fy+aggfWqa5HmeO5Q4K7jO7b nG9UURV0IScRg/7MtoP/IQFjpx5CgLgBeLgp/pYosXE2DKZOtFX02SGJsAyjq8Tj rKSk1YLdVQwtw1dNBTZfd+ZuD82PP9Imea8ikjf4HMr6iN3KHrORIDPCGq1HHlAC CUxp/6dAM9k/kYBrlNejCACFwaQ2T3E/ikQeq1fyuwAVD91laL7TFxd4VDLxrcou MZv2+YMf5JaMTExLhxXTwVqi1r6vXLQLcLLgLu+JcVsa7LYnC1XzvrchBCLgrRYC VNnoZLApSXhjmTenEcUZw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:sender:subject :subject:to:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender :x-sasl-enc; s=fm2; t=1670845461; x=1670931861; bh=vZ+OOsnZYJL8G kKEt4CioC1k5V+A7SG820NOYkn+cXE=; b=upg01wsIGAzAUSSK+jLA+bykhog5q w2mjsmbMHfouQIXin6013T70lrTyo3w4nHxnBd2KR3C24htK4uph60DwD2PYaARd Ahk30iGRTQcj9v7kZ3+LoIqSUSNrv36SOrZxILvEHLHZP/WodY8bChHbA2YjdXdY XZUGD/90XQXMDgCcIEP819WRwrGLBGYW4Ryy8lIikzX+ZHEA63BHqM+ncJsSzxuj cZZ82mNKaXWnkG0RUvUoyqKA0fbQjZHvDhO4Fd892OgUFgFmivtNeJY5CFbuQrtZ lOoNKqOAodZzegXCIH1IMlmVqELv1iQO4/xhijNwDmWG8mXejRJ4M/Jhg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvhedrvdekgddtkecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefhvfevufffkffojghfggfgsedtkeertdertddtnecuhfhrohhmpefmlhgruhhs ucflvghnshgvnhcuoehithhssehirhhrvghlvghvrghnthdrughkqeenucggtffrrghtth gvrhhnpeejgfeilefgieevheekueevheehkeefveegiefgheefgfejjeehffefgedujedu geenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehith hssehirhhrvghlvghvrghnthdrughk X-ME-Proxy: Feedback-ID: idc91472f:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon, 12 Dec 2022 06:44:19 -0500 (EST) From: Klaus Jensen To: qemu-devel@nongnu.org Cc: qemu-block@nongnu.org, Klaus Jensen , Keith Busch , Jinhao Fan , Guenter Roeck , Klaus Jensen , qemu-stable@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH v4 4/4] hw/nvme: fix missing cq eventidx update Date: Mon, 12 Dec 2022 12:44:09 +0100 Message-Id: <20221212114409.34972-5-its@irrelevant.dk> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20221212114409.34972-1-its@irrelevant.dk> References: <20221212114409.34972-1-its@irrelevant.dk> MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1368; i=k.jensen@samsung.com; h=from:subject; bh=aoxzJKx0O6Lh8Uwyoz0I0J6X3ZQ9AYZS1frBhrJxaH8=; b=owJ4nAFtAZL+kA0DAAoBTeGvMW1PDekByyZiAGOXFAn4JT/RXbSN0djv0q7720auhySmj6ZktG2k oNtrDeicEYkBMwQAAQoAHRYhBFIoM6p14tzmokdmwE3hrzFtTw3pBQJjlxQJAAoJEE3hrzFtTw3pR2 gH/3Hip0LUeBk37fBjirn7KRFbkooCOW3s23ATqkwvHonUmHsCdVwtNcixh1xRgmVKFHmn5dweCIU9 P4VjtQawawuIGvoH0tecvf73b9TvJGqHXI+ef5Ij6w8Y3OpoiHj8EtBBBIlM1q3KNN8XUTH+CYZhS+ ML+tuvEW8g7A7lNO0iqYmI7rOY86XIcgo7SbFKDOjSkdQhqbsYPZb+wZrKhEtoMP8ycX+okfjrPly3 8xXgcmJYQPfgtuWTHkxLeADSCz9TxNRsZ09WJ2uXLIOxZZ7QdIfR+W/Pd6WF5+71zqJJ2HVQ2dC1Xq /I5u4xlAEZnWVGRVg6Jb4BSRoL78LJRdJlFa3C X-Developer-Key: i=k.jensen@samsung.com; a=openpgp; fpr=DDCA4D9C9EF931CC3468427263D56FC5E55DA838 Received-SPF: pass client-ip=66.111.4.29; envelope-from=its@irrelevant.dk; helo=out5-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, 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+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org From: Klaus Jensen Prior to reading the shadow doorbell cq head, we have to update the eventidx. Otherwise, we risk that the driver will skip an mmio doorbell write. This happens on riscv64, as reported by Guenter. Adding the missing update to the cq eventidx fixes the issue. Fixes: 3f7fe8de3d49 ("hw/nvme: Implement shadow doorbell buffer support") Cc: qemu-stable@nongnu.org Cc: qemu-riscv@nongnu.org Reported-by: Guenter Roeck Signed-off-by: Klaus Jensen Reviewed-by: Keith Busch --- hw/nvme/ctrl.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c index bb505131f5f9..3df29ea68b2f 100644 --- a/hw/nvme/ctrl.c +++ b/hw/nvme/ctrl.c @@ -1334,6 +1334,15 @@ static inline void nvme_blk_write(BlockBackend *blk, int64_t offset, } } +static void nvme_update_cq_eventidx(const NvmeCQueue *cq) +{ + uint32_t v = cpu_to_le32(cq->head); + + trace_pci_nvme_update_cq_eventidx(cq->cqid, cq->head); + + pci_dma_write(PCI_DEVICE(cq->ctrl), cq->ei_addr, &v, sizeof(v)); +} + static void nvme_update_cq_head(NvmeCQueue *cq) { uint32_t v; @@ -1358,6 +1367,7 @@ static void nvme_post_cqes(void *opaque) hwaddr addr; if (n->dbbuf_enabled) { + nvme_update_cq_eventidx(cq); nvme_update_cq_head(cq); }