From patchwork Mon Dec 12 11:44:08 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Klaus Jensen X-Patchwork-Id: 1714949 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=J7TPBWCG; 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=BNgJ0wNh; 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 4NW0LP2y17z23yh for ; Mon, 12 Dec 2022 22:50:19 +1100 (AEDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p4hEO-00061s-Oc; Mon, 12 Dec 2022 06:44:24 -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 1p4hEL-0005y3-Ke; Mon, 12 Dec 2022 06:44:22 -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 1p4hEK-0003MP-3R; Mon, 12 Dec 2022 06:44:21 -0500 Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailout.nyi.internal (Postfix) with ESMTP id 03DE15C012A; Mon, 12 Dec 2022 06:44:19 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute1.internal (MEProxy); Mon, 12 Dec 2022 06:44:19 -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=1670845458; x= 1670931858; bh=MieW4e/zUymEmOAMJmAKy6sogL2DORGK0S7L8IsmVsI=; b=J 7TPBWCG3znR2jC3xcLiWn5vUxSXY1ZcUlScJZ1VuudEMX4+ytEBBXBujyb991z63 6k2jBO6WmTj7MWmfMG5FgDFRh0/jDFjsRBlr/gtRMbqpLFE5iNJI7MoyUcSfLJiG 6PA9xUC5F8W77p+UK2Q9u+oSyEY5RgvQy6/5puDVGwTJ21+KevHy9aQzdtvekrQB fNb8Tj6lhrkBezAuws5RBOcDSLoF57N9lfDoBjg8T/WGgXZS/dlAmdiQ8FdK74UA H00wzZZNGD0yJL2v8Tf4EGg5QvsGSFImzuuP4HOohU1TEdCV814kVRPKbHP24rTd 1QxHKJ+cce+gNifQdMlow== 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=1670845458; x=1670931858; bh=MieW4e/zUymEm OAMJmAKy6sogL2DORGK0S7L8IsmVsI=; b=BNgJ0wNhz2iWkFL14Kqc8aSb9FiHd nr0tjI/Bcw1VGlgmP7dtgbhAqZX0i7y6qARDmv2BASLW85NMgXjSx1IfXzCc4ki0 BMpNK1k/uYRaVba8bwf+KtNJamZE0WvL8JyYtiTfw0huMY8v+I0+zZ6UhlrIcWz/ ZlwyqqBXZ4ZTWMQ5M5XWUxSrHjndHZ3mQIDQkXH//VBvPoVj/eTBt6ZfH7J0lrRA tWc7gU9/tM8jA+yEe/dH6oV2+KWR93jGZ1YBbvbHR6fg2pU9Ak0iPG6nakFx9Hdd bR5/W4gY0FvIhK2sXTeMPTLPh0eoR6dbQ5r6h8GEd9Wc+s27gycQsuBag== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvhedrvdekgddtjecutefuodetggdotefrodftvf 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:17 -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 Subject: [PATCH v4 3/4] hw/nvme: fix missing endian conversions for doorbell buffers Date: Mon, 12 Dec 2022 12:44:08 +0100 Message-Id: <20221212114409.34972-4-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=1771; i=k.jensen@samsung.com; h=from:subject; bh=UGO0tQzSAcPY/fhLFF5RrdpYwEmDgTGctLdgH52GF3w=; b=owJ4nAFtAZL+kA0DAAoBTeGvMW1PDekByyZiAGOXFAhDdQL0UIhd++XvDT7Hai2DArn13926Z1XT thIWoLi14IkBMwQAAQoAHRYhBFIoM6p14tzmokdmwE3hrzFtTw3pBQJjlxQIAAoJEE3hrzFtTw3pG9 QH+wRlxyLCZUbGqKbngR3lf7RZKEPnkEdLO3A/U0BOdHmc2voVJncBMFd4StzQim+Q+KysOIR6BxHk szyrh9N7238q7+ylaYP+eYLNKz/3wKMs7RYtDf8xqduZeKgbPa2ths3a+8qggy2nRUIxeWte4G6sDW XtDTQG/NupkERvl/XqSTlbMHK2kisHs6Cg74sw73A7u7OufpqWNuWJiPKM1AnbkGXtnqgtjzASd/EP DF1QPcV2kAlUjGtKHM493cbIUWmoJH8+iiSH92f3MZNVo2Gn6uCZthhW1AoliTv6Norneg0mZw9Usy oV5/it5rIgKm929X78r52LMsm3hLMuK6wD/Ksn 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 The eventidx and doorbell value are not handling endianness correctly. Fix this. Fixes: 3f7fe8de3d49 ("hw/nvme: Implement shadow doorbell buffer support") Cc: qemu-stable@nongnu.org Reported-by: Guenter Roeck Signed-off-by: Klaus Jensen Reviewed-by: Philippe Mathieu-Daudé Reviewed-by: Keith Busch --- hw/nvme/ctrl.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c index cfab21b3436e..bb505131f5f9 100644 --- a/hw/nvme/ctrl.c +++ b/hw/nvme/ctrl.c @@ -1336,8 +1336,11 @@ static inline void nvme_blk_write(BlockBackend *blk, int64_t offset, static void nvme_update_cq_head(NvmeCQueue *cq) { - pci_dma_read(PCI_DEVICE(cq->ctrl), cq->db_addr, &cq->head, - sizeof(cq->head)); + uint32_t v; + + pci_dma_read(PCI_DEVICE(cq->ctrl), cq->db_addr, &v, sizeof(v)); + + cq->head = le32_to_cpu(v); trace_pci_nvme_update_cq_head(cq->cqid, cq->head); } @@ -6148,16 +6151,20 @@ static uint16_t nvme_admin_cmd(NvmeCtrl *n, NvmeRequest *req) static void nvme_update_sq_eventidx(const NvmeSQueue *sq) { + uint32_t v = cpu_to_le32(sq->tail); + trace_pci_nvme_update_sq_eventidx(sq->sqid, sq->tail); - pci_dma_write(PCI_DEVICE(sq->ctrl), sq->ei_addr, &sq->tail, - sizeof(sq->tail)); + pci_dma_write(PCI_DEVICE(sq->ctrl), sq->ei_addr, &v, sizeof(v)); } static void nvme_update_sq_tail(NvmeSQueue *sq) { - pci_dma_read(PCI_DEVICE(sq->ctrl), sq->db_addr, &sq->tail, - sizeof(sq->tail)); + uint32_t v; + + pci_dma_read(PCI_DEVICE(sq->ctrl), sq->db_addr, &v, sizeof(v)); + + sq->tail = le32_to_cpu(v); trace_pci_nvme_update_sq_tail(sq->sqid, sq->tail); }