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 D43247803DA for ; Fri, 18 Aug 2023 09:28:58 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=S9EiC04Bjd2sVCHskHddFdr+XRtVw/MtgVjhytqIJIY=; c=relaxed/simple; d=groups.io; h=ARC-Seal:ARC-Message-Signature:ARC-Authentication-Results:From:To:CC: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=1692350937; v=1; b=ZDMIVefBPQ7CJN3e0TuKT54QrsWLlZHNuf0vxf4FeHUOeHGrYFxaEomQf9o9LHvL3rcJsVym YMksd/IrhTTOnuS/PMdoqjUCT/jr2HUA5P/1nxx5uch15XDuSSqtKKz8jbQjbnVACgCkubQrtCV JhVHu136WNs2Kv8zvJnonhAU= X-Received: by 127.0.0.2 with SMTP id qK6vYY7687511x5CRQ4fZvRY; Fri, 18 Aug 2023 02:28:57 -0700 X-Received: from NAM10-DM6-obe.outbound.protection.outlook.com (NAM10-DM6-obe.outbound.protection.outlook.com [40.107.93.112]) by mx.groups.io with SMTP id smtpd.web11.7709.1692350936320917355 for ; Fri, 18 Aug 2023 02:28:56 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RjBqdsrRbczNMykhy/aIBnZgnBCqUjBQqf5OVpe2znEVRLIkvenqXabA3RiRIsbwBfEGf9JmJMsF+YVEjkOV1xoKJ3XXqAng+C4tPo+mNaZINb71ZgbrzcjhrfTRUqyRn3mk7NxftVreUdChq62gDlC83BHz9Kjf+rwGa3qVYTCjWUlC0V09LHmmxyYwauithkftKlXEIRemEfb5Uh7o7bz3rLfkQLICQM+fhRpjcQHjab/65f0SLbeiLutN3Sf47xY3d9Pfi2IkUlVfKV3wwl018YJMwA//7o8mF7aXJyzzMbomiQJCzRsgcVUQ9GBh3lAh4dPd4DL6AuBRNfA75Q== 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=38Ci1hM2zIXrlG/3LvmEmJX7+zLxRlkNm8Lo4zMtvbI=; b=HfYfhiP9bys7z9Kaz7I1Ovq+G3sCwqkaqf9Ve2ojkWQ8cMI2QyWfs7tC/OVJ7rHKxnpvwmXDVV82KYmjS6zg8NbDyfMNvkfK7c2GDf+igsY2hAeym5BoUX0P+HNsqLrYv40JFbBvvv55mbAUiGIeQGIDKk3bI2u4/O8+JNQl4IMT9pn5o6mTQdyQ+AL+Ju4LqYdkcJZ0tEKTlRuZtwb8V5dYXrI0qDy7iQZLlh75CCcyPAs+Vcc2MxQVWpjbyehzy5rYHiUz6JD5p6+ZTazWhxYek4Qwlklc/qm7rd0LVOWosURV8i/PXQsB6nX8KqpCYU5In0L8AlG2DQCplyYcyg== 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 DM8PR01MB6998.prod.exchangelabs.com (2603:10b6:8:17::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6678.31; Fri, 18 Aug 2023 09:28:52 +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.6678.031; Fri, 18 Aug 2023 09:28:52 +0000 From: "Chris Li OS via groups.io" To: "devel@edk2.groups.io" , "Nong, Foster" , "Gao, Liming" CC: "Yao, Jiewen" , "Ni, Ray" , "michael.d.kinney@intel.com" , Open Source Submission Subject: [edk2-devel] [PATCH v3 1/1] MdePkg: Add Cxl20.h into IndustryStandard Thread-Topic: [edk2-devel] [PATCH v3 1/1] MdePkg: Add Cxl20.h into IndustryStandard Thread-Index: AQHZ0bZm3zu5NW01xUKbgBkIrKpupg== Date: Fri, 18 Aug 2023 09:28:52 +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-18T09:28:50.366Z;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_|DM8PR01MB6998:EE_ x-ms-office365-filtering-correlation-id: bc7b7ed6-731e-40c7-b78f-08db9fcd891d x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam-message-info: avOdABDJrJDF+bSvBmv+l9nmnoiU6IvaIHIDiZiEISrJKzckdf1LF2ZMBd5gNO1AtSx1cqCto+2KkgmVHXVy66Txnf6s7e/5HA0CXRoUY+S+k+nrwUHJzsLUj0X4FZVvd0d0WNCov2yTFHz6tX8G4tM9erL5oE75IPURwRTyuh8S5r3vRpeR1zQPdEE+sP0AFUIjYWcIiI85sRbp4XwgqA3EjjwcP0DBA9h1vWmW0aNpCuuZShzboKdTDmiKo9Kdh1xbS0HKO8cNA+l3ydCgTlAGbYuWPIbdAW1JfUCMo1+2LR5IxV8E/3OUEmEUrT0Z81gxRHilfwnp2ycfhowB7vs1bOs4gH95hke5QrO3lI6GXG7/Sj1mZR771TpbLyRFUgm2yvIeyyVfqDSkNHQ/apTKjrZkgIKcFTyuo7Cm9JNqE10y0x6EOAnzAvwtDHEzJPMNN9FmPCt+TPpK7fLJOVg+Uty4bmuH04N2VaLM18N2kS2p2xlsMZVV3JWjehvwaKTp9iLQj0Z96YFh/6zp9ZNEY75nw+QTmlTbx86ljvllFPGv8Ci0E0hLvKwAiLTrBvD3VQNeNx3Zt8a827txWKvO35ZEtdA3GoabgcHQaN2+iGFT5cx6zF7TILX2sBpT2BTQaPeFs+gHB49ZXXKAYg8wSzO4KyVWATrnu3FVAgo= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?TXUzEEklC4+dkveMO07/qnsqTrMOSAOCPf6GjZSCPTO2zyq1UgxEgJ1JCm?= =?iso-8859-1?Q?9TcI/LHPPYd1bGufprEsnCARK9sobEJneoJPQWaErJLjPU5be3Jzlq2dWu?= =?iso-8859-1?Q?dLH9aqzYpJnQCgIjkstzu+jPrJeojMGHthA5i0ltxMqodwnGHaDITj18BE?= =?iso-8859-1?Q?tWqLmseGn3VrPTAe6d5BtOGXO74nqPOZkBFkBZpWRIQYNYPRIijyLNHL4k?= =?iso-8859-1?Q?eFs6ztwfZ39EFvVqW5pKSzQl7giHlHskRO68ge5q6MeDIA8jlel8XZuKrP?= =?iso-8859-1?Q?54YC+yNNCMpjdbpThfVvj9dV9QLogyVJdveTJqaunnMfrXBMOhEta1wvGO?= =?iso-8859-1?Q?aTVI2KrCTs95HY4RPHpIN+8aCkBiTeTEapAKxXCKmFz96NBDOj6P3+6hFi?= =?iso-8859-1?Q?sRI6TsdW9qjdxF6mpHJavgoEhltFfsLsdzYyTAIx6m/jXkIxfddOJ/Mvys?= =?iso-8859-1?Q?uc2EX0pPBQeEmgtCBkFPvNC909tJ4Ijr8S23L0NRrxMkO8gzSf+PYoM2xG?= =?iso-8859-1?Q?kdMj31KvfzM7azvGfcTkUysSN+s0hBZr5TckcNoi2j9dGnJ8qNgOrVoPXS?= =?iso-8859-1?Q?KASgs/q6maJm4AKLyzdDOvuMIMUKk+7uwRLnpEFUMTBHciqe4XCBRwW8aM?= =?iso-8859-1?Q?xQ53o6tSuy7IoBGxLXSg+e6Pv+N1IR17JBU8+wf7rb+vpEmVjyoq+mPaOE?= =?iso-8859-1?Q?mDiqsc3RipdONkPzQqEKx00f+8/cpGVGnre0fmjtQt+GORegLAcNPctsmn?= =?iso-8859-1?Q?53/1Pr/8Nvi6JrO8uagY9Mx2Hg4tZZMUWwtanXKIDw7nQFm0fSVuCBpcFV?= =?iso-8859-1?Q?Sre4vzb7wE6uhByDh+baR/JSfMACcFDg3m1wKhCKiWPoz5RF+JpJeORGmB?= =?iso-8859-1?Q?MgIj3nuJeiOfOPAPLX5MouqsY4Xqc1Aw4h8tEeZ0hknYDtFA7RIIy+lA4O?= =?iso-8859-1?Q?ENjP/J99uoH9BuATDmhjwwxcGAp7BpFpiSCGveRfVBI/C8vCuue0THvrK9?= =?iso-8859-1?Q?fcmGLCeMAA18fTkMX7Yq9KTDRtRufit++4SwhLWDQo9R0Zm6WZEMd5/ocs?= =?iso-8859-1?Q?1EKPvrEjVJ6RAlYibAThBvtOcXl8TXw1UZQJhT2jNsFd0fFveG0OxxCXbO?= =?iso-8859-1?Q?yfBOYK1WGaEuz+kOInhMIaHirzYvFxS1c/8JVVmzFBNc82hZsN8zEW8h0x?= =?iso-8859-1?Q?JDYoyKrLtj1acgLQHXX9OHjOcAVQrJxqrNT7277avFu5cC5mO3UyaNMTeT?= =?iso-8859-1?Q?D99vzxMRVtDJXww5YtSo/S966T7b98NkS+jaPtecoUmrIAssfktCBjOLND?= =?iso-8859-1?Q?j0qgbx+bTzH7z9wfkX3zOVJNw6Yg3Pdx0YIEkghpoJzidp9OctaFBSSvCe?= =?iso-8859-1?Q?W/7TjsWYvX9Hd/Xu7bOCPILYh666Fp7sIY16eD81Gs2Qn7t7GssrVAu/8p?= =?iso-8859-1?Q?/f8FeFalrqnlVHD1Q+X+KkLr0fPr9QN++KOy9d2dWvJu8OgxoRyWeIsiA1?= =?iso-8859-1?Q?gLZb08JhUlklYC9RisSCtI7t4HcYj0hWtrn6L020YlMvNktFlMIKzMV2T9?= =?iso-8859-1?Q?Rf9OzMr3umTaVvCv5CZPD2/Sk9A6BZEoh928rIjvXD1tgSKBU0+MF6b9AJ?= =?iso-8859-1?Q?hhAH9GHO7dl5NyLHJEZl+/rAAzKuV6AIfcqgdQcg0shI2M5dN0gmnaoA?= =?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: bc7b7ed6-731e-40c7-b78f-08db9fcd891d X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Aug 2023 09:28:52.0302 (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: eTBmnWNFctSrKM4s//9fvqQQLdSWL91XmPiCIyDA4e3QOsdogMxfbROGPGdnr3GIb8/rixynPW16Xh7ur0KQ01S7p2/aW3/EShRb/bglUOUhkM9iOzzN3wR855p3RcmC X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM8PR01MB6998 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: Pnh5FO6Rn5hf0YEMZawHrL1Ix7686176AA= 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=ZDMIVefB; 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 Absorbed Foster's input with minor delta.=20 @Nong, Foster @Liming and all kindly help review/vote again. One change compared with Intel's proposal is the below line, we prefer [1] = style to be safer to work across all compilers.=20 Let us know if you folks have different suggestions here. - CXL_DVSEC_REGISTER_LOCATOR_REGISTER_BLOCK RegisterBlock[0]; = // offset 0x0C + CXL_DVSEC_REGISTER_LOCATOR_REGISTER_BLOCK RegisterBlock[1]; = // offset 0x0C Thanks all! ----- 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 | 465 ++++++++++++++++++++++++ 2 files changed, 466 insertions(+), 1 deletion(-) create mode 100644 MdePkg/Include/IndustryStandard/Cxl20.h diff --git a/MdePkg/Include/IndustryStandard/Cxl.h b/MdePkg/Include/Industr= yStandard/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_ =20 -#include +#include // // CXL assigned new Vendor ID // diff --git a/MdePkg/Include/IndustryStandard/Cxl20.h b/MdePkg/Include/Indus= tryStandard/Cxl20.h new file mode 100644 index 0000000000..a5fe22b4a2 --- /dev/null +++ b/MdePkg/Include/IndustryStandard/Cxl20.h @@ -0,0 +1,465 @@ +/** @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 + +// +// CXL DVSEC IDs +// 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 + +// +// 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 0x1 +#define CXL_REGISTER_BLOCK_ID_BAR_VIRTUALIZATION_ACL 0x2 +#define CXL_REGISTER_BLOCK_ID_DEVICE 0x3 + +// +// CXL component register layout +// Compute Express Link Specification Revision 2.0 - Chapter 8.2.4 +// +//|------------------------------------| +//|--------- Range & Type -------------| +//|------------------------------------| IO Base - 0KB +//| (0KB - 4KB)IO Regs | +//|------------------------------------| Cache and Mem Base - 4KB +//| {4KB - 8KB)Cache & Mem Regs | +//|------------------------------------| Implementation Spec Regs Base - 8= KB +//| (8KB - 56KB)Implement Spec Regs| +//|------------------------------------| ARB/Mux Regs Base - 56KB +//| (56KB - 57KB)ARBMUX Regs | +//|------------------------------------| Reserved Base - 57KB +//| (57KB - 63KB)Reserved | +//|------------------------------------| End 64KB +// +// Component Register Block Register Ranges Offset +// +#define CXL_COMPONENT_REGISTER_RANGE_OFFSET_IO 0x0 +#define CXL_COMPONENT_REGISTER_RANGE_OFFSET_CACHE_MEM 0x1000=20 +#define CXL_COMPONENT_REGISTER_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 0x0001 +#define CXL_DEVICE_CAPABILITY_ID_PRIMARY_MAILBOX 0x0002 +#define CXL_DEVICE_CAPABILITY_ID_SECONDARY_MAILBOX 0x0003 + +// +// Specific CXL Device Capability IDs 0x4000 ~ 0x7FFF +// Compute Express Link Specification Revision 2.0 - Chapter 8.2.8.2.1 and= 8.2.8.5 + +// +#define CXL_DEVICE_CAPABILITY_ID_MEMORY_DEVICE_STATUS 0x4000 +#define CXL_DEVICE_CAPABILITY_ID_MASK 0xFFFF + +// +// 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 0x0 +#define CXL_MEM_DEVICE_MEDIA_STATUS_READY 0x1 +#define CXL_MEM_DEVICE_MEDIA_STATUS_ERROR 0x2 +#define CXL_MEM_DEVICE_MEDIA_STATUS_DISABLED 0x3 + +// +// Ensure proper structure formats +// +#pragma pack(1) + +// +// 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_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_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_DVSEC_CXL_DEVICE_CAPABILITY2; + +typedef union { + struct { + UINT32 MemorySizeHigh : 32; // bit 0..31 + } Bits; + UINT32 Uint32; +} CXL_DVSEC_CXL_DEVICE_RANGE_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_RANGE_SIZE_LOW; + +typedef union { + struct { + UINT32 MemoryBaseHigh : 32; // bit 0..31 + } Bits; + UINT32 Uint32; +} CXL_DVSEC_CXL_DEVICE_RANGE_BASE_HIGH; + +typedef union { + struct { + UINT32 Reserved : 28; // bit 0..27 + UINT32 MemoryBaseLow : 4; // bit 28..31 + } Bits; + UINT32 Uint32; +} CXL_DVSEC_CXL_DEVICE_RANGE_BASE_LOW; + + +typedef struct { + PCI_EXPRESS_EXTENDED_CAPABILITIES_HEADER Header; = // offset 0x00 + PCI_EXPRESS_DESIGNATED_VENDOR_SPECIFIC_HEADER_1 DvsecHeader1; = // offset 0x04 + PCI_EXPRESS_DESIGNATED_VENDOR_SPECIFIC_HEADER_2 DvsecHeader2; = // 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_DVSEC_CXL_DEVICE_CONTROL2 DeviceControl2; = // offset 0x10 + CXL_DVSEC_CXL_DEVICE_STATUS2 DeviceStatus2; = // offset 0x12 + CXL_DVSEC_CXL_DEVICE_LOCK DeviceLock; = // offset 0x14 + CXL_DVSEC_CXL_DEVICE_CAPABILITY2 DeviceCapability2; = // offset 0x16 + CXL_DVSEC_CXL_DEVICE_RANGE_SIZE_HIGH DeviceRange1SizeHigh;= // offset 0x18 + CXL_DVSEC_CXL_DEVICE_RANGE_SIZE_LOW DeviceRange1SizeLow; = // offset 0x1C + CXL_DVSEC_CXL_DEVICE_RANGE_BASE_HIGH DeviceRange1BaseHigh;= // offset 0x20 + CXL_DVSEC_CXL_DEVICE_RANGE_BASE_LOW DeviceRange1BaseLow; = // offset 0x24 + CXL_DVSEC_CXL_DEVICE_RANGE_SIZE_HIGH DeviceRange2SizeHigh;= // offset 0x28 + CXL_DVSEC_CXL_DEVICE_RANGE_SIZE_LOW DeviceRange2SizeLow; = // offset 0x2C + CXL_DVSEC_CXL_DEVICE_RANGE_BASE_HIGH DeviceRange2BaseHigh;= // offset 0x30 + CXL_DVSEC_CXL_DEVICE_RANGE_BASE_LOW DeviceRange2BaseLow; = // offset 0x34 +} CXL_DVSEC_CXL_DEVICE; + +#define CXL_DVSEC_CXL_DEVICE_REVISION_1 0x1 + +// +// 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_DVSEC_REGISTER_LOCATOR_REGISTER_OFFSET_LOW; + +typedef union { + struct { + UINT32 RegisterBlockOffsetHigh : 32; // bit 0..31 + } Bits; + UINT32 Uint32; +} CXL_DVSEC_REGISTER_LOCATOR_REGISTER_OFFSET_HIGH; + +typedef struct { + CXL_DVSEC_REGISTER_LOCATOR_REGISTER_OFFSET_LOW OffsetLow; + CXL_DVSEC_REGISTER_LOCATOR_REGISTER_OFFSET_HIGH OffsetHigh; +} CXL_DVSEC_REGISTER_LOCATOR_REGISTER_BLOCK; + +typedef struct { + PCI_EXPRESS_EXTENDED_CAPABILITIES_HEADER Header; = // offset 0x00 + PCI_EXPRESS_DESIGNATED_VENDOR_SPECIFIC_HEADER_1 DvsecHeader1; = // offset 0x04 + PCI_EXPRESS_DESIGNATED_VENDOR_SPECIFIC_HEADER_2 DvsecHeader2; = // offset 0x08 + UINT16 Reserved; = // offset 0x0A + CXL_DVSEC_REGISTER_LOCATOR_REGISTER_BLOCK RegisterBlock[1]; = // offset 0x0C + +} CXL_DVSEC_REGISTER_LOCATOR; + +#define CXL_DVSEC_REGISTER_LOCATOR_REVISION_0 0x0 + +// +// 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 InterleaveCapableA11to8 : 1; // bit 8 + UINT32 InterleaveCapableA14to12 : 1; // bit 9 + UINT32 PoisonOnDecodeErrorCapability : 1; // bit 10 + UINT32 Reserved : 21; // bit 11..31 + } Bits; + UINT32 Uint32; +} CXL_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_BASE_LOW_REGISTER; + +typedef union { + struct { + UINT32 MemoryBaseHigh : 32; // bit 0..31 + } Bits; + UINT32 Uint32; +} CXL_HDM_DECODER_BASE_HIGH_REGISTER; + +typedef union { + struct { + UINT32 Reserved : 28; // bit 0..27 + UINT32 MemorySizeLow : 4; // bit 28..31 + } Bits; + UINT32 Uint32; +} CXL_HDM_DECODER_SIZE_LOW_REGISTER; + +typedef union { + struct { + UINT32 MemorySizeHigh : 32; // bit 0..31 + } Bits; + UINT32 Uint32; +} CXL_HDM_DECODER_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_HDM_DECODER_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_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_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_TARGET_LIST_HIGH_REGISTER; + +typedef union { + struct { + UINT32 DpaSkipHigh : 32; // bit 0..31 + } Bits; + UINT32 Uint32; +} CXL_HDM_DECODER_DPA_SKIP_HIGH_REGISTER; + +typedef union { + CXL_HDM_DECODER_TARGET_LIST_LOW_REGISTER TargetListLow; + CXL_HDM_DECODER_DPA_SKIP_LOW_REGISTER DpaSkipLow; +} CXL_HDM_DECODER_TARGET_LIST_OR_DPA_SKIP_LOW; + +typedef union { + CXL_HDM_DECODER_TARGET_LIST_HIGH_REGISTER TargetListHigh; + CXL_HDM_DECODER_DPA_SKIP_HIGH_REGISTER DpaSkipHigh; +} CXL_HDM_DECODER_TARGET_LIST_OR_DPA_SKIP_HIGH; + +typedef struct { + CXL_HDM_DECODER_BASE_LOW_REGISTER DecoderBaseLow; = // 0x10 + CXL_HDM_DECODER_BASE_HIGH_REGISTER DecoderBaseHigh; = // 0x14 + CXL_HDM_DECODER_SIZE_LOW_REGISTER DecoderSizeLow; = // 0x18 + CXL_HDM_DECODER_SIZE_HIGH_REGISTER DecoderSizeHigh; = // 0x1c + CXL_HDM_DECODER_CONTROL_REGISTER DecoderControl; = // 0x20 + CXL_HDM_DECODER_TARGET_LIST_OR_DPA_SKIP_LOW DecoderTargetListDpaSkipLo= w; // 0x24 + CXL_HDM_DECODER_TARGET_LIST_OR_DPA_SKIP_HIGH DecoderTargetListDpaSkipHi= gh; // 0x28 + UINT32 Reserved; = // 0x2C +} CXL_HDM_DECODER; + +// +// CXL Device Capabilities Array Register +// Compute Express Link Specification Revision 2.0 - Chapter 8.2.8.1 +// + +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 --=20 2.34.1 -=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 (#107845): https://edk2.groups.io/g/devel/message/107845 Mute This Topic: https://groups.io/mt/100817312/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-