From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id 370ECAC0E76 for ; Fri, 11 Aug 2023 07:24:14 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=3irbhqB8z+r3Ku6jPA8sH2EohP9bEVRiZPCOnA0n8q8=; c=relaxed/simple; d=groups.io; h=ARC-Seal:ARC-Message-Signature:ARC-Authentication-Results:From:To:Subject:Thread-Topic:Thread-Index:Date:Message-ID:References:In-Reply-To:Accept-Language:msip_labels:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Language:Content-Type:Content-Transfer-Encoding; s=20140610; t=1691738653; v=1; b=hZoo1z1L6xeWCRfJS4qigvy0QbaqMWwDZUEbZKQ0/gCxq4FxuA6qvZqWM7KqxNa2/5u8bnWb 8oYdAQNdXxXB89zRCBlxfKG3H+jx7ScDS1f38L+/jgAFkMtJOqWuqh3TUtYEtEjR1sRXhpCvYUX 73U0t+sjTBuWPntEWM5ekjfE= X-Received: by 127.0.0.2 with SMTP id LyOLYY7687511xwAOCaZKUGH; Fri, 11 Aug 2023 00:24:13 -0700 X-Received: from NAM10-MW2-obe.outbound.protection.outlook.com (NAM10-MW2-obe.outbound.protection.outlook.com [40.107.94.128]) by mx.groups.io with SMTP id smtpd.web11.37869.1691738652747069490 for ; Fri, 11 Aug 2023 00:24:12 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kBY6zw4JlOWjCpg6jLYskMBhA9y5X17AMdDj1B1RJ364lmMhplvXeQAHt+JidjGlc2ZOs9soF0Gp7xSuU+A42elpHP+TLl1QTHKRTmQulFaFNfd9meQpGBxxusqxYYti8qh0QM4uRaBzEWDVoGSjY9Z9GTFkTCC8X85uOONRJZBHSAT7CvCRk7vdcepfMrZ+zowYWMVWp2k2AmBjEELZ5t9jP5OAEN5vGdymM4PxSGTXMxDNLIUb0XFbRlGrJY5ZorB189UNaVCTh3mqT0py9WFMCA+D7QH3in2Q+Z0M4bpYuqu9s9+nc63+HAdeHy656SEJ2nYMQ5AIXa8dKW4aoQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=heGbY+QTw0+SNdfrtlx5OR9sMPS48K8yli3SzreUHQY=; b=kXhyIpyUO7jf0aNPLHKDVEUk5JWVKM7B28psIWtnEARPcUIp5LI8RT5qeDZ/acwt8mfg6G7pjD2RTttBVdMeCJ8i03Ox7Q/ev35HgP7igEtNmQBOoLhOCGmGBhJWBwLmHJ41+AKY6T3jxFrOH7XJA6Dzz84t3NG6c9qEE+G8XrNXgVBb9VV7wNbV+ysEmnSzxFLVHHvuSEuN3WCvROqZ5T6EzL8Ks+oiYNpo9QhGfCIFqGs2S6s3ovwBxj1C/SPdg9hiHnM9Z7Qx+m+ezQGxYIOZjNTtviIqiDvCqWuC6BwqUdI9RIqymdqI32YWTTdGKGsQMzhS9Xb6v+g9RJraMw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=os.amperecomputing.com; dmarc=pass action=none header.from=os.amperecomputing.com; dkim=pass header.d=os.amperecomputing.com; arc=none X-Received: from SN6PR01MB4656.prod.exchangelabs.com (2603:10b6:805:cf::31) by CH3PR01MB8489.prod.exchangelabs.com (2603:10b6:610:1a3::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6678.19; Fri, 11 Aug 2023 07:24:01 +0000 X-Received: from SN6PR01MB4656.prod.exchangelabs.com ([fe80::fafc:48fd:4f97:5aac]) by SN6PR01MB4656.prod.exchangelabs.com ([fe80::fafc:48fd:4f97:5aac%4]) with mapi id 15.20.6652.029; Fri, 11 Aug 2023 07:24:01 +0000 From: "Chris Li OS via groups.io" To: "Nong, Foster" , "Ni, Ray" , "devel@edk2.groups.io" , "Yao, Jiewen" Subject: Re: [edk2-devel] [PATCH 1/1] MdePkg: Add Cxl20.h into IndustryStandard Thread-Topic: [edk2-devel] [PATCH 1/1] MdePkg: Add Cxl20.h into IndustryStandard Thread-Index: AQHZqYEldzIsQb3uyUmUZ9Ix3q8qaa+heGDwgAFmbtqAAACO4IAcGTvwgBRos+CAEZRd2Q== Date: Fri, 11 Aug 2023 07:24:01 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_5b82cb1d-c2e0-4643-920a-bbe7b2d7cc47_Enabled=True;MSIP_Label_5b82cb1d-c2e0-4643-920a-bbe7b2d7cc47_SiteId=3bc2b170-fd94-476d-b0ce-4229bdc904a7;MSIP_Label_5b82cb1d-c2e0-4643-920a-bbe7b2d7cc47_SetDate=2023-08-11T07:23:59.184Z;MSIP_Label_5b82cb1d-c2e0-4643-920a-bbe7b2d7cc47_Name=Confidential;MSIP_Label_5b82cb1d-c2e0-4643-920a-bbe7b2d7cc47_ContentBits=0;MSIP_Label_5b82cb1d-c2e0-4643-920a-bbe7b2d7cc47_Method=Standard; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SN6PR01MB4656:EE_|CH3PR01MB8489:EE_ x-ms-office365-filtering-correlation-id: daf117bf-b2da-4dde-cfc7-08db9a3bef42 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam-message-info: xot5pxgGAEEbx3/vQd2dg0PHn4UhE7khWq5U7Oq2bkotwm9nwfcwBneruGnVS1iWU9m3XNULYIuXJbjeldfAWyx2IGBEPwjgp6QCge9ET8JpCNrMcuVTH9g3tUUQ96o019tUkMVfqoATvfBCOw2q3hFHMLnTbOK7Asyp6VFMngt8QXOgeivXQKmixPUhqwDR7UVfLvxLCSls/aR/YNjs0rELD7LyAIHKFLwyqiutRuC4fmpAOLdUFdLcQyc+GVaws5+RDFQwtJFXqRxloWo1AnkX+gDQcdJGlJ7KknpPqngBeaSNevA+n/7xNIYUcNwoXRIz/SK4tdCVtn6mwaWBeR01GxRiMOyCSMZmJxlHGfRXwMkDWMPh0p3kJgVEevjZdqoxGVF7tiyT9xbq0ip87nC3uu9c+NY9d+UIMQLPpS11rTzTC2iaQxr6a7uXUVXznmVIYfiVVaNMaTyn/MIqGWRA1DAg+E84GEuASuzdR2yLz1TsJHeqOl5aSsRMU/F8fBlRYX6VPkWvDwMkSVujPOL8F9GbMk5p9KKs2w8Pi3FOAXt6bvgHs4hJvMnUDy7ElyAioC38MRKkhwCRian9zScdukf8HfZt22P51Ip4ojc= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?3rLa5b/mpDzAx/sG/SPam8RsDJAfUUGqdEep1oMxgFZfusO0pY0ETQkDmh?= =?iso-8859-1?Q?TWIPwTeQPhLNbGlMwhI2PrGIR2UWaqasB9jMRLEeFK955jDzEqaqP+p5H4?= =?iso-8859-1?Q?ICYaP439yUJPhhE+dpcwMoqLWFVEJCAP/Me1QaU4PMdHdKaZNw+D0wn2F+?= =?iso-8859-1?Q?047HhuZPeAXeLUNyQMKscqg2fFFnm2p8Ml/QdEwCZ6dNcN34UsDk8HJsNm?= =?iso-8859-1?Q?XPIF8EEsxwPsLV1b25PFS/weldMPRgZxfiJU/Q4DN5z5BdMwXFDUdajGHN?= =?iso-8859-1?Q?I1kbD5+NUVMXVkOmAsuQD5Qbkp+faDZnhXiqtMx0uwNcZTkOR4lBGSKsJ7?= =?iso-8859-1?Q?893/sw0veeaykGMi8vtJamfeDvThv97AYa5qe0FL303PwX4essKLAi2R1g?= =?iso-8859-1?Q?WSI3NhK/Jy1krbvJdhZb9Hwp6jRopwZsm3e8iaxFRxDekmmHtYI0E5aC8i?= =?iso-8859-1?Q?pNYxAxovghqYu2Xbyb13vyUOdQmeNA2O/excSdUXbIybOY0r5UrHy8yODz?= =?iso-8859-1?Q?2yrxA2ezKxjARDrHpMEbCCbM2d3rCKhi/Dr/fj82EwYZmn98fMITxrmtt8?= =?iso-8859-1?Q?Wyioz6dT/oI2weIUg7Bed0rDJiY9ehuhD+ii2SokMZPv9XmsGZ6PSLOQsW?= =?iso-8859-1?Q?IDVoPmfu7YQBar0KJlG0buLxhJXfkz3DYEHXN9AKokgvFRTxFP6s4fBTAz?= =?iso-8859-1?Q?V+sSW8m2r78cUWXmhzsSY/I+gUHdXKBksVkFnJPEhutvOYUpCv81cFn7zX?= =?iso-8859-1?Q?7dKNj51DyZjupLkiTKzpUCtMn3XbNPkr+Rrm6hgW3mKkHGiYzA0GTsO/yp?= =?iso-8859-1?Q?NO3RYJnDFtd+z3y8MZN1wHo8ea29IZyhlGlRzFqGOqdRx+GmrchIr0qUxW?= =?iso-8859-1?Q?PAReiRXIlsbZE+DSVorfKjvYM9+7XR7aBtfNQI8ZNHCDIcBSgUymSWikVI?= =?iso-8859-1?Q?Rzjie5a6wK4tdQN8mzgWshdoWPiUBLlteAtbH/2fKX3R+2dDUj6g/ghE+b?= =?iso-8859-1?Q?szbnBePeoj34FMjq7i0p/YPfb42rFwTN/8qKbJlkooM97Fe98bZTJPSFKe?= =?iso-8859-1?Q?/eMpjXn+YuUaGifFV/ySPhOyEE+pgFX/QyFHI0DxzVMnd/Fuci5nVlUeGR?= =?iso-8859-1?Q?vD5a398Q+2QfpeL2OE9ejpy05ZXGxrv0ny0aJeMX1SP5Q5eVQ88nh9HqVw?= =?iso-8859-1?Q?1Y2/3apkfnuMoe5Bp8nYM6qTFUMGoE/eiidbyFhbvVVadNsRxBVfX5xGtC?= =?iso-8859-1?Q?nkdVgcIp0hhUUsJ2Gn+6Y8BYYpIw1WXZs24aKrTttLWUun+2aQ2tVPw/tl?= =?iso-8859-1?Q?7JGkJGyWOCaP1eoiFPk/iHNFEtm5q4WfiJlGzUiSPsF7A/n8b64m10wrS1?= =?iso-8859-1?Q?aqixAPLTkC0DslgSpfvRO6uTuqGlU7lj8JLtiWnnz3REbv3CERU6TS4+uu?= =?iso-8859-1?Q?AdfEE5PZbqXe/uckPWAYlvtA9om09pLWxiHM8O1iw5HZO+sepH789AH7Jz?= =?iso-8859-1?Q?lJtQsOOWQX6pjJH4BVKjPG1/nBONp416L/v5VH8/DtPVoDLQMkiQwJ+r9Y?= =?iso-8859-1?Q?ZRDDNqN6WNWreSs3P5D0fudXpkfWLaGEDbZsIA2pnAVVn7bVycvXK0L+q3?= =?iso-8859-1?Q?5uII1Dm1wJ9fmq5hvveHYOEL0XLa/ugkz9ecuCPp1kHFiOQPXrNPGTDw?= =?iso-8859-1?Q?=3D=3D?= MIME-Version: 1.0 X-OriginatorOrg: os.amperecomputing.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SN6PR01MB4656.prod.exchangelabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: daf117bf-b2da-4dde-cfc7-08db9a3bef42 X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Aug 2023 07:24:01.0498 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3bc2b170-fd94-476d-b0ce-4229bdc904a7 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: sqfRadO5YOcPYMzDAA6Rdws4VTgzOJQXf/8PDIjq8mYQ0J7RozAc4BINIk952jrx18+7eSkwzxnSu2sVafr/S2ptPW7c2cFffPxIbqxSzw2zGF7YKVv0GtUb0SCsW3Dp X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR01MB8489 Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,chrisli@os.amperecomputing.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: eum25caeVSPO3KrP19lBH6IMx7686176AA= Content-Language: en-US Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b=hZoo1z1L; arc=reject ("signature check failed: fail, {[1] = sig:microsoft.com:reject}"); dmarc=none; spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io Thanks Foster, will check soon and update. ________________________________________ From: Nong, Foster Sent: Monday, July 31, 2023 11:18 AM To: Ni, Ray; devel@edk2.groups.io; Chris Li OS; Yao, Jiewen Subject: RE: [edk2-devel] [PATCH 1/1] MdePkg: Add Cxl20.h into IndustryStan= dard hi Chris, I attached the file, which add some comments. Please help review it. One open need you to be taken care of the reserved fields on CXL2.0 registe= r. Consider that CXL3.0 and new one will be compatible with CXL2.0, I remove t= he CXL version on CXL register definition in current CXL20.h. If New register in CXL30 or new one is defined on CXL20 register's reserve= d field, we can update these new register definition in CXL2.0 file. For a whole new registers on CXL30 or new one, we can add new header file = CXL3.0 or new header file for them. -----Original Message----- From: Nong, Foster Sent: Tuesday, July 18, 2023 11:15 AM To: Ni, Ray ; devel@edk2.groups.io; chrisli@os.amperecomp= uting.com; Yao, Jiewen Subject: RE: [edk2-devel] [PATCH 1/1] MdePkg: Add Cxl20.h into IndustryStan= dard Thanks Chris, I will take some time to review it. -----Original Message----- From: Ni, Ray Sent: Friday, June 30, 2023 2:08 PM To: devel@edk2.groups.io; chrisli@os.amperecomputing.com; Yao, Jiewen ; Nong, Foster Subject: RE: [edk2-devel] [PATCH 1/1] MdePkg: Add Cxl20.h into IndustryStan= dard +@Nong, Foster > -----Original Message----- > From: devel@edk2.groups.io On Behalf Of Chris > Li OS via groups.io > Sent: Friday, June 30, 2023 2:07 PM > To: Yao, Jiewen ; devel@edk2.groups.io > Subject: Re: [edk2-devel] [PATCH 1/1] MdePkg: Add Cxl20.h into > IndustryStandard > > Thanks Jiewen, will soon send an v2 for it. > > ________________________________________ > From: Yao, Jiewen > Sent: Thursday, June 29, 2023 4:43 PM > To: Chris Li OS; devel@edk2.groups.io > Cc: Yao, Jiewen > Subject: RE: [PATCH 1/1] MdePkg: Add Cxl20.h into IndustryStandard > > Thanks for the update. > > +} HDM_DECODER_N_INFO; > > I think this need add CXL_ prefix. > > Other looks good to me. > > Thank you > Yao, Jiewen > > > > > -----Original Message----- > > From: Chris Li OS > > Sent: Wednesday, June 28, 2023 1:28 PM > > To: devel@edk2.groups.io; Yao, Jiewen > > Subject: [PATCH 1/1] MdePkg: Add Cxl20.h into IndustryStandard > > > > 1) Add CXL 2.0 header file to comply with CXL 2.0 specification > > 2) CXL 2.0 header will embed Cxl11.h > > 3) Updated Cxl.h to point to 2.0 header file > > > > Signed-off-by: Chris Li > > --- > > MdePkg/Include/IndustryStandard/Cxl.h | 2 +- > > MdePkg/Include/IndustryStandard/Cxl20.h | 477 > ++++++++++++++++++++++++ > > 2 files changed, 478 insertions(+), 1 deletion(-) create mode > > 100644 MdePkg/Include/IndustryStandard/Cxl20.h > > > > diff --git a/MdePkg/Include/IndustryStandard/Cxl.h > > b/MdePkg/Include/IndustryStandard/Cxl.h > > index 06c1230e3e..9ad3242e25 100644 > > --- a/MdePkg/Include/IndustryStandard/Cxl.h > > +++ b/MdePkg/Include/IndustryStandard/Cxl.h > > @@ -12,7 +12,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent > > #ifndef _CXL_MAIN_H_ #define _CXL_MAIN_H_ > > > > -#include > > +#include > > // > > // CXL assigned new Vendor ID > > // > > diff --git a/MdePkg/Include/IndustryStandard/Cxl20.h > > b/MdePkg/Include/IndustryStandard/Cxl20.h > > new file mode 100644 > > index 0000000000..a08251f4e9 > > --- /dev/null > > +++ b/MdePkg/Include/IndustryStandard/Cxl20.h > > @@ -0,0 +1,477 @@ > > +/** @file > > + CXL 2.0 Register definitions > > + > > + This file contains the register definitions based on the Compute > > + Express Link > > + (CXL) Specification Revision 2.0. > > + > > + Copyright (c) 2023, Ampere Computing LLC. All rights > > + reserved.
> > + > > + SPDX-License-Identifier: BSD-2-Clause-Patent > > + > > +**/ > > + > > +#ifndef CXL20_H_ > > +#define CXL20_H_ > > + > > +#include > > + > > +// > > +// Ensure proper structure formats > > +// > > +#pragma pack(1) > > + > > + > > +// > > +// CXL DVSEC IDs and Revisions > > +// Compute Express Link Specification Revision 2.0 - Chapter 8.1.1 > > +// > > +#define CXL_DVSEC_ID_PCIE_DVSEC_FOR_CXL_DEVICE 0x0 > > +#define CXL_DVSEC_ID_NON_CXL_FUNCTION_MAP 0x2 > > +#define CXL_DVSEC_ID_CXL20_EXTENSIONS_DVSEC_FOR_PORTS 0x3 > > +#define CXL_DVSEC_ID_GPF_DVSEC_FOR_CXL_PORTS 0x4 > > +#define CXL_DVSEC_ID_GPF_DVSEC_FOR_CXL_DEVICES 0x5 > > +#define CXL_DVSEC_ID_PCIE_DVSEC_FOR_FLEX_BUS_PORT 0x7 > > +#define CXL_DVSEC_ID_REGISTER_LOCATOR 0x8 > > +#define CXL_DVSEC_ID_MLD 0x9 > > +#define CXL_DVSEC_ID_PCIE_DVSEC_FOR_TEST_CAPABILITY 0xA > > + > > +#define CXL20_DVSEC_REVISON_REGISTOR_LOCATOR 0x0 > > + > > +// > > +// Register Block ID > > +// Compute Express Link Specification Revision 2.0 - Chapter > > +8.1.9.1 // > > +#define CXL_REGISTER_BLOCK_ID_EMPTY 0x0 > > +#define CXL_REGISTER_BLOCK_ID_COMPONENT 0x01 > > +#define CXL_REGISTER_BLOCK_ID_BAR_VIRTUALIZATION_ACL 0x02 > > +#define CXL_REGISTER_BLOCK_ID_DEVICE 0x03 > > + > > +// > > +// Component Register Block Register Ranges Offset // Compute > > +Express Link Specification Revision 2.0 - Chapter 8.2.4 // > > +#define CXL_COMPONENT_REGISTERS_RANGE_OFFSET_IO 0x0 > > +#define CXL_COMPONENT_REGISTERS_RANGE_OFFSET_CACHE_MEM > > 0x1000 > > +#define CXL_COMPONENT_REGISTERS_RANGE_OFFSET_ARB_MUX > 0xE000 > > + > > +// > > +// CXL Cache Memory Capability IDs > > +// Compute Express Link Specification Revision 2.0 - Chapter 8.2.5 > > +// > > +#define CXL_CACHE_MEM_CAPABILITY_ID_CXL 0x1 > > +#define CXL_CACHE_MEM_CAPABILITY_ID_RAS 0x2 > > +#define CXL_CACHE_MEM_CAPABILITY_ID_SECURITY 0x3 > > +#define CXL_CACHE_MEM_CAPABILITY_ID_LINK 0x4 > > +#define CXL_CACHE_MEM_CAPABILITY_ID_HDM_DECODER 0x5 > > +#define CXL_CACHE_MEM_CAPABILITY_ID_EXTENDED_SECURITY 0x6 > > +#define CXL_CACHE_MEM_CAPABILITY_ID_IDE 0x7 > > +#define CXL_CACHE_MEM_CAPABILITY_ID_SNOOP_FILTER 0x8 > > +#define CXL_CACHE_MEM_CAPABILITY_ID_MASK 0xFFFF > > + > > +// > > +// Generic CXL Device Capability IDs 0x0000 ~ 0x3FFF // Compute > > +Express Link Specification Revision 2.0 - Chapter 8.2.8.2.1 // > > +#define CXL_DEVICE_CAPABILITY_ID_CAPABILITIES_ARRAY_REGISTER > > 0x0000 > > +#define CXL_DEVICE_CAPABILITY_ID_DEVICE_STATUS 0x00= 01 > > +#define CXL_DEVICE_CAPABILITY_ID_PRIMARY_MAILBOX 0x00= 02 > > +#define CXL_DEVICE_CAPABILITY_ID_SECONDARY_MAILBOX 0x00= 03 > > + > > +// > > +// Specific CXL Device Capability IDs 0x4000 ~ 0x7FFF // Compute > > +Express Link Specification Revision 2.0 - Chapter 8.2.8.2.1 // // > > +(ref: CXL 2.0 spec $8.2.8.5) > > +#define CXL_DEVICE_CAPABILITY_ID_MEMORY_DEVICE_STATUS > > 0x4000 > > +#define CXL_DEVICE_CAPABILITY_ID_MASK 0xFF= FF > > + > > +// > > +// Memory Device Status > > +// Compute Express Link Specification Revision 2.0 - Chapter > > +8.2.8.5.1.1 // > > +#define CXL_MEM_DEVICE_MEDIA_STATUS_NOT_READY 0b00 > > +#define CXL_MEM_DEVICE_MEDIA_STATUS_READY 0b01 > > +#define CXL_MEM_DEVICE_MEDIA_STATUS_ERROR 0b10 > > +#define CXL_MEM_DEVICE_MEDIA_STATUS_DISABLED 0b11 > > + > > +// > > +// PCIe DVSEC for CXL Device > > +// Compute Express Link Specification Revision 2.0 - Chapter 8.1.3 > > +// typedef union { > > + struct { > > + UINT16 CacheCapable : 1; // bit 0 > > + UINT16 IoCapable : 1; // bit 1 > > + UINT16 MemCapable : 1; // bit 2 > > + UINT16 MemHwInitMode : 1; // bit 3 > > + UINT16 HdmCount : 2; // bit 4..= 5 > > + UINT16 CacheWriteBackAndInvalidateCapable : 1; // bit 6 > > + UINT16 CxlResetCapable : 1; // bit 7 > > + UINT16 CxlResetTimeout : 3; // bit 8..= 10 > > + UINT16 CxlResetMemClrCapable : 1; // bit 11 > > + UINT16 Reserved : 1; // bit 12 > > + UINT16 MultipleLogicalDevice : 1; // bit 13 > > + UINT16 ViralCapable : 1; // bit 14 > > + UINT16 PmInitCompletionReportingCapable : 1; // bit 15 > > + } Bits; > > + UINT16 Uint16; > > +} CXL_DVSEC_CXL_DEVICE_CAPABILITY; > > + > > +typedef union { > > + struct { > > + UINT16 CacheEnable : 1; // bit 0 > > + UINT16 IoEnable : 1; // bit 1 > > + UINT16 MemEnable : 1; // bit 2 > > + UINT16 CacheSfCoverage : 5; // bit 3..7 > > + UINT16 CacheSfGranularity : 3; // bit 8..10 > > + UINT16 CacheCleanEviction : 1; // bit 11 > > + UINT16 Reserved1 : 2; // bit 12..13 > > + UINT16 ViralEnable : 1; // bit 14 > > + UINT16 Reserved2 : 1; // bit 15 > > + } Bits; > > + UINT16 Uint16; > > +} CXL_DVSEC_CXL_DEVICE_CONTROL; > > + > > +typedef union { > > + struct { > > + UINT16 Reserved1 : 14; // bit 0..13 > > + UINT16 ViralStatus : 1; // bit 14 > > + UINT16 Reserved2 : 1; // bit 15 > > + } Bits; > > + UINT16 Uint16; > > +} CXL_DVSEC_CXL_DEVICE_STATUS; > > + > > +typedef union { > > + struct { > > + UINT16 DisableCaching : 1; // bit 0 > > + UINT16 InitiateCacheWriteBackAndInvalidate : 1; // bit 1 > > + UINT16 InitiateCxlReset : 1; // bit 2 > > + UINT16 CxlResetMemClrEnable : 1; // bit 3 > > + UINT16 Reserved : 12; // bit 4..= 15 > > + } Bits; > > + UINT16 Uint16; > > +} CXL_2_0_DVSEC_CXL_DEVICE_CONTROL2; > > + > > +typedef union { > > + struct { > > + UINT16 CacheInvalid : 1; // bit= 0 > > + UINT16 CxlResetComplete : 1; // bit= 1 > > + UINT16 Reserved : 13; // bit= 2..14 > > + UINT16 PowerManagementInitialzationComplete : 1; // bit= 15 > > + } Bits; > > + UINT16 Uint16; > > +} CXL_2_0_DVSEC_CXL_DEVICE_STATUS2; > > + > > +typedef union { > > + struct { > > + UINT16 ConfigLock : 1; // bit 0 > > + UINT16 Reserved : 15; // bit 1..15 > > + } Bits; > > + UINT16 Uint16; > > +} CXL_DVSEC_CXL_DEVICE_LOCK; > > + > > +typedef union { > > + struct { > > + UINT16 CacheSizeUnit : 4; // bit 0..3 > > + UINT16 Reserved : 4; // bit 4..7 > > + UINT16 CacheSize : 8; // bit 8..15 > > + } Bits; > > + UINT16 Uint16; > > +} CXL_2_0_DVSEC_CXL_DEVICE_CAPABILITY2; > > + > > +typedef union { > > + struct { > > + UINT32 MemorySizeHigh : 32; // bit 0..31 > > + } Bits; > > + UINT32 Uint32; > > +} CXL_DVSEC_CXL_DEVICE_RANGE1_SIZE_HIGH; > > + > > +typedef union { > > + struct { > > + UINT32 MemoryInfoValid : 1; // bit 0 > > + UINT32 MemoryActive : 1; // bit 1 > > + UINT32 MediaType : 3; // bit 2..4 > > + UINT32 MemoryClass : 3; // bit 5..7 > > + UINT32 DesiredInterleave : 5; // bit 8..12 > > + UINT32 MemoryActiveTimeout : 3; // bit 13..15 > > + UINT32 Reserved : 12; // bit 16..27 > > + UINT32 MemorySizeLow : 4; // bit 28..31 > > + } Bits; > > + UINT32 Uint32; > > +} CXL_DVSEC_CXL_DEVICE_RANGE1_SIZE_LOW; > > + > > +typedef union { > > + struct { > > + UINT32 MemoryBaseHigh : 32; // bit 0..31 > > + } Bits; > > + UINT32 Uint32; > > +} CXL_DVSEC_CXL_DEVICE_RANGE1_BASE_HIGH; > > + > > +typedef union { > > + struct { > > + UINT32 Reserved : 28; // bit 0..27 > > + UINT32 MemoryBaseLow : 4; // bit 28..31 > > + } Bits; > > + UINT32 Uint32; > > +} CXL_DVSEC_CXL_DEVICE_RANGE1_BASE_LOW; > > + > > +typedef union { > > + struct { > > + UINT32 MemorySizeHigh : 32; // bit 0..31 > > + } Bits; > > + UINT32 Uint32; > > +} CXL_DVSEC_CXL_DEVICE_RANGE2_SIZE_HIGH; > > + > > +typedef union { > > + struct { > > + UINT32 MemoryInfoValid : 1; // bit 0 > > + UINT32 MemoryActive : 1; // bit 1 > > + UINT32 MediaType : 3; // bit 2..4 > > + UINT32 MemoryClass : 3; // bit 5..7 > > + UINT32 DesiredInterleave : 5; // bit 8..12 > > + UINT32 MemoryActiveTimeout : 3; // bit 13..15 > > + UINT32 Reserved : 12; // bit 16..27 > > + UINT32 MemorySizeLow : 4; // bit 28..31 > > + } Bits; > > + UINT32 Uint32; > > +} CXL_DVSEC_CXL_DEVICE_RANGE2_SIZE_LOW; > > + > > +typedef union { > > + struct { > > + UINT32 MemoryBaseHigh : 32; // bit 0..31 > > + } Bits; > > + UINT32 Uint32; > > +} CXL_DVSEC_CXL_DEVICE_RANGE2_BASE_HIGH; > > + > > +typedef union { > > + struct { > > + UINT32 Reserved : 28; // bit 0..27 > > + UINT32 MemoryBaseLow : 4; // bit 28..31 > > + } Bits; > > + UINT32 Uint32; > > +} CXL_DVSEC_CXL_DEVICE_RANGE2_BASE_LOW; > > + > > +typedef struct { > > + PCI_EXPRESS_EXTENDED_CAPABILITIES_HEADER Header; > > // offset 0x00 > > + PCI_EXPRESS_DESIGNATED_VENDOR_SPECIFIC_HEADER_1 > > DesignatedVendorSpecificHeader1; // offset 0x04 > > + PCI_EXPRESS_DESIGNATED_VENDOR_SPECIFIC_HEADER_2 > > DesignatedVendorSpecificHeader2; // offset 0x08 > > + CXL_DVSEC_CXL_DEVICE_CAPABILITY DeviceCapability; > > // offset 0x0A > > + CXL_DVSEC_CXL_DEVICE_CONTROL DeviceControl; > > // offset 0x0C > > + CXL_DVSEC_CXL_DEVICE_STATUS DeviceStatus; = // > > offset 0x0E > > + CXL_2_0_DVSEC_CXL_DEVICE_CONTROL2 DeviceControl2; > > // offset 0x10 > > + CXL_2_0_DVSEC_CXL_DEVICE_STATUS2 DeviceStatus2; > > // offset 0x12 > > + CXL_DVSEC_CXL_DEVICE_LOCK DeviceLock; = // > > offset 0x14 > > + CXL_2_0_DVSEC_CXL_DEVICE_CAPABILITY2 DeviceCapability2= ; > > // offset 0x16 > > + CXL_DVSEC_CXL_DEVICE_RANGE1_SIZE_HIGH > DeviceRange1SizeHigh; > > // offset 0x18 > > + CXL_DVSEC_CXL_DEVICE_RANGE1_SIZE_LOW > DeviceRange1SizeLow; > > // offset 0x1C > > + CXL_DVSEC_CXL_DEVICE_RANGE1_BASE_HIGH > > DeviceRange1BaseHigh; // offset 0x20 > > + CXL_DVSEC_CXL_DEVICE_RANGE1_BASE_LOW > > DeviceRange1BaseLow; // offset 0x24 > > + CXL_DVSEC_CXL_DEVICE_RANGE2_SIZE_HIGH > DeviceRange2SizeHigh; > > // offset 0x28 > > + CXL_DVSEC_CXL_DEVICE_RANGE2_SIZE_LOW > DeviceRange2SizeLow; > > // offset 0x2C > > + CXL_DVSEC_CXL_DEVICE_RANGE2_BASE_HIGH > > DeviceRange2BaseHigh; // offset 0x30 > > + CXL_DVSEC_CXL_DEVICE_RANGE2_BASE_LOW > > DeviceRange2BaseLow; // offset 0x34 > > +} CXL_2_0_DVSEC_CXL_DEVICE; > > + > > +// > > +// Register Locator DVSEC > > +// Compute Express Link Specification Revision 2.0 - Chapter 8.1.9 > > +// typedef union { > > + struct { > > + UINT32 RegisterBir : 3; // bit 0..2 > > + UINT32 Reserved : 5; // bit 3..7 > > + UINT32 RegisterBlockIdentifier : 8; // bit 8..15 > > + UINT32 RegisterBlockOffsetLow : 16; // bit 16..31 > > + } Bits; > > + UINT32 Uint32; > > +} CXL_REGISTER_LOCATOR_DVSEC_REGISTER_OFFSET_LOW; > > + > > +typedef union { > > + struct { > > + UINT32 RegisterBlockOffsetHigh : 32; // bit 0..31 > > + } Bits; > > + UINT32 Uint32; > > +} CXL_REGISTER_LOCATOR_DVSEC_REGISTER_OFFSET_HIGH; > > + > > +typedef struct { > > + CXL_REGISTER_LOCATOR_DVSEC_REGISTER_OFFSET_LOW OffsetLow; > > + CXL_REGISTER_LOCATOR_DVSEC_REGISTER_OFFSET_HIGH OffsetHigh; > > +} CXL_REGISTER_LOCATOR_DVSEC_REGISTER_BLOCK; > > + > > + > > +typedef struct { > > + PCI_EXPRESS_EXTENDED_CAPABILITIES_HEADER Header; > > // offset 0x00 > > + PCI_EXPRESS_DESIGNATED_VENDOR_SPECIFIC_HEADER_1 > > DesignatedVendorSpecificHeader1; // offset 0x04 > > + PCI_EXPRESS_DESIGNATED_VENDOR_SPECIFIC_HEADER_2 > > DesignatedVendorSpecificHeader2; // offset 0x08 > > + UINT16 Reserved; = // offset 0x0A > > + CXL_REGISTER_LOCATOR_DVSEC_REGISTER_BLOCK RegisterBlock[1]; > > // offset 0x0C > > +} CXL_REGISTER_LOCATOR_DVSEC; > > + > > +// > > +// CXL HDM Decoder Capability Header Register // Compute Express > > +Link Specification Revision 2.0 - Chapter 8.2.5.5 // typedef union > > +{ > > + struct { > > + UINT32 CxlCapabilityId : 16; // bit 0..15 > > + UINT32 CxlCapabilityVersion : 4; // bit 16..19 > > + UINT32 CxlHdmDecoderCapabilityPointer : 12; // bit 20..31 > > + } Bits; > > + UINT32 Uint32; > > +} CXL_HDM_DECODER_CAPABILITY_HEADER_REGISTER; > > + > > +// > > +// CXL HDM Decoder Capability Register // Compute Express Link > > +Specification Revision 2.0 - Chapter 8.2.5.12 // typedef union { > > + struct { > > + UINT32 DecoderCount : 4; // bit 0..3 > > + UINT32 TargetCount : 4; // bit 4..7 > > + UINT32 A11to8InterleaveCapable : 1; // bit 8 > > + UINT32 A14to12InterleaveCapable : 1; // bit 9 > > + UINT32 PoisonOnDecodeErrorCapability : 1; // bit 10 > > + UINT32 Reserved : 21; // bit 11..31 > > + } Bits; > > + UINT32 Uint32; > > +} CXL_2_0_HDM_DECODER_CAPABILITY_REGISTER; > > + > > +typedef union { > > + struct { > > + UINT32 PoisonOnDecodeErrorEnable : 1; // bit 0 > > + UINT32 HdmDecoderEnable : 1; // bit 1 > > + UINT32 Reserved : 30; // bit 2..31 > > + } Bits; > > + UINT32 Uint32; > > +} CXL_HDM_DECODER_GLOBAL_CONTROL_REGISTER; > > + > > +typedef union { > > + struct { > > + UINT32 Reserved : 28; // bit 0..27 > > + UINT32 MemoryBaseLow : 4; // bit 28..31 > > + } Bits; > > + UINT32 Uint32; > > +} CXL_HDM_DECODER_N_BASE_LOW_REGISTER; > > + > > +typedef union { > > + struct { > > + UINT32 MemoryBaseHigh : 32; // bit 0..31 > > + } Bits; > > + UINT32 Uint32; > > +} CXL_HDM_DECODER_N_BASE_HIGH_REGISTER; > > + > > +typedef union { > > + struct { > > + UINT32 Reserved : 28; // bit 0..27 > > + UINT32 MemorySizeLow : 4; // bit 28..31 > > + } Bits; > > + UINT32 Uint32; > > +} CXL_HDM_DECODER_N_SIZE_LOW_REGISTER; > > + > > +typedef union { > > + struct { > > + UINT32 MemorySizeHigh : 32; // bit 0..31 > > + } Bits; > > + UINT32 Uint32; > > +} CXL_HDM_DECODER_N_SIZE_HIGH_REGISTER; > > + > > +typedef union { > > + struct { > > + UINT32 InterleaveGranularity : 4; // bit 0..3 > > + UINT32 InterleaveWays : 4; // bit 4..7 > > + UINT32 LockOnCommit : 1; // bit 8 > > + UINT32 Commit : 1; // bit 9 > > + UINT32 Committed : 1; // bit 10 > > + UINT32 ErrorNotCommitted : 1; // bit 11 > > + UINT32 TargetDeviceType : 1; // bit 12 > > + UINT32 Reserved : 19; // bit 13..31 > > + } Bits; > > + UINT32 Uint32; > > +} CXL_2_0_HDM_DECODER_N_CONTROL_REGISTER; > > + > > +typedef union { > > + struct { > > + UINT32 TargetPortIdentiferWay0 : 8; // bit 0..7 > > + UINT32 TargetPortIdentiferWay1 : 8; // bit 8..15 > > + UINT32 TargetPortIdentiferWay2 : 8; // bit 16..23 > > + UINT32 TargetPortIdentiferWay3 : 8; // bit 24..31 > > + } Bits; > > + UINT32 Uint32; > > +} CXL_HDM_DECODER_N_TARGET_LIST_LOW_REGISTER; > > + > > +typedef union { > > + struct { > > + UINT32 Reserved : 28; // bit 0..27 > > + UINT32 DpaSkipLow : 4; // bit 28..31 > > + } Bits; > > + UINT32 Uint32; > > +} CXL_HDM_DECODER_N_DPA_SKIP_LOW_REGISTER; > > + > > +typedef union { > > + struct { > > + UINT32 TargetPortIdentiferWay4 : 8; // bit 0..7 > > + UINT32 TargetPortIdentiferWay5 : 8; // bit 8..15 > > + UINT32 TargetPortIdentiferWay6 : 8; // bit 16..23 > > + UINT32 TargetPortIdentiferWay7 : 8; // bit 24..31 > > + } Bits; > > + UINT32 Uint32; > > +} CXL_HDM_DECODER_N_TARGET_LIST_HIGH_REGISTER; > > + > > +typedef union { > > + struct { > > + UINT32 DpaSkipHigh : 32; // bit 0..31 > > + } Bits; > > + UINT32 Uint32; > > +} CXL_HDM_DECODER_N_DPA_SKIP_HIGH_REGISTER; > > + > > +typedef union { > > + CXL_HDM_DECODER_N_TARGET_LIST_LOW_REGISTER TargetListLow; > > + CXL_HDM_DECODER_N_DPA_SKIP_LOW_REGISTER DpaSkipLow; > > +} CXL_HDM_DECODER_N_TARGET_LIST_OR_DPA_SKIP_LOW; > > + > > +typedef union { > > + CXL_HDM_DECODER_N_TARGET_LIST_HIGH_REGISTER TargetListHigh; > > + CXL_HDM_DECODER_N_DPA_SKIP_HIGH_REGISTER DpaSkipHigh; > > +} CXL_HDM_DECODER_N_TARGET_LIST_OR_DPA_SKIP_HIGH; > > + > > +typedef struct { > > + CXL_HDM_DECODER_N_BASE_LOW_REGISTER DecoderBaseLow; > > // 0x10 > > + CXL_HDM_DECODER_N_BASE_HIGH_REGISTER DecoderBaseHigh; > > // 0x14 > > + CXL_HDM_DECODER_N_SIZE_LOW_REGISTER DecoderSizeLow; > > // 0x18 > > + CXL_HDM_DECODER_N_SIZE_HIGH_REGISTER DecoderSizeHigh; > > // 0x1c > > + CXL_2_0_HDM_DECODER_N_CONTROL_REGISTER DecoderControl; > > // 0x20 > > + CXL_HDM_DECODER_N_TARGET_LIST_OR_DPA_SKIP_LOW > > DecoderTargetListDpaSkipLow; // 0x24 > > + CXL_HDM_DECODER_N_TARGET_LIST_OR_DPA_SKIP_HIGH > > DecoderTargetListDpaSkipHigh; // 0x28 > > + UINT32 Reserved; = // 0x2C > > +} HDM_DECODER_N_INFO; > > + > > +typedef union { > > + struct { > > + UINT64 CxlDeviceCapabilityId : 16; // bit 0..15 > > + UINT64 CxlDeviceCapabilityVersion : 8; // bit 16..23 > > + UINT64 Reserved1 : 8; // bit 24..31 > > + UINT64 CxlDeviceCapabilitiesCount : 16; // bit 32..47 > > + UINT64 Reserved2 : 16; // bit 48..63 > > + } Bits; > > + UINT64 Uint64; > > +} CXL_DEVICE_CAPABILITIES_ARRAY_REGISTER; > > + > > +// > > +// CXL Memory Status Register > > +// Compute Express Link Specification Revision 2.0 - Chapter > > +8.2.8.5 // typedef union { > > + struct { > > + UINT64 DeviceFatal : 1; // bit 0 > > + UINT64 FwHalt : 1; // bit 1 > > + UINT64 MediaStatus : 2; // bit 2..3 > > + UINT64 MailboxInterfacesReady : 1; // bit 4 > > + UINT64 ResetNeeded : 3; // bit 5..7 > > + UINT64 Reserved : 56; // bit 8..63 > > + } Bits; > > + UINT64 Uint64; > > +} CXL_MEMORY_DEVICE_STATUS_REGISTER; > > + > > +#pragma pack() > > + > > +#endif > > -- > > 2.34.1 > > >=20 > -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#107706): https://edk2.groups.io/g/devel/message/107706 Mute This Topic: https://groups.io/mt/99825866/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-