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 75851941124 for ; Fri, 15 Sep 2023 05:43:28 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=neV1PDv2tYAB4PsEEWICbQEnZ8ZgSyV8v/spvdCwoLM=; 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: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=1694756607; v=1; b=EWJ7QZ3nWIlUZzoQCTc79+HvzPkyg/eQKhEoM0+4bYxAtCYnC4DyQlNVJSjgDV7eTH5r28Pv 3CMMhnQncWSpcyc5k7/miQTQLW5sZQvUG3+H/isc9dIaCF1E2S5JAQbAxGLVQfBKUyii5r4ZOOQ eqG3+dFqrwQwyAaCVco5LyLs= X-Received: by 127.0.0.2 with SMTP id 1peZYY7687511xCg5HKBJpsz; Thu, 14 Sep 2023 22:43:27 -0700 X-Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.151]) by mx.groups.io with SMTP id smtpd.web11.14714.1694756606376955824 for ; Thu, 14 Sep 2023 22:43:26 -0700 X-IronPort-AV: E=McAfee;i="6600,9927,10833"; a="359420711" X-IronPort-AV: E=Sophos;i="6.02,148,1688454000"; d="scan'208";a="359420711" X-Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Sep 2023 22:43:25 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10833"; a="774173725" X-IronPort-AV: E=Sophos;i="6.02,148,1688454000"; d="scan'208";a="774173725" X-Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by orsmga008.jf.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 14 Sep 2023 22:43:25 -0700 X-Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32; Thu, 14 Sep 2023 22:43:25 -0700 X-Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32 via Frontend Transport; Thu, 14 Sep 2023 22:43:25 -0700 X-Received: from NAM02-BN1-obe.outbound.protection.outlook.com (104.47.51.40) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.32; Thu, 14 Sep 2023 22:43:24 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=aaHq2QzotsB05GqarBXK2T8e2WjYxoXjq5D1/wu4W3HrjAb2GkHnfU1cIws5rbtS7CkKXIQZoEGyxVZ8XgRpU7Q9SR/ZSmtth5ww+fT5nz+Zsmvl6QqnYunVTofEbm0uEwO2gZ5+wPv4Cqg85rpLk7S1D6gB8S5PFEOB0/Hz3ERuIyDSQ7Ga3pw8P358Dww5WzHD8a2zkPmXts5yPQ8k5qYq+/b/MaDMEY8QMoZALs2zJBgzH4OI0L8OkFN+9Gpt/7BlwTGHMOn2ilf/gfewsJcEXSt4HWQYXHK0Knp6xlP01LiDQBTAzPifPNz2FR3cuDeu9m2EC7HjHdS6/pGjYQ== 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=DA/VctBmN4qwPceVCGpGU4XDK5PJhlxYMCayIgepsE8=; b=BXBwuh4iE4yy9CTneh3WLMygmfado3ksIrHU3hfR+qUt1HxkUjs4jC0AM/cR3OjzeTjKuXKyJSDiyBnZMDg5ysK76F55GuyRf2kozmwBiivV/yklqEFqT2M7r+6JpmH6d6mrtWxUIAGwwF/Wc6+8ybmbVBM2ofkALPxN2r0wrFwEisRNzPHLHGHYwWhEm7Wtp+VM50FrVw0VkTpjvWXEIuHKv4ZSqTmwKeRF23LtGQyAE0c/gI3j6VvNrlFGlPeV6vuvqqHBM3Lk7xn9mAoe8biA6NtFq0s6UB7+EzM/xdBqY+J6pi+msgDl4LIjR5PQHYZ4/lmmcDJl4vLo7Y2aRA== 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 X-Received: from MW4PR11MB5776.namprd11.prod.outlook.com (2603:10b6:303:183::9) by MW6PR11MB8389.namprd11.prod.outlook.com (2603:10b6:303:23d::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6792.20; Fri, 15 Sep 2023 05:43:22 +0000 X-Received: from MW4PR11MB5776.namprd11.prod.outlook.com ([fe80::2ec0:108e:7afe:f1a4]) by MW4PR11MB5776.namprd11.prod.outlook.com ([fe80::2ec0:108e:7afe:f1a4%5]) with mapi id 15.20.6768.029; Fri, 15 Sep 2023 05:43:22 +0000 From: "Chaganty, Rangasai V" To: "Kasbekar, Saloni" , "devel@edk2.groups.io" CC: "Desimone, Nathaniel L" , "Chuang, Rosen" Subject: Re: [edk2-devel] [PATCH v2 08/10] AlderlakeSiliconPkg/Fru: Add AdlCpu Fru Thread-Topic: [PATCH v2 08/10] AlderlakeSiliconPkg/Fru: Add AdlCpu Fru Thread-Index: AQHZ54+Tt/Tbu7LcVkm8ylysRO9ZOLAbX+5g Date: Fri, 15 Sep 2023 05:43:21 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MW4PR11MB5776:EE_|MW6PR11MB8389:EE_ x-ms-office365-filtering-correlation-id: 4a64e1c8-749d-44a2-7897-08dbb5aeac1c x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam-message-info: O0Mn36sbcmDwtR6Ej7bcEJvLaEvMzPaeGTVcda5FIr/HsgjRHqa+utijoEz7/qBR3oTBHWnktcDPs8EG+8rLy05EaRQUhigPxOGWi8SHwoT6doeHiGMECVL6C6EZxmMXrf6/4sq5/kNeeQ8QX7cgiIApVxMuqE6RGjfS6fb72lB8nOz3tZwEbMTVGgieOuaLFOz73clTCYVw01EVYhxQXgtfr9vOttnsxY+1rdAo22SB0DmD+koYnCg/BlzVJDxap2AjYv5J4SFlg8CtOJXF3mDVxfjbmKRHPlqfgzJUe0l3SnAdJvwj0pUCXLh3loqIvDNkvoEOp0bf21GnDDflVaQZji3FMDRTEBhVWGeluI9mqI3KPZXInamWoxC7xCevkTwACXxMF0yvqE8o1ek2Dc425nkZlFEwdBJjtO2O1flseTMwIGzbdggAqu+ViDKLBkQCi8Nm4kaK11lWr9ZQGDtf9lm6so7ym8WrvAEYFtsni+5Q1j4DM3wa9s3scJ5viFHjAM5Cj+kkLZXIe2d0pZ19ItK/v4AEaMp2t/1AhbzM6zsX54nWNICFbR6VJvA6MxzhiTgLqlZdQqVyp35ZiyA4jXZrM4dxbVzIimQBOHHAAYrndhH1+n1fvMgHZ4hT x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?G+x1SctIoA/eRHGJDkgkJmZA4gMWxIqhhsdOlgR35R2FVRt4rcQW3VsK7ucz?= =?us-ascii?Q?RqVn9PoELBklGz9dahkYQFlxiwmNV0327+qWU/+Tg3n+TZpXMqJJtNZvmBIV?= =?us-ascii?Q?OOBG/5U6JZyY2edOnzeXeL3sBMKPcMOFssN8jwhah9FsbsqfsCshjvCob+FX?= =?us-ascii?Q?OOkCIQL/aVQhhV2/giGaiCjP0BA3HUGUeQuWEXzQK/2YhQhvWwNgHfBRp2Za?= =?us-ascii?Q?78mFHH4nYV3HYzQql7caZsZBVNtsS1ipxtHJWj20Am+ACgUo8h816dzA3Itr?= =?us-ascii?Q?hPwmW2ZdKc7M6ZR/5BEdm23ufgKSdmXpxD6AXcDqit2NIuXsHeOzlKJ0VDZj?= =?us-ascii?Q?HJFpIAsc0oajNUMxka2toynYh0KOpL4Dz/6ZZ+its5jbOmiBMz/tqo5ZB5JP?= =?us-ascii?Q?OYzimJuKUV7ZjQdPnME7Om5MUtV1I6KyTuRifw3V30RI6v+rU5dymonQuPtH?= =?us-ascii?Q?VChh10rZMtsHbnmvXzI/GeaqKTtM8GUMxvYqjBl+EArFrpAPhBto3ZD7Pbes?= =?us-ascii?Q?vOqig/43OjKrZDXQAA8HQGhucEwBuoVhOw04hzhWnwCY517v/ryGnMGhIkqa?= =?us-ascii?Q?ye1eKWE+XyfE//yPqDAkSE57CC3SRTrM3t7la1ZWQWkZRdYTE6GsnBMNiPcY?= =?us-ascii?Q?MRvlFfE6XmWblOLOjwJ0WdyWTyP4noG5XWhhHprnhjWKzNepL6MPpzUhR1qi?= =?us-ascii?Q?z9N8whHZm+GEVTIy6zaZ7sHmoKA1eDYXo6totM3I1GvOMfbs0qncHwf6YO9y?= =?us-ascii?Q?mLQrKBRDXuUDqiSM7YqtQVFWluzXxKLtWHrUj8qR26/ZvafeJEQSBpCJhBEy?= =?us-ascii?Q?MIwt0nDsbMeWHYPK4v4PW+68qWBVon6RzMlHkTAtjL9tUP+hIsyMINV/gse2?= =?us-ascii?Q?l6IgJM2Qa7ccFXRqPLNMzb5NbVyxiOnY1HVdl+yWr72MQ6VcEZzesqNmaj8u?= =?us-ascii?Q?yR1PoDNQYepWPqGR/5JiYxHfJd94LuWu4Kql72q5brU5wk6nboKuq7Rn8/mp?= =?us-ascii?Q?WEyVvKy7sPvsozC0vOKzpar/7dOlop1z9tsSsAs9VAKz+9q9RFjLzh3nAF18?= =?us-ascii?Q?Mdu0RAdCUs97vbK6q84IxaVEGQkHjPXzaFJQD5GGdXd5vmE4hLba1gT7BxVd?= =?us-ascii?Q?i3iCek/2yfo7/M4c2x6jVfJ55J+diye3OYVmrZW/OdPS4NZQFbmiA+E3vuDn?= =?us-ascii?Q?HC1P3/24w20rbo5ZNYjpdIXa3GD++LULA4vj/usfwHGc7H9eqMsuxtd/2ntJ?= =?us-ascii?Q?KtGFLDzoDQwA1sCA1VBWsXg2F90uWXYAoOjopppf25WTEqaskyqTtH/YPWlw?= =?us-ascii?Q?KG1Cmx2DS9o7RMm6zEwIdu6CocX6klsqLGqKfghSI7OVIOleFMtnHZ5IiPzA?= =?us-ascii?Q?Gu3yW2beIPcbfMfjtmZPLHt3uHweb7PRWSldNLOFNgRXWUn3EZZ+icZsv561?= =?us-ascii?Q?O8dLau4jkozWaQgeJIssMCOcggobGrwm3LXe7xPeBSIYZ52Ip/dJ5xo+Hrxh?= =?us-ascii?Q?VhpyLpQUrcjIfa7/k2Ecv6QUPurCZlZYMi/rcRKA7YF5p0dcRwQOtMISP+Id?= =?us-ascii?Q?JeLjjMS8HtuKY8AxSavpCnro7Hv9PMRFXDNORzOLulTEWpVue3h6wqXJq7Yp?= =?us-ascii?Q?6Q=3D=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MW4PR11MB5776.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4a64e1c8-749d-44a2-7897-08dbb5aeac1c X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Sep 2023 05:43:21.9351 (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: 4k6M3I1K5sLNz+q3eehVSheoF74vgHuuWh6MoSAj8NJrqR1bBZdRlznf8mQvTqAn9I0QjyaqnXi+YgTah0VN9y1Tfj/Nl4Nvdl3FF7qyNbQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW6PR11MB8389 X-OriginatorOrg: intel.com 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,rangasai.v.chaganty@intel.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: zxRrgl2kcGlRvAm3oExigT86x7686176AA= Content-Language: en-US Content-Type: text/plain; charset="us-ascii" 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=EWJ7QZ3n; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=intel.com (policy=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 Reviewed-by: Sai Chaganty -----Original Message----- From: Kasbekar, Saloni =20 Sent: Thursday, September 14, 2023 9:46 PM To: devel@edk2.groups.io Cc: Kasbekar, Saloni ; Chaganty, Rangasai V ; Desimone, Nathaniel L ; Chuang, Rosen Subject: [PATCH v2 08/10] AlderlakeSiliconPkg/Fru: Add AdlCpu Fru Adds the following modules: - AdlCpu/CpuPcieRp - AdlCpu/Include - AdlCpu/IncludePrivate - AdlCpu/LibraryPrivate - AdlCpu/PeiReportCpuHob - AdlCpu DSCs Cc: Sai Chaganty Cc: Nate DeSimone Cc: Rosen Chuang Signed-off-by: Saloni Kasbekar --- .../Fru/AdlCpu/CommonLib.dsc | 9 + .../CpuPcieInfoFruLib.c | 87 ++++++++++ .../PeiDxeSmmCpuPcieInfoFruLib.inf | 39 +++++ .../AlderlakeSiliconPkg/Fru/AdlCpu/DxeLib.dsc | 8 + .../Fru/AdlCpu/Include/CpuGenInfo.h | 42 +++++ .../Include/Library/CpuPcieInfoFruLib.h | 45 +++++ .../Include/Register/SaRegsHostBridge.h | 64 +++++++ .../AdlCpu/IncludePrivate/CpuGenInfoFruLib.h | 44 +++++ .../AdlCpu/Incl= udePrivate/Register/IgdRegs.h | 34 ++++ .../BaseCpuInfoFruLib/BaseCpuInfoFruLib.c | 164 ++++++++++++++++++ .../BaseCpuInfoFruLib/BaseCpuInfoFruLib.inf | 29 ++++ .../PeiReportCpuHobLib/PeiReportCpuHobLib.c | 22 +++ .../PeiReportCpuHobLib/PeiReportCpuHobLib.inf | 26 +++ 13 files changed, 613 insertions(+) create mode 100644 Silicon/Intel/AlderlakeSiliconPkg/Fru/AdlCpu/CommonLib.= dsc create mode 100644 Silicon/Intel/AlderlakeSiliconPkg/Fru/AdlCpu/CpuPcieRp/= Library/PeiDxeSmmCpuPcieInfoFruLib/CpuPcieInfoFruLib.c create mode 100644 Silicon/Intel/AlderlakeSiliconPkg/Fru/AdlCpu/CpuPcieRp/= Library/PeiDxeSmmCpuPcieInfoFruLib/PeiDxeSmmCpuPcieInfoFruLib.inf create mode 100644 Silicon/Intel/AlderlakeSiliconPkg/Fru/AdlCpu/DxeLib.dsc create mode 100644 Silicon/Intel/AlderlakeSiliconPkg/Fru/AdlCpu/Include/Cp= uGenInfo.h create mode 100644 Silicon/Intel/AlderlakeSiliconPkg/Fru/AdlCpu/Include/Li= brary/CpuPcieInfoFruLib.h create mode 100644 Silicon/Intel/AlderlakeSiliconPkg/Fru/AdlCpu/Include/Re= gister/SaRegsHostBridge.h create mode 100644 Silicon/Intel/AlderlakeSiliconPkg/Fru/AdlCpu/IncludePri= vate/CpuGenInfoFruLib.h create mode 100644 Silicon/Intel/AlderlakeSiliconPkg/Fru/AdlCpu/IncludePri= vate/Register/IgdRegs.h create mode 100644 Silicon/Intel/AlderlakeSiliconPkg/Fru/AdlCpu/LibraryPri= vate/BaseCpuInfoFruLib/BaseCpuInfoFruLib.c create mode 100644 Silicon/Intel/AlderlakeSiliconPkg/Fru/AdlCpu/LibraryPri= vate/BaseCpuInfoFruLib/BaseCpuInfoFruLib.inf create mode 100644 Silicon/Intel/AlderlakeSiliconPkg/Fru/AdlCpu/PeiReportC= puHob/Library/PeiReportCpuHobLib/PeiReportCpuHobLib.c create mode 100644 Silicon/Intel/AlderlakeSiliconPkg/Fru/AdlCpu/PeiReportC= puHob/Library/PeiReportCpuHobLib/PeiReportCpuHobLib.inf diff --git a/Silicon/Intel/AlderlakeSiliconPkg/Fru/AdlCpu/CommonLib.dsc b/S= ilicon/Intel/AlderlakeSiliconPkg/Fru/AdlCpu/CommonLib.dsc new file mode 100644 index 0000000000..35a3cce916 --- /dev/null +++ b/Silicon/Intel/AlderlakeSiliconPkg/Fru/AdlCpu/CommonLib.dsc @@ -0,0 +1,9 @@ +## @file +# Component description file for the AlderLake CPU Common FRU libraries. +# +# Copyright (c) 2022, Intel Corporation. All rights reserved.
+# SPDX-License-Identifier: BSD-2-Clause-Patent +## + +CpuPcieInfoFruLib|$(PLATFORM_SI_PACKAGE)/Fru/AdlCpu/CpuPcieRp/Library/P +CpuPcieInfoFruLib|eiDxeSmmCpuPcieInfoFruLib/PeiDxeSmmCpuPcieInfoFruLib. +CpuPcieInfoFruLib|inf +CpuInfoFruLib|$(PLATFORM_SI_PACKAGE)/Fru/AdlCpu/LibraryPrivate/BaseCpuI +CpuInfoFruLib|nfoFruLib/BaseCpuInfoFruLib.inf diff --git a/Silicon/Intel/AlderlakeSiliconPkg/Fru/AdlCpu/CpuPcieRp/Library= /PeiDxeSmmCpuPcieInfoFruLib/CpuPcieInfoFruLib.c b/Silicon/Intel/AlderlakeSi= liconPkg/Fru/AdlCpu/CpuPcieRp/Library/PeiDxeSmmCpuPcieInfoFruLib/CpuPcieInf= oFruLib.c new file mode 100644 index 0000000000..277b73fe67 --- /dev/null +++ b/Silicon/Intel/AlderlakeSiliconPkg/Fru/AdlCpu/CpuPcieRp/Library/Pei +++ DxeSmmCpuPcieInfoFruLib/CpuPcieInfoFruLib.c @@ -0,0 +1,87 @@ +/** @file + CPU PCIe information library. + + All function in this library is available for PEI, DXE, and SMM, But=20 + do not support UEFI RUNTIME environment call. + + Copyright (c) 2022, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent **/ #include=20 + #include #include=20 + #include #include=20 + #include =20 +#include #include + +/** + Get Maximum CPU Pcie Root Port Number + + @retval Maximum CPU Pcie Root Port Number **/ +UINT8 +GetMaxCpuPciePortNum ( + VOID + ) +{ + switch (GetCpuSku ()) { + case EnumCpuUlt: + return CPU_PCIE_ULT_MAX_ROOT_PORT; + case EnumCpuUlx: + return CPU_PCIE_ULX_MAX_ROOT_PORT; + default: + return CPU_PCIE_ULT_MAX_ROOT_PORT; + } +} + +/** + Get CPU Pcie Root Port Device and Function Number by Root Port=20 +physical Number + + @param[in] RpNumber Root port physical number. (0-based) + @param[out] RpDev Return corresponding root port device = number. + @param[out] RpFun Return corresponding root port functio= n number. + + @retval EFI_SUCCESS Root port device and function is retri= eved + @retval EFI_INVALID_PARAMETER RpNumber is invalid +**/ +EFI_STATUS +EFIAPI +GetCpuPcieRpDevFun ( + IN UINTN RpNumber, + OUT UINTN *RpDev, + OUT UINTN *RpFun + ) +{ + if (RpNumber > GetMaxCpuPciePortNum ()) { + DEBUG ((DEBUG_ERROR, "GetCpuPcieRpDevFun invalid RpNumber %x", RpNumbe= r)); + ASSERT (FALSE); + return EFI_INVALID_PARAMETER; + } + + switch (RpNumber) { + case 0: + *RpDev =3D 6; + *RpFun =3D 0; + break; + case 1: + *RpDev =3D 1; + *RpFun =3D 0; + break; + case 2: + if (GetCpuSku () =3D=3D EnumCpuTrad) { + *RpDev =3D 1; + *RpFun =3D 1; + } else { + *RpDev =3D 6; + *RpFun =3D 2; + } + break; + default: + *RpDev =3D 6; + *RpFun =3D 0; + break; + } + return EFI_SUCCESS; +} diff --git a/Silicon/Intel/AlderlakeSiliconPkg/Fru/AdlCpu/CpuPcieRp/Library= /PeiDxeSmmCpuPcieInfoFruLib/PeiDxeSmmCpuPcieInfoFruLib.inf b/Silicon/Intel/= AlderlakeSiliconPkg/Fru/AdlCpu/CpuPcieRp/Library/PeiDxeSmmCpuPcieInfoFruLib= /PeiDxeSmmCpuPcieInfoFruLib.inf new file mode 100644 index 0000000000..f850f1a5f1 --- /dev/null +++ b/Silicon/Intel/AlderlakeSiliconPkg/Fru/AdlCpu/CpuPcieRp/Library/Pei +++ DxeSmmCpuPcieInfoFruLib/PeiDxeSmmCpuPcieInfoFruLib.inf @@ -0,0 +1,39 @@ +## @file +# CPU PCIe information library for TigerLake PCH. +# +# All function in this library is available for PEI, DXE, and SMM, #=20 +But do not support UEFI RUNTIME environment call. +# +# Copyright (c) 2022, Intel Corporation. All rights reserved.
+# SPDX-License-Identifier: BSD-2-Clause-Patent +## + + +[Defines] +INF_VERSION =3D 0x00010017 +BASE_NAME =3D PeiDxeSmmCpuPcieInfoFruLib +FILE_GUID =3D 59CA5352-ED46-4449-BF1C-0D0074C4D5B1 +VERSION_STRING =3D 1.0 +MODULE_TYPE =3D BASE +LIBRARY_CLASS =3D CpuPcieInfoFruLib + + +[LibraryClasses] +IoLib +BaseLib +DebugLib +PrintLib +PciSegmentLib +PchPcrLib +PmcPrivateLib +PcdLib +ConfigBlockLib +CpuPlatformLib + +[Packages] +MdePkg/MdePkg.dec +AlderlakeSiliconPkg/SiPkg.dec + +[Sources] +CpuPcieInfoFruLib.c + diff --git a/Silicon/Intel/AlderlakeSiliconPkg/Fru/AdlCpu/DxeLib.dsc b/Sili= con/Intel/AlderlakeSiliconPkg/Fru/AdlCpu/DxeLib.dsc new file mode 100644 index 0000000000..644230484e --- /dev/null +++ b/Silicon/Intel/AlderlakeSiliconPkg/Fru/AdlCpu/DxeLib.dsc @@ -0,0 +1,8 @@ +# @file +# Component description file for the AlderLake CPU DXE FRU libraries. +# +# Copyright (c) 2022, Intel Corporation. All rights reserved.
+# SPDX-License-Identifier: BSD-2-Clause-Patent +## +DxeGraphicsPolicyLib|$(PLATFORM_SI_PACKAGE)/IpBlock/Graphics/LibraryPri +DxeGraphicsPolicyLib|vate/DxeGraphicsPolicyLib/DxeGraphicsPolicyLib.inf +DxeIgdOpRegionInitLib|$(PLATFORM_SI_PACKAGE)/IpBlock/Graphics/LibraryPr +DxeIgdOpRegionInitLib|ivate/DxeIgdOpRegionInitLib/DxeIgdOpRegionInitLib +DxeIgdOpRegionInitLib|.inf diff --git a/Silicon/Intel/AlderlakeSiliconPkg/Fru/AdlCpu/Include/CpuGenInf= o.h b/Silicon/Intel/AlderlakeSiliconPkg/Fru/AdlCpu/Include/CpuGenInfo.h new file mode 100644 index 0000000000..482316829d --- /dev/null +++ b/Silicon/Intel/AlderlakeSiliconPkg/Fru/AdlCpu/Include/CpuGenInfo.h @@ -0,0 +1,42 @@ +/** @file + Header file for Cpu Information + + Copyright (c) 2022, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef=20 +_CPU_GEN_INFO_H_ #define _CPU_GEN_INFO_H_ + +#include + +// +// Processor Definitions +// +#define CPUID_FULL_FAMILY_MODEL_ALDERLAKE_MOBILE 0x000906A0 + +/// +/// Enums for CPU Stepping IDs +/// +typedef enum { + + /// + /// AlderLake Mobile Steppings(ULT) + /// + EnumAdlJ0 =3D 0, + EnumAdlK0 =3D 2, + EnumAdlL0 =3D 3, + + /// + /// AlderLake Mobile Steppings(ULX) + /// + EnumAdlQ0 =3D 1, + EnumAdlR0 =3D 4, + EnumAdlS0 =3D 5, + + + /// + /// Max Stepping + /// + EnumCpuSteppingMax =3D CPUID_FULL_STEPPING } CPU_STEPPING; #endif diff --git a/Silicon/Intel/AlderlakeSiliconPkg/Fru/AdlCpu/Include/Library/C= puPcieInfoFruLib.h b/Silicon/Intel/AlderlakeSiliconPkg/Fru/AdlCpu/Include/L= ibrary/CpuPcieInfoFruLib.h new file mode 100644 index 0000000000..9dafa98631 --- /dev/null +++ b/Silicon/Intel/AlderlakeSiliconPkg/Fru/AdlCpu/Include/Library/CpuPc +++ ieInfoFruLib.h @@ -0,0 +1,45 @@ +/** @file + Header file for CpuPcieInfoFruLib. + + Copyright (c) 2022, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef=20 +_CPU_PCIE_INFO_FRU_LIB_H_ #define _CPU_PCIE_INFO_FRU_LIB_H_ + +#include + +#define CPU_PCIE_MAX_ROOT_PORTS 4 +#define CPU_PCIE_MAX_CONTROLLERS 3 + +#define CPU_PCIE_ULT_MAX_ROOT_PORT 3 +#define CPU_PCIE_ULX_MAX_ROOT_PORT 1 + +/** + Get CPU Maximum Pcie Root Port Number + + @retval PcieMaxRootPort Pch Maximum Pcie Root Port Number +**/ +UINT8 +GetMaxCpuPciePortNum ( + VOID + ); + +/** + Get CPU Pcie Root Port Device and Function Number by Root Port=20 +physical Number + + @param[in] RpNumber Root port physical number. (0-based) + @param[out] RpDev Return corresponding root port device = number. + @param[out] RpFun Return corresponding root port functio= n number. + + @retval EFI_SUCCESS Root port device and function is retri= eved + @retval EFI_INVALID_PARAMETER RpNumber is invalid +**/ +EFI_STATUS +EFIAPI +GetCpuPcieRpDevFun ( + IN UINTN RpNumber, + OUT UINTN *RpDev, + OUT UINTN *RpFun + ); +#endif // _CPU_PCIE_INFO_FRU_LIB_H_ diff --git a/Silicon/Intel/AlderlakeSiliconPkg/Fru/AdlCpu/Include/Register/= SaRegsHostBridge.h b/Silicon/Intel/AlderlakeSiliconPkg/Fru/AdlCpu/Include/R= egister/SaRegsHostBridge.h new file mode 100644 index 0000000000..be4bba3283 --- /dev/null +++ b/Silicon/Intel/AlderlakeSiliconPkg/Fru/AdlCpu/Include/Register/SaRe +++ gsHostBridge.h @@ -0,0 +1,64 @@ +/** @file + Register names for Host Bridge block + Conventions: + - Prefixes: + - Definitions beginning with "R_" are registers + - Definitions beginning with "B_" are bits within registers + - Definitions beginning with "V_" are meaningful values of bits within= the registers + - Definitions beginning with "S_" are register sizes + - Definitions beginning with "N_" are the bit position + - In general, SA registers are denoted by "_SA_" in register names + - Registers / bits that are different between SA generations are denoted= by + "_SA_[generation_name]_" in register/bit names. e.g., "_SA_HSW_" + - Registers / bits that are different between SKUs are denoted by "_[SKU= _name]" + at the end of the register/bit names + - Registers / bits of new devices introduced in a SA generation will be = just named + as "_SA_" without [generation_name] inserted. + + Copyright (c) 2022, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef=20 +_SA_REGS_HOST_BRIDGE_H_ #define _SA_REGS_HOST_BRIDGE_H_ + +#define SA_SEG_NUM 0x00 +// +// DEVICE 0 (Memory Controller Hub) +// +#define SA_MC_BUS 0x00 +#define SA_MC_DEV 0x00 +#define SA_MC_FUN 0x00 +#define R_SA_MC_DEVICE_ID 0x02 + +// +// AlderLake CPU Mobile SA Device IDs B0:D0:F0 // +#define V_SA_DEVICE_ID_MB_ULT_1 0x4641 ///< AlderLake P (6+8+GT) SA D= ID +#define V_SA_DEVICE_ID_MB_ULT_2 0x4649 ///< AlderLake P (6+4(f)+GT) S= A DID +#define V_SA_DEVICE_ID_MB_ULT_3 0x4621 ///< AlderLake P (4(f)+8+GT) S= A DID +#define V_SA_DEVICE_ID_MB_ULT_4 0x4609 ///< AlderLake P (2(f)+4(f)+GT= ) SA DID +#define V_SA_DEVICE_ID_MB_ULT_5 0x4601 ///< AlderLake P (2+8+GT) SA D= ID +#define V_SA_DEVICE_ID_MB_ULT_6 0x4661 ///< AlderLake P (6+8+2) SA DI= D +#define V_SA_DEVICE_ID_MB_ULT_7 0x4629 ///< AlderLake P (4+4+1) SA DI= D +#define V_SA_DEVICE_ID_MB_ULT_8 0x4619 ///< AlderLake P (1+4+GT) SA D= ID +#define V_SA_DEVICE_ID_MB_ULT_9 0x4659 ///< AlderLake P (1+8+GT) SA D= ID +#define V_SA_DEVICE_ID_MB_ULT_10 0x4645 ///< AlderLake P (6+6+GT) SA D= ID +/// +/// Description: +/// The SMRAMC register controls how accesses to Compatible SMRAM spaces = are treated. The Open, Close and Lock bits function only when G_SMRAME bit= is set to 1. Also, the Open bit must be reset before the Lock bit is set. +/// +#define R_SA_SMRAMC (0x88) + +/// +/// Description: +/// This register contains the Top of low memory address. +/// +#define R_SA_TOLUD (0xbc) +/// +/// Description of TOLUD (20:31) +/// This register contains bits 31 to 20 of an address one byte above the= maximum DRAM memory below 4G that is usable by the operating system. Addre= ss bits 31 down to 20 programmed to 01h implies a minimum memory size of 1M= B. Configuration software must set this value to the smaller of the followi= ng 2 choices: maximum amount memory in the system minus ME stolen memory pl= us one byte or the minimum address allocated for PCI memory. Address bits 1= 9:0 are assumed to be 0_0000h for the purposes of address comparison. The H= ost interface positively decodes an address towards DRAM if the incoming ad= dress is less than the value programmed in this register. +/// The Top of Low Usable DRAM is the lowest address above both Graphics = Stolen memory and Tseg. BIOS determines the base of Graphics Stolen Memory = by subtracting the Graphics Stolen Memory Size from TOLUD and further decre= ments by Tseg size to determine base of Tseg. All the Bits in this register= are locked in LT mode. +/// This register must be 1MB aligned when reclaim is enabled. +/// +#define B_SA_TOLUD_TOLUD_MASK (0xfff00000) +#endif diff --git a/Silicon/Intel/AlderlakeSiliconPkg/Fru/AdlCpu/IncludePrivate/Cp= uGenInfoFruLib.h b/Silicon/Intel/AlderlakeSiliconPkg/Fru/AdlCpu/IncludePriv= ate/CpuGenInfoFruLib.h new file mode 100644 index 0000000000..5ad7bf4982 --- /dev/null +++ b/Silicon/Intel/AlderlakeSiliconPkg/Fru/AdlCpu/IncludePrivate/CpuGen +++ InfoFruLib.h @@ -0,0 +1,44 @@ + /** @file + This file contains Cpu Information for specific generation. + + Copyright (c) 2022, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef=20 +_CPU_GEN_INFO_FRU_LIB_H_ #define _CPU_GEN_INFO_FRU_LIB_H_ #include=20 + #include #include + +/// +/// Used to identify the CPU used for programming with the VR override=20 +table /// typedef enum { + EnumUnknownCpuId =3D 0, + EnumMinCpuId =3D 1, + + /// + /// ADL P + /// + EnumAdlP15Watt282fCpuId =3D 0x30, + EnumAdlP28Watt482fCpuId =3D 0x31, + EnumAdlP28Watt682fCpuId =3D 0x32, + EnumAdlP45Watt682fCpuId =3D 0x35, + EnumAdlP15Watt142fCpuId =3D 0x36, + EnumAdlP15Watt242fCpuId =3D 0x37, + EnumAdlP45Watt482fCpuId =3D 0x38, + EnumAdlP45Watt442fCpuId =3D 0x39, + EnumAdlP28Watt442fCpuId =3D 0x3A, + EnumAdlP28Watt282fCpuId =3D 0x3B, + EnumAdlP28Watt242fCpuId =3D 0x3C, + EnumAdlP28Watt142fCpuId =3D 0x3D, + EnumAdlP45Watt242fCpuId =3D 0x3E, + EnumAdlP28Watt182fCpuId =3D 0x3F, + EnumAdlP28Watt662fCpuId =3D 0x40, + EnumAdlP28Watt642fCpuId =3D 0x41, + EnumAdlP45Watt642fCpuId =3D 0x42, + EnumAdlPMaxCpuId =3D EnumAdlP45Watt642fCpuId, + +} CPU_IDENTIFIER; + +#endif // _CPU_GEN_INFO_FRU_LIB_H_ diff --git a/Silicon/Intel/AlderlakeSiliconPkg/Fru/AdlCpu/IncludePrivate/Re= gister/IgdRegs.h b/Silicon/Intel/AlderlakeSiliconPkg/Fru/AdlCpu/IncludePriv= ate/Register/IgdRegs.h new file mode 100644 index 0000000000..289b293b32 --- /dev/null +++ b/Silicon/Intel/AlderlakeSiliconPkg/Fru/AdlCpu/IncludePrivate/Regist +++ er/IgdRegs.h @@ -0,0 +1,34 @@ +/** @file + Register names for IGD block + Conventions: + - Prefixes: + - Definitions beginning with "R_" are registers + - Definitions beginning with "B_" are bits within registers + - Definitions beginning with "V_" are meaningful values of bits within= the registers + - Definitions beginning with "S_" are register sizes + - Definitions beginning with "N_" are the bit position + - In general, SA registers are denoted by "_SA_" in register names + - Registers / bits that are different between SA generations are denoted= by + "_SA_[generation_name]_" in register/bit names. e.g., "_SA_HSW_" + - Registers / bits that are different between SKUs are denoted by "_[SKU= _name]" + at the end of the register/bit names + - Registers / bits of new devices introduced in a SA generation will be = just named + as "_SA_" without [generation_name] inserted. + + Copyright (c) 2022, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef=20 +_IGD_REGS_H_ #define _IGD_REGS_H_ + +/// +/// Device 2 Register Equates +/// +// +// The following equates must be reviewed and revised when the specificati= on is ready. +// +#define IGD_BUS_NUM 0x00 +#define IGD_DEV_NUM 0x02 +#define IGD_FUN_NUM 0x00 + +#endif diff --git a/Silicon/Intel/AlderlakeSiliconPkg/Fru/AdlCpu/LibraryPrivate/Ba= seCpuInfoFruLib/BaseCpuInfoFruLib.c b/Silicon/Intel/AlderlakeSiliconPkg/Fru= /AdlCpu/LibraryPrivate/BaseCpuInfoFruLib/BaseCpuInfoFruLib.c new file mode 100644 index 0000000000..d93048eb6e --- /dev/null +++ b/Silicon/Intel/AlderlakeSiliconPkg/Fru/AdlCpu/LibraryPrivate/BaseCp +++ uInfoFruLib/BaseCpuInfoFruLib.c @@ -0,0 +1,164 @@ +/** @file + This file contains the Cpu Information for specific generation. + + Copyright (c) 2022, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent **/ #include=20 + #include #include=20 + #include #include=20 + #include #include=20 + #include =20 +#include #include =20 +#include #include #include=20 + #include + + +STATIC CONST CHAR8 mAdlCpuFamilyString[] =3D "AlderLake"; typedef struct= =20 +{ + UINT32 CPUID; + UINT8 CpuSku; + CHAR8 *String; +} CPU_REV; + +typedef struct { + CPU_IDENTIFIER CpuIdentifier; + UINT8 SupportedCores; + UINT8 SupportedAtomCores; +} CPU_CORE_COUNT; + +GLOBAL_REMOVE_IF_UNREFERENCED CONST CPU_REV mProcessorRevisionTable[] =3D= { + {CPUID_FULL_FAMILY_MODEL_ALDERLAKE_MOBILE + EnumAdlJ0, EnumCpuUlt, = "J0"}, + {CPUID_FULL_FAMILY_MODEL_ALDERLAKE_MOBILE + EnumAdlK0, EnumCpuUlt, = "K0"}, + {CPUID_FULL_FAMILY_MODEL_ALDERLAKE_MOBILE + EnumAdlL0, EnumCpuUlt, = "L0"}, + {CPUID_FULL_FAMILY_MODEL_ALDERLAKE_MOBILE + EnumAdlQ0, EnumCpuUlt, = "Q0"}, + {CPUID_FULL_FAMILY_MODEL_ALDERLAKE_MOBILE + EnumAdlR0, EnumCpuUlt, = "R0"}, + {CPUID_FULL_FAMILY_MODEL_ALDERLAKE_MOBILE + EnumAdlQ0, EnumCpuUlx, = "Q0"}, + {CPUID_FULL_FAMILY_MODEL_ALDERLAKE_MOBILE + EnumAdlR0, EnumCpuUlx, = "R0"}, + {CPUID_FULL_FAMILY_MODEL_ALDERLAKE_MOBILE + EnumAdlS0, EnumCpuUlx, = "S0"} +}; + +/// +/// PowerLimits Override table for all SKUs. Non-cTDP parts would have '0'= data for TDP level information. +/// +GLOBAL_REMOVE_IF_UNREFERENCED PPM_OVERRIDE_TABLE=20 +mPowerLimitsOverrideTable[] =3D { /// +/// CpuIdentifier TDP MSR PL1 MSR PL2 TdpUp= TdpUp TdpNominal TdpNominal TdpDown TdpDown MSR MSR = Disablefvm +/// PL1 PL2 PL1 = PL2 PL1 PL2 PL1 PL2 PL4 = PL4 + {EnumAdlP15Watt282fCpuId, 1500, 1500, 5500, 0, = 5500, 0, 5500, 0, 5500, 12300, = 0}, /// 15W 282 ADL-P + {EnumAdlP15Watt142fCpuId, 1500, 1500, 5500, 0, = 5500, 0, 5500, 0, 5500, 12300, = 0}, /// 15W 142 ADL-P + {EnumAdlP15Watt242fCpuId, 1500, 1500, 5500, 0, = 5500, 0, 5500, 0, 5500, 12300, = 0}, /// 15W 242 ADL-P + {EnumAdlP28Watt282fCpuId, 2800, 2800, 6400, 0, = 6400, 0, 6400, 0, 6400, 9000, = 0}, /// 28W 282 ADL-P + {EnumAdlP28Watt482fCpuId, 2800, 2800, 6400, 0, = 6400, 0, 6400, 0, 6400, 9000, = 0}, /// 28W 482 ADL-P + {EnumAdlP28Watt682fCpuId, 2800, 2800, 6400, 0, = 6400, 0, 6400, 0, 6400, 14000, = 0}, /// 26W 682 ADL-P + {EnumAdlP28Watt142fCpuId, 2800, 2800, 6400, 0, = 6400, 0, 6400, 0, 6400, 9000, = 0}, /// 28W 142 ADL-P + {EnumAdlP28Watt242fCpuId, 2800, 2800, 6400, 0, = 6400, 0, 6400, 0, 6400, 9000, = 0}, /// 28W 242 ADL-P + {EnumAdlP28Watt442fCpuId, 2800, 2800, 6400, 0, = 6400, 0, 6400, 0, 6400, 9000, = 0}, /// 28W 442 ADL-P + {EnumAdlP28Watt182fCpuId, 2800, 2800, 6400, 0, = 6400, 0, 6400, 0, 6400, 9000, = 0}, /// 28W 182 ADL-P + {EnumAdlP28Watt642fCpuId, 2800, 2800, 6400, 0, = 6400, 0, 6400, 0, 6400, 14000, = 0}, /// 26W 682 ADL-P + {EnumAdlP28Watt662fCpuId, 2800, 2800, 6400, 0, = 6400, 0, 6400, 0, 6400, 14000, = 0}, /// 26W 682 ADL-P + {EnumAdlP45Watt682fCpuId, 4500, 4500, 11500, 0, = 11500, 0, 11500, 0, 11500, 21500, = 0}, /// 45W 682 ADL-P + {EnumAdlP45Watt242fCpuId, 4500, 4500, 9500, 0, = 9500, 0, 9500, 0, 9500, 12500, = 0}, /// 45W 242 ADL-P + {EnumAdlP45Watt482fCpuId, 4500, 4500, 9500, 0, = 9500, 0, 9500, 0, 9500, 12500, = 0}, /// 45W 482 ADL-P + {EnumAdlP45Watt442fCpuId, 4500, 4500, 9500, 0, = 9500, 0, 9500, 0, 9500, 12500, = 0}, /// 45W 442 ADL-P + {EnumAdlP45Watt642fCpuId, 4500, 4500, 11500, 0, = 11500, 0, 11500, 0, 11500, 21500, = 0}, /// 45W 642 ADL-P +}; + +GLOBAL_REMOVE_IF_UNREFERENCED CONST CPU_CORE_COUNT mCpuCoreCountMappingT= able[] =3D { + { EnumAdlP15Watt282fCpuId, 2, 8}, + { EnumAdlP28Watt282fCpuId, 2, 8}, + { EnumAdlP28Watt482fCpuId, 4, 8}, + { EnumAdlP28Watt682fCpuId, 6, 8}, + { EnumAdlP45Watt682fCpuId, 6, 8}, + { EnumAdlP45Watt482fCpuId, 4, 8}, + { EnumAdlP45Watt442fCpuId, 4, 4}, + { EnumAdlP28Watt442fCpuId, 4, 4}, + { EnumAdlP15Watt142fCpuId, 1, 4}, + { EnumAdlP28Watt142fCpuId, 1, 4}, + { EnumAdlP15Watt242fCpuId, 2, 4}, + { EnumAdlP28Watt242fCpuId, 2, 4}, + { EnumAdlP45Watt242fCpuId, 2, 4}, + { EnumAdlP45Watt642fCpuId, 6, 4}, + { EnumAdlP28Watt182fCpuId, 1, 8}, + { EnumAdlP28Watt642fCpuId, 6, 4}, + { EnumAdlP28Watt662fCpuId, 6, 6}, +}; + +/** + Return CPU Sku + + @param[in] UINT32 CpuFamilyModel + @param[in] UINT16 CpuDid + + @retval UINT8 CPU Sku +**/ +UINT8 +GetCpuSkuInfo ( + IN UINT32 CpuFamilyModel, + IN UINT16 CpuDid + ) +{ + UINT8 CpuType; + BOOLEAN SkuFound; + + SkuFound =3D TRUE; + CpuType =3D EnumCpuUnknown; + + switch (CpuFamilyModel) { + case CPUID_FULL_FAMILY_MODEL_ALDERLAKE_MOBILE: + switch (CpuDid) { + case V_SA_DEVICE_ID_MB_ULT_1: // AlderLake P (6+8+GT) + case V_SA_DEVICE_ID_MB_ULT_2: // AlderLake P (6+4(f)+GT) + case V_SA_DEVICE_ID_MB_ULT_3: // AlderLake P (4(f)+8+GT) + case V_SA_DEVICE_ID_MB_ULT_4: // AlderLake P (2(f)+4(f)+GT) + case V_SA_DEVICE_ID_MB_ULT_5: // AlderLake P (2+8+GT) + case V_SA_DEVICE_ID_MB_ULT_6: // AlderLake P (2+4(f)+GT) + case V_SA_DEVICE_ID_MB_ULT_7: // AlderLake P (4+4(f)+GT) + case V_SA_DEVICE_ID_MB_ULT_8: // AlderLake P (1+4+GT) SA DID + case V_SA_DEVICE_ID_MB_ULT_9: // AlderLake P (1+8+GT) SA DID + case V_SA_DEVICE_ID_MB_ULT_10: // AlderLake P (6+6+GT) SA DID + CpuType =3D EnumCpuUlt; + break; + default: + SkuFound =3D FALSE; + break; + } + break; + default: + SkuFound =3D FALSE; + break; + } + + if (!SkuFound) { + DEBUG ((DEBUG_ERROR, "Unsupported CPU SKU, Device ID: 0x%02X, CPUID: 0= x%08X!\n", CpuDid, CpuFamilyModel)); + ASSERT (FALSE); + } + + return CpuType; +} + + +/** + This function returns the supported Physical Address Size + + @retval returns the supported Physical Address Size. +**/ +UINT8 +GetMaxPhysicalAddressSizeFru ( + VOID + ) +{ + // + // Even though CPUID Leaf CPUID_VIR_PHY_ADDRESS_SIZE (0x80000008) MAX_PA= will report 46. + // For ADL BIOS will return Memory expansion 39 bit (0 - 38) + MKTME (Bi= ts 39-41 must be zero - 3 bit hole in the middle) 42-45 bit is MKTME Keys. + // + return 39; +} + + diff --git a/Silicon/Intel/AlderlakeSiliconPkg/Fru/AdlCpu/LibraryPrivate/Ba= seCpuInfoFruLib/BaseCpuInfoFruLib.inf b/Silicon/Intel/AlderlakeSiliconPkg/F= ru/AdlCpu/LibraryPrivate/BaseCpuInfoFruLib/BaseCpuInfoFruLib.inf new file mode 100644 index 0000000000..22bcbdf43c --- /dev/null +++ b/Silicon/Intel/AlderlakeSiliconPkg/Fru/AdlCpu/LibraryPrivate/BaseCp +++ uInfoFruLib/BaseCpuInfoFruLib.inf @@ -0,0 +1,29 @@ +## @file +# This file contains the Cpu Information for specific generation. +# +# Copyright (c) 2022, Intel Corporation. All rights reserved.
+# SPDX-License-Identifier: BSD-2-Clause-Patent +## + + +[Defines] +INF_VERSION =3D 0x00010017 +BASE_NAME =3D BaseCpuInfoFruLib +FILE_GUID =3D 72E44627-C719-4B2D-8C5D-963E167E5AAC +VERSION_STRING =3D 1.0 +MODULE_TYPE =3D BASE +LIBRARY_CLASS =3D CpuInfoFruLib + +[LibraryClasses] +BaseLib +DebugLib +PchInfoLib + +[Packages] +MdePkg/MdePkg.dec +UefiCpuPkg/UefiCpuPkg.dec +AlderlakeSiliconPkg/SiPkg.dec + +[Sources] +BaseCpuInfoFruLib.c + diff --git a/Silicon/Intel/AlderlakeSiliconPkg/Fru/AdlCpu/PeiReportCpuHob/L= ibrary/PeiReportCpuHobLib/PeiReportCpuHobLib.c b/Silicon/Intel/AlderlakeSil= iconPkg/Fru/AdlCpu/PeiReportCpuHob/Library/PeiReportCpuHobLib/PeiReportCpuH= obLib.c new file mode 100644 index 0000000000..7ea605a05b --- /dev/null +++ b/Silicon/Intel/AlderlakeSiliconPkg/Fru/AdlCpu/PeiReportCpuHob/Libra +++ ry/PeiReportCpuHobLib/PeiReportCpuHobLib.c @@ -0,0 +1,22 @@ +/** @file + + Source code file for Report CPU HOB library. + + Copyright (c) 2022, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent **/ + +#include +#include +#include + +VOID +ReportCpuHob ( + VOID + ) +{ + /// + /// Create a CPU hand-off information + /// + BuildCpuHob (GetMaxPhysicalAddressSize (), 16); } diff --git a/Silicon/Intel/AlderlakeSiliconPkg/Fru/AdlCpu/PeiReportCpuHob/L= ibrary/PeiReportCpuHobLib/PeiReportCpuHobLib.inf b/Silicon/Intel/AlderlakeS= iliconPkg/Fru/AdlCpu/PeiReportCpuHob/Library/PeiReportCpuHobLib/PeiReportCp= uHobLib.inf new file mode 100644 index 0000000000..0ba4744eea --- /dev/null +++ b/Silicon/Intel/AlderlakeSiliconPkg/Fru/AdlCpu/PeiReportCpuHob/Libra +++ ry/PeiReportCpuHobLib/PeiReportCpuHobLib.inf @@ -0,0 +1,26 @@ +### @file +# Component information file for the Report CPU HOB library. +# +# Copyright (c) 2022, Intel Corporation. All rights reserved.
+# SPDX-License-Identifier: BSD-2-Clause-Patent +## + +[Defines] + INF_VERSION =3D 0x00010017 + BASE_NAME =3D PeiReportCpuHobLib + FILE_GUID =3D F19AA754-CE24-448D-B755-1F939B00C23D + VERSION_STRING =3D 1.0 + MODULE_TYPE =3D PEIM + LIBRARY_CLASS =3D ReportCpuHobLib + +[LibraryClasses] + BaseLib + HobLib + CpuPlatformLib + +[Packages] + MdePkg/MdePkg.dec + AlderlakeSiliconPkg/SiPkg.dec + +[Sources] + PeiReportCpuHobLib.c -- 2.36.1.windows.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 (#108693): https://edk2.groups.io/g/devel/message/108693 Mute This Topic: https://groups.io/mt/101373952/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-