From patchwork Mon Feb 8 14:10:11 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Klaus Jensen X-Patchwork-Id: 1437852 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: 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: 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=fm2 header.b=pC+af+CO; 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=GkDroK0L; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4DZFVl3g5Dz9sRf for ; Tue, 9 Feb 2021 05:51:43 +1100 (AEDT) Received: from localhost ([::1]:40194 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1l9BdM-00017U-Fb for incoming@patchwork.ozlabs.org; Mon, 08 Feb 2021 13:51:41 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:54006) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l97Fd-0007Gw-UG; Mon, 08 Feb 2021 09:10:55 -0500 Received: from wout3-smtp.messagingengine.com ([64.147.123.19]:33037) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l97FG-0004Mu-Th; Mon, 08 Feb 2021 09:10:43 -0500 Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) by mailout.west.internal (Postfix) with ESMTP id 6FAE077A; Mon, 8 Feb 2021 09:10:19 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute3.internal (MEProxy); Mon, 08 Feb 2021 09:10:20 -0500 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=fm2; bh=W954tiRCw9pM1 PT1Dy+UJjO/MbMtxPrIqixuCSP63EU=; b=pC+af+COyROlG6wC/IVEjdC8Vlxx0 6GLbX/ciDati5XGSHbsT+F5mU7gJOGjGDjAh9dgRZcaKHr8KrC5ofCtzhuGzPZiS KIUtdjPJRSTp/cVzhnGZ5vRElVroo1ncalskSYrPmDZJf4va7ITB0FxuRsOkC60Q e/zgZckhpkZ/HCmty4d3Nn/raHXJCIXs5zXNuqnHUKyl8CcWiTM+/DdGJ1EwMyY8 5XZEC9WprpUFxWNamwCDwShWS/kOmiA8axlwdCk2MvPFTWu1V8rACU5isToKg2vm unUTfBSPd2WSrpa8ay/mMxAiGFsNjj1H481HqRkaVj8w0EtiHMAuBmZUg== 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= fm2; bh=W954tiRCw9pM1PT1Dy+UJjO/MbMtxPrIqixuCSP63EU=; b=GkDroK0L MTQ/2uQe/kpUvklDey2PKEGePmjmxhe+0iZjtBdAUOihfq5ckNm8aW1PrsCKdkrF P2BfKq0V/QgO0NUCEUsvY2X2ZQ5XW4Bq9hsdc3HiGWRwBrKMwFViEsKVC9aqy69c lC8uXcxna/nXTb3O7Bd1thk/qNsxSlqQkH/rUKNCx/Mqq4WbzoNd9VNksjpzE/T1 XnBo9ZjIrD5O/xn8nKn7hDYsU497vNaMw+GdRtSzL6tnmdRvoiRXFzavsU2jKVPz BOJS0gGUU5ly/d4RKEU34ytvKYVBwBsmydCcHQhtIJx3kn8P8rnKM7UOYc+4Pe2O Nzb3Tk3T4I+jOQ== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduledrheefgdeitdcutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefhvffufffkofgjfhgggfestdekredtredttdenucfhrhhomhepmfhlrghushcu lfgvnhhsvghnuceoihhtshesihhrrhgvlhgvvhgrnhhtrdgukheqnecuggftrfgrthhtvg hrnhepueelteegieeuhffgkeefgfevjeeigfetkeeitdfgtdeifefhtdfhfeeuffevgfek necukfhppeektddrudeijedrleekrdduledtnecuvehluhhsthgvrhfuihiivgeptdenuc frrghrrghmpehmrghilhhfrhhomhepihhtshesihhrrhgvlhgvvhgrnhhtrdgukh X-ME-Proxy: 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 D04B1240057; Mon, 8 Feb 2021 09:10:16 -0500 (EST) From: Klaus Jensen To: qemu-devel@nongnu.org Subject: [PATCH 1/2] hw/block/nvme: use locally assigned QEMU IEEE OUI Date: Mon, 8 Feb 2021 15:10:11 +0100 Message-Id: <20210208141012.377500-2-its@irrelevant.dk> X-Mailer: git-send-email 2.30.0 In-Reply-To: <20210208141012.377500-1-its@irrelevant.dk> References: <20210208141012.377500-1-its@irrelevant.dk> MIME-Version: 1.0 Received-SPF: pass client-ip=64.147.123.19; envelope-from=its@irrelevant.dk; helo=wout3-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_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 , Fam Zheng , qemu-block@nongnu.org, Klaus Jensen , Gollu Appalanaidu , Max Reitz , Keith Busch , Stefan Hajnoczi , Klaus Jensen Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Gollu Appalanaidu Commit 6eb7a071292a ("hw/block/nvme: change controller pci id") changed the controller to use a Red Hat assigned PCI Device and Vendor ID, but did not change the IEEE OUI away from the Intel IEEE OUI. Fix that and use the locally assigned QEMU IEEE OUI instead. Signed-off-by: Gollu Appalanaidu Signed-off-by: Klaus Jensen --- hw/block/nvme.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/block/nvme.c b/hw/block/nvme.c index c2f0c88fbf39..547a3073ef1b 100644 --- a/hw/block/nvme.c +++ b/hw/block/nvme.c @@ -4686,8 +4686,8 @@ static void nvme_init_ctrl(NvmeCtrl *n, PCIDevice *pci_dev) id->rab = 6; id->ieee[0] = 0x00; - id->ieee[1] = 0x02; - id->ieee[2] = 0xb3; + id->ieee[1] = 0x54; + id->ieee[2] = 0x52; id->mdts = n->params.mdts; id->ver = cpu_to_le32(NVME_SPEC_VER); id->oacs = cpu_to_le16(0); From patchwork Mon Feb 8 14:10:12 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Klaus Jensen X-Patchwork-Id: 1437919 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: 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: 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=fm2 header.b=XwfUaHZW; 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=ccqMaa6G; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4DZJ6m40KJz9s1l for ; Tue, 9 Feb 2021 07:49:36 +1100 (AEDT) Received: from localhost ([::1]:57790 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1l9DTS-0005L3-3Z for incoming@patchwork.ozlabs.org; Mon, 08 Feb 2021 15:49:34 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:53988) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l97FZ-0007Gu-Vq; Mon, 08 Feb 2021 09:10:52 -0500 Received: from wout3-smtp.messagingengine.com ([64.147.123.19]:45529) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l97FA-0004N1-9i; Mon, 08 Feb 2021 09:10:41 -0500 Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) by mailout.west.internal (Postfix) with ESMTP id EDFF545C; Mon, 8 Feb 2021 09:10:19 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute3.internal (MEProxy); Mon, 08 Feb 2021 09:10:20 -0500 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=fm2; bh=EzR1v0Er/laZY oa4ce2ovHvM21lXv+BPTE55Z8/HZn4=; b=XwfUaHZWJ5ICqsnvIxAefVi5CWBDN foIU8/QOF/P9r8nL/RALjURTkb57Z67qqT7Bx/40tMnFdQdmU3mw3zHGOL+Uakp/ 9RWv9+0GJjiCepS/bUi21zY1pUu1RkikqxeCWT7YN4eEo5YOyOxZPsHut5c0CfIf pTUgdZVlNbT5IncYyd6cuJObiwlJtz4uGcB1X4yhr8nVBdX9PQ0MvKY94DRtKOIM /FCHWWlABslOuTozCab3XRQXM74hjfwoQATnf7jrQFFyFr9/ZzdS04C+gDWMz8WA LgMjuc1962RFGJu89RtbxrOBTc4t1MliD9U9c2SRHRkIyWYDdipDMc0SA== 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= fm2; bh=EzR1v0Er/laZYoa4ce2ovHvM21lXv+BPTE55Z8/HZn4=; b=ccqMaa6G I2UbpnT1HGtOz3SOQnNKqFI3MNrD0N8q3vLl8nNa8eQ0dl4uQKGhfpkBBy5Pz9XG Vj1h6rzpjcgo6CUzuskKdphoNtbqOpclGj1NSCtvo86YLyJizMIV562WZThWBSAD EAx7Wo1llPyk5CgdtJAIyQaf/XXC6xxUHDbC/nZImsj7ut4H+DrqkGptt1b0m1ZD Z3oVRgSDpA0CcnBXbAoX9DOAiW/3mEaWrMtg6mem351E+N8NWNJsxjRWtwSsX1ar QFm8M1QfhcWauzE2w8UG4DFTDAIqAzdLLkYIPvUqOB+Xt8Ww6EEH06hQaENSeGB0 3RQnkT2oIkXpbg== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduledrheefgdeitdcutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefhvffufffkofgjfhgggfestdekredtredttdenucfhrhhomhepmfhlrghushcu lfgvnhhsvghnuceoihhtshesihhrrhgvlhgvvhgrnhhtrdgukheqnecuggftrfgrthhtvg hrnhepueelteegieeuhffgkeefgfevjeeigfetkeeitdfgtdeifefhtdfhfeeuffevgfek necukfhppeektddrudeijedrleekrdduledtnecuvehluhhsthgvrhfuihiivgeptdenuc frrghrrghmpehmrghilhhfrhhomhepihhtshesihhrrhgvlhgvvhgrnhhtrdgukh X-ME-Proxy: 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 48F5F240064; Mon, 8 Feb 2021 09:10:18 -0500 (EST) From: Klaus Jensen To: qemu-devel@nongnu.org Subject: [PATCH 2/2] hw/block/nvme: add nvme telemetry log support Date: Mon, 8 Feb 2021 15:10:12 +0100 Message-Id: <20210208141012.377500-3-its@irrelevant.dk> X-Mailer: git-send-email 2.30.0 In-Reply-To: <20210208141012.377500-1-its@irrelevant.dk> References: <20210208141012.377500-1-its@irrelevant.dk> MIME-Version: 1.0 Received-SPF: pass client-ip=64.147.123.19; envelope-from=its@irrelevant.dk; helo=wout3-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_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable 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 , Fam Zheng , qemu-block@nongnu.org, Klaus Jensen , Gollu Appalanaidu , Max Reitz , Keith Busch , Stefan Hajnoczi , Klaus Jensen Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Gollu Appalanaidu This adds basic support for Telemetry Host Initiated and Controller Initiated log pages. The controller does not record any telemetry but provides the log pages. Signed-off-by: Gollu Appalanaidu Signed-off-by: Klaus Jensen --- include/block/nvme.h | 23 ++++++++++++++++++++--- hw/block/nvme.c | 33 ++++++++++++++++++++++++++++++++- hw/block/trace-events | 1 + 3 files changed, 53 insertions(+), 4 deletions(-) diff --git a/include/block/nvme.h b/include/block/nvme.h index f82b5ffc2c1d..95ffe4412679 100644 --- a/include/block/nvme.h +++ b/include/block/nvme.h @@ -922,6 +922,19 @@ typedef struct NvmeEffectsLog { uint8_t resv[2048]; } NvmeEffectsLog; +typedef struct NvmeTelemetry { + uint8_t lid; + uint8_t rsvd1[4]; + uint8_t ieee[3]; + uint16_t tda1lb; + uint16_t tda2lb; + uint16_t tda3lb; + uint8_t rsvd14[368]; + uint8_t tda; + uint8_t tdgn; + uint8_t ri[128]; +} NvmeTelemetry; + enum { NVME_CMD_EFF_CSUPP = 1 << 0, NVME_CMD_EFF_LBCC = 1 << 1, @@ -937,6 +950,8 @@ enum NvmeLogIdentifier { NVME_LOG_SMART_INFO = 0x02, NVME_LOG_FW_SLOT_INFO = 0x03, NVME_LOG_CMD_EFFECTS = 0x05, + NVME_LOG_TEL_HOST_INIT = 0x07, + NVME_LOG_TEL_CTRL_INIT = 0x08, }; typedef struct QEMU_PACKED NvmePSD { @@ -1067,9 +1082,10 @@ enum NvmeIdCtrlFrmw { }; enum NvmeIdCtrlLpa { - NVME_LPA_NS_SMART = 1 << 0, - NVME_LPA_CSE = 1 << 1, - NVME_LPA_EXTENDED = 1 << 2, + NVME_LPA_NS_SMART = 1 << 0, + NVME_LPA_CSE = 1 << 1, + NVME_LPA_EXTENDED = 1 << 2, + NVME_LPA_TELEMETRY = 1 << 3, }; enum NvmeIdCtrlCmic { @@ -1395,5 +1411,6 @@ static inline void _nvme_check_size(void) QEMU_BUILD_BUG_ON(sizeof(NvmeSglDescriptor) != 16); QEMU_BUILD_BUG_ON(sizeof(NvmeIdNsDescr) != 4); QEMU_BUILD_BUG_ON(sizeof(NvmeZoneDescr) != 64); + QEMU_BUILD_BUG_ON(sizeof(NvmeTelemetry) != 512); } #endif diff --git a/hw/block/nvme.c b/hw/block/nvme.c index 547a3073ef1b..01b92a6f66c8 100644 --- a/hw/block/nvme.c +++ b/hw/block/nvme.c @@ -2908,6 +2908,33 @@ static uint16_t nvme_cmd_effects(NvmeCtrl *n, uint8_t csi, uint32_t buf_len, DMA_DIRECTION_FROM_DEVICE, req); } +static uint16_t nvme_telemetry(NvmeCtrl *n, uint8_t lid, uint32_t buf_len, + uint64_t off, NvmeRequest *req) +{ + NvmeTelemetry telemetry = { + .lid = lid, + .ieee[0] = 0x00, + .ieee[1] = 0x54, + .ieee[2] = 0x52, + }; + + uint32_t trans_len; + + if (buf_len & 0x1ff || off & 0x1ff) { + trace_pci_nvme_telemetry_log_invalid(buf_len, off); + return NVME_INVALID_FIELD | NVME_DNR; + } + + if (off >= sizeof(telemetry)) { + return NVME_INVALID_FIELD | NVME_DNR; + } + + trans_len = MIN(sizeof(telemetry) - off, buf_len); + + return nvme_dma(n, (uint8_t *)&telemetry + off, trans_len, + DMA_DIRECTION_FROM_DEVICE, req); +} + static uint16_t nvme_get_log(NvmeCtrl *n, NvmeRequest *req) { NvmeCmd *cmd = &req->cmd; @@ -2954,6 +2981,9 @@ static uint16_t nvme_get_log(NvmeCtrl *n, NvmeRequest *req) return nvme_fw_log_info(n, len, off, req); case NVME_LOG_CMD_EFFECTS: return nvme_cmd_effects(n, csi, len, off, req); + case NVME_LOG_TEL_HOST_INIT: + case NVME_LOG_TEL_CTRL_INIT: + return nvme_telemetry(n, lid, len, off, req); default: trace_pci_nvme_err_invalid_log_page(nvme_cid(req), lid); return NVME_INVALID_FIELD | NVME_DNR; @@ -4707,7 +4737,8 @@ static void nvme_init_ctrl(NvmeCtrl *n, PCIDevice *pci_dev) id->acl = 3; id->aerl = n->params.aerl; id->frmw = (NVME_NUM_FW_SLOTS << 1) | NVME_FRMW_SLOT1_RO; - id->lpa = NVME_LPA_NS_SMART | NVME_LPA_CSE | NVME_LPA_EXTENDED; + id->lpa = NVME_LPA_NS_SMART | NVME_LPA_CSE | NVME_LPA_EXTENDED | + NVME_LPA_TELEMETRY; /* recommended default value (~70 C) */ id->wctemp = cpu_to_le16(NVME_TEMPERATURE_WARNING); diff --git a/hw/block/trace-events b/hw/block/trace-events index b6e972d733a6..500d991a0a14 100644 --- a/hw/block/trace-events +++ b/hw/block/trace-events @@ -110,6 +110,7 @@ pci_nvme_set_descriptor_extension(uint64_t slba, uint32_t zone_idx) "set zone de pci_nvme_zd_extension_set(uint32_t zone_idx) "set descriptor extension for zone_idx=%"PRIu32"" pci_nvme_clear_ns_close(uint32_t state, uint64_t slba) "zone state=%"PRIu32", slba=%"PRIu64" transitioned to Closed state" pci_nvme_clear_ns_reset(uint32_t state, uint64_t slba) "zone state=%"PRIu32", slba=%"PRIu64" transitioned to Empty state" +pci_nvme_telemetry_log_invalid(size_t len, uint64_t offset) "len %zu offset %"PRIu64"" # nvme traces for error conditions pci_nvme_err_mdts(uint16_t cid, size_t len) "cid %"PRIu16" len %zu"