From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by mx.groups.io with SMTP id smtpd.web10.4049.1688028225333851673 for ; Thu, 29 Jun 2023 01:43:46 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=KyR9ZKH1; spf=pass (domain: intel.com, ip: 134.134.136.20, mailfrom: jiewen.yao@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1688028225; x=1719564225; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=94rWsS7BAwMoGiLj7KXsxghgVfYCL8jY3ie9CwCdTNY=; b=KyR9ZKH1Wj6A0Ss4FvzQdAR+7mVOfaMDSYdhRsJJHNV2MV/AkZYOyHwt bfJR+R2Gj++qqJlkqs5bxy+/J/wdXMtAv8tBN5XxryZQwKfnEy+xHAdIk DJwGbn/fVqFLs7N43DN5rv35n1BtG510EKz6TN9gCUH3V+9fIynignthx UouvjLfW7DHsRIqqvkvJ8jKY+1MOP459H52NaxzHdgjDujDYxjivDBLI6 YbTD//RkN2M/gLw+e6HV9+iWoet5v1Qjyg3M4uXlsKgoQ6scn0OiuLihC iXTnTBe23JxLMt4iE7CO/urSdN5C9r/Gn/Xr+JPDGbUb19/Gr34/YRUma w==; X-IronPort-AV: E=McAfee;i="6600,9927,10755"; a="351859020" X-IronPort-AV: E=Sophos;i="6.01,168,1684825200"; d="scan'208";a="351859020" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Jun 2023 01:43:44 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10755"; a="861845257" X-IronPort-AV: E=Sophos;i="6.01,168,1684825200"; d="scan'208";a="861845257" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by fmsmga001.fm.intel.com with ESMTP; 29 Jun 2023 01:43:44 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27; Thu, 29 Jun 2023 01:43:43 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27 via Frontend Transport; Thu, 29 Jun 2023 01:43:43 -0700 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.168) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.27; Thu, 29 Jun 2023 01:43:43 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=O8cPHQkJp9/H36lmZhAmLEsfpdVCKu8/6+L3UCvyOLld45TQR/dl2sc9PuwGYvbmSOJWdgL5ZpiFAGsf0l8BLFiVioJXJ2hEkkVu1OJPj+lPJa9At1VA0DTPnrx3fAdbVykuadDbJ2j6IURzCpCfSuhDSvRzv4l79W10x5IIr5uGg7Qy1z+IWCZ70MN8uqgdTzMjXApu4cpeqaL/UwmoktdpsY+jCY7WtFJJAa4GD7QtVE+9lLNmHR91Mswa27muSDlic+Sc0/Zcxl+qE6DCuo/gvy4pRIIk6qwf4IhLuUEJK3u91GJkuNKOlF6O98ZiRwwlU1sL+UrpbKcSyStcwg== 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=zGGQIKJEAZmUe+Xma3dS5KgFcH7j+tY7Whd0381/jHg=; b=Ku/Cp02grrOfmXQC7xs0KRggZPvJzPKemyLX0Z8v3xQNDkGQn5uhy5ZHJC97+fZcTc7PlwA29Kw73y9/tPjxZ52hbeIken91s4UJGkOW4MNl8MnGEc2f6WAUXDQsujpK1lD2wLaw1dr7YLZrVZpnjGuWFb2azokf/vXPtoLLDoRQBwcvgj1ITdF9u+scaGB7b0465vT9cun9uJ0qpGCk+rzITYs0rY/LOO9Caus8KJVyRPQLEE4/QkWEn2jZw6ne/TKvrsrtxJWPlfNk71ogPa9ixnJY3GX6FHRCGtwnYxy+NNxO70R+9b7PLlYFXy4pgYeB0IAVD+MFZVjD/BTQgw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from MW4PR11MB5872.namprd11.prod.outlook.com (2603:10b6:303:169::14) by SA0PR11MB4704.namprd11.prod.outlook.com (2603:10b6:806:9b::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6521.24; Thu, 29 Jun 2023 08:43:41 +0000 Received: from MW4PR11MB5872.namprd11.prod.outlook.com ([fe80::3caa:6866:1037:5388]) by MW4PR11MB5872.namprd11.prod.outlook.com ([fe80::3caa:6866:1037:5388%7]) with mapi id 15.20.6521.024; Thu, 29 Jun 2023 08:43:40 +0000 From: "Yao, Jiewen" To: Chris Li OS , "devel@edk2.groups.io" CC: "Yao, Jiewen" Subject: Re: [PATCH 1/1] MdePkg: Add Cxl20.h into IndustryStandard Thread-Topic: [PATCH 1/1] MdePkg: Add Cxl20.h into IndustryStandard Thread-Index: AQHZqYEldzIsQb3uyUmUZ9Ix3q8qaa+heGDw Date: Thu, 29 Jun 2023 08:43:40 +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-06-28T05:28:27.386Z;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; authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MW4PR11MB5872:EE_|SA0PR11MB4704:EE_ x-ms-office365-filtering-correlation-id: e4b83b24-a0b9-424c-3123-08db787cf028 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Ut2EBDN8+gKE2w3jf82To8f1WQahXruakL7w5CMUUKdwzcW/iRDHCPGUG+XFgi2lu7aA0Pzt1ZqwLQ0qjNjdL1+xIWyiKPYtvUyQi6pkuraOIPBKU+Xb+7Ht74JBWR8AJMmvsmQDplAf5XxPfloFMugicWRSzAr+zuWV3mp2RLULMkL7qcVQsjG+BoDk+wy2cRMKY74rwVmfw/h+ZRvebsP6YLv+4o2WLoJqNI9AEfiUJ+oMvIfQs3+ZUdCuk0UxYz2f+7pJSEX+qZplXpljmtPBabexVegKjZvUlvmqyGJJGj893S971xd+BZ7YfkwGBY3iafIsfBANMkxLovR/Lj1HOJBYS5rphfO6cI3DPQZUQwookwVogXqhz1qBRnF5XgkbGi9yMygPBSs5OrqP548aY3JClUwgof6EHbKy5+chNiN8rkE/LilcV/MZESpMEChJR4Q2UgVDxcN3VAdtowzPuv0vwXbBBQHRA+uxSQQHOyssfYRX18jY78+G2w/lvZ1p3nEieENSS3rrlBYhNYbzhQmjTOTsehemLxOOCvoZsl5tKePUc9NdxsEZYS+VZzvoi7TtNz87EOa9Ci1Jawu7P3Pm8//1I7VveVbS8O2dXnd8mRBMnktFzV+2fWd1 x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW4PR11MB5872.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(39860400002)(346002)(376002)(136003)(366004)(396003)(451199021)(53546011)(19627235002)(66446008)(107886003)(7696005)(83380400001)(110136005)(71200400001)(9686003)(2906002)(26005)(186003)(478600001)(6506007)(5660300002)(30864003)(64756008)(33656002)(52536014)(38070700005)(4326008)(316002)(76116006)(55016003)(66946007)(82960400001)(38100700002)(8936002)(66556008)(8676002)(86362001)(66476007)(122000001)(41300700001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?kaqUIvf+3rqVJa3UYLFkvNVg3EJL3gw3G1LX+m4ENCDwVEvbJ2p8gFfEV2Yh?= =?us-ascii?Q?hHKSZeDpjwPV/0P/iRgV+NNVlBZE0rZnLYrEzAyb1R4HobuWcHu+lzxw7AFs?= =?us-ascii?Q?gs2xGwCXOHMhUKZuXPkjBu6lBUWMG4CL+T0EICcSBHQjD4q093Wo6b7/O48V?= =?us-ascii?Q?ELZCK+HRCE4KFj4XMbfPYDRR+NRw6+Qx2yJ99PR9FX3wTcTY8N9TlPfYIFFP?= =?us-ascii?Q?UZJA/Ys4MkBC3+b2xpeZH0NDiZxWD3lfahmptmJLuLsx2AGjNs4/URl4pNFT?= =?us-ascii?Q?bqJxuyVIkRIB+/TyzNknRQKviDzkPOjWP5sRc8cERXvQ3kqlMWgeK9Szo5lg?= =?us-ascii?Q?PZc9wo3KK9y+Piq81PuwiN8y5BAgBNWt4a1UlmGi5GeBHFsZWcEe+mDp3tba?= =?us-ascii?Q?jxUCTPnId5Kth81SAa0HPHvn9Bo28iDVIiZcR4RacDKiT4MJa3JW2oeG9Zvb?= =?us-ascii?Q?PomHnTpMEkmwoyjC9xMOrsC6xehx9RbYie/RDNX02VTzAdK5QTAalBbtzgVH?= =?us-ascii?Q?1ZCOtJGlILOzlAAdGdl/YqkDMEXC32850+1+v0GdY7NbrGRQQdoqitGslLhX?= =?us-ascii?Q?/Su61/7TMKZiMyvzd6sCKzENKkdh+wUA3aa7J2Gin84MZiYI5mBXnFgH8ylm?= =?us-ascii?Q?PZmQQYXdca8yRQufnMuLXVrp0Cy5rO35SpTe5OcryHGJVGVnv7cCuBlgVBbc?= =?us-ascii?Q?7wLlwd7AfFkqfd8xwlXlUxwURinV++D7ms7np+n1drQ4yFYyuqq8s+vYXigG?= =?us-ascii?Q?lqaTULcSEaF/1aKOPF+pqe4w5ayqTLmVCGOEgmyFwwDcVBtHO3cWjg1KS1Ut?= =?us-ascii?Q?LhsXN5MZHwdXa1E7ICRb2Is715SGKBdoktItx43x3TLDHAEhwEtfxKlX9XmJ?= =?us-ascii?Q?P4LTAM/VELOwYjnVm1VQyrvyLTFnU5dd2MHVCjSQfVmXpcA2erfZtV4v/Qjz?= =?us-ascii?Q?j7LO+CZC/n7Vk7WevRHwJPFcwbSISIk2BmqclteodtcjJ1ijb/bLqyi6A9wp?= =?us-ascii?Q?NPJXJip3QLo7tO7idRU4lT5Xkc7O9g8+HIR4KZjydz34f7vZJPUBceZ8kxiV?= =?us-ascii?Q?3hCbz8w5l7UleCiwFMne/D8H/3IYwa8sCb3ubmZptANVMrcDkO7ZKDDjMF8t?= =?us-ascii?Q?8+ocdVUMuzukobF1KcB3VBY7jMT2FFQod9VMBdKcyON+ZI2JEpKiXA0ffBQG?= =?us-ascii?Q?ZWJJzo6rSQdDX/R5REV2qLGqEeEkJYVXgQWNyD4PTJYKkqEfAWVLHGnERmb3?= =?us-ascii?Q?9zgO8eBW1pO5PL80r4lhn3vsmaU06H3Gn/ybx86XGoY/a8mJa76BDouqWit3?= =?us-ascii?Q?SesIaxFTd7BCHnVtzRUmc3fhJw0YSMerp3GYZKv+SAsWUtTemB2qichuqGYT?= =?us-ascii?Q?VBOo9LDWCl9LQLFnXvZWqOPhKJJFt2AsqA3NScQfLL2O1TL4hatxWheWClyd?= =?us-ascii?Q?WRBdhjHBZUTRQU/3+Zyje0qs8WbWz46Irat2reJlT/zV6kbg5nK6cilpknJ7?= =?us-ascii?Q?3XPoF1YB0aGm06rvRUQS+z6/QDM6slHv764207GAaN0uGka11+qEDtOp5qPa?= =?us-ascii?Q?CZ4RCiSGk6g+PXskOMEF6ipsA9JV2cNfbmhcjFA5?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MW4PR11MB5872.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e4b83b24-a0b9-424c-3123-08db787cf028 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Jun 2023 08:43:40.3211 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: zgXgrr2I/6hjfwMR5SD+Qk0r1HG6ywnzftDaj3Q5jaNVW9+M/EzZsZLWPInnhIaYCDcfxxQxTCcfwtKN8ceu1g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR11MB4704 Return-Path: jiewen.yao@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable 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 >=20 > 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 >=20 > 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 >=20 > 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_ >=20 > -#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 Expre= ss 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 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 > +// > +// (ref: CXL 2.0 spec $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 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 1= 5 > + } 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 DeviceRange1SizeHig= h; > // 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 DeviceRange2SizeHig= h; > // 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