From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by mx.groups.io with SMTP id smtpd.web09.15485.1628724919687409597 for ; Wed, 11 Aug 2021 16:35:20 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=CgLygv18; spf=pass (domain: intel.com, ip: 134.134.136.31, mailfrom: nathaniel.l.desimone@intel.com) X-IronPort-AV: E=McAfee;i="6200,9189,10073"; a="276278647" X-IronPort-AV: E=Sophos;i="5.84,314,1620716400"; d="scan'208";a="276278647" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Aug 2021 16:35:18 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.84,314,1620716400"; d="scan'208";a="527353415" Received: from orsmsx604.amr.corp.intel.com ([10.22.229.17]) by fmsmga002.fm.intel.com with ESMTP; 11 Aug 2021 16:35:18 -0700 Received: from orsmsx609.amr.corp.intel.com (10.22.229.22) by ORSMSX604.amr.corp.intel.com (10.22.229.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.10; Wed, 11 Aug 2021 16:35:17 -0700 Received: from orsmsx608.amr.corp.intel.com (10.22.229.21) by ORSMSX609.amr.corp.intel.com (10.22.229.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.10; Wed, 11 Aug 2021 16:35:17 -0700 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx608.amr.corp.intel.com (10.22.229.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.10 via Frontend Transport; Wed, 11 Aug 2021 16:35:17 -0700 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.174) 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.2242.10; Wed, 11 Aug 2021 16:35:16 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=A3T4dz4BSbMWQNGZV6/WnJQUNmcGah+tCkb01vRYuucsZp1b4qu06pXMqfza2XJmdSWIGauthRBBZf0EQsSexZrDNVaGYlebPwRVDbMou/B3OSBZg6t9u+fpi9UxUlQcKwmgkLWni424V9YWe543OiznGAtrgJkyVxuxQnTPIQOQTG1WJbPZFwKpF5fBcR6IOaLoYxD+vudPFq/l+sB3x4/AL4pavWImozzh6RpK87ugDN+DV53PLJdZO37VxZ/wJ8pew+ae5L9AyeEbsbjGgVQZO6MpiNwxphOHF5H9X2oHENrRalVX8cRzaU3Nidw0Cq1BzLkKI82YGnBXmhrVSA== 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-SenderADCheck; bh=TABSY1g0+wVn/cWfcuKbcRJwRIgV801QUGP5+kY8IQs=; b=CWxAdBLj/2CgqDcdkeIhmflGbd2bXAAsdDdn1r0tWxwQ0Gxe6v1gYzISuYxFaovH2SwbtZrXe0QBY/g0IWL3WfNVvWXFRT/WpQzkcnyqyxiKWBp9iSDfFGysNvcf2gV74qms+hZz9dc9Bj/aNeDrdKukbHcwxDowEj7tSFJpoZLg3SvRanlOnjGP1c0B7SYZnJTg/jNFgQvFN8atkG5HVUczEoEu2H4hKsVgcE2ulgpDzDMgOKN64LY7sPJuLgHqBPLZAOc0U/2QdMRKQiI7Xqu1KpXRC/9Ks9Y9xeHKEI4YSPFPn8/ESBst9bOusA1XQrBkAn5V6ne/QMzfcy6DPQ== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=TABSY1g0+wVn/cWfcuKbcRJwRIgV801QUGP5+kY8IQs=; b=CgLygv18vjjDbgiC+DVxgUlngyCYsLGz+A9CKXC5MQxyy+NL7K+cMciHqSlr5u7SY2PBRqs0TqnaeLR36NpA+6MnekGKLSZsuHHg3pKbBfNPfGqkGPNo+MknR7xvLNLqHizf+KKO2UAGsqNCaJhlImGvojtc+G0S7fHu9zzlxSY= Received: from MWHPR1101MB2160.namprd11.prod.outlook.com (2603:10b6:301:5b::12) by MWHPR11MB1918.namprd11.prod.outlook.com (2603:10b6:300:110::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4415.14; Wed, 11 Aug 2021 23:35:15 +0000 Received: from MWHPR1101MB2160.namprd11.prod.outlook.com ([fe80::546c:f20e:35d2:65a7]) by MWHPR1101MB2160.namprd11.prod.outlook.com ([fe80::546c:f20e:35d2:65a7%5]) with mapi id 15.20.4415.016; Wed, 11 Aug 2021 23:35:15 +0000 From: "Nate DeSimone" To: "devel@edk2.groups.io" , "Desimone, Nathaniel L" CC: "Chiu, Chasel" , Michael Kubacki , Benjamin Doron Subject: Re: [edk2-devel] [edk2-platforms] [PATCH V1] KabylakeSiliconPkg: Update SA_MISC_PEI_PREMEM_CONFIG Thread-Topic: [edk2-devel] [edk2-platforms] [PATCH V1] KabylakeSiliconPkg: Update SA_MISC_PEI_PREMEM_CONFIG Thread-Index: AQHXjaFmj/65R98z1ke0aB0x2u3bgKtu94SQ Date: Wed, 11 Aug 2021 23:35:15 +0000 Message-ID: References: <1699D7FD7EB0E380.15153@groups.io> In-Reply-To: <1699D7FD7EB0E380.15153@groups.io> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-reaction: no-action dlp-version: 11.5.1.3 dlp-product: dlpe-windows authentication-results: edk2.groups.io; dkim=none (message not signed) header.d=none;edk2.groups.io; dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: c9dd3af5-5151-44d6-dc33-08d95d20abd8 x-ms-traffictypediagnostic: MWHPR11MB1918: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:590; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: i8mjM0UdZzcIfZQk5xX6+FEDygD9RMhOeMccZOfqjy+Y4vv6x8+gKFY0MaaDT7DEOOdwHtpWi4Rfv6rf9hUO6TtHK814wqWMoy8bBhV8FnLCQn4sqBwqsBIlZ7ZRnvC83/mxhVQ3ggwJPcyAvQTaCirjEpfrTjdgldFNcWkJZIpkiuBBjlfApVQYUwfigCJF1Fiuia/IEAiZYJMbYCeFDqJspeqMAUjCplerNxsrD9Y08lpz2QxAOzI709KtgQCxouR3S4yPLLHi6C0ylawN8NxzCsWjMHrdIjOkoNL5VXzgdCKv+T7PE5ZghaVy3B/gMrLeyTgNFZd2aUnGk5DtGddHbMVTzmoexA07R/O7N2cVy/kDQEQU/DHMFfRlTMxEK3A9iDfOsH7axcwBgn6u7qsZMSEXdzDpQ0SVEdckm1GWDw6hw5NbPcovB8lZa7gbs36gW2DUJ6s/W54mbs7wYudwyS3AUqllEmkUXAkijBY3vp690ximEprk2Y3wxOLYJSGchw6WqPxceKBnsLZKktXrf5CzHMdwhw8S/1pZh0cqudndu7G3EMJS/nAq0FRL8lIG8nVZJCDQNp1eMM3/cvXNu8D2YyQYWF92wFwZWjCKizbBcszaJbsntG+y+bvMUw5tEmFbnbWmBYNGe9VdqZkcOYUcNcTu6NSJc3lwqJ5Dud4elMfPmst7S1+zOS8qoXMeUPAY4MxPBNXg5zXcW59eVwz6ifef5/n2hQpO5mIfighW6xacr6ryAWcy23EyRkeFFEbByKKpJMk+kjzmNDrADhWiYeaUBrfLfebLx3SFyc64cmuiLLTXRfwdyTLY27tgNK48T0aBls8ioVbY1g== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MWHPR1101MB2160.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(39860400002)(366004)(376002)(346002)(136003)(396003)(86362001)(30864003)(478600001)(38100700002)(53546011)(4326008)(6506007)(52536014)(2906002)(33656002)(8936002)(71200400001)(122000001)(5660300002)(26005)(7696005)(966005)(15650500001)(8676002)(186003)(316002)(66446008)(66476007)(55016002)(110136005)(66556008)(64756008)(83380400001)(19627235002)(54906003)(38070700005)(66946007)(76116006)(9686003)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?KtAYu6WSDVLtYHMrMAaMJyjL61PvovoaWnRY8RKi6K0HuYV/75VSB1MTklK4?= =?us-ascii?Q?to3KIxCX0zTrgrYnWD3/gqJPAXPoPyyM6vkjTWszgvxxtUx/781ntkwBJ2w6?= =?us-ascii?Q?3PCnf3KtoHyllkYSUqBKU8LBCwLxEGqZF7mLd77Nx/tdygv5mco53ma7w7S+?= =?us-ascii?Q?NmuSuXi+lTvY1FQPejqIR1EUNjDGVvf0oFqGL2v4nk7eTV/s2mFkiArFdqaX?= =?us-ascii?Q?4wd0HHvfoLXGiq2FSU1YiAqXXw83JjBaInpaKQ49MKRvD/ZyfJr+U0DoN7Kp?= =?us-ascii?Q?ETUtDKz/iClSvPDxtRLTHyvekSaFoCl1z5vuIV7gcww/8s9oBEKFvlGhZIv/?= =?us-ascii?Q?8oa87mMIYejgcbXcqWyahwT2QkvtpxfgwcQ/+bz9hQcE6RkNUl7Soyuj/bNs?= =?us-ascii?Q?smu/1LABxchqiZodLeSWMdP1B5muT3NQn8Oaeu7URSJk7o2N5NayjEBHfAy9?= =?us-ascii?Q?l1zF5gO3P9OIAhMP5/4JOeMzhw1DpfghrX7MQardcpDpiYX9PVrAARCTH/yM?= =?us-ascii?Q?9UnNh/pZusXiNGzLb9gHg7NeIRPAAwi5C1+HyOHr/PYLypNUE0CGSvscRrVy?= =?us-ascii?Q?n8AptQnusdvWuB3iNKc3uDpgsVSilB/hFq+0oo4sUyqV6N0j6YovIvSDN21k?= =?us-ascii?Q?8Ano5Gri9NMumxPbdR0KpV5Y631Ewwr+lsiiGhopdgq3AtMog5tW4eqYB0vm?= =?us-ascii?Q?bEoEbD7ycFPLtNJ/yP2gqHdOtTSViju+Ekq7epQ0SW2x6E1Go6HYzCR5P4ur?= =?us-ascii?Q?51UiQKCDieTW/x7Giw5YOjeyGwzSdlOWw5Kqdd2zU+0oA6hmSHtQH/Jy0EGq?= =?us-ascii?Q?Vlw7IpvO9ICBrYyEhgFVuLB7fMHa8nvijYaVw09iJOJB6TP2iY99Iou+gqBb?= =?us-ascii?Q?SKKcUtUzQG+6sNwo/WS1D8Z9y12fS2Hw9aiSVCV+fTTygvWnyuP4rJ4zTTU8?= =?us-ascii?Q?/8EgaDIrYntdRTQ1ry9CjUjyTSctHDlIxecuh3k7XwBVpIw2QGYA22NbpBgk?= =?us-ascii?Q?7p+mBgExA3HPlaVojSPSVBZP4R6yR4o5Gxaqv31a6qlMMFq+bPXdXJG1CJli?= =?us-ascii?Q?HSuD2U+63CXX7gtL+m4RYE/+hHX2VQ5pUtESMN6jxr7wQoIE2gQgT2Crjpuv?= =?us-ascii?Q?sl88CxWvpOjUrPiLrhWALOVhD/mWGkr/UtiGhDLPVl/mpKjGpeNSswuAHYwy?= =?us-ascii?Q?+DYxaKFjedTbyr8YQprQYgEd/gAkwzsQb4u80B45XJGfHlXpnOFPdXp6vyQz?= =?us-ascii?Q?PetWM4lNNbBjRtgnDKUtAjfsP7EbNX2gy7OTBXRENU0Qc0XLNBzk5axfrbB7?= =?us-ascii?Q?gZE0Ddj2PHO3mSlyoFrhJR9G?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MWHPR1101MB2160.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c9dd3af5-5151-44d6-dc33-08d95d20abd8 X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Aug 2021 23:35:15.2338 (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: 1fhJiQT+6Lx2ZoEbk4DRrd7FJZ+p3NqWrqEo3akiU2sWymo69KnBoJO9BywLJ8MT4KkdFnQO9xHffbGkHoOQbJ0VysNxtZy6BIOBmDoJOk4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR11MB1918 Return-Path: nathaniel.l.desimone@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Pushed: https://github.com/tianocore/edk2-platforms/commit/762eb50 -----Original Message----- From: devel@edk2.groups.io On Behalf Of Nate DeSimon= e Sent: Monday, August 9, 2021 9:37 PM To: devel@edk2.groups.io Cc: Chiu, Chasel ; Michael Kubacki ; Benjamin Doron Subject: [edk2-devel] [edk2-platforms] [PATCH V1] KabylakeSiliconPkg: Updat= e SA_MISC_PEI_PREMEM_CONFIG Updates SA_MISC_PEI_PREMEM_CONFIG from revision 1 to revision 3. Add initia= lization of the policy values. Cc: Chasel Chiu Cc: Michael Kubacki Cc: Benjamin Doron Signed-off-by: Nate DeSimone --- .../KabylakeRvp3/OpenBoardPkg.dsc | 24 +++--- .../PeiSiliconPolicyUpdateLib.c | 39 +++++++++- .../PeiSiliconPolicyUpdateLib.inf | 9 ++- .../ConfigBlock/SaMiscPeiPreMemConfig.h | 77 ++++++++++++++++++- .../Library/PeiSaPolicyLib/PeiSaPolicyLib.c | 37 ++++++++- 5 files changed, 169 insertions(+), 17 deletions(-) diff --git a/Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/OpenBoardPkg.= dsc b/Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/OpenBoardPkg.dsc index 8523ab3f4f..f64555e391 100644 --- a/Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/OpenBoardPkg.dsc +++ b/Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/OpenBoardPkg.dsc @@ -182,17 +182,6 @@ # Board-specific ####################################### PlatformHookLib|$(PROJECT)/Library/BasePlatformHookLib/BasePlatformHookL= ib.inf -!if gIntelFsp2WrapperTokenSpaceGuid.PcdFspModeSelection =3D=3D 1 - # - # FSP API mode - # - SiliconPolicyUpdateLib|$(PROJECT)/FspWrapper/Library/PeiSiliconPolicyUpd= ateLibFsp/PeiSiliconPolicyUpdateLibFsp.inf -!else - # - # FSP Dispatch mode and non-FSP build (EDK2 build) - # - SiliconPolicyUpdateLib|$(PROJECT)/Policy/Library/PeiSiliconPolicyUpdateL= ib/PeiSiliconPolicyUpdateLib.inf -!endif =20 [LibraryClasses.IA32.SEC] ####################################### @@ -200,6 +189,7 @@ ####################################### TestPointCheckLib|$(PLATFORM_PACKAGE)/Test/Library/TestPointCheckLib/Sec= TestPointCheckLib.inf SecBoardInitLib|$(PLATFORM_PACKAGE)/PlatformInit/Library/SecBoardInitLib= Null/SecBoardInitLibNull.inf + =20 + SiliconPolicyUpdateLib|MinPlatformPkg/PlatformInit/Library/SiliconPoli + cyUpdateLibNull/SiliconPolicyUpdateLibNull.inf =20 [LibraryClasses.common.PEIM] ####################################### @@ -222,6 +212,18 @@ ####################################### # Board Package ####################################### +!if gIntelFsp2WrapperTokenSpaceGuid.PcdFspModeSelection =3D=3D 1 + # + # FSP API mode + # + =20 +SiliconPolicyUpdateLib|$(PROJECT)/FspWrapper/Library/PeiSiliconPolicyUp +dateLibFsp/PeiSiliconPolicyUpdateLibFsp.inf +!else + # + # FSP Dispatch mode and non-FSP build (EDK2 build) + # + =20 +SiliconPolicyUpdateLib|$(PROJECT)/Policy/Library/PeiSiliconPolicyUpdate +Lib/PeiSiliconPolicyUpdateLib.inf +!endif + # Thunderbolt !if gKabylakeOpenBoardPkgTokenSpaceGuid.PcdTbtEnable =3D=3D TRUE PeiDTbtInitLib|$(PLATFORM_BOARD_PACKAGE)/Features/Tbt/Library/Private/Pe= iDTbtInitLib/PeiDTbtInitLib.inf diff --git a/Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/Policy/Librar= y/PeiSiliconPolicyUpdateLib/PeiSiliconPolicyUpdateLib.c b/Platform/Intel/Ka= bylakeOpenBoardPkg/KabylakeRvp3/Policy/Library/PeiSiliconPolicyUpdateLib/Pe= iSiliconPolicyUpdateLib.c index 5cc7c03c61..2dce9be63c 100644 --- a/Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/Policy/Library/PeiSi= liconPolicyUpdateLib/PeiSiliconPolicyUpdateLib.c +++ b/Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/Policy/Library/Pe +++ iSiliconPolicyUpdateLib/PeiSiliconPolicyUpdateLib.c @@ -1,7 +1,7 @@ /** @file Provides silicon policy update library functions. =20 -Copyright (c) 2019, Intel Corporation. All rights reserved.
+Copyright (c) 2019 - 2021, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent =20 **/ @@ -398,6 +398,8 @@ SiliconPolicyUpdatePreMem ( SA_MISC_PEI_PREMEM_CONFIG *MiscPeiPreMemConfig; MEMORY_CONFIG_NO_CRC *MemConfigNoCrc; VOID *Buffer; + UINTN VariableSize; + VOID *MemorySavedData; UINT8 SpdAddressTable[4]; =20 DEBUG((DEBUG_INFO, "\nUpdating Policy in Pre-Mem\n")); @@ -417,6 +419,41= @@ SiliconPolicyUpdatePreMem ( // Pass board specific SpdAddressTable to policy // CopyMem ((VOID *) MiscPeiPreMemConfig->SpdAddressTable, (VOID *) Spd= AddressTable, (sizeof (UINT8) * 4)); + + // + // Set size of SMRAM + // + MiscPeiPreMemConfig->TsegSize =3D PcdGet32 (PcdTsegSize); + + // + // Initialize S3 Data variable (S3DataPtr). It may be used for warm = and fast boot paths. + // Note: AmberLake FSP does not implement the FSPM_ARCH_CONFIG_PPI a= dded in FSP 2.1, hence + // the platform specific S3DataPtr must be used instead. + // + VariableSize =3D 0; + MemorySavedData =3D NULL; + Status =3D PeiGetVariable ( + L"MemoryConfig", + &gFspNonVolatileStorageHobGuid, + &MemorySavedData, + &VariableSize + ); + DEBUG ((DEBUG_INFO, "Get L\"MemoryConfig\" gFspNonVolatileStorageHob= Guid - %r\n", Status)); + DEBUG ((DEBUG_INFO, "MemoryConfig Size - 0x%x\n", VariableSize)); + if (!EFI_ERROR (Status)) { + MiscPeiPreMemConfig->S3DataPtr =3D MemorySavedData; + } + + // + // In FSP Dispatch Mode these BAR values are initialized by SiliconP= olicyInitPreMem() in + // KabylakeSiliconPkg/Library/PeiSiliconPolicyInitLib/PeiPolicyInitP= reMem.c; this function calls + // PEI_PREMEM_SI_DEFAULT_POLICY_INIT_PPI->PeiPreMemPolicyInit() to i= nitialize all Config Blocks + // with default policy values (including these BAR values.) PEI_PREM= EM_SI_DEFAULT_POLICY_INIT_PPI + // is implemented in the FSP. Make sure the value that FSP is using = matches the value we are using. + // + ASSERT (PcdGet64 (PcdMchBaseAddress) <=3D 0xFFFFFFFF); + ASSERT (MiscPeiPreMemConfig->MchBar =3D=3D (UINT32) PcdGet64 (PcdM= chBaseAddress)); + ASSERT (MiscPeiPreMemConfig->SmbusBar =3D=3D PcdGet16=20 + (PcdSmbusBaseAddress)); } MemConfigNoCrc =3D NULL; Status =3D GetConfigBlock (Policy, &gMemoryConfigNoCrcGuid, (VOID *) &= MemConfigNoCrc); diff --git a/Platform/Intel/KabylakeOpenBoardPkg/KabylakeR= vp3/Policy/Library/PeiSiliconPolicyUpdateLib/PeiSiliconPolicyUpdateLib.inf = b/Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/Policy/Library/PeiSilico= nPolicyUpdateLib/PeiSiliconPolicyUpdateLib.inf index 97ec70f611..5c2da68bf9 100644 --- a/Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/Policy/Library/PeiSi= liconPolicyUpdateLib/PeiSiliconPolicyUpdateLib.inf +++ b/Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/Policy/Library/Pe +++ iSiliconPolicyUpdateLib/PeiSiliconPolicyUpdateLib.inf @@ -1,7 +1,7 @@ ### @file # Component information file for silicon policy update library # -# Copyr= ight (c) 2019 - 2020 Intel Corporation. All rights reserved.
+# Copyright (c) 2019 - 2021 Intel Corporation. All rights reserved.
# # SPDX-License-Identifier: BSD-2-Clause-Patent # @@ -11,7 +11,7 @@ INF_VERSION =3D 0x00010005 BASE_NAME =3D PeiSiliconPolicyUpdateLib FILE_GUID =3D 14F5D83D-76A5-4241-BEC5-987E70E233D5 - MODULE_TYPE =3D BASE + MODULE_TYPE =3D PEIM VERSION_STRING =3D 1.0 LIBRARY_CLASS =3D SiliconPolicyUpdateLib =20 @@ -33,6 +33,7 @@ [Packages] MinPlatformPkg/MinPlatformPkg.dec MdePkg/MdePkg.dec + IntelFsp2Pkg/IntelFsp2Pkg.dec UefiCpuPkg/UefiCpuPkg.dec KabylakeSiliconPkg/SiPkg.dec KabylakeOpenBoardPkg/OpenBoardPkg.dec @@ -49,11 +50,15 @@ gHsioPciePreMemConfigGuid ## CONSUMES gHsioSataPreMemConfigGuid ## CONSUMES gSaMiscPeiPreMemConfigGuid ## CONSUMES + gFspNonVolatileStorageHobGuid ## CONSUMES =20 [Pcd] gSiPkgTokenSpaceGuid.PcdPeiMinMemorySize gSiPkgTokenSpaceGuid.PcdFlashMicrocodeFvBase gSiPkgTokenSpaceGuid.PcdFlashMicrocodeFvSize + gSiPkgTokenSpaceGuid.PcdMchBaseAddress + gSiPkgTokenSpaceGuid.PcdSmbusBaseAddress + gSiPkgTokenSpaceGuid.PcdTsegSize gKabylakeOpenBoardPkgTokenSpaceGuid.PcdGraphicsVbtGuid gKabylakeOpenBoardPkgTokenSpaceGuid.PcdMrcRcompResistor ## CONSUME= S gKabylakeOpenBoardPkgTokenSpaceGuid.PcdMrcRcompTarget ## CONSUME= S diff --git a/Silicon/Intel/KabylakeSiliconPkg/SystemAgent/Include/ConfigBlo= ck/SaMiscPeiPreMemConfig.h b/Silicon/Intel/KabylakeSiliconPkg/SystemAgent/I= nclude/ConfigBlock/SaMiscPeiPreMemConfig.h index 4aa02e3142..2ed587f425 100644 --- a/Silicon/Intel/KabylakeSiliconPkg/SystemAgent/Include/ConfigBlock/SaMi= scPeiPreMemConfig.h +++ b/Silicon/Intel/KabylakeSiliconPkg/SystemAgent/Include/ConfigBlock/S +++ aMiscPeiPreMemConfig.h @@ -1,7 +1,7 @@ /** @file Policy details for miscellaneous configuration in System Agent =20 -Copyright (c) 2017, Intel Corporation. All rights reserved.
+Copyright (c) 2017 - 2021, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent =20 **/ @@ -14,18 +14,91 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #define S= A_MC_MAX_SOCKETS 4 #endif =20 -#define SA_MISC_PEI_PREMEM_CONFIG_REVISION 1 +#define SA_MISC_PEI_PREMEM_CONFIG_REVISION 3 =20 /** This configuration block is to configure SA Miscellaneous variables duri= ng PEI Pre-Mem phase like programming different System Agent BARs, TsegSize, IedSize, MmioSize required etc. Revision 1: - Initial version. + Revision 2: + - Added SgDelayAfterOffMethod, SgDelayAfterLinkEnable and SgGenSpeedChan= geEnable. + Revision 3: + - Added BdatTestType and BdatSchema. **/ typedef struct { CONFIG_BLOCK_HEADER Header; ///< Offset 0-27 Config Block= Header UINT8 SpdAddressTable[SA_MC_MAX_SOCKETS];///< Offset 28 Memory DIMMs' = SPD address for reading SPD data. example: SpdAddressTable[0]=3D0xA2(C0D= 0), SpdAddressTable[1]=3D0xA0(C0D1), SpdAddressTable[2]=3D0xA2(C1D0), SpdAd= dressTable[3]=3D0xA0(C1D1) + VOID *S3DataPtr; ///< Offset 32 Memory data sa= ve pointer for S3 resume. The memory space should be allocated and filled w= ith proper S3 resume data on a resume path UINT32 MchBar; ///< Offset 36 Address of Sys= tem Agent MCHBAR: 0xFED10000 + UINT32 DmiBar; ///< Offset 40 Address of Sys= tem Agent DMIBAR: 0xFED18000 + UINT32 EpBar; ///< Offset 44 Address of Sys= tem Agent EPBAR: 0xFED19000 + UINT32 SmbusBar; ///< Offset 48 Address of Sys= tem Agent SMBUS BAR: 0xEFA0 + UINT32 GdxcBar; ///< Offset 52 Address of Sys= tem Agent GDXCBAR: 0xFED84000 + /** + Offset 56 Size of TSEG in bytes. (Must be power of 2) + 0x400000: 4MB for Release build (When IED enabled, it will be 8= MB) + 0x1000000 : 16MB for Debug build (Regardless IED enabled or disab= led) + **/ + UINT32 TsegSize; + UINT32 EdramBar; ///< Offset 60 Address of Sys= tem Agent EDRAMBAR: 0xFED80000 + /** + Offset 64 + (Test) Size of IED region in bytes. + 0 : IED Disabled (no memory occupied) + 0x400000 : 4MB SMM memory occupied by IED (Part of TSEG) + Note: Enabling IED may also enlarge TsegSize together. **/ + UINT32 IedSize; + UINT8 UserBd; ///< Offset 68 0=3DMobile/= Mobile Halo, 1=3DDesktop/DT Halo, 5=3DULT/ULX/Mobile Halo, 7=3DUP Serve= r + UINT8 SgMode; ///< Offset 69 SgMode: 0= =3DDisabled, 1=3DSG Muxed, 2=3DSG Muxless, 3=3DPEG + UINT16 SgSubSystemId; ///< Offset 70 Switchable Gra= phics Subsystem ID: 2212 + UINT16 SgDelayAfterPwrEn; ///< Offset 72 Dgpu Delay aft= er Power enable using Setup option: 0=3DMinimal, 1000=3DMaximum, 300=3D3= 00 microseconds + UINT16 SgDelayAfterHoldReset; ///< Offset 74 Dgpu Delay aft= er Hold Reset using Setup option: 0=3DMinimal, 1000=3DMaximum, 100=3D100= microseconds + UINT32 SkipExtGfxScan:1; ///< (Test) OFfset 76:= 0 :1=3DSkip External Gfx Device Scan; 0=3DScan for external graphics dev= ices. Set this policy to skip External Graphics card scanning if the pl= atform uses Internal Graphics only. + UINT32 BdatEnable:1; ///< (Test) OFfset 76:= 1 :This field enables the generation of the BIOS DATA ACPI Tables: 0=3DF= ALSE, 1=3DTRUE\n Please refer to the MRC documentation for more details + UINT32 TxtImplemented:1; ///< OFfset 76:2 :This field = currently is used to tell MRC if it should run after TXT initializatoin com= pleted: 0=3DRun without waiting for TXT, 1=3DRun after TXT initializ= ation by callback + /** + Offset 76:3 : + (Test) Scan External Discrete Graphics Devices for Legacy=20 + Only VGA OpROMs + + When enabled, if the primary graphics device is an external discrete gr= aphics device, Si will scan the + graphics device for legacy only VGA OpROMs. If the primary graphics de= vice only implements legacy VBIOS, then the + LegacyOnlyVgaOpRomDetected field in the SA_DATA_HOB will be set to 1. + + This is intended to ease the implementation of a BIOS feature to automa= tically enable CSM if the Primary Gfx device + only supports Legacy VBIOS (No UEFI GOP Present). Otherwise disabling = CSM won't result in no video being displayed. + This is useful for platforms that implement PCIe slots that allow the e= nd user to install an arbitrary Gfx device. + + This setting will only take effect if SkipExtGfxScan =3D=3D 0. It is i= gnored otherwise. + + - Disabled (0x0) : Don't Scan for Legacy Only VGA OpROMs (Defaul= t) + - Enabled (0x1) : Scan External Gfx for Legacy Only VGA=20 + OpROM **/ + UINT32 ScanExtGfxForLegacyOpRom:1; + UINT32 RsvdBits0 :28; ///< OFfset 76:4 :Reserved fo= r future use + UINT8 LockPTMregs; ///< (Test) Offset 80 = Lock PCU Thermal Management registers: 0=3DFALSE, 1=3DTRUE + UINT8 BdatTestType; ///< Offset 81 When BdatEnabl= e is set to TRUE, this option selects the type of data which will be popula= ted in the BIOS Data ACPI Tables: 0=3DRMT, 1=3DRMT Per Bit, 2=3DMarg= in 2D. + UINT8 BdatSchema; ///< Offset 82 When BdatEnabl= e is set to TRUE, this option selects the BDAT Schema version which will be= used to format BDAT Test results: 0=3DSchema 2, 1=3DSchema 6B + UINT8 Rsvd1; ///< Offset 83 Reserved for f= uture use + /** + Offset 84 : + Size of reserved MMIO space for PCI devices\n + 0=3DAUTO, 512=3D512MB, 768=3D768MB, 1024=3D1024MB, 1280=3D1280M= B, 1536=3D1536MB, 1792=3D1792MB, + 2048=3D2048MB, 2304=3D2304MB, 2560=3D2560MB, 2816=3D2816MB, 3072=3D307= 2MB\n + When AUTO mode selected, the MMIO size will be calculated by required = MMIO size from PCIe devices detected. + **/ + UINT16 MmioSize; + INT16 MmioSizeAdjustment; ///< Offset 86 Increase (give= n positive value) or Decrease (given negative value) the Reserved MMIO size= when Dynamic Tolud/AUTO mode enabled (in MBs): 0=3Dno adjustment + UINT64 AcpiReservedMemoryBase; ///< Offset 88 The Base addre= ss of a Reserved memory buffer allocated in previous boot for S3 resume use= d. Originally it is retrieved from AcpiVariableCompatibility variable. + UINT64 SystemMemoryLength; ///< Offset 96 Total system m= emory length from previous boot, this is required for S3 resume. Originally= it is retrieved from AcpiVariableCompatibility variable. + UINT32 AcpiReservedMemorySize; ///< Offset 104 The Size of a= Reserved memory buffer allocated in previous boot for S3 resume used. Orig= inally it is retrieved from AcpiVariableCompatibility variable. + UINT32 OpRomScanTempMmioBar; ///< (Test) Offset 108= Temporary address to MMIO map OpROMs during VGA scanning. Used for ScanEx= tGfxForLegacyOpRom feature. MUST BE 16MB ALIGNED! + UINT32 OpRomScanTempMmioLimit; ///< (Test) Offset 112= Limit address for OpROM MMIO range. Used for ScanExtGfxForLegacyOpRom fea= ture. (OpROMScanTempMmioLimit - OpRomScanTempMmioBar) MUST BE >=3D 16MB! + UINT16 SgDelayAfterOffMethod; ///< Offset 128 Dgpu Delay af= ter off method is called using Setup option: 0=3DMinimal, 1000=3DMaximum, <= b>300=3D300 microseconds + UINT16 SgDelayAfterLinkEnable; ///< Offset 130 Delay after l= ink enable method is called using Setup option: 0=3DMinimal, 1000=3DMaximum= , 100=3D100 microseconds + UINT8 SgGenSpeedChangeEnable; ///< Offset 132 Enable/Disabl= e Gen speed changes using Setup option: 0=3DDisable, 1=3DEnable + UINT8 Rsvd3[3]; ///< Offset 133 Reserved for = future use } SA_MISC_PEI_PREMEM_CONFIG; #pragma pack(pop) =20 diff --git a/Silicon/Intel/KabylakeSiliconPkg/SystemAgent/Library/PeiSaPoli= cyLib/PeiSaPolicyLib.c b/Silicon/Intel/KabylakeSiliconPkg/SystemAgent/Libra= ry/PeiSaPolicyLib/PeiSaPolicyLib.c index eb18d993e7..5210856346 100644 --- a/Silicon/Intel/KabylakeSiliconPkg/SystemAgent/Library/PeiSaPolicyLib/P= eiSaPolicyLib.c +++ b/Silicon/Intel/KabylakeSiliconPkg/SystemAgent/Library/PeiSaPolicyLi +++ b/PeiSaPolicyLib.c @@ -1,7 +1,7 @@ /** @file This file provides services for PEI policy default initialization =20 -Copyright (c) 2017, Intel Corporation. All rights reserved.
+Copyright (c) 2017 - 2021, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent =20 **/ @@ -19,6 +19,9 @@ extern EFI_GUID gMemoryConfigNoCrcGuid; extern EFI_GUID = gGraphicsPeiConfigGuid; extern EFI_GUID gVtdConfigGuid; =20 +#define DEFAULT_OPTION_ROM_TEMP_BAR 0x80000000 +#define DEFAULT_OPTION_ROM_TEMP_MEM_LIMIT 0xC0000000 + // // Function call to Load defaults for Individial IP Blocks // @@ -33,6 +3= 6,38 @@ LoadSaMiscPeiPreMemDefault ( =20 DEBUG ((DEBUG_INFO, "MiscPeiPreMemConfig->Header.GuidHob.Name =3D %g\n",= &MiscPeiPreMemConfig->Header.GuidHob.Name)); DEBUG ((DEBUG_INFO, "MiscPeiPreMemConfig->Header.GuidHob.Header.HobLengt= h =3D 0x%x\n", MiscPeiPreMemConfig->Header.GuidHob.Header.HobLength)); + + // + // Policy initialization commented out here is because it's the same wit= h default 0 and no need to re-do again. + // + MiscPeiPreMemConfig->LockPTMregs =3D 1; + + // + // Initialize the Platform Configuration // + MiscPeiPreMemConfig->MchBar =3D (UINT32) PcdGet64 (PcdMchBa= seAddress); + MiscPeiPreMemConfig->DmiBar =3D 0xFED18000; + MiscPeiPreMemConfig->EpBar =3D 0xFED19000; + MiscPeiPreMemConfig->EdramBar =3D 0xFED80000; + MiscPeiPreMemConfig->SmbusBar =3D PcdGet16 (PcdSmbusBaseAddre= ss); + MiscPeiPreMemConfig->TsegSize =3D PcdGet32 (PcdTsegSize); + MiscPeiPreMemConfig->GdxcBar =3D 0xFED84000; + + // + // Initialize the Switchable Graphics Default Configuration // =20 + MiscPeiPreMemConfig->SgDelayAfterHoldReset =3D 100; //100ms + MiscPeiPreMemConfig->SgDelayAfterPwrEn =3D 300; //300ms + MiscPeiPreMemConfig->SgDelayAfterOffMethod =3D 0; =20 + MiscPeiPreMemConfig->SgDelayAfterLinkEnable =3D 0; =20 + MiscPeiPreMemConfig->SgGenSpeedChangeEnable =3D 0; + + /// + /// Initialize the DataPtr for S3 resume /// =20 + MiscPeiPreMemConfig->S3DataPtr =3D NULL; + MiscPeiPreMemConfig->OpRomScanTempMmioBar =3D DEFAULT_OPTION_ROM_TE= MP_BAR; + MiscPeiPreMemConfig->OpRomScanTempMmioLimit =3D DEFAULT_OPTION_ROM_TE= MP_MEM_LIMIT; } =20 VOID -- 2.27.0.windows.1