From nobody Sat May 4 18:11:23 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=1611051701; cv=none; d=zohomail.com; s=zohoarc; b=eOIOV7zvIJWfmkq6FHYlXDSR997agWerfMEIXOLG10q2NhwytCwoSIcu9p2rTcaw8rQY0av1sN5BDTDKxzBzT0CY4fOXvhECu5ChWkQA/XEWtwYfN7fljIafX9lZ4Tm/b5adTc9tnd+uk17wb7lYqCGnkf8fWOW9CSA51aX5VQY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1611051701; 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=+tAmzpCvx42xiyZfm5yP1gMSWDtVv8bpPH0xcCQrIGY=; b=AlvBLfomcQH1acZ7a682D+xRpbPOnMOXpOEtievNZfQBwCZ57VFjyx/d1XDINfayg+8SjaBp/odzTpVNYfqCwYnNJS7WamdGERCfw0Tsw3fCfgdnJ/3NDAoFJ/FLB4UmA+9r4qXgIBaM3N5+yNvJqlHA89U8QNvosd3plixre24= 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 1611051701812518.2884287060249; Tue, 19 Jan 2021 02:21:41 -0800 (PST) Received: from localhost ([::1]:42160 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1l1o8p-0004F1-Sz for importer@patchew.org; Tue, 19 Jan 2021 05:21:40 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:57658) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l1o2d-0001z9-35; Tue, 19 Jan 2021 05:15:15 -0500 Received: from wout2-smtp.messagingengine.com ([64.147.123.25]:49045) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l1o2a-0004Ew-6n; Tue, 19 Jan 2021 05:15:14 -0500 Received: from compute2.internal (compute2.nyi.internal [10.202.2.42]) by mailout.west.internal (Postfix) with ESMTP id 5C90BF62; Tue, 19 Jan 2021 05:15:09 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute2.internal (MEProxy); Tue, 19 Jan 2021 05:15:10 -0500 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 ACAF2240062; Tue, 19 Jan 2021 05:15:07 -0500 (EST) 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=+tAmzpCvx42xi yZfm5yP1gMSWDtVv8bpPH0xcCQrIGY=; b=hAD+ELdTVv1j3smqJnEo8Piqj4pQv AuvPt1/TTJ5EnyoSDAYDYZWc4pabehPmYr+HedtlYiKVuLmUYffn0Eyaw/YbpaUu lA6wPJTwytgGje1eZQDWp4YbLUd+PDZ690Cn6DMWzSuE76dJVYvHoS2TAfA56LBr rhSj9lwKVgBsB6ErxguYneJmq8rdNTdjzuzKGC6iDhnEuctRoibhoxhIlL6hqr8H AJfuEJRpY5qGdgoN4a+0dBy5prU62kFZcJZ6CawtpfvwTCYs4s3IvPTeN4WZby2a NslIwZJTJFrm0RzzJR6L1AUaIuG46lNQBGfZWRF3dtv/ZG5WoJAz8Pl0A== 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=+tAmzpCvx42xiyZfm5yP1gMSWDtVv8bpPH0xcCQrIGY=; b=lnD14BZw Htfh70ZSj0ab5qQB7rNZTxfIncxGUWCa+DmCOfliXFW97bIiGm2IlI6TtUFY3kea 806pDb13LkVTdC/mm5ji81TcTjS1Ay9QeRJoJhZp9JgirmC9dmtEREBV9lTOJPOs mXuPIGSZl13QFSi29pzGRnO1lwmvsVePIxMp2lP/T0YcGHU3Idhh0lHY91CeSyGe tUHtVpKYO+3wH3VV9k8qVNGG2cl0jQvvluBzCiAT6FyKKDehtxtJwAonuaAIGi3y t32KFoh/44W+nUuEpbX4sCs3nuVBFlQsFoAvL8cEzDymodNEw0fKDG5JHxoZ2SJg lNI7rh4ua1j+YQ== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduledruddtgddufecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefhvffufffkofgjfhgggfestdekredtredttdenucfhrhhomhepmfhlrghushcu lfgvnhhsvghnuceoihhtshesihhrrhgvlhgvvhgrnhhtrdgukheqnecuggftrfgrthhtvg hrnhepueelteegieeuhffgkeefgfevjeeigfetkeeitdfgtdeifefhtdfhfeeuffevgfek necukfhppeektddrudeijedrleekrdduledtnecuvehluhhsthgvrhfuihiivgeptdenuc frrghrrghmpehmrghilhhfrhhomhepihhtshesihhrrhgvlhgvvhgrnhhtrdgukh X-ME-Proxy: From: Klaus Jensen To: qemu-devel@nongnu.org Subject: [PATCH v3 01/12] hw/block/nvme: add size to mmio read/write trace events Date: Tue, 19 Jan 2021 11:14:53 +0100 Message-Id: <20210119101504.231259-2-its@irrelevant.dk> X-Mailer: git-send-email 2.30.0 In-Reply-To: <20210119101504.231259-1-its@irrelevant.dk> References: <20210119101504.231259-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=64.147.123.25; envelope-from=its@irrelevant.dk; helo=wout2-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: Fam Zheng , Kevin Wolf , qemu-block@nongnu.org, Klaus Jensen , Max Reitz , Keith Busch , Minwoo Im , Stefan Hajnoczi , Klaus Jensen Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: Klaus Jensen Add the size of the mmio read/write to the trace event. Signed-off-by: Klaus Jensen Reviewed-by: Minwoo Im Reviewed-by: Keith Busch --- hw/block/nvme.c | 4 ++-- hw/block/trace-events | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/hw/block/nvme.c b/hw/block/nvme.c index 309c26db8ff7..c1211b298603 100644 --- a/hw/block/nvme.c +++ b/hw/block/nvme.c @@ -3849,7 +3849,7 @@ static uint64_t nvme_mmio_read(void *opaque, hwaddr a= ddr, unsigned size) uint8_t *ptr =3D (uint8_t *)&n->bar; uint64_t val =3D 0; =20 - trace_pci_nvme_mmio_read(addr); + trace_pci_nvme_mmio_read(addr, size); =20 if (unlikely(addr & (sizeof(uint32_t) - 1))) { NVME_GUEST_ERR(pci_nvme_ub_mmiord_misaligned32, @@ -4013,7 +4013,7 @@ static void nvme_mmio_write(void *opaque, hwaddr addr= , uint64_t data, { NvmeCtrl *n =3D (NvmeCtrl *)opaque; =20 - trace_pci_nvme_mmio_write(addr, data); + trace_pci_nvme_mmio_write(addr, data, size); =20 if (addr < sizeof(n->bar)) { nvme_write_bar(n, addr, data, size); diff --git a/hw/block/trace-events b/hw/block/trace-events index 78d76b0a71c1..a104d7f4da80 100644 --- a/hw/block/trace-events +++ b/hw/block/trace-events @@ -80,8 +80,8 @@ pci_nvme_enqueue_event_noqueue(int queued) "queued %d" pci_nvme_enqueue_event_masked(uint8_t typ) "type 0x%"PRIx8"" pci_nvme_no_outstanding_aers(void) "ignoring event; no outstanding AERs" pci_nvme_enqueue_req_completion(uint16_t cid, uint16_t cqid, uint16_t stat= us) "cid %"PRIu16" cqid %"PRIu16" status 0x%"PRIx16"" -pci_nvme_mmio_read(uint64_t addr) "addr 0x%"PRIx64"" -pci_nvme_mmio_write(uint64_t addr, uint64_t data) "addr 0x%"PRIx64" data 0= x%"PRIx64"" +pci_nvme_mmio_read(uint64_t addr, unsigned size) "addr 0x%"PRIx64" size %d" +pci_nvme_mmio_write(uint64_t addr, uint64_t data, unsigned size) "addr 0x%= "PRIx64" data 0x%"PRIx64" size %d" pci_nvme_mmio_doorbell_cq(uint16_t cqid, uint16_t new_head) "cqid %"PRIu16= " new_head %"PRIu16"" pci_nvme_mmio_doorbell_sq(uint16_t sqid, uint16_t new_tail) "sqid %"PRIu16= " new_tail %"PRIu16"" pci_nvme_mmio_intm_set(uint64_t data, uint64_t new_mask) "wrote MMIO, inte= rrupt mask set, data=3D0x%"PRIx64", new_mask=3D0x%"PRIx64"" --=20 2.30.0 From nobody Sat May 4 18:11:23 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=1611052042; cv=none; d=zohomail.com; s=zohoarc; b=TNuf69o0vzyKrR+jlZK4oXupF+iAj/3l5+eN49egT6C9OVQTb/ie7SH2MaDDJctV9EGzsnwRr/udWYe+ZKc/0gERRmvI5mS2Apap42Piuy/ijPW7DBhyK77ySy2aBFlouGk+eprZ7VJQ4/1QggnymOwBvGqvMmTGx4gx6GWY0PE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1611052042; 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=ahOpw4FmX/eXVG9+HP1hL9grmczPrRhOOSOKNtCCRMo=; b=Fk0+45dnK+BflOODcv4VjBV2VM2KWg0W3g4g+e7HIY4DsW/vwhG1hgwnyD3Fuli90/jf+pPp6FVAdFxOd9FXftixqEn0vJR4we59A4tKbznl2MlE0TUga7aoyuSCqoiXFO+DLuqr+x4/rpy1Pf/WRuIaMxjmrBH4vebTzw6FEjg= 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 1611052042257807.5509703660099; Tue, 19 Jan 2021 02:27:22 -0800 (PST) Received: from localhost ([::1]:50816 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1l1oEK-000834-J7 for importer@patchew.org; Tue, 19 Jan 2021 05:27:20 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:57660) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l1o2d-0001zD-6P; Tue, 19 Jan 2021 05:15:15 -0500 Received: from wout2-smtp.messagingengine.com ([64.147.123.25]:41981) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l1o2b-0004GL-2X; Tue, 19 Jan 2021 05:15:14 -0500 Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) by mailout.west.internal (Postfix) with ESMTP id 2470AF4E; Tue, 19 Jan 2021 05:15:11 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute3.internal (MEProxy); Tue, 19 Jan 2021 05:15:11 -0500 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 2733B24005A; Tue, 19 Jan 2021 05:15:09 -0500 (EST) 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=ahOpw4FmX/eXV G9+HP1hL9grmczPrRhOOSOKNtCCRMo=; b=YpYOZDlkTVGdagReMOsYwxQPn+uca ADrX1OKEgNbt5NRekMpHTKKgAfIZIHMAggosFG1CEV5liSA5r7lZwbWjzkfnUB5C JMDG1bleuoDOGYxkdjuG1kH2jcMyi2ndRvzv6pYdIxEaerDYJnXS3h9lShkGP7lH KCxMtxXSaHYVdjf9FKDwP6LW8dbH6BcVhRZ2gR0PNHdRrrSE1/IXPEPblQI6xjTp jiRImpYikG6jQoR3WeQhqhkvPJelJze7NGj8t58asDUg7SqkLKO48EoivXJBDm17 n5HZhBnqjBR5Ozpw3SCnWcdD0v4q+V30ZxfpZV+8gUoOV5po1MbVmp3xA== 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=ahOpw4FmX/eXVG9+HP1hL9grmczPrRhOOSOKNtCCRMo=; b=X6Jjl7AT YzzN0pAY0SVD/QBtE1f5D3aI4rI4k9J2zJCeGe52G+0OpWVzeCqBiRp9nHCkS0k0 AHyIVbr3jkL3Za295Sbzp1qa+aSOD1u80Eukj80MTpQ2eCKZuE/3lQf8YbejRmHA /kuznlHus8K1zDEGUgFdP8vdEZ/X3b2qtv9oV9OvNOTGHK7HGV6xNvKGlVsxxF4k ZI6mr5UBCfiblUUxdNsxEQaWSlWOJyrEoBqbTw8MF1PPjkhjNU/rPXRtGhLJWxFW Dzmq8uwutIduIBSFkjZMcJ2mhjjL/J+jqykaNxbfwR5DTYaX3Bgw5DjCqgBEFciT yEeg0n3jXn6Pbw== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduledruddtgddufecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefhvffufffkofgjfhgggfestdekredtredttdenucfhrhhomhepmfhlrghushcu lfgvnhhsvghnuceoihhtshesihhrrhgvlhgvvhgrnhhtrdgukheqnecuggftrfgrthhtvg hrnhepueelteegieeuhffgkeefgfevjeeigfetkeeitdfgtdeifefhtdfhfeeuffevgfek necukfhppeektddrudeijedrleekrdduledtnecuvehluhhsthgvrhfuihiivgeptdenuc frrghrrghmpehmrghilhhfrhhomhepihhtshesihhrrhgvlhgvvhgrnhhtrdgukh X-ME-Proxy: From: Klaus Jensen To: qemu-devel@nongnu.org Subject: [PATCH v3 02/12] hw/block/nvme: fix 64 bit register hi/lo split writes Date: Tue, 19 Jan 2021 11:14:54 +0100 Message-Id: <20210119101504.231259-3-its@irrelevant.dk> X-Mailer: git-send-email 2.30.0 In-Reply-To: <20210119101504.231259-1-its@irrelevant.dk> References: <20210119101504.231259-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=64.147.123.25; envelope-from=its@irrelevant.dk; helo=wout2-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: Fam Zheng , Kevin Wolf , qemu-block@nongnu.org, Klaus Jensen , Max Reitz , Keith Busch , Stefan Hajnoczi , Klaus Jensen Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: Klaus Jensen 64 bit registers like ASQ and ACQ should be writable by both a hi/lo 32 bit write combination as well as a plain 64 bit write. The spec does not define ordering on the hi/lo split, but the code currently assumes that the low order bits are written first. Additionally, the code does not consider that another address might already have been written into the register, causing the OR'ing to result in a bad address. Fix this by explicitly overwriting only the low or high order bits for 32 bit writes. Signed-off-by: Klaus Jensen Reviewed-by: Keith Busch --- hw/block/nvme.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/hw/block/nvme.c b/hw/block/nvme.c index c1211b298603..9a508df8d200 100644 --- a/hw/block/nvme.c +++ b/hw/block/nvme.c @@ -3790,19 +3790,21 @@ static void nvme_write_bar(NvmeCtrl *n, hwaddr offs= et, uint64_t data, trace_pci_nvme_mmio_aqattr(data & 0xffffffff); break; case 0x28: /* ASQ */ - n->bar.asq =3D data; + n->bar.asq =3D size =3D=3D 8 ? data : + (n->bar.asq & ~0xffffffffULL) | (data & 0xffffffff); trace_pci_nvme_mmio_asqaddr(data); break; case 0x2c: /* ASQ hi */ - n->bar.asq |=3D data << 32; + n->bar.asq =3D (n->bar.asq & 0xffffffff) | (data << 32); trace_pci_nvme_mmio_asqaddr_hi(data, n->bar.asq); break; case 0x30: /* ACQ */ trace_pci_nvme_mmio_acqaddr(data); - n->bar.acq =3D data; + n->bar.acq =3D size =3D=3D 8 ? data : + (n->bar.acq & ~0xffffffffULL) | (data & 0xffffffff); break; case 0x34: /* ACQ hi */ - n->bar.acq |=3D data << 32; + n->bar.acq =3D (n->bar.acq & 0xffffffff) | (data << 32); trace_pci_nvme_mmio_acqaddr_hi(data, n->bar.acq); break; case 0x38: /* CMBLOC */ --=20 2.30.0 From nobody Sat May 4 18:11:23 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=1611051707; cv=none; d=zohomail.com; s=zohoarc; b=XQys+Rsvw8Du8MNLEx5fZtCJ+BhuMXCUVUuGtTLT6y/301kQhcQX7Lk8r/M8qs8AWe5G23rF28j9p4tzLRrD52kmKWvy8u+21rKGksnStQRlSGmFqtobpszYWEUmaVyIK1e+JcgSmKT4Kz5PwZTp8W1+uewoE+WtfYccVNRsPRI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1611051707; 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=CM6hNEpJ20kPyCBGBWpqYKEw6dzX6r8df3h0BstfxLw=; b=dvWWM+y1SCZBI94QxvSPIOy6pvddqfOVP5YkZ3xUIZG9rwyZqFTVBU9DtweOt1eUgHBrGXiD4co+rt7WzwYs0PphdSriyA0nwjWAbcCfXtIaNs0fUk4m11anSzCTqOEf9AxsdVZUD54ahsH4P57ybvifKIy/dNm2DAkcbA8VRZU= 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 1611051707381231.54459641311223; Tue, 19 Jan 2021 02:21:47 -0800 (PST) Received: from localhost ([::1]:42202 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1l1o8w-0004Fs-9D for importer@patchew.org; Tue, 19 Jan 2021 05:21:46 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:57718) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l1o2e-00020X-T6; Tue, 19 Jan 2021 05:15:16 -0500 Received: from wnew3-smtp.messagingengine.com ([64.147.123.17]:59209) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l1o2d-0004Gh-4W; Tue, 19 Jan 2021 05:15:16 -0500 Received: from compute2.internal (compute2.nyi.internal [10.202.2.42]) by mailnew.west.internal (Postfix) with ESMTP id C453AF50; Tue, 19 Jan 2021 05:15:12 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute2.internal (MEProxy); Tue, 19 Jan 2021 05:15:13 -0500 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 7D51D24005D; Tue, 19 Jan 2021 05:15:10 -0500 (EST) 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=CM6hNEpJ20kPy CBGBWpqYKEw6dzX6r8df3h0BstfxLw=; b=EkuookeSsMERUMbkmvBvXSSpQqzbf Zl8+CWlHXs4KhqpwopCCSIOLKmmvRb4op+i8B9wKyJKIfQCeN+BKTeejoRIMY/yQ PlLs8ur4H1ihI4AJg2ZcQbavBkekwZ/phtn/BR1+SEYW2Hkey7dM2rjh9s1DDWZa /3h9wAACnpM0iWozk8BwtI1MQhU/f67ElXJP/6ss/3lNOgnpk3u3HfFffdbQMAd8 VmdugNwecKA3KtW8LfQWOZEY7vmHkzs/T8bKWFpUlQaY/v9RU3myS7H4AWeGgnzc rR1GGPjfYUP4fq/oXgFwYZsk7Pq2AMkoAd+iCQUdlmdaLXpTyo9uEW3fA== 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=CM6hNEpJ20kPyCBGBWpqYKEw6dzX6r8df3h0BstfxLw=; b=Jagr+Bhc doL6/CNrqGyyPQG1+oRfTBVyzSZa69PpkjB19uj++pfret9vXAsMBzmyEE5z12Aw ho4fPjs3auiaQNNK39gsxdxqb14r1N/FTGMwZvnP5rnr6iTgN/cqL4hQhvC0QyP/ sk5aKgXmvJx1VD/55AJSU0OQyqIkVgEofZK79iptBvVTsZ7e8Mlc/X2AsZIeaA3J DaUKa3zDYgAZ4gyYFknCF8AFWNM/Vq8NjtyDO50J87/zoVP95ZLsEbXX3WiZtL8i QBo44qfUWvdpPAVO+0r1C7e1apAcvirGqnncxwmY98GM/QOIW2x919HDaonl5cPL myQtE45jOx4Z5A== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduledruddtgddufecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefhvffufffkofgjfhgggfestdekredtredttdenucfhrhhomhepmfhlrghushcu lfgvnhhsvghnuceoihhtshesihhrrhgvlhgvvhgrnhhtrdgukheqnecuggftrfgrthhtvg hrnhepueelteegieeuhffgkeefgfevjeeigfetkeeitdfgtdeifefhtdfhfeeuffevgfek necukfhppeektddrudeijedrleekrdduledtnecuvehluhhsthgvrhfuihiivgeptdenuc frrghrrghmpehmrghilhhfrhhomhepihhtshesihhrrhgvlhgvvhgrnhhtrdgukh X-ME-Proxy: From: Klaus Jensen To: qemu-devel@nongnu.org Subject: [PATCH v3 03/12] hw/block/nvme: indicate CMB support through controller capabilities register Date: Tue, 19 Jan 2021 11:14:55 +0100 Message-Id: <20210119101504.231259-4-its@irrelevant.dk> X-Mailer: git-send-email 2.30.0 In-Reply-To: <20210119101504.231259-1-its@irrelevant.dk> References: <20210119101504.231259-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=64.147.123.17; envelope-from=its@irrelevant.dk; helo=wnew3-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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Fam Zheng , Kevin Wolf , qemu-block@nongnu.org, Klaus Jensen , Max Reitz , Keith Busch , Andrzej Jakowski , Maxim Levitsky , Stefan Hajnoczi , Klaus Jensen , Minwoo Im Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: Andrzej Jakowski This patch sets CMBS bit in controller capabilities register when user configures NVMe driver with CMB support, so capabilites are correctly reported to guest OS. Signed-off-by: Andrzej Jakowski Reviewed-by: Maxim Levitsky Reviewed-by: Minwoo Im Signed-off-by: Klaus Jensen Reviewed-by: Keith Busch --- include/block/nvme.h | 10 +++++++--- hw/block/nvme.c | 1 + 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/include/block/nvme.h b/include/block/nvme.h index 45b2678db1f0..86d7fc2f905c 100644 --- a/include/block/nvme.h +++ b/include/block/nvme.h @@ -36,6 +36,7 @@ enum NvmeCapShift { CAP_MPSMIN_SHIFT =3D 48, CAP_MPSMAX_SHIFT =3D 52, CAP_PMR_SHIFT =3D 56, + CAP_CMB_SHIFT =3D 57, }; =20 enum NvmeCapMask { @@ -49,6 +50,7 @@ enum NvmeCapMask { CAP_MPSMIN_MASK =3D 0xf, CAP_MPSMAX_MASK =3D 0xf, CAP_PMR_MASK =3D 0x1, + CAP_CMB_MASK =3D 0x1, }; =20 #define NVME_CAP_MQES(cap) (((cap) >> CAP_MQES_SHIFT) & CAP_MQES_MASK) @@ -78,9 +80,11 @@ enum NvmeCapMask { #define NVME_CAP_SET_MPSMIN(cap, val) (cap |=3D (uint64_t)(val & CAP_MPSMI= N_MASK)\ << CAP_MPSMIN_S= HIFT) #define NVME_CAP_SET_MPSMAX(cap, val) (cap |=3D (uint64_t)(val & CAP_MPSMA= X_MASK)\ - << CAP_MPSMAX_= SHIFT) -#define NVME_CAP_SET_PMRS(cap, val) (cap |=3D (uint64_t)(val & CAP_PMR_MAS= K)\ - << CAP_PMR_SHI= FT) + << CAP_MPSMAX_S= HIFT) +#define NVME_CAP_SET_PMRS(cap, val) (cap |=3D (uint64_t)(val & CAP_PMR_M= ASK) \ + << CAP_PMR_SHIF= T) +#define NVME_CAP_SET_CMBS(cap, val) (cap |=3D (uint64_t)(val & CAP_CMB_M= ASK) \ + << CAP_CMB_SHIF= T) =20 enum NvmeCapCss { NVME_CAP_CSS_NVM =3D 1 << 0, diff --git a/hw/block/nvme.c b/hw/block/nvme.c index 9a508df8d200..3168ba5114ed 100644 --- a/hw/block/nvme.c +++ b/hw/block/nvme.c @@ -4345,6 +4345,7 @@ static void nvme_init_ctrl(NvmeCtrl *n, PCIDevice *pc= i_dev) NVME_CAP_SET_CSS(n->bar.cap, NVME_CAP_CSS_CSI_SUPP); NVME_CAP_SET_CSS(n->bar.cap, NVME_CAP_CSS_ADMIN_ONLY); NVME_CAP_SET_MPSMAX(n->bar.cap, 4); + NVME_CAP_SET_CMBS(n->bar.cap, n->params.cmb_size_mb ? 1 : 0); =20 n->bar.vs =3D NVME_SPEC_VER; n->bar.intmc =3D n->bar.intms =3D 0; --=20 2.30.0 From nobody Sat May 4 18:11:23 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=1611052043; cv=none; d=zohomail.com; s=zohoarc; b=CNKXr9crlayMhMQSJdCiLLj6epUUCKRSeljwSzCkb52imIS/WftMITmmCMCYwBaFK93Dltu32h9Z7dI/oZNEHB6v0sS0warN4k7KfSTusOB5Ydfj3H+mq5zaHOS0eOE0DRXQcc8U9iuv+JF27cg7ReGhamXYPNGZbli/JUxxmnE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1611052043; 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=ynurTCYdiZZ+D1wPIWGL2NzMoOmewCdrrXbPLvA7ACg=; b=TWlyHkju/ZuYuaPGuhgFWVwgTuOe2Vsdb3vO6JEPXeXVqNzXKE/bxc2MqW7Pb31jUtc63Q0QOQf00TwXHmG0T73z4OWlo0mhxSrjugQ/9OXDAJECvh8rY9vqlIXeHueDlFPwbSAdvLLYCfjiu0XTXmgTkuH6iurch1KzeC7iyz0= 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 1611052043530120.4168614532241; Tue, 19 Jan 2021 02:27:23 -0800 (PST) Received: from localhost ([::1]:50818 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1l1oEM-000835-9Z for importer@patchew.org; Tue, 19 Jan 2021 05:27:22 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:57770) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l1o2g-000229-Ii; Tue, 19 Jan 2021 05:15:18 -0500 Received: from wout2-smtp.messagingengine.com ([64.147.123.25]:56815) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l1o2d-0004Gx-Vg; Tue, 19 Jan 2021 05:15:18 -0500 Received: from compute2.internal (compute2.nyi.internal [10.202.2.42]) by mailout.west.internal (Postfix) with ESMTP id D3B65F5C; Tue, 19 Jan 2021 05:15:13 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute2.internal (MEProxy); Tue, 19 Jan 2021 05:15:14 -0500 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 2B5C224005A; Tue, 19 Jan 2021 05:15:12 -0500 (EST) 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=ynurTCYdiZZ+D 1wPIWGL2NzMoOmewCdrrXbPLvA7ACg=; b=J+xzkVrFy3Xdeg0znLbL+t8tGN/9C lSwFRBUuq/X1BWH/+AqLKoM01FazJsxpPxVLFUKIHW+BFguuMo4IysfckQ962SoW pFREsS+ouGvpIvs5C2Sq5aCrWVI7QLqEOhRDqAauUBVVzQ6zofGyYJXyTKmyH8e8 CGcpqaf1Qw13WNr0nv798peBasDKe61R+mSvZ1w7bN5fEBwXg1W617pmIMXmGKn3 +sHIEG9wGJcvSpWcG2wLnxfK76kSu7v4uMVxYtl4T+Uuiu01mPBKcSlNeqQumP/Y pj5qkgP15955O/jZ9Rk6jfzNQ7V6HqDD1UQIaAjeT7pqDfFi6LaNVj7aw== 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=ynurTCYdiZZ+D1wPIWGL2NzMoOmewCdrrXbPLvA7ACg=; b=ct1IFGt6 ToUtoXwujMj62GtWyAE/FtXkZQKeR0ICfIDRx+iQ70FiCLOfD8FNxtB/+EzNtNSY XezPBc7AaSDyBXRy+LU4NJfYmgx0zCcMyp0uRK57BkqgRXz9J24nWXv6G7+uopXt ZG0ME70l8JXI2MofskxPFFJcTfZGJuP6fgRFg0gBkXA9N+2QzLbXjaUctrHOJMeI JALBmn2yk+uSQSom6ag0W9qdvlT6pKLCNA5Vax1K0uu1ehKsozPic0aahbXylcRY mEPJkhouZesEw+Hu7cLfwRP89/y+ACAGO0HuIFfQzkbJ/YsuU5Z9E2h3M9jS7zlz kuxzIpXIoRQJ8g== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduledruddtgddufecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefhvffufffkofgjfhgggfestdekredtredttdenucfhrhhomhepmfhlrghushcu lfgvnhhsvghnuceoihhtshesihhrrhgvlhgvvhgrnhhtrdgukheqnecuggftrfgrthhtvg hrnhepgfdvteektedufefffeekhfejfeeuleevkeduieeifeefveffhfegueejvdetfedu necuffhomhgrihhnpehkvghrnhgvlhdrohhrghenucfkphepkedtrdduieejrdelkedrud eltdenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehi thhssehirhhrvghlvghvrghnthdrughk X-ME-Proxy: From: Klaus Jensen To: qemu-devel@nongnu.org Subject: [PATCH v3 04/12] hw/block/nvme: move msix table and pba to BAR 0 Date: Tue, 19 Jan 2021 11:14:56 +0100 Message-Id: <20210119101504.231259-5-its@irrelevant.dk> X-Mailer: git-send-email 2.30.0 In-Reply-To: <20210119101504.231259-1-its@irrelevant.dk> References: <20210119101504.231259-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=64.147.123.25; envelope-from=its@irrelevant.dk; helo=wout2-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: Fam Zheng , Kevin Wolf , qemu-block@nongnu.org, Klaus Jensen , Max Reitz , Keith Busch , Minwoo Im , Stefan Hajnoczi , Klaus Jensen Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: Klaus Jensen In the interest of supporting both CMB and PMR to be enabled on the same device, move the MSI-X table and pending bit array out of BAR 4 and into BAR 0. This is a simplified version of the patch contributed by Andrzej Jakowski (see [1]). Leaving the CMB at offset 0 removes the need for changes to CMB address mapping code. [1]: https://lore.kernel.org/qemu-devel/20200729220107.37758-3-andrzej.ja= kowski@linux.intel.com/ Reviewed-by: Minwoo Im Tested-by: Minwoo Im Signed-off-by: Klaus Jensen Reviewed-by: Keith Busch --- hw/block/nvme.h | 1 + hw/block/nvme.c | 23 +++++++++++++++++++++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/hw/block/nvme.h b/hw/block/nvme.h index 347c149e7905..e5d2cce207f4 100644 --- a/hw/block/nvme.h +++ b/hw/block/nvme.h @@ -125,6 +125,7 @@ typedef struct NvmeFeatureVal { =20 typedef struct NvmeCtrl { PCIDevice parent_obj; + MemoryRegion bar0; MemoryRegion iomem; MemoryRegion ctrl_mem; NvmeBar bar; diff --git a/hw/block/nvme.c b/hw/block/nvme.c index 3168ba5114ed..65813f6461cf 100644 --- a/hw/block/nvme.c +++ b/hw/block/nvme.c @@ -4239,6 +4239,8 @@ static void nvme_init_pmr(NvmeCtrl *n, PCIDevice *pci= _dev) static int nvme_init_pci(NvmeCtrl *n, PCIDevice *pci_dev, Error **errp) { uint8_t *pci_conf =3D pci_dev->config; + uint64_t bar_size, msix_table_size, msix_pba_size; + unsigned msix_table_offset, msix_pba_offset; int ret; =20 Error *err =3D NULL; @@ -4257,11 +4259,28 @@ static int nvme_init_pci(NvmeCtrl *n, PCIDevice *pc= i_dev, Error **errp) pci_config_set_class(pci_conf, PCI_CLASS_STORAGE_EXPRESS); pcie_endpoint_cap_init(pci_dev, 0x80); =20 + bar_size =3D QEMU_ALIGN_UP(n->reg_size, 4 * KiB); + msix_table_offset =3D bar_size; + msix_table_size =3D PCI_MSIX_ENTRY_SIZE * n->params.msix_qsize; + + bar_size +=3D msix_table_size; + bar_size =3D QEMU_ALIGN_UP(bar_size, 4 * KiB); + msix_pba_offset =3D bar_size; + msix_pba_size =3D QEMU_ALIGN_UP(n->params.msix_qsize, 64) / 8; + + bar_size +=3D msix_pba_size; + bar_size =3D pow2ceil(bar_size); + + memory_region_init(&n->bar0, OBJECT(n), "nvme-bar0", bar_size); memory_region_init_io(&n->iomem, OBJECT(n), &nvme_mmio_ops, n, "nvme", n->reg_size); + memory_region_add_subregion(&n->bar0, 0, &n->iomem); + pci_register_bar(pci_dev, 0, PCI_BASE_ADDRESS_SPACE_MEMORY | - PCI_BASE_ADDRESS_MEM_TYPE_64, &n->iomem); - ret =3D msix_init_exclusive_bar(pci_dev, n->params.msix_qsize, 4, &err= ); + PCI_BASE_ADDRESS_MEM_TYPE_64, &n->bar0); + ret =3D msix_init(pci_dev, n->params.msix_qsize, + &n->bar0, 0, msix_table_offset, + &n->bar0, 0, msix_pba_offset, 0, &err); if (ret < 0) { if (ret =3D=3D -ENOTSUP) { warn_report_err(err); --=20 2.30.0 From nobody Sat May 4 18:11:23 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=1611052044; cv=none; d=zohomail.com; s=zohoarc; b=MD3VjvVhFI9eJ/DiAHzNYfhDpfW4O2TzI0cCgQ1nWckyYZ6gCWR1Z06sLv/SCdPhKs+HJuSO5jWdvIFJDj9Ol8UbTJEham+7IFXYGRR7ISTl8pPs6iE3OyOhzXHoRklCtVCAmJj3mXRGc88S7T0FXopCaTA7QygJ7gxcjO98OdI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1611052044; 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=fOfhpOWK82RFUpD3zrzcNzDbzvNFbRcsvEiSRn5LJ/A=; b=md8NleIv4nIUekBO+POeLX+obedvmGymfMZyP0Sb2aiD7w9OUqDeSAX4r27LvGaeGP7muZbZwF1aw8mbow35qGN8Ps/itiYHNfP4Vb09mwxv7akGCPfSxXzCD8ywCidjVj+FDCZX9kuCsomhOTcSJFrBd+jMjNLr6dFv6w/VkHQ= 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 161105204463143.926191108555145; Tue, 19 Jan 2021 02:27:24 -0800 (PST) Received: from localhost ([::1]:50850 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1l1oEN-00083g-5E for importer@patchew.org; Tue, 19 Jan 2021 05:27:23 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:57804) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l1o2i-000244-57; Tue, 19 Jan 2021 05:15:20 -0500 Received: from wout2-smtp.messagingengine.com ([64.147.123.25]:45019) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l1o2f-0004Hd-DC; Tue, 19 Jan 2021 05:15:19 -0500 Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.west.internal (Postfix) with ESMTP id 6CE35F52; Tue, 19 Jan 2021 05:15:15 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute4.internal (MEProxy); Tue, 19 Jan 2021 05:15:16 -0500 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 9AAFB240066; Tue, 19 Jan 2021 05:15:13 -0500 (EST) 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=fOfhpOWK82RFU pD3zrzcNzDbzvNFbRcsvEiSRn5LJ/A=; b=h7sjUQS95mLWuHKFDmMgFuiwJQOUg mNZy8Bsk7ZgSaSyMamTELQMppcNT+gzsgqVcfABSDUJJe1+GbklvOw/lVK13BSHA A1EECbCYR2abiNuZVcdamHT3gcn0YRniIbJxTMkmLFOcCl4MAhRbhrImqlWckxNM GrWABrEIEWzT7HB7O3PUltD1z8z/JZLdI+9ofaYrW6A5vJsLAuqSzfQHUPtSuLfj R8AeRe1yVmeW5lDXjSz/9dtZuXP6736e0lMeksgF12N52yJHG1rLNklApgyHWWZu 5YcMGbWtLw57yYzkwXO5Lrq1mb4JxrmKQN9/fR6PYuUmVRnUCOY8SCnyg== 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=fOfhpOWK82RFUpD3zrzcNzDbzvNFbRcsvEiSRn5LJ/A=; b=EmposOyR EeoIJdXxR6SrtRBw274RrdGGnChjx9KQcCbTLd9mJHl+npTY9pc/tZict6hGv71Q UmcLFXdAQurZOHXALhW7oVRpvOnKnqR0FwGhd9Gqf3UaoAAkx8WtO7jAaVKIJVS1 wiG5sTefa8LKWt1B9Hv9lfx1vug1LyTpLnw5AYqdMFusOEy6E0aObM/KW9Yb2uFX hkMmKocI0adqDAVmh3r4UDId1CqaF65WrJ7UidZ2lx4sUjCt3RwMOVMCOhidxbZ2 QqNXzXRWksPIHKM+4A9g6eRQV69Yt7fTejxJW8yC6lFSj0N3gZH7G+Vbo/h9eW8S WD5MX3TZJ1t0HQ== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduledruddtgdduvdcutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefhvffufffkofgjfhgggfestdekredtredttdenucfhrhhomhepmfhlrghushcu lfgvnhhsvghnuceoihhtshesihhrrhgvlhgvvhgrnhhtrdgukheqnecuggftrfgrthhtvg hrnhepueelteegieeuhffgkeefgfevjeeigfetkeeitdfgtdeifefhtdfhfeeuffevgfek necukfhppeektddrudeijedrleekrdduledtnecuvehluhhsthgvrhfuihiivgeptdenuc frrghrrghmpehmrghilhhfrhhomhepihhtshesihhrrhgvlhgvvhgrnhhtrdgukh X-ME-Proxy: From: Klaus Jensen To: qemu-devel@nongnu.org Subject: [PATCH v3 05/12] hw/block/nvme: allow cmb and pmr to coexist Date: Tue, 19 Jan 2021 11:14:57 +0100 Message-Id: <20210119101504.231259-6-its@irrelevant.dk> X-Mailer: git-send-email 2.30.0 In-Reply-To: <20210119101504.231259-1-its@irrelevant.dk> References: <20210119101504.231259-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=64.147.123.25; envelope-from=its@irrelevant.dk; helo=wout2-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: Fam Zheng , Kevin Wolf , qemu-block@nongnu.org, Klaus Jensen , Max Reitz , Keith Busch , Minwoo Im , Stefan Hajnoczi , Klaus Jensen Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: Klaus Jensen With BAR 4 now free to use, allow PMR and CMB to be enabled simultaneously. Reviewed-by: Minwoo Im Signed-off-by: Klaus Jensen Reviewed-by: Keith Busch --- hw/block/nvme.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/hw/block/nvme.c b/hw/block/nvme.c index 65813f6461cf..e4fb89c88e23 100644 --- a/hw/block/nvme.c +++ b/hw/block/nvme.c @@ -29,14 +29,13 @@ * Note cmb_size_mb denotes size of CMB in MB. CMB is assumed to be at * offset 0 in BAR2 and supports only WDS, RDS and SQS for now. * - * cmb_size_mb=3D and pmrdev=3D options are mutually exclusive due to limi= tation - * in available BAR's. cmb_size_mb=3D will take precedence over pmrdev=3D = when - * both provided. * Enabling pmr emulation can be achieved by pointing to memory-backend-fi= le. * For example: * -object memory-backend-file,id=3D,share=3Don,mem-path=3D, \ * size=3D .... -device nvme,...,pmrdev=3D * + * The PMR will use BAR 4/5 exclusively. + * * * nvme device parameters * ~~~~~~~~~~~~~~~~~~~~~~ @@ -109,7 +108,7 @@ #define NVME_DB_SIZE 4 #define NVME_SPEC_VER 0x00010300 #define NVME_CMB_BIR 2 -#define NVME_PMR_BIR 2 +#define NVME_PMR_BIR 4 #define NVME_TEMPERATURE 0x143 #define NVME_TEMPERATURE_WARNING 0x157 #define NVME_TEMPERATURE_CRITICAL 0x175 @@ -4092,7 +4091,7 @@ static void nvme_check_constraints(NvmeCtrl *n, Error= **errp) return; } =20 - if (!n->params.cmb_size_mb && n->pmrdev) { + if (n->pmrdev) { if (host_memory_backend_is_mapped(n->pmrdev)) { error_setg(errp, "can't use already busy memdev: %s", object_get_canonical_path_component(OBJECT(n->pmrde= v))); @@ -4189,9 +4188,6 @@ static void nvme_init_cmb(NvmeCtrl *n, PCIDevice *pci= _dev) =20 static void nvme_init_pmr(NvmeCtrl *n, PCIDevice *pci_dev) { - /* Controller Capabilities register */ - NVME_CAP_SET_PMRS(n->bar.cap, 1); - /* PMR Capabities register */ n->bar.pmrcap =3D 0; NVME_PMRCAP_SET_RDS(n->bar.pmrcap, 0); @@ -4292,7 +4288,9 @@ static int nvme_init_pci(NvmeCtrl *n, PCIDevice *pci_= dev, Error **errp) =20 if (n->params.cmb_size_mb) { nvme_init_cmb(n, pci_dev); - } else if (n->pmrdev) { + } + + if (n->pmrdev) { nvme_init_pmr(n, pci_dev); } =20 @@ -4365,6 +4363,7 @@ static void nvme_init_ctrl(NvmeCtrl *n, PCIDevice *pc= i_dev) NVME_CAP_SET_CSS(n->bar.cap, NVME_CAP_CSS_ADMIN_ONLY); NVME_CAP_SET_MPSMAX(n->bar.cap, 4); NVME_CAP_SET_CMBS(n->bar.cap, n->params.cmb_size_mb ? 1 : 0); + NVME_CAP_SET_PMRS(n->bar.cap, n->pmrdev ? 1 : 0); =20 n->bar.vs =3D NVME_SPEC_VER; n->bar.intmc =3D n->bar.intms =3D 0; --=20 2.30.0 From nobody Sat May 4 18:11:23 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=1611051709; cv=none; d=zohomail.com; s=zohoarc; b=ikdpUS01eCoyA660zXxUVvAB6jlR6U+a8NQCHD++SU9sIYz2jJxyRPoM4UBih2zal0+LJIOTKk4v3/hbPuSG0O+Qh+l0L13c3NMfCx5XA6KxGF5zo0mTXkUwPxeuZBWLR5+D8lVe1Ymu3rb7FI8+jgANWmrbCa5A5trFQ5I6/Gk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1611051709; 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=mJVLB/WGdVWqNaTjqp4aIkVY7ievaaG46upf1c0VMZQ=; b=M1nWZWuj8DXbJ0pM/QbxBjKrOYUvyb7lIvovIIJD0TmLHPc+QMgvh4tzOF9GFumhxniJLGcxEO4n86Qy436JktSYuBASwcExlgj8M/ZjGIOvNw1f9q4WQ9uFwqSVIg1q6AUpEAdZzXQqw7sxUmNiNe5guAmba2ghD71+5KXMcVw= 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 1611051709162799.7241491067665; Tue, 19 Jan 2021 02:21:49 -0800 (PST) Received: from localhost ([::1]:42354 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1l1o8y-0004Jv-18 for importer@patchew.org; Tue, 19 Jan 2021 05:21:48 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:57812) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l1o2i-00025Q-LP; Tue, 19 Jan 2021 05:15:20 -0500 Received: from wout2-smtp.messagingengine.com ([64.147.123.25]:39143) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l1o2g-0004Hz-UM; Tue, 19 Jan 2021 05:15:20 -0500 Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.west.internal (Postfix) with ESMTP id D66AAF5B; Tue, 19 Jan 2021 05:15:16 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute4.internal (MEProxy); Tue, 19 Jan 2021 05:15:17 -0500 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 17CD724005A; Tue, 19 Jan 2021 05:15:14 -0500 (EST) 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=mJVLB/WGdVWqN aTjqp4aIkVY7ievaaG46upf1c0VMZQ=; b=CdyI9wzRuSd9kMIQFfiW5N83BUq6m MrVbtscrAyNtP3bz5p43rbbAxgI+vm4yz0tUUxmfOwqNGnHxp+ah9p0IFu/BLYZZ +kBwYjAC7IwTAuji1wQvMLcEkXiSRoxKAIpbjAn5ZqhJRSALDnqQqetC6Fu50STS mXH5LGoDN5cxRWkhQhsIJaRYHQAts+7DNNUKg9M/ECWN9rKfhgvn0BVamPIF2HGS tBNzAKZaHVVUJ+87k7n7pouFocTCzMvsMbc1DVygQgcHYbxrA2R/6K7t4YXfIDmT NnQuWsfNZXJ/yVFQhbXmW4uV5498v5peGPj/5NUQybMnJzXzrthnhc8vg== 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=mJVLB/WGdVWqNaTjqp4aIkVY7ievaaG46upf1c0VMZQ=; b=IOTaXkUU 9nuzgW84fDkL3ku7bcLxQflaX9UssFQXZ/NeJZyWlVgWs12STXjnfvcX265yh7a4 4TlvajoelXLJzAQ3OUOrQoHpzgDBzT3Q0GOfUWfCc1mDphsJFGTDbfbsIhl2PYEz sGMecbg2nujG6/Wns2gi2QjfBrZibEGFXmxRhFejhrRtWU/XqPcDbJQk9fO+8v3V yFYNiiGBrJyblcvoMeRYUDJRurzf4YjMCjrr1K3MFXce9irU6V96hODMdT8EWrBy xMr07OyQQ6ZkCoTuSLs2Xb8llYUf64rh07jL14A+Sb78WupHxKAmrzVfE4Crr5VJ 3KvKuL620X8ZBg== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduledruddtgdduvdcutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefhvffufffkofgjfhgggfestdekredtredttdenucfhrhhomhepmfhlrghushcu lfgvnhhsvghnuceoihhtshesihhrrhgvlhgvvhgrnhhtrdgukheqnecuggftrfgrthhtvg hrnhepueelteegieeuhffgkeefgfevjeeigfetkeeitdfgtdeifefhtdfhfeeuffevgfek necukfhppeektddrudeijedrleekrdduledtnecuvehluhhsthgvrhfuihiivgepudenuc frrghrrghmpehmrghilhhfrhhomhepihhtshesihhrrhgvlhgvvhgrnhhtrdgukh X-ME-Proxy: From: Klaus Jensen To: qemu-devel@nongnu.org Subject: [PATCH v3 06/12] hw/block/nvme: rename PMR/CMB shift/mask fields Date: Tue, 19 Jan 2021 11:14:58 +0100 Message-Id: <20210119101504.231259-7-its@irrelevant.dk> X-Mailer: git-send-email 2.30.0 In-Reply-To: <20210119101504.231259-1-its@irrelevant.dk> References: <20210119101504.231259-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=64.147.123.25; envelope-from=its@irrelevant.dk; helo=wout2-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: Fam Zheng , Kevin Wolf , qemu-block@nongnu.org, Klaus Jensen , Max Reitz , Keith Busch , Minwoo Im , Stefan Hajnoczi , Klaus Jensen Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: Klaus Jensen Use the correct field names. Reviewed-by: Minwoo Im Signed-off-by: Klaus Jensen Reviewed-by: Keith Busch --- include/block/nvme.h | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/include/block/nvme.h b/include/block/nvme.h index 86d7fc2f905c..f3cbe17d0971 100644 --- a/include/block/nvme.h +++ b/include/block/nvme.h @@ -35,8 +35,8 @@ enum NvmeCapShift { CAP_CSS_SHIFT =3D 37, CAP_MPSMIN_SHIFT =3D 48, CAP_MPSMAX_SHIFT =3D 52, - CAP_PMR_SHIFT =3D 56, - CAP_CMB_SHIFT =3D 57, + CAP_PMRS_SHIFT =3D 56, + CAP_CMBS_SHIFT =3D 57, }; =20 enum NvmeCapMask { @@ -49,8 +49,8 @@ enum NvmeCapMask { CAP_CSS_MASK =3D 0xff, CAP_MPSMIN_MASK =3D 0xf, CAP_MPSMAX_MASK =3D 0xf, - CAP_PMR_MASK =3D 0x1, - CAP_CMB_MASK =3D 0x1, + CAP_PMRS_MASK =3D 0x1, + CAP_CMBS_MASK =3D 0x1, }; =20 #define NVME_CAP_MQES(cap) (((cap) >> CAP_MQES_SHIFT) & CAP_MQES_MASK) @@ -81,10 +81,10 @@ enum NvmeCapMask { << CAP_MPSMIN_S= HIFT) #define NVME_CAP_SET_MPSMAX(cap, val) (cap |=3D (uint64_t)(val & CAP_MPSMA= X_MASK)\ << CAP_MPSMAX_S= HIFT) -#define NVME_CAP_SET_PMRS(cap, val) (cap |=3D (uint64_t)(val & CAP_PMR_M= ASK) \ - << CAP_PMR_SHIF= T) -#define NVME_CAP_SET_CMBS(cap, val) (cap |=3D (uint64_t)(val & CAP_CMB_M= ASK) \ - << CAP_CMB_SHIF= T) +#define NVME_CAP_SET_PMRS(cap, val) (cap |=3D (uint64_t)(val & CAP_PMRS_= MASK) \ + << CAP_PMRS_SHI= FT) +#define NVME_CAP_SET_CMBS(cap, val) (cap |=3D (uint64_t)(val & CAP_CMBS_= MASK) \ + << CAP_CMBS_SHI= FT) =20 enum NvmeCapCss { NVME_CAP_CSS_NVM =3D 1 << 0, --=20 2.30.0 From nobody Sat May 4 18:11:23 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=1611052386; cv=none; d=zohomail.com; s=zohoarc; b=LclV310r6nHFYyYD9qQEgkHZF7S27iBtqYXpeVtfEF/Z9/7XRPj0tmV4uCkNZJDjAbjk+N3qVzdxXnCXDJiTMTkfuXtGc6U3Bo+Di4YKgjODVoxHPa8h40Y6OsAVlIEIyKS0mpJCDdy/P9C0D1oA2bm0CYqjQfOZl6b8POjEQik= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1611052386; 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=FvbSwlvKxeTHOXvOW9mbTiUCPAJe3BwO+kLpXHKnqBg=; b=c8yxOCWHwdw4LHwFU/rkQWYKWdRkNSz73RVQ+DlneB+5c1htMVrfwqW7NCxCxnqB4b3dQXQCP3m7eNQ8UGKoMEc13Zz22LQ6xV+9DabcX7ou8x3BCoFjlU561GVLAHy55ilJxFSnhFufbzDqnOOSy0MpoBryMQLGcA96mow/OgU= 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 1611052385829566.5482351494401; Tue, 19 Jan 2021 02:33:05 -0800 (PST) Received: from localhost ([::1]:60418 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1l1oJs-0003f6-2x for importer@patchew.org; Tue, 19 Jan 2021 05:33:04 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:57844) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l1o2k-00027y-FS; Tue, 19 Jan 2021 05:15:22 -0500 Received: from wout2-smtp.messagingengine.com ([64.147.123.25]:50109) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l1o2i-0004Im-MA; Tue, 19 Jan 2021 05:15:22 -0500 Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.west.internal (Postfix) with ESMTP id 26D77F5A; Tue, 19 Jan 2021 05:15:18 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute4.internal (MEProxy); Tue, 19 Jan 2021 05:15:18 -0500 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 8767424005B; Tue, 19 Jan 2021 05:15:16 -0500 (EST) 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=FvbSwlvKxeTHO XvOW9mbTiUCPAJe3BwO+kLpXHKnqBg=; b=n19WDPn4dG1ZMG+7Q4qsG2dMDQloF IFO21xFUnALhnfDCrNFrr2BMcgMh96MQZW2Vr+cdxo0mjcFi1PuqkyYCHgav1lFD Z1eM7mayVgD7InJbgzbiZeVHVwhH4TfV7WqqfwHtXUlYzTMyuf/MK/7l9G1iPby0 dQIplxVR6WJ7f+g11svOY1j7EwVwNLDj++Mnb9CME11PWaeo2926prBrRwdvNJ+R 6zUnojYGBy8nZmfu1Kd1YdOtCMyPc95++icjA5gJqTEq4JJIoRgNz/Tz/5GSWgm/ pywBLMS7KwFAwwD5UIIAsqBArHGUtM1aUhZHevBBbo3ePwygt2mFN0doA== 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=FvbSwlvKxeTHOXvOW9mbTiUCPAJe3BwO+kLpXHKnqBg=; b=iQsvcUpe 9yjjdsr2+oqiQKr1EtderAQ5dOalzH30jW5hZa+UiJN23msE1t3pzOTWm/7QbsmV Hywsp706X/yGNQzne+Q7XYNWPZEe4L4kLUGbwuf2ILTkKW1qW2gqqdtWwQf0Dm4w exaJL3//74cHwwU6K2EmhF7lCcyy5xRf+M9n+l2m2mu0wwXQge34dCa3pOPi9aNZ wGyB8/8/lDDpHrR+cP+fDEws/zmz9U5NQA7DCrJpDr0YVDMWWeRLbzr10prADk73 UeYKOZGjjd/s06Zgjh2ABIyEC+65yM+R+zYEdZmU7AlThoBbr6VD6uzfDlhHqn0x RbUpzbl7FWdPPw== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduledruddtgdduvdcutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefhvffufffkofgjfhgggfestdekredtredttdenucfhrhhomhepmfhlrghushcu lfgvnhhsvghnuceoihhtshesihhrrhgvlhgvvhgrnhhtrdgukheqnecuggftrfgrthhtvg hrnhepueelteegieeuhffgkeefgfevjeeigfetkeeitdfgtdeifefhtdfhfeeuffevgfek necukfhppeektddrudeijedrleekrdduledtnecuvehluhhsthgvrhfuihiivgepudenuc frrghrrghmpehmrghilhhfrhhomhepihhtshesihhrrhgvlhgvvhgrnhhtrdgukh X-ME-Proxy: From: Klaus Jensen To: qemu-devel@nongnu.org Subject: [PATCH v3 07/12] hw/block/nvme: remove redundant zeroing of PMR registers Date: Tue, 19 Jan 2021 11:14:59 +0100 Message-Id: <20210119101504.231259-8-its@irrelevant.dk> X-Mailer: git-send-email 2.30.0 In-Reply-To: <20210119101504.231259-1-its@irrelevant.dk> References: <20210119101504.231259-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=64.147.123.25; envelope-from=its@irrelevant.dk; helo=wout2-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: Fam Zheng , Kevin Wolf , qemu-block@nongnu.org, Klaus Jensen , Max Reitz , Keith Busch , Stefan Hajnoczi , Klaus Jensen Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: Klaus Jensen The controller registers are initially zero. Remove the redundant zeroing. Signed-off-by: Klaus Jensen Reviewed-by: Keith Busch Reviewed-by: Minwoo Im --- hw/block/nvme.c | 34 ---------------------------------- 1 file changed, 34 deletions(-) diff --git a/hw/block/nvme.c b/hw/block/nvme.c index e4fb89c88e23..85b6617a0ce0 100644 --- a/hw/block/nvme.c +++ b/hw/block/nvme.c @@ -4188,43 +4188,9 @@ static void nvme_init_cmb(NvmeCtrl *n, PCIDevice *pc= i_dev) =20 static void nvme_init_pmr(NvmeCtrl *n, PCIDevice *pci_dev) { - /* PMR Capabities register */ - n->bar.pmrcap =3D 0; - NVME_PMRCAP_SET_RDS(n->bar.pmrcap, 0); - NVME_PMRCAP_SET_WDS(n->bar.pmrcap, 0); NVME_PMRCAP_SET_BIR(n->bar.pmrcap, NVME_PMR_BIR); - NVME_PMRCAP_SET_PMRTU(n->bar.pmrcap, 0); /* Turn on bit 1 support */ NVME_PMRCAP_SET_PMRWBM(n->bar.pmrcap, 0x02); - NVME_PMRCAP_SET_PMRTO(n->bar.pmrcap, 0); - NVME_PMRCAP_SET_CMSS(n->bar.pmrcap, 0); - - /* PMR Control register */ - n->bar.pmrctl =3D 0; - NVME_PMRCTL_SET_EN(n->bar.pmrctl, 0); - - /* PMR Status register */ - n->bar.pmrsts =3D 0; - NVME_PMRSTS_SET_ERR(n->bar.pmrsts, 0); - NVME_PMRSTS_SET_NRDY(n->bar.pmrsts, 0); - NVME_PMRSTS_SET_HSTS(n->bar.pmrsts, 0); - NVME_PMRSTS_SET_CBAI(n->bar.pmrsts, 0); - - /* PMR Elasticity Buffer Size register */ - n->bar.pmrebs =3D 0; - NVME_PMREBS_SET_PMRSZU(n->bar.pmrebs, 0); - NVME_PMREBS_SET_RBB(n->bar.pmrebs, 0); - NVME_PMREBS_SET_PMRWBZ(n->bar.pmrebs, 0); - - /* PMR Sustained Write Throughput register */ - n->bar.pmrswtp =3D 0; - NVME_PMRSWTP_SET_PMRSWTU(n->bar.pmrswtp, 0); - NVME_PMRSWTP_SET_PMRSWTV(n->bar.pmrswtp, 0); - - /* PMR Memory Space Control register */ - n->bar.pmrmsc =3D 0; - NVME_PMRMSC_SET_CMSE(n->bar.pmrmsc, 0); - NVME_PMRMSC_SET_CBA(n->bar.pmrmsc, 0); =20 pci_register_bar(pci_dev, NVME_PMRCAP_BIR(n->bar.pmrcap), PCI_BASE_ADDRESS_SPACE_MEMORY | --=20 2.30.0 From nobody Sat May 4 18:11:23 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=1611052082; cv=none; d=zohomail.com; s=zohoarc; b=MQF7aAO/XmDVhpTXlkykE/3niqRW0huwnMA78uceeSmNvXdmUlHKNycUz4ivciWYI/9qvVJVfG5qjMJi33iu+7UynGQWMCk1uwqf6dr85J6TH7CgnSOUTtzCLv/BNAzf174gHwT0KrtT6yL2K0YYuOzONZk7WHjTdPkSRd2REWw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1611052082; 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=VxNa3lFMhIDIgpdLWLi1i1ctxHPRsKmHk2Yj177+KUw=; b=i5QIDhPwvQdYdDBTLGr3GvTSRTf5H6FT6/oE/zUTias//cIcCzThi9DDfDj1WnM9d/IJrN+59y2+VTlXm4jsoQlZYu+TyrJzwSP/Ym+b/7Gk3uF+1DrvUn+hDac+FsL7RtCuNMaXjZecWPLpm1ruF9bnr+kJ8GoZt6Qd31vJssM= 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 1611052082699501.7348760983539; Tue, 19 Jan 2021 02:28:02 -0800 (PST) Received: from localhost ([::1]:52304 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1l1oEz-0000DR-IN for importer@patchew.org; Tue, 19 Jan 2021 05:28:01 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:57852) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l1o2l-00028u-3n; Tue, 19 Jan 2021 05:15:23 -0500 Received: from wout2-smtp.messagingengine.com ([64.147.123.25]:44985) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l1o2j-0004KS-He; Tue, 19 Jan 2021 05:15:22 -0500 Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.west.internal (Postfix) with ESMTP id 86A7CF68; Tue, 19 Jan 2021 05:15:19 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute4.internal (MEProxy); Tue, 19 Jan 2021 05:15:20 -0500 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 DC5F324005A; Tue, 19 Jan 2021 05:15:17 -0500 (EST) 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=VxNa3lFMhIDIg pdLWLi1i1ctxHPRsKmHk2Yj177+KUw=; b=PJ47a9V/KVwlflDNivohVm6xp86uR rHWqgoe13sc84QY4B+UbNKIGYeM9YE/Ry0/W8Y5GMtrwHmerfDPjSTQ4CKsF2GZr GetcUulhfkOqCyExEKTQo6O+3FAlmNmLA4OSD64DB1IwuBcgpbCGOv+eTD9OiZoL VxNTUlY0i1cHGdiRdkXqZmYOogV1KEjExP8Sbtd2r3hnDvp+4CTLsnTxehymymy0 NIUwUeRNvLsaGs52JG2nrSGiATtjwSNdXFKITuoIjrV1uquGIYYI2N3FabzsLPno pXQe5Q5raTyJMm5Y9BuOWrxq95JXBuAmh5+aXe3+OauBgpPLh2A8op1Hg== 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=VxNa3lFMhIDIgpdLWLi1i1ctxHPRsKmHk2Yj177+KUw=; b=Mdw/zxAc Llnc3xMVE3CIS0U7Fk1Bn7YGGolAFgskcgvS3O/PyCuz909EML8yPZrgAiafIOu8 g6D2Fl/xMbIP6f968vmOuKOkLFa5sM5VrUOuejsSMbIldRj0Q5QUpCea+N2xLqDW NtRTLHIC66DiQ06BLyMC+U80NAOC2BHUX30wTWfNmL3XsIyVVH5TrbMjzm14unkh 5+tqU+KuhTvvuf/YvI9xkbmA9Nk7CGjddpEUFU/PrUWa1C/XRST2GRYZqbCRrz9c gISqtFqtPhMjxenhr7Qn/Ha5iZNqkD0VHT8ZHo4Zw7lRjy74VqwPuKGqzrNN2M+W OimYigZIXsu+2w== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduledruddtgdduvdcutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefhvffufffkofgjfhgggfestdekredtredttdenucfhrhhomhepmfhlrghushcu lfgvnhhsvghnuceoihhtshesihhrrhgvlhgvvhgrnhhtrdgukheqnecuggftrfgrthhtvg hrnhepueelteegieeuhffgkeefgfevjeeigfetkeeitdfgtdeifefhtdfhfeeuffevgfek necukfhppeektddrudeijedrleekrdduledtnecuvehluhhsthgvrhfuihiivgepudenuc frrghrrghmpehmrghilhhfrhhomhepihhtshesihhrrhgvlhgvvhgrnhhtrdgukh X-ME-Proxy: From: Klaus Jensen To: qemu-devel@nongnu.org Subject: [PATCH v3 08/12] hw/block/nvme: disable PMR at boot up Date: Tue, 19 Jan 2021 11:15:00 +0100 Message-Id: <20210119101504.231259-9-its@irrelevant.dk> X-Mailer: git-send-email 2.30.0 In-Reply-To: <20210119101504.231259-1-its@irrelevant.dk> References: <20210119101504.231259-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=64.147.123.25; envelope-from=its@irrelevant.dk; helo=wout2-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: Fam Zheng , Kevin Wolf , qemu-block@nongnu.org, Klaus Jensen , Max Reitz , Keith Busch , Stefan Hajnoczi , Klaus Jensen Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: Klaus Jensen The PMR should not be enabled at boot up. Disable the PMR MemoryRegion initially and implement MMIO for PMRCTL, allowing the host to enable the PMR explicitly. Signed-off-by: Klaus Jensen Reviewed-by: Keith Busch --- hw/block/nvme.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/hw/block/nvme.c b/hw/block/nvme.c index 85b6617a0ce0..2a0d7e926bbf 100644 --- a/hw/block/nvme.c +++ b/hw/block/nvme.c @@ -3819,8 +3819,16 @@ static void nvme_write_bar(NvmeCtrl *n, hwaddr offse= t, uint64_t data, NVME_GUEST_ERR(pci_nvme_ub_mmiowr_pmrcap_readonly, "invalid write to PMRCAP register, ignored"); return; - case 0xE04: /* TODO PMRCTL */ - break; + case 0xE04: /* PMRCTL */ + n->bar.pmrctl =3D data; + if (NVME_PMRCTL_EN(data)) { + memory_region_set_enabled(&n->pmrdev->mr, true); + n->bar.pmrsts =3D 0; + } else { + memory_region_set_enabled(&n->pmrdev->mr, false); + NVME_PMRSTS_SET_NRDY(n->bar.pmrsts, 1); + } + return; case 0xE08: /* PMRSTS */ NVME_GUEST_ERR(pci_nvme_ub_mmiowr_pmrsts_readonly, "invalid write to PMRSTS register, ignored"); @@ -4196,6 +4204,8 @@ static void nvme_init_pmr(NvmeCtrl *n, PCIDevice *pci= _dev) PCI_BASE_ADDRESS_SPACE_MEMORY | PCI_BASE_ADDRESS_MEM_TYPE_64 | PCI_BASE_ADDRESS_MEM_PREFETCH, &n->pmrdev->mr); + + memory_region_set_enabled(&n->pmrdev->mr, false); } =20 static int nvme_init_pci(NvmeCtrl *n, PCIDevice *pci_dev, Error **errp) --=20 2.30.0 From nobody Sat May 4 18:11:23 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=1611052492; cv=none; d=zohomail.com; s=zohoarc; b=bWR8ib7M/kAacnwMoEDD0HriLt2iJkDSGHouyyko2wBxvX+3r+H7l9Wa4BYZe4yEF26L6xN/PxuimljLF5yAIQOgZ4RkUw43sbXcyb39zlhDhIvAAiWjh8z2oMOVu3284f7icVDxZIq02YhJrsg4psxNt7CVI20nO1YPuWEXUrY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1611052492; 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=fCIVtVr8iefwkL2tDqX1kev7gyFS/qzgYRu33l1LH/Q=; b=f/XT0wo3IDDQz66+KJJqmebcI9BPBljK5+IjdVwApr3qwrjMsPrknK3LbcZ+LMHGR1Hvg8AO3YHnG1hrHCvdTYSMNyNkcF8d3FouVG0IHC4kj23qhYJ17GzI7rnO7HtSyvzfYi+7KDlOuRJVr9ZThaHljV/e8JthTwngmzsRp/c= 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 1611052492534336.5722768599446; Tue, 19 Jan 2021 02:34:52 -0800 (PST) Received: from localhost ([::1]:34780 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1l1oLb-0004kB-9Z for importer@patchew.org; Tue, 19 Jan 2021 05:34:51 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:57906) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l1o2n-0002Bk-DA; Tue, 19 Jan 2021 05:15:25 -0500 Received: from wout2-smtp.messagingengine.com ([64.147.123.25]:42777) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l1o2l-0004L9-2W; Tue, 19 Jan 2021 05:15:25 -0500 Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.west.internal (Postfix) with ESMTP id 0B6B1F5B; Tue, 19 Jan 2021 05:15:20 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute4.internal (MEProxy); Tue, 19 Jan 2021 05:15:21 -0500 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 3D1B8240062; Tue, 19 Jan 2021 05:15:19 -0500 (EST) 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=fCIVtVr8iefwk L2tDqX1kev7gyFS/qzgYRu33l1LH/Q=; b=mz4cuCUMhGoJ4QPnnUmzZMxGCYglq IciueM/nuTzNopyVMLdBRyGtjqzEcFfYxEvpgFVQTgow2RzhHbOm8lbHimxiFWod E7eWZGRpw4oSQJGukuOUN23HAplj0EkeW1HV/fcYFogOPh4nCcTFjjylsXQBLZdU NGJRvMdZgHQlfHSWwVON7PCV6iBJ7KlnbtdY8bTOr0LhSa6Bnhwp4qNpgbIy5AyQ 25YRfk+7KUxnkM14TeibpyABI5ejayej8P9nT0uUNsccxIor0t/yq1EtNg3iseIx yAOw5nfMMBFKSvx6HXDfX2NTaVhRlXXfwYDdUlF8AmOLvQ6HH5lCrWcRg== 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=fCIVtVr8iefwkL2tDqX1kev7gyFS/qzgYRu33l1LH/Q=; b=c9+j2YyD xd8FSlD7+t37nlbD6e7rog/f8U4HP4kNFxDudRi0yY5jRDZPicXDYoAdl/QgV9cL Nx3yxyIv6lQsO9m6gJUy+nLRUmIuXpcOKhsXW7H8Yks/+TaPi4D7rbJlSCT97e6P uD8t1YNNEJ7GPDWP9BmeYp+Tpbv1gqc2bn7vhaocemtw99Dvt3KhEgYpwFEs0jzz PWfj+3JAylYAjDLCmmMdhUPDFRWsB1Si002kQqOkLNRnjQkOfbnHWWTtfoCEWpYh uTx5z0IOFTiS8iQ+Vbf+VWBcg1rpQgeadGWk+mnUd9eLDjqSqSCvDbBH9HewffJN do1fYVGawXtDPw== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduledruddtgdduvdcutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefhvffufffkofgjfhgggfestdekredtredttdenucfhrhhomhepmfhlrghushcu lfgvnhhsvghnuceoihhtshesihhrrhgvlhgvvhgrnhhtrdgukheqnecuggftrfgrthhtvg hrnhephfeiteduueduhefggeduhfeiveehgfelgfefvedtfeelfeeigeduteevtdfhtdef necuffhomhgrihhnpehpmhhrrdguvghvnecukfhppeektddrudeijedrleekrdduledtne cuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepihhtshes ihhrrhgvlhgvvhgrnhhtrdgukh X-ME-Proxy: From: Klaus Jensen To: qemu-devel@nongnu.org Subject: [PATCH v3 09/12] hw/block/nvme: add PMR RDS/WDS support Date: Tue, 19 Jan 2021 11:15:01 +0100 Message-Id: <20210119101504.231259-10-its@irrelevant.dk> X-Mailer: git-send-email 2.30.0 In-Reply-To: <20210119101504.231259-1-its@irrelevant.dk> References: <20210119101504.231259-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=64.147.123.25; envelope-from=its@irrelevant.dk; helo=wout2-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: Fam Zheng , Kevin Wolf , qemu-block@nongnu.org, Klaus Jensen , Naveen Nagar , Max Reitz , Keith Busch , Stefan Hajnoczi , Klaus Jensen Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: Naveen Nagar Add support for the PMRMSCL and PMRMSCU MMIO registers. This allows adding RDS/WDS support for PMR as well. Signed-off-by: Naveen Nagar Signed-off-by: Klaus Jensen Reviewed-by: Keith Busch --- hw/block/nvme.h | 6 ++- include/block/nvme.h | 1 + hw/block/nvme.c | 122 +++++++++++++++++++++++++++++++++++-------- 3 files changed, 107 insertions(+), 22 deletions(-) diff --git a/hw/block/nvme.h b/hw/block/nvme.h index e5d2cce207f4..e431474fa5ca 100644 --- a/hw/block/nvme.h +++ b/hw/block/nvme.h @@ -150,7 +150,11 @@ typedef struct NvmeCtrl { uint64_t starttime_ms; uint16_t temperature; =20 - HostMemoryBackend *pmrdev; + struct { + HostMemoryBackend *dev; + bool cmse; + hwaddr cba; + } pmr; =20 uint8_t aer_mask; NvmeRequest **aer_reqs; diff --git a/include/block/nvme.h b/include/block/nvme.h index f3cbe17d0971..183dc5c0ecf6 100644 --- a/include/block/nvme.h +++ b/include/block/nvme.h @@ -62,6 +62,7 @@ enum NvmeCapMask { #define NVME_CAP_CSS(cap) (((cap) >> CAP_CSS_SHIFT) & CAP_CSS_MASK) #define NVME_CAP_MPSMIN(cap)(((cap) >> CAP_MPSMIN_SHIFT) & CAP_MPSMIN_MASK) #define NVME_CAP_MPSMAX(cap)(((cap) >> CAP_MPSMAX_SHIFT) & CAP_MPSMAX_MASK) +#define NVME_CAP_PMRS(cap) (((cap) >> CAP_PMRS_SHIFT) & CAP_PMRS_MASK) =20 #define NVME_CAP_SET_MQES(cap, val) (cap |=3D (uint64_t)(val & CAP_MQES_= MASK) \ << CAP_MQES_SHI= FT) diff --git a/hw/block/nvme.c b/hw/block/nvme.c index 2a0d7e926bbf..2e0e11174c79 100644 --- a/hw/block/nvme.c +++ b/hw/block/nvme.c @@ -273,6 +273,24 @@ static inline void *nvme_addr_to_cmb(NvmeCtrl *n, hwad= dr addr) return &n->cmbuf[addr - n->ctrl_mem.addr]; } =20 +static bool nvme_addr_is_pmr(NvmeCtrl *n, hwaddr addr) +{ + hwaddr hi; + + if (!n->pmr.cmse) { + return false; + } + + hi =3D n->pmr.cba + int128_get64(n->pmr.dev->mr.size); + + return addr >=3D n->pmr.cba && addr < hi; +} + +static inline void *nvme_addr_to_pmr(NvmeCtrl *n, hwaddr addr) +{ + return memory_region_get_ram_ptr(&n->pmr.dev->mr) + (addr - n->pmr.cba= ); +} + static int nvme_addr_read(NvmeCtrl *n, hwaddr addr, void *buf, int size) { hwaddr hi =3D addr + size - 1; @@ -285,6 +303,11 @@ static int nvme_addr_read(NvmeCtrl *n, hwaddr addr, vo= id *buf, int size) return 0; } =20 + if (nvme_addr_is_pmr(n, addr) && nvme_addr_is_pmr(n, hi)) { + memcpy(buf, nvme_addr_to_pmr(n, addr), size); + return 0; + } + return pci_dma_read(&n->parent_obj, addr, buf, size); } =20 @@ -406,9 +429,27 @@ static uint16_t nvme_map_addr_cmb(NvmeCtrl *n, QEMUIOV= ector *iov, hwaddr addr, return NVME_SUCCESS; } =20 +static uint16_t nvme_map_addr_pmr(NvmeCtrl *n, QEMUIOVector *iov, hwaddr a= ddr, + size_t len) +{ + if (!len) { + return NVME_SUCCESS; + } + + if (!nvme_addr_is_pmr(n, addr) || !nvme_addr_is_pmr(n, addr + len - 1)= ) { + return NVME_DATA_TRAS_ERROR; + } + + qemu_iovec_add(iov, nvme_addr_to_pmr(n, addr), len); + + return NVME_SUCCESS; +} + static uint16_t nvme_map_addr(NvmeCtrl *n, QEMUSGList *qsg, QEMUIOVector *= iov, hwaddr addr, size_t len) { + bool cmb =3D false, pmr =3D false; + if (!len) { return NVME_SUCCESS; } @@ -416,6 +457,12 @@ static uint16_t nvme_map_addr(NvmeCtrl *n, QEMUSGList = *qsg, QEMUIOVector *iov, trace_pci_nvme_map_addr(addr, len); =20 if (nvme_addr_is_cmb(n, addr)) { + cmb =3D true; + } else if (nvme_addr_is_pmr(n, addr)) { + pmr =3D true; + } + + if (cmb || pmr) { if (qsg && qsg->sg) { return NVME_INVALID_USE_OF_CMB | NVME_DNR; } @@ -426,7 +473,11 @@ static uint16_t nvme_map_addr(NvmeCtrl *n, QEMUSGList = *qsg, QEMUIOVector *iov, qemu_iovec_init(iov, 1); } =20 - return nvme_map_addr_cmb(n, iov, addr, len); + if (cmb) { + return nvme_map_addr_cmb(n, iov, addr, len); + } else { + return nvme_map_addr_pmr(n, iov, addr, len); + } } =20 if (iov && iov->iov) { @@ -459,7 +510,7 @@ static uint16_t nvme_map_prp(NvmeCtrl *n, uint64_t prp1= , uint64_t prp2, =20 trace_pci_nvme_map_prp(trans_len, len, prp1, prp2, num_prps); =20 - if (nvme_addr_is_cmb(n, prp1)) { + if (nvme_addr_is_cmb(n, prp1) || (nvme_addr_is_pmr(n, prp1))) { qemu_iovec_init(iov, num_prps); } else { pci_dma_sglist_init(qsg, &n->parent_obj, num_prps); @@ -3532,8 +3583,8 @@ static void nvme_ctrl_shutdown(NvmeCtrl *n) NvmeNamespace *ns; int i; =20 - if (n->pmrdev) { - memory_region_msync(&n->pmrdev->mr, 0, n->pmrdev->size); + if (n->pmr.dev) { + memory_region_msync(&n->pmr.dev->mr, 0, n->pmr.dev->size); } =20 for (i =3D 1; i <=3D n->num_namespaces; i++) { @@ -3822,11 +3873,12 @@ static void nvme_write_bar(NvmeCtrl *n, hwaddr offs= et, uint64_t data, case 0xE04: /* PMRCTL */ n->bar.pmrctl =3D data; if (NVME_PMRCTL_EN(data)) { - memory_region_set_enabled(&n->pmrdev->mr, true); + memory_region_set_enabled(&n->pmr.dev->mr, true); n->bar.pmrsts =3D 0; } else { - memory_region_set_enabled(&n->pmrdev->mr, false); + memory_region_set_enabled(&n->pmr.dev->mr, false); NVME_PMRSTS_SET_NRDY(n->bar.pmrsts, 1); + n->pmr.cmse =3D false; } return; case 0xE08: /* PMRSTS */ @@ -3841,8 +3893,33 @@ static void nvme_write_bar(NvmeCtrl *n, hwaddr offse= t, uint64_t data, NVME_GUEST_ERR(pci_nvme_ub_mmiowr_pmrswtp_readonly, "invalid write to PMRSWTP register, ignored"); return; - case 0xE14: /* TODO PMRMSC */ - break; + case 0xE14: /* PMRMSCL */ + if (!NVME_CAP_PMRS(n->bar.cap)) { + return; + } + + n->bar.pmrmsc =3D (n->bar.pmrmsc & ~0xffffffff) | (data & 0xffffff= ff); + n->pmr.cmse =3D false; + + if (NVME_PMRMSC_CMSE(n->bar.pmrmsc)) { + hwaddr cba =3D NVME_PMRMSC_CBA(n->bar.pmrmsc) << PMRMSC_CBA_SH= IFT; + if (cba + int128_get64(n->pmr.dev->mr.size) < cba) { + NVME_PMRSTS_SET_CBAI(n->bar.pmrsts, 1); + return; + } + + n->pmr.cmse =3D true; + n->pmr.cba =3D cba; + } + + return; + case 0xE18: /* PMRMSCU */ + if (!NVME_CAP_PMRS(n->bar.cap)) { + return; + } + + n->bar.pmrmsc =3D (n->bar.pmrmsc & 0xffffffff) | (data << 32); + return; default: NVME_GUEST_ERR(pci_nvme_ub_mmiowr_invalid, "invalid MMIO write," @@ -3880,7 +3957,7 @@ static uint64_t nvme_mmio_read(void *opaque, hwaddr a= ddr, unsigned size) */ if (addr =3D=3D 0xE08 && (NVME_PMRCAP_PMRWBM(n->bar.pmrcap) & 0x02)) { - memory_region_msync(&n->pmrdev->mr, 0, n->pmrdev->size); + memory_region_msync(&n->pmr.dev->mr, 0, n->pmr.dev->size); } memcpy(&val, ptr + addr, size); } else { @@ -4099,19 +4176,19 @@ static void nvme_check_constraints(NvmeCtrl *n, Err= or **errp) return; } =20 - if (n->pmrdev) { - if (host_memory_backend_is_mapped(n->pmrdev)) { + if (n->pmr.dev) { + if (host_memory_backend_is_mapped(n->pmr.dev)) { error_setg(errp, "can't use already busy memdev: %s", - object_get_canonical_path_component(OBJECT(n->pmrde= v))); + object_get_canonical_path_component(OBJECT(n->pmr.d= ev))); return; } =20 - if (!is_power_of_2(n->pmrdev->size)) { + if (!is_power_of_2(n->pmr.dev->size)) { error_setg(errp, "pmr backend size needs to be power of 2 in s= ize"); return; } =20 - host_memory_backend_set_mapped(n->pmrdev, true); + host_memory_backend_set_mapped(n->pmr.dev, true); } =20 if (n->params.zasl_bs) { @@ -4196,16 +4273,19 @@ static void nvme_init_cmb(NvmeCtrl *n, PCIDevice *p= ci_dev) =20 static void nvme_init_pmr(NvmeCtrl *n, PCIDevice *pci_dev) { + NVME_PMRCAP_SET_RDS(n->bar.pmrcap, 1); + NVME_PMRCAP_SET_WDS(n->bar.pmrcap, 1); NVME_PMRCAP_SET_BIR(n->bar.pmrcap, NVME_PMR_BIR); /* Turn on bit 1 support */ NVME_PMRCAP_SET_PMRWBM(n->bar.pmrcap, 0x02); + NVME_PMRCAP_SET_CMSS(n->bar.pmrcap, 1); =20 pci_register_bar(pci_dev, NVME_PMRCAP_BIR(n->bar.pmrcap), PCI_BASE_ADDRESS_SPACE_MEMORY | PCI_BASE_ADDRESS_MEM_TYPE_64 | - PCI_BASE_ADDRESS_MEM_PREFETCH, &n->pmrdev->mr); + PCI_BASE_ADDRESS_MEM_PREFETCH, &n->pmr.dev->mr); =20 - memory_region_set_enabled(&n->pmrdev->mr, false); + memory_region_set_enabled(&n->pmr.dev->mr, false); } =20 static int nvme_init_pci(NvmeCtrl *n, PCIDevice *pci_dev, Error **errp) @@ -4266,7 +4346,7 @@ static int nvme_init_pci(NvmeCtrl *n, PCIDevice *pci_= dev, Error **errp) nvme_init_cmb(n, pci_dev); } =20 - if (n->pmrdev) { + if (n->pmr.dev) { nvme_init_pmr(n, pci_dev); } =20 @@ -4339,7 +4419,7 @@ static void nvme_init_ctrl(NvmeCtrl *n, PCIDevice *pc= i_dev) NVME_CAP_SET_CSS(n->bar.cap, NVME_CAP_CSS_ADMIN_ONLY); NVME_CAP_SET_MPSMAX(n->bar.cap, 4); NVME_CAP_SET_CMBS(n->bar.cap, n->params.cmb_size_mb ? 1 : 0); - NVME_CAP_SET_PMRS(n->bar.cap, n->pmrdev ? 1 : 0); + NVME_CAP_SET_PMRS(n->bar.cap, n->pmr.dev ? 1 : 0); =20 n->bar.vs =3D NVME_SPEC_VER; n->bar.intmc =3D n->bar.intms =3D 0; @@ -4403,15 +4483,15 @@ static void nvme_exit(PCIDevice *pci_dev) g_free(n->cmbuf); } =20 - if (n->pmrdev) { - host_memory_backend_set_mapped(n->pmrdev, false); + if (n->pmr.dev) { + host_memory_backend_set_mapped(n->pmr.dev, false); } msix_uninit_exclusive_bar(pci_dev); } =20 static Property nvme_props[] =3D { DEFINE_BLOCK_PROPERTIES(NvmeCtrl, namespace.blkconf), - DEFINE_PROP_LINK("pmrdev", NvmeCtrl, pmrdev, TYPE_MEMORY_BACKEND, + DEFINE_PROP_LINK("pmrdev", NvmeCtrl, pmr.dev, TYPE_MEMORY_BACKEND, HostMemoryBackend *), DEFINE_PROP_STRING("serial", NvmeCtrl, params.serial), DEFINE_PROP_UINT32("cmb_size_mb", NvmeCtrl, params.cmb_size_mb, 0), --=20 2.30.0 From nobody Sat May 4 18:11:23 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=1611052405; cv=none; d=zohomail.com; s=zohoarc; b=S/PWgwDfDrl9IIvJLixXGlJguti98W5ui+WciZM2TmYIcypfdUPYqmKONVXjIPn40x0xCauTGhmkLlLTRzZOpJTSKEXSv9V4RFYUc6eTisD4LKD1JeWL6fwiOljj68nV6dYGnJIQmY4ge+5TadaEVut62IWSzjIQpJrDLtiNXDo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1611052405; 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=qezV6R8KYnxPrIyG9NpCzWLgY1+aBxR4fkxZDdXsPUo=; b=E8bEnzgbtB9vJgKjO/UFwQsCOsc3tg2Izk1X10DGMK2sXLaJliLUq4FQmTWGvqvlyT+FYTVTMrMsmkMwC/XM0M4huySP3KufmaBQxK281zaR5OWARf7CJewHNaQ3rX9RcNU8kKDW9LnkFxOVHJ5UEqLk+8RVyj/BG7eC5xy6QqE= 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 1611052405889816.6630350397485; Tue, 19 Jan 2021 02:33:25 -0800 (PST) Received: from localhost ([::1]:32772 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1l1oKC-0003vt-Bu for importer@patchew.org; Tue, 19 Jan 2021 05:33:24 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:57936) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l1o2p-0002EO-AA; Tue, 19 Jan 2021 05:15:27 -0500 Received: from wout2-smtp.messagingengine.com ([64.147.123.25]:36589) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l1o2m-0004Lq-FW; Tue, 19 Jan 2021 05:15:27 -0500 Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) by mailout.west.internal (Postfix) with ESMTP id 6BF9DF4B; Tue, 19 Jan 2021 05:15:22 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute3.internal (MEProxy); Tue, 19 Jan 2021 05:15:23 -0500 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 ADC7124005A; Tue, 19 Jan 2021 05:15:20 -0500 (EST) 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=qezV6R8KYnxPr IyG9NpCzWLgY1+aBxR4fkxZDdXsPUo=; b=hIuRazR0kzvCjBkHsbJdnESRxGCzm VmSPUf0S/yvqbC4i08nYEybyPP+ln8PFSB7eOWI4qr+qA4ZeSeMbeX9QaGx9OGMP AxE1ST9JUw2YZ5yOwwgo4titrxrRJynHnmTjVSxcwnSJ76/pGcEioe2isLNKIRn4 wsVxJofehr01U0iLaba0hVt5HmhkOYqzfGsVx7z8PyqS1Vpyz2ZfcG/IaP/wYbAS lnfrwTIprpllr1JhxNhukTmg0oVv8aO4FJqnpYMQ/Pep8OrwxQmDcpARWnAU5krw GTEmgwDKhs3tWt6X897LiBjrfvYTJp1axvEvhWNoZhVTWC6ZWwSjsq3Sg== 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=qezV6R8KYnxPrIyG9NpCzWLgY1+aBxR4fkxZDdXsPUo=; b=T7MIOxx1 MDJrutDu3O0jFMHj8Tu1Vywl64ULoVLm1sf6UBhfQ/FENS/wo2MXCjW/lRTY0aCJ bCnH0wMkd65agQzrzGjHPf8eOSgM4YuAG70xs7JFV2Wmo1OgeNAGdW23suLWKxLF 2VAyIyhLqvs/v85odt0EVh76PhK/Ad2CelMYTyhQFFPwUJoll2efrsx1VLxFj22e S6ZYBvsf5+yT/gDxO8dWNWg+fdCwtUARF5HaqvcC+Dlu7XHF5wrrJjygyTEUTFa3 IZ4uC2EBUNWg3AM/H294hdVAArGJEvoT1yl0WJqBx91DB7W9o364H1G6RyOdsHBb isWiTvRsm4D/Qg== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduledruddtgddufecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefhvffufffkofgjfhgggfestdekredtredttdenucfhrhhomhepmfhlrghushcu lfgvnhhsvghnuceoihhtshesihhrrhgvlhgvvhgrnhhtrdgukheqnecuggftrfgrthhtvg hrnhepueelteegieeuhffgkeefgfevjeeigfetkeeitdfgtdeifefhtdfhfeeuffevgfek necukfhppeektddrudeijedrleekrdduledtnecuvehluhhsthgvrhfuihiivgepudenuc frrghrrghmpehmrghilhhfrhhomhepihhtshesihhrrhgvlhgvvhgrnhhtrdgukh X-ME-Proxy: From: Klaus Jensen To: qemu-devel@nongnu.org Subject: [PATCH v3 10/12] hw/block/nvme: move cmb logic to v1.4 Date: Tue, 19 Jan 2021 11:15:02 +0100 Message-Id: <20210119101504.231259-11-its@irrelevant.dk> X-Mailer: git-send-email 2.30.0 In-Reply-To: <20210119101504.231259-1-its@irrelevant.dk> References: <20210119101504.231259-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=64.147.123.25; envelope-from=its@irrelevant.dk; helo=wout2-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: Fam Zheng , Kevin Wolf , Padmakar Kalghatgi , qemu-block@nongnu.org, Klaus Jensen , Max Reitz , Keith Busch , Stefan Hajnoczi , Klaus Jensen Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: Padmakar Kalghatgi Implement v1.4 logic for configuring the Controller Memory Buffer. This is not backward compatible with v1.3, so drivers that only support v1.3 will not be able to use the CMB anymore. Signed-off-by: Padmakar Kalghatgi Signed-off-by: Klaus Jensen Reviewed-by: Keith Busch Reviewed-by: Minwoo Im --- hw/block/nvme.h | 10 +++- include/block/nvme.h | 107 +++++++++++++++++++++++++++++++++++++----- hw/block/nvme.c | 101 +++++++++++++++++++++++++++++---------- hw/block/trace-events | 2 + 4 files changed, 182 insertions(+), 38 deletions(-) diff --git a/hw/block/nvme.h b/hw/block/nvme.h index e431474fa5ca..ec95c44efe79 100644 --- a/hw/block/nvme.h +++ b/hw/block/nvme.h @@ -20,6 +20,7 @@ typedef struct NvmeParams { uint8_t mdts; bool use_intel_id; uint32_t zasl_bs; + bool legacy_cmb; } NvmeParams; =20 typedef struct NvmeAsyncEvent { @@ -127,7 +128,6 @@ typedef struct NvmeCtrl { PCIDevice parent_obj; MemoryRegion bar0; MemoryRegion iomem; - MemoryRegion ctrl_mem; NvmeBar bar; NvmeParams params; NvmeBus bus; @@ -143,13 +143,19 @@ typedef struct NvmeCtrl { uint32_t num_namespaces; uint32_t max_q_ents; uint8_t outstanding_aers; - uint8_t *cmbuf; uint32_t irq_status; uint64_t host_timestamp; /* Timestamp sent by the h= ost */ uint64_t timestamp_set_qemu_clock_ms; /* QEMU clock time */ uint64_t starttime_ms; uint16_t temperature; =20 + struct { + MemoryRegion mem; + uint8_t *buf; + bool cmse; + hwaddr cba; + } cmb; + struct { HostMemoryBackend *dev; bool cmse; diff --git a/include/block/nvme.h b/include/block/nvme.h index 183dc5c0ecf6..7dcd8f9b4e78 100644 --- a/include/block/nvme.h +++ b/include/block/nvme.h @@ -15,14 +15,19 @@ typedef struct QEMU_PACKED NvmeBar { uint64_t acq; uint32_t cmbloc; uint32_t cmbsz; - uint8_t padding[3520]; /* not used by QEMU */ + uint32_t bpinfo; + uint32_t bprsel; + uint64_t bpmbl; + uint64_t cmbmsc; + uint32_t cmbsts; + uint8_t rsvd92[3492]; uint32_t pmrcap; uint32_t pmrctl; uint32_t pmrsts; uint32_t pmrebs; uint32_t pmrswtp; uint64_t pmrmsc; - uint8_t reserved[484]; + uint8_t css[484]; } NvmeBar; =20 enum NvmeCapShift { @@ -63,6 +68,7 @@ enum NvmeCapMask { #define NVME_CAP_MPSMIN(cap)(((cap) >> CAP_MPSMIN_SHIFT) & CAP_MPSMIN_MASK) #define NVME_CAP_MPSMAX(cap)(((cap) >> CAP_MPSMAX_SHIFT) & CAP_MPSMAX_MASK) #define NVME_CAP_PMRS(cap) (((cap) >> CAP_PMRS_SHIFT) & CAP_PMRS_MASK) +#define NVME_CAP_CMBS(cap) (((cap) >> CAP_CMBS_SHIFT) & CAP_CMBS_MASK) =20 #define NVME_CAP_SET_MQES(cap, val) (cap |=3D (uint64_t)(val & CAP_MQES_= MASK) \ << CAP_MQES_SHI= FT) @@ -184,25 +190,64 @@ enum NvmeAqaMask { #define NVME_AQA_ACQS(aqa) ((aqa >> AQA_ACQS_SHIFT) & AQA_ACQS_MASK) =20 enum NvmeCmblocShift { - CMBLOC_BIR_SHIFT =3D 0, - CMBLOC_OFST_SHIFT =3D 12, + CMBLOC_BIR_SHIFT =3D 0, + CMBLOC_CQMMS_SHIFT =3D 3, + CMBLOC_CQPDS_SHIFT =3D 4, + CMBLOC_CDPMLS_SHIFT =3D 5, + CMBLOC_CDPCILS_SHIFT =3D 6, + CMBLOC_CDMMMS_SHIFT =3D 7, + CMBLOC_CQDA_SHIFT =3D 8, + CMBLOC_OFST_SHIFT =3D 12, }; =20 enum NvmeCmblocMask { - CMBLOC_BIR_MASK =3D 0x7, - CMBLOC_OFST_MASK =3D 0xfffff, + CMBLOC_BIR_MASK =3D 0x7, + CMBLOC_CQMMS_MASK =3D 0x1, + CMBLOC_CQPDS_MASK =3D 0x1, + CMBLOC_CDPMLS_MASK =3D 0x1, + CMBLOC_CDPCILS_MASK =3D 0x1, + CMBLOC_CDMMMS_MASK =3D 0x1, + CMBLOC_CQDA_MASK =3D 0x1, + CMBLOC_OFST_MASK =3D 0xfffff, }; =20 -#define NVME_CMBLOC_BIR(cmbloc) ((cmbloc >> CMBLOC_BIR_SHIFT) & \ - CMBLOC_BIR_MASK) -#define NVME_CMBLOC_OFST(cmbloc)((cmbloc >> CMBLOC_OFST_SHIFT) & \ - CMBLOC_OFST_MASK) +#define NVME_CMBLOC_BIR(cmbloc) \ + ((cmbloc >> CMBLOC_BIR_SHIFT) & CMBLOC_BIR_MASK) +#define NVME_CMBLOC_CQMMS(cmbloc) \ + ((cmbloc >> CMBLOC_CQMMS_SHIFT) & CMBLOC_CQMMS_MASK) +#define NVME_CMBLOC_CQPDS(cmbloc) \ + ((cmbloc >> CMBLOC_CQPDS_SHIFT) & CMBLOC_CQPDS_MASK) +#define NVME_CMBLOC_CDPMLS(cmbloc) \ + ((cmbloc >> CMBLOC_CDPMLS_SHIFT) & CMBLOC_CDPMLS_MASK) +#define NVME_CMBLOC_CDPCILS(cmbloc) \ + ((cmbloc >> CMBLOC_CDPCILS_SHIFT) & CMBLOC_CDPCILS_MASK) +#define NVME_CMBLOC_CDMMMS(cmbloc) \ + ((cmbloc >> CMBLOC_CDMMMS_SHIFT) & CMBLOC_CDMMMS_MASK) +#define NVME_CMBLOC_CQDA(cmbloc) \ + ((cmbloc >> CMBLOC_CQDA_SHIFT) & CMBLOC_CQDA_MASK) +#define NVME_CMBLOC_OFST(cmbloc) \ + ((cmbloc >> CMBLOC_OFST_SHIFT) & CMBLOC_OFST_MASK) =20 -#define NVME_CMBLOC_SET_BIR(cmbloc, val) \ +#define NVME_CMBLOC_SET_BIR(cmbloc, val) \ (cmbloc |=3D (uint64_t)(val & CMBLOC_BIR_MASK) << CMBLOC_BIR_SHIFT) +#define NVME_CMBLOC_SET_CQMMS(cmbloc, val) \ + (cmbloc |=3D (uint64_t)(val & CMBLOC_CQMMS_MASK) << CMBLOC_CQMMS_SHIFT) +#define NVME_CMBLOC_SET_CQPDS(cmbloc, val) \ + (cmbloc |=3D (uint64_t)(val & CMBLOC_CQPDS_MASK) << CMBLOC_CQPDS_SHIFT) +#define NVME_CMBLOC_SET_CDPMLS(cmbloc, val) \ + (cmbloc |=3D (uint64_t)(val & CMBLOC_CDPMLS_MASK) << CMBLOC_CDPMLS_SHI= FT) +#define NVME_CMBLOC_SET_CDPCILS(cmbloc, val) \ + (cmbloc |=3D (uint64_t)(val & CMBLOC_CDPCILS_MASK) << CMBLOC_CDPCILS_S= HIFT) +#define NVME_CMBLOC_SET_CDMMMS(cmbloc, val) \ + (cmbloc |=3D (uint64_t)(val & CMBLOC_CDMMMS_MASK) << CMBLOC_CDMMMS_SHI= FT) +#define NVME_CMBLOC_SET_CQDA(cmbloc, val) \ + (cmbloc |=3D (uint64_t)(val & CMBLOC_CQDA_MASK) << CMBLOC_CQDA_SHIFT) #define NVME_CMBLOC_SET_OFST(cmbloc, val) \ (cmbloc |=3D (uint64_t)(val & CMBLOC_OFST_MASK) << CMBLOC_OFST_SHIFT) =20 +#define NVME_CMBMSMC_SET_CRE (cmbmsc, val) \ + (cmbmsc |=3D (uint64_t)(val & CMBLOC_OFST_MASK) << CMBMSC_CRE_SHIFT) + enum NvmeCmbszShift { CMBSZ_SQS_SHIFT =3D 0, CMBSZ_CQS_SHIFT =3D 1, @@ -249,6 +294,46 @@ enum NvmeCmbszMask { #define NVME_CMBSZ_GETSIZE(cmbsz) \ (NVME_CMBSZ_SZ(cmbsz) * (1 << (12 + 4 * NVME_CMBSZ_SZU(cmbsz)))) =20 +enum NvmeCmbmscShift { + CMBMSC_CRE_SHIFT =3D 0, + CMBMSC_CMSE_SHIFT =3D 1, + CMBMSC_CBA_SHIFT =3D 12, +}; + +enum NvmeCmbmscMask { + CMBMSC_CRE_MASK =3D 0x1, + CMBMSC_CMSE_MASK =3D 0x1, + CMBMSC_CBA_MASK =3D ((1L << 52) - 1), +}; + +#define NVME_CMBMSC_CRE(cmbmsc) \ + ((cmbmsc >> CMBMSC_CRE_SHIFT) & CMBMSC_CRE_MASK) +#define NVME_CMBMSC_CMSE(cmbmsc) \ + ((cmbmsc >> CMBMSC_CMSE_SHIFT) & CMBMSC_CMSE_MASK) +#define NVME_CMBMSC_CBA(cmbmsc) \ + ((cmbmsc >> CMBMSC_CBA_SHIFT) & CMBMSC_CBA_MASK) + + +#define NVME_CMBMSC_SET_CRE(cmbmsc, val) \ + (cmbmsc |=3D (uint64_t)(val & CMBMSC_CRE_MASK) << CMBMSC_CRE_SHIFT) +#define NVME_CMBMSC_SET_CMSE(cmbmsc, val) \ + (cmbmsc |=3D (uint64_t)(val & CMBMSC_CMSE_MASK) << CMBMSC_CMSE_SHIFT) +#define NVME_CMBMSC_SET_CBA(cmbmsc, val) \ + (cmbmsc |=3D (uint64_t)(val & CMBMSC_CBA_MASK) << CMBMSC_CBA_SHIFT) + +enum NvmeCmbstsShift { + CMBSTS_CBAI_SHIFT =3D 0, +}; +enum NvmeCmbstsMask { + CMBSTS_CBAI_MASK =3D 0x1, +}; + +#define NVME_CMBSTS_CBAI(cmbsts) \ + ((cmbsts >> CMBSTS_CBAI_SHIFT) & CMBSTS_CBAI_MASK) + +#define NVME_CMBSTS_SET_CBAI(cmbsts, val) \ + (cmbsts |=3D (uint64_t)(val & CMBSTS_CBAI_MASK) << CMBSTS_CBAI_SHIFT) + enum NvmePmrcapShift { PMRCAP_RDS_SHIFT =3D 3, PMRCAP_WDS_SHIFT =3D 4, diff --git a/hw/block/nvme.c b/hw/block/nvme.c index 2e0e11174c79..4bcc3cd71c9f 100644 --- a/hw/block/nvme.c +++ b/hw/block/nvme.c @@ -27,7 +27,9 @@ * zoned=3D * * Note cmb_size_mb denotes size of CMB in MB. CMB is assumed to be at - * offset 0 in BAR2 and supports only WDS, RDS and SQS for now. + * offset 0 in BAR2 and supports only WDS, RDS and SQS for now. By default= , the + * device will use the "v1.4 CMB scheme" - use the `legacy-cmb` parameter = to + * always enable the CMBLOC and CMBSZ registers (v1.3 behavior). * * Enabling pmr emulation can be achieved by pointing to memory-backend-fi= le. * For example: @@ -260,17 +262,22 @@ static int nvme_aor_check(NvmeNamespace *ns, uint32_t= act, uint32_t opn) =20 static bool nvme_addr_is_cmb(NvmeCtrl *n, hwaddr addr) { - hwaddr low =3D n->ctrl_mem.addr; - hwaddr hi =3D n->ctrl_mem.addr + int128_get64(n->ctrl_mem.size); + hwaddr hi, lo; =20 - return addr >=3D low && addr < hi; + if (!n->cmb.cmse) { + return false; + } + + lo =3D n->params.legacy_cmb ? n->cmb.mem.addr : n->cmb.cba; + hi =3D lo + int128_get64(n->cmb.mem.size); + + return addr >=3D lo && addr < hi; } =20 static inline void *nvme_addr_to_cmb(NvmeCtrl *n, hwaddr addr) { - assert(nvme_addr_is_cmb(n, addr)); - - return &n->cmbuf[addr - n->ctrl_mem.addr]; + hwaddr base =3D n->params.legacy_cmb ? n->cmb.mem.addr : n->cmb.cba; + return &n->cmb.buf[addr - base]; } =20 static bool nvme_addr_is_pmr(NvmeCtrl *n, hwaddr addr) @@ -3739,6 +3746,19 @@ static int nvme_start_ctrl(NvmeCtrl *n) return 0; } =20 +static void nvme_cmb_enable_regs(NvmeCtrl *n) +{ + NVME_CMBLOC_SET_BIR(n->bar.cmbloc, NVME_CMB_BIR); + + NVME_CMBSZ_SET_SQS(n->bar.cmbsz, 1); + NVME_CMBSZ_SET_CQS(n->bar.cmbsz, 0); + NVME_CMBSZ_SET_LISTS(n->bar.cmbsz, 1); + NVME_CMBSZ_SET_RDS(n->bar.cmbsz, 1); + NVME_CMBSZ_SET_WDS(n->bar.cmbsz, 1); + NVME_CMBSZ_SET_SZU(n->bar.cmbsz, 2); /* MBs */ + NVME_CMBSZ_SET_SZ(n->bar.cmbsz, n->params.cmb_size_mb); +} + static void nvme_write_bar(NvmeCtrl *n, hwaddr offset, uint64_t data, unsigned size) { @@ -3866,6 +3886,38 @@ static void nvme_write_bar(NvmeCtrl *n, hwaddr offse= t, uint64_t data, NVME_GUEST_ERR(pci_nvme_ub_mmiowr_cmbsz_readonly, "invalid write to read only CMBSZ, ignored"); return; + case 0x50: /* CMBMSC */ + if (!NVME_CAP_CMBS(n->bar.cap)) { + return; + } + + n->bar.cmbmsc =3D size =3D=3D 8 ? data : + (n->bar.cmbmsc & ~0xffffffff) | (data & 0xffffffff); + n->cmb.cmse =3D false; + + if (NVME_CMBMSC_CRE(data)) { + nvme_cmb_enable_regs(n); + + if (NVME_CMBMSC_CMSE(data)) { + hwaddr cba =3D NVME_CMBMSC_CBA(data) << CMBMSC_CBA_SHIFT; + if (cba + int128_get64(n->cmb.mem.size) < cba) { + NVME_CMBSTS_SET_CBAI(n->bar.cmbsts, 1); + return; + } + + n->cmb.cba =3D cba; + n->cmb.cmse =3D true; + } + } else { + n->bar.cmbsz =3D 0; + n->bar.cmbloc =3D 0; + } + + return; + case 0x54: /* CMBMSC hi */ + n->bar.cmbmsc =3D (n->bar.cmbmsc & 0xffffffff) | (data << 32); + return; + case 0xE00: /* PMRCAP */ NVME_GUEST_ERR(pci_nvme_ub_mmiowr_pmrcap_readonly, "invalid write to PMRCAP register, ignored"); @@ -4122,13 +4174,13 @@ static void nvme_cmb_write(void *opaque, hwaddr add= r, uint64_t data, unsigned size) { NvmeCtrl *n =3D (NvmeCtrl *)opaque; - stn_le_p(&n->cmbuf[addr], size, data); + stn_le_p(&n->cmb.buf[addr], size, data); } =20 static uint64_t nvme_cmb_read(void *opaque, hwaddr addr, unsigned size) { NvmeCtrl *n =3D (NvmeCtrl *)opaque; - return ldn_le_p(&n->cmbuf[addr], size); + return ldn_le_p(&n->cmb.buf[addr], size); } =20 static const MemoryRegionOps nvme_cmb_ops =3D { @@ -4251,24 +4303,22 @@ int nvme_register_namespace(NvmeCtrl *n, NvmeNamesp= ace *ns, Error **errp) =20 static void nvme_init_cmb(NvmeCtrl *n, PCIDevice *pci_dev) { - NVME_CMBLOC_SET_BIR(n->bar.cmbloc, NVME_CMB_BIR); - NVME_CMBLOC_SET_OFST(n->bar.cmbloc, 0); + uint64_t cmb_size =3D n->params.cmb_size_mb * MiB; =20 - NVME_CMBSZ_SET_SQS(n->bar.cmbsz, 1); - NVME_CMBSZ_SET_CQS(n->bar.cmbsz, 0); - NVME_CMBSZ_SET_LISTS(n->bar.cmbsz, 1); - NVME_CMBSZ_SET_RDS(n->bar.cmbsz, 1); - NVME_CMBSZ_SET_WDS(n->bar.cmbsz, 1); - NVME_CMBSZ_SET_SZU(n->bar.cmbsz, 2); /* MBs */ - NVME_CMBSZ_SET_SZ(n->bar.cmbsz, n->params.cmb_size_mb); - - n->cmbuf =3D g_malloc0(NVME_CMBSZ_GETSIZE(n->bar.cmbsz)); - memory_region_init_io(&n->ctrl_mem, OBJECT(n), &nvme_cmb_ops, n, - "nvme-cmb", NVME_CMBSZ_GETSIZE(n->bar.cmbsz)); - pci_register_bar(pci_dev, NVME_CMBLOC_BIR(n->bar.cmbloc), + n->cmb.buf =3D g_malloc0(cmb_size); + memory_region_init_io(&n->cmb.mem, OBJECT(n), &nvme_cmb_ops, n, + "nvme-cmb", cmb_size); + pci_register_bar(pci_dev, NVME_CMB_BIR, PCI_BASE_ADDRESS_SPACE_MEMORY | PCI_BASE_ADDRESS_MEM_TYPE_64 | - PCI_BASE_ADDRESS_MEM_PREFETCH, &n->ctrl_mem); + PCI_BASE_ADDRESS_MEM_PREFETCH, &n->cmb.mem); + + NVME_CAP_SET_CMBS(n->bar.cap, 1); + + if (n->params.legacy_cmb) { + nvme_cmb_enable_regs(n); + n->cmb.cmse =3D true; + } } =20 static void nvme_init_pmr(NvmeCtrl *n, PCIDevice *pci_dev) @@ -4480,7 +4530,7 @@ static void nvme_exit(PCIDevice *pci_dev) g_free(n->aer_reqs); =20 if (n->params.cmb_size_mb) { - g_free(n->cmbuf); + g_free(n->cmb.buf); } =20 if (n->pmr.dev) { @@ -4502,6 +4552,7 @@ static Property nvme_props[] =3D { DEFINE_PROP_UINT32("aer_max_queued", NvmeCtrl, params.aer_max_queued, = 64), DEFINE_PROP_UINT8("mdts", NvmeCtrl, params.mdts, 7), DEFINE_PROP_BOOL("use-intel-id", NvmeCtrl, params.use_intel_id, false), + DEFINE_PROP_BOOL("legacy-cmb", NvmeCtrl, params.legacy_cmb, false), DEFINE_PROP_SIZE32("zoned.append_size_limit", NvmeCtrl, params.zasl_bs, NVME_DEFAULT_MAX_ZA_SIZE), DEFINE_PROP_END_OF_LIST(), diff --git a/hw/block/trace-events b/hw/block/trace-events index a104d7f4da80..8e249ea910aa 100644 --- a/hw/block/trace-events +++ b/hw/block/trace-events @@ -123,6 +123,8 @@ pci_nvme_err_invalid_opc(uint8_t opc) "invalid opcode 0= x%"PRIx8"" pci_nvme_err_invalid_admin_opc(uint8_t opc) "invalid admin opcode 0x%"PRIx= 8"" pci_nvme_err_invalid_lba_range(uint64_t start, uint64_t len, uint64_t limi= t) "Invalid LBA start=3D%"PRIu64" len=3D%"PRIu64" limit=3D%"PRIu64"" pci_nvme_err_invalid_log_page_offset(uint64_t ofs, uint64_t size) "must be= <=3D %"PRIu64", got %"PRIu64"" +pci_nvme_err_cmb_invalid_cba(uint64_t cmbmsc) "cmbmsc 0x%"PRIx64"" +pci_nvme_err_cmb_not_enabled(uint64_t cmbmsc) "cmbmsc 0x%"PRIx64"" pci_nvme_err_unaligned_zone_cmd(uint8_t action, uint64_t slba, uint64_t zs= lba) "unaligned zone op 0x%"PRIx32", got slba=3D%"PRIu64", zslba=3D%"PRIu64= "" pci_nvme_err_invalid_zone_state_transition(uint8_t action, uint64_t slba, = uint8_t attrs) "action=3D0x%"PRIx8", slba=3D%"PRIu64", attrs=3D0x%"PRIx32"" pci_nvme_err_write_not_at_wp(uint64_t slba, uint64_t zone, uint64_t wp) "w= riting at slba=3D%"PRIu64", zone=3D%"PRIu64", but wp=3D%"PRIu64"" --=20 2.30.0 From nobody Sat May 4 18:11:23 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=1611052904; cv=none; d=zohomail.com; s=zohoarc; b=HvrkKf1TJcLJboTAHqbrKOrs9kiAO7nMcL6VILhHnx023DuRWr9yAycVqMN4gkmUZt49axr1zlkTOA2U7dHYz2dzOAnkZ9xadZbMRGblgnDMlwrYDJxuMtKJ1uVNZqadIqa+rQnJs+r7w1JKnYypaN/y0Kvcb18wbBN6t46YvNs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1611052904; 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=FyE9MqxPuUBKmLHmf9A+z3DWz4LJFUSijxwTVzTh76Q=; b=Q07mfzZnutEBAGHBDn5uwTDxUmHuWA7ib2JrxjCOgqZscIv7qoXz1rtDdv2IlMFGmdaE+KIN3UYd1edvz8vGQL2pxD1zAHaeTHFQrXYcj1mBZ/BLJDqGc5HaQvM0Nle1vfx4CuFx66RWHsKBfUJnE999kYZXOhWAaibSuQi8w1Y= 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 1611052904258933.3154995293788; Tue, 19 Jan 2021 02:41:44 -0800 (PST) Received: from localhost ([::1]:43734 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1l1oSF-0000RB-4X for importer@patchew.org; Tue, 19 Jan 2021 05:41:43 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:57958) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l1o2q-0002FY-G2; Tue, 19 Jan 2021 05:15:28 -0500 Received: from wout2-smtp.messagingengine.com ([64.147.123.25]:45187) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l1o2o-0004OB-Nz; Tue, 19 Jan 2021 05:15:28 -0500 Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailout.west.internal (Postfix) with ESMTP id A93C4F6F; Tue, 19 Jan 2021 05:15:24 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute1.internal (MEProxy); Tue, 19 Jan 2021 05:15:25 -0500 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 2824724005D; Tue, 19 Jan 2021 05:15:22 -0500 (EST) 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=FyE9MqxPuUBKm LHmf9A+z3DWz4LJFUSijxwTVzTh76Q=; b=E7VMdqw6GNtOlJYwPylkjFhOtA9SO wb9X4gIfHqWQxI9MAZFioP0oT4KDpQBwCiSrGVns4TN5X/s6NSgqs2/Gyv826V0a 9F1zcrZ1zAGocCNuehoIRMKcYrfThdVn9v+e/Ng6ESThRR3W74FnNab5gHMnFn9v +qVlqA2ZqtLVTlZfmsAeOXnQLGG7QvEi5dQ2m6OWzo215xxCODZI6gQGsfjKvyve dke//x/uN3poXsCVeVY+V9DN8bUMLb7BqVcrGVgl7XLhwcuU1w1AWhIotjfRwSPy 6CPeOowkPmo/TGVSi8aCRkpx6Txhh0TuFGUkMWSzlVwv4xihl29pFtndA== 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=FyE9MqxPuUBKmLHmf9A+z3DWz4LJFUSijxwTVzTh76Q=; b=e55h8kjQ Ic6HXPT6koqc8WYxbIEeAfT/4iKsDwLFknfKh2M2YKClechrc23TqmLWnc1QKtZ5 /JLld6Sz/tczwQxm/TdgO+O0rFy6xIJh78J44Bdb2FDOg0Er1+i+Qzefoi9Bmpiz YyPiUllsQ3KYVnLk/TwgjqPoabcim7d+hnscNEVrzfHlhozz2WWJEV8OzyXv8Pfi bZN0Te2RPn/1faCPTx85vfHuwX/Kc5e3BM/4lUZ5eASKPWZ38+JWGMwhWXuhskK3 YNZsukj94Undq5P20MzT1Qg5Zb6wHvLvoxGuEvLJ1iBx8jlOkhKBrRsSBvioeUnD +BFZWInRSJRUuw== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduledruddtgddufecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefhvffufffkofgjfhgggfestdekredtredttdenucfhrhhomhepmfhlrghushcu lfgvnhhsvghnuceoihhtshesihhrrhgvlhgvvhgrnhhtrdgukheqnecuggftrfgrthhtvg hrnhepueelteegieeuhffgkeefgfevjeeigfetkeeitdfgtdeifefhtdfhfeeuffevgfek necukfhppeektddrudeijedrleekrdduledtnecuvehluhhsthgvrhfuihiivgeptdenuc frrghrrghmpehmrghilhhfrhhomhepihhtshesihhrrhgvlhgvvhgrnhhtrdgukh X-ME-Proxy: From: Klaus Jensen To: qemu-devel@nongnu.org Subject: [PATCH v3 11/12] hw/block/nvme: bump to v1.4 Date: Tue, 19 Jan 2021 11:15:03 +0100 Message-Id: <20210119101504.231259-12-its@irrelevant.dk> X-Mailer: git-send-email 2.30.0 In-Reply-To: <20210119101504.231259-1-its@irrelevant.dk> References: <20210119101504.231259-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=64.147.123.25; envelope-from=its@irrelevant.dk; helo=wout2-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: Fam Zheng , Kevin Wolf , qemu-block@nongnu.org, Klaus Jensen , Max Reitz , Keith Busch , Stefan Hajnoczi , Klaus Jensen Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: Klaus Jensen With the new CMB logic in place, bump the implemented specification version to v1.4 by default. This requires adding the setting the CNTRLTYPE field and modifying the VWC field since 0x00 is no longer a valid value for bits 2:1. Signed-off-by: Klaus Jensen Reviewed-by: Keith Busch --- include/block/nvme.h | 3 ++- hw/block/nvme.c | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/include/block/nvme.h b/include/block/nvme.h index 7dcd8f9b4e78..c34343c13a3c 100644 --- a/include/block/nvme.h +++ b/include/block/nvme.h @@ -949,7 +949,8 @@ typedef struct QEMU_PACKED NvmeIdCtrl { uint32_t rtd3e; uint32_t oaes; uint32_t ctratt; - uint8_t rsvd100[12]; + uint8_t rsvd100[11]; + uint8_t cntrltype; uint8_t fguid[16]; uint8_t rsvd128[128]; uint16_t oacs; diff --git a/hw/block/nvme.c b/hw/block/nvme.c index 4bcc3cd71c9f..2c158cf419b0 100644 --- a/hw/block/nvme.c +++ b/hw/block/nvme.c @@ -108,7 +108,7 @@ =20 #define NVME_MAX_IOQPAIRS 0xffff #define NVME_DB_SIZE 4 -#define NVME_SPEC_VER 0x00010300 +#define NVME_SPEC_VER 0x00010400 #define NVME_CMB_BIR 2 #define NVME_PMR_BIR 4 #define NVME_TEMPERATURE 0x143 @@ -4421,6 +4421,7 @@ static void nvme_init_ctrl(NvmeCtrl *n, PCIDevice *pc= i_dev) id->mdts =3D n->params.mdts; id->ver =3D cpu_to_le32(NVME_SPEC_VER); id->oacs =3D cpu_to_le16(0); + id->cntrltype =3D 0x1; =20 /* * Because the controller always completes the Abort command immediate= ly, @@ -4449,7 +4450,7 @@ static void nvme_init_ctrl(NvmeCtrl *n, PCIDevice *pc= i_dev) NVME_ONCS_FEATURES | NVME_ONCS_DSM | NVME_ONCS_COMPARE); =20 - id->vwc =3D 0x1; + id->vwc =3D (0x2 << 1) | 0x1; id->sgls =3D cpu_to_le32(NVME_CTRL_SGLS_SUPPORT_NO_ALIGN | NVME_CTRL_SGLS_BITBUCKET); =20 --=20 2.30.0 From nobody Sat May 4 18:11:23 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=1611052785; cv=none; d=zohomail.com; s=zohoarc; b=GONwg3pfSYp1eeE5IbssCiD1enlFvapgkmQOhVqnt2GB8cVHWEjemFd48f4XdE5XuZRh7mnDdJYTumFK4ek84iMDMui+yLw7b3FTOhkcAd9xThJ0hEOHEb+NTUOFgFTw0Uio6+VBXt1xrSSl51bFexLJ+WhxwgvyrYTTvUgZ1Jg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1611052785; 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=HDXjmpTWRbIWkXhO+Qo+QpguR8QWL9XXqi8ezvY73lI=; b=R2tQnBNVYUcP2PRjTVZ54cRHlH5OC8w2XbDXCh/N8qLNnnLCObu/piCkN6RBc1b3UwG/MkgZCKIp8+4MPXFO8GvDeHiqlzZ8nBA8iHdgDJ0jrPpE/IIc45wXLzjU6TEkofmlMahHJr/fHpoVr3h8jWUjkPxKhZanx/in5Rp8IP0= 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 1611052785592197.90436638062283; Tue, 19 Jan 2021 02:39:45 -0800 (PST) Received: from localhost ([::1]:40986 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1l1oQK-0007f0-Cj for importer@patchew.org; Tue, 19 Jan 2021 05:39:44 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:58034) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l1o3B-0002V4-SV; Tue, 19 Jan 2021 05:15:50 -0500 Received: from wout2-smtp.messagingengine.com ([64.147.123.25]:53981) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l1o39-0004Ok-4e; Tue, 19 Jan 2021 05:15:49 -0500 Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.west.internal (Postfix) with ESMTP id 2C74AF68; Tue, 19 Jan 2021 05:15:25 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute4.internal (MEProxy); Tue, 19 Jan 2021 05:15:25 -0500 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 7D99B240062; Tue, 19 Jan 2021 05:15:23 -0500 (EST) 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=HDXjmpTWRbIWk XhO+Qo+QpguR8QWL9XXqi8ezvY73lI=; b=cmKBIBXEUScWkhxhhaSNRQprzDMYa Nu2+GBsnVlzjVaIbrnaNsHu1MecHsFAKsiTu53KijV/bq/JCXwZYV1dSy6e8vqR3 J3h5lMkDlGBtzfLOCXqX6IZGiLuwWAIepIs0d6LRz4pLFpWnTWCXn24L4gvjtZE3 A2rDYM0XQIYo4P1quse2f+nCVCmIHZk5YTKNRERaR3hwx+VFt5ET+UPB7LCnistX mqnVjTbBu5c/RvDJmG+zqlEmj4sW4HlKg9zid90C+Rygm8F8M31p0xEqit9TZ57n zxl/+cq3WOmj5lbNkbwDqMb0rvgKOnjFESV+5A85rhg00+BuP2P3RGrzg== 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=HDXjmpTWRbIWkXhO+Qo+QpguR8QWL9XXqi8ezvY73lI=; b=izTlkd+8 D3WTGeNki5GcplQVnGZg1DDmP4moo0EI8jwg+vAqi0QhRwWHSQJyCSyPPU2XhIDt 2U1kG5wMjFVZEhY/nYA4ERLlM4g/dkmL0EEklC2guKcq4UcMdLuqMsplDdWc5JHy vQsbFVkiJ0AH8SKn/G/i20TSa+P8UWYuBUp/+cWdgo/OOQv6L2cHKXjIR5+0wlvd 6ikiWs4j9rC6Z62fBNge0fqr0thY+q1coDWWfqKky2WGKFvSRqfsZ5gjNJH2UKK0 0GahjPtBraKo5luNvk+7rNDMRRT22oFuZS3+QM8F1c7EuV8saWlYifVb/87X1PES ybzhcl2eOX2uvg== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduledruddtgdduvdcutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefhvffufffkofgjfhgggfestdekredtredttdenucfhrhhomhepmfhlrghushcu lfgvnhhsvghnuceoihhtshesihhrrhgvlhgvvhgrnhhtrdgukheqnecuggftrfgrthhtvg hrnhepueelteegieeuhffgkeefgfevjeeigfetkeeitdfgtdeifefhtdfhfeeuffevgfek necukfhppeektddrudeijedrleekrdduledtnecuvehluhhsthgvrhfuihiivgepgeenuc frrghrrghmpehmrghilhhfrhhomhepihhtshesihhrrhgvlhgvvhgrnhhtrdgukh X-ME-Proxy: From: Klaus Jensen To: qemu-devel@nongnu.org Subject: [PATCH v3 12/12] hw/block/nvme: lift cmb restrictions Date: Tue, 19 Jan 2021 11:15:04 +0100 Message-Id: <20210119101504.231259-13-its@irrelevant.dk> X-Mailer: git-send-email 2.30.0 In-Reply-To: <20210119101504.231259-1-its@irrelevant.dk> References: <20210119101504.231259-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=64.147.123.25; envelope-from=its@irrelevant.dk; helo=wout2-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: Fam Zheng , Kevin Wolf , qemu-block@nongnu.org, Klaus Jensen , Max Reitz , Keith Busch , Stefan Hajnoczi , Klaus Jensen Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: Klaus Jensen The controller now implements v1.4 and we can lift the restrictions on CMB Data Pointer and Command Independent Locations Support (CDPCILS) and CMB Data Pointer Mixed Locations Support (CDPMLS) since the device really does not care about mixed host/cmb pointers in those cases. Signed-off-by: Klaus Jensen Reviewed-by: Keith Busch Reviewed-by: Minwoo Im --- hw/block/nvme.c | 33 ++------------------------------- 1 file changed, 2 insertions(+), 31 deletions(-) diff --git a/hw/block/nvme.c b/hw/block/nvme.c index 2c158cf419b0..0e7d38bd35ae 100644 --- a/hw/block/nvme.c +++ b/hw/block/nvme.c @@ -509,7 +509,6 @@ static uint16_t nvme_map_prp(NvmeCtrl *n, uint64_t prp1= , uint64_t prp2, trans_len =3D MIN(len, trans_len); int num_prps =3D (len >> n->page_bits) + 1; uint16_t status; - bool prp_list_in_cmb =3D false; int ret; =20 QEMUSGList *qsg =3D &req->qsg; @@ -535,10 +534,6 @@ static uint16_t nvme_map_prp(NvmeCtrl *n, uint64_t prp= 1, uint64_t prp2, uint32_t nents, prp_trans; int i =3D 0; =20 - if (nvme_addr_is_cmb(n, prp2)) { - prp_list_in_cmb =3D true; - } - nents =3D (len + n->page_size - 1) >> n->page_bits; prp_trans =3D MIN(n->max_prp_ents, nents) * sizeof(uint64_t); ret =3D nvme_addr_read(n, prp2, (void *)prp_list, prp_trans); @@ -555,10 +550,6 @@ static uint16_t nvme_map_prp(NvmeCtrl *n, uint64_t prp= 1, uint64_t prp2, return NVME_INVALID_PRP_OFFSET | NVME_DNR; } =20 - if (prp_list_in_cmb !=3D nvme_addr_is_cmb(n, prp_ent))= { - return NVME_INVALID_USE_OF_CMB | NVME_DNR; - } - i =3D 0; nents =3D (len + n->page_size - 1) >> n->page_bits; prp_trans =3D MIN(n->max_prp_ents, nents) * sizeof(uin= t64_t); @@ -692,7 +683,6 @@ static uint16_t nvme_map_sgl(NvmeCtrl *n, QEMUSGList *q= sg, QEMUIOVector *iov, uint64_t nsgld; uint32_t seg_len; uint16_t status; - bool sgl_in_cmb =3D false; hwaddr addr; int ret; =20 @@ -714,18 +704,6 @@ static uint16_t nvme_map_sgl(NvmeCtrl *n, QEMUSGList *= qsg, QEMUIOVector *iov, goto out; } =20 - /* - * If the segment is located in the CMB, the submission queue of the - * request must also reside there. - */ - if (nvme_addr_is_cmb(n, addr)) { - if (!nvme_addr_is_cmb(n, req->sq->dma_addr)) { - return NVME_INVALID_USE_OF_CMB | NVME_DNR; - } - - sgl_in_cmb =3D true; - } - for (;;) { switch (NVME_SGL_TYPE(sgld->type)) { case NVME_SGL_DESCR_TYPE_SEGMENT: @@ -814,15 +792,6 @@ static uint16_t nvme_map_sgl(NvmeCtrl *n, QEMUSGList *= qsg, QEMUIOVector *iov, if (status) { goto unmap; } - - /* - * If the next segment is in the CMB, make sure that the sgl was - * already located there. - */ - if (sgl_in_cmb !=3D nvme_addr_is_cmb(n, addr)) { - status =3D NVME_INVALID_USE_OF_CMB | NVME_DNR; - goto unmap; - } } =20 out: @@ -3748,6 +3717,8 @@ static int nvme_start_ctrl(NvmeCtrl *n) =20 static void nvme_cmb_enable_regs(NvmeCtrl *n) { + NVME_CMBLOC_SET_CDPCILS(n->bar.cmbloc, 1); + NVME_CMBLOC_SET_CDPMLS(n->bar.cmbloc, 1); NVME_CMBLOC_SET_BIR(n->bar.cmbloc, NVME_CMB_BIR); =20 NVME_CMBSZ_SET_SQS(n->bar.cmbsz, 1); --=20 2.30.0