From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by mx.groups.io with SMTP id smtpd.web12.2391.1572502267551980272 for ; Wed, 30 Oct 2019 23:11:07 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=Ej0Mbwal; spf=pass (domain: intel.com, ip: 134.134.136.126, mailfrom: michael.a.kubacki@intel.com) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga106.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 30 Oct 2019 23:11:06 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,250,1569308400"; d="scan'208";a="230734775" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by fmsmga002.fm.intel.com with ESMTP; 30 Oct 2019 23:11:06 -0700 Received: from FMSMSX110.amr.corp.intel.com (10.18.116.10) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.439.0; Wed, 30 Oct 2019 23:11:06 -0700 Received: from FMSEDG002.ED.cps.intel.com (10.1.192.134) by fmsmsx110.amr.corp.intel.com (10.18.116.10) with Microsoft SMTP Server (TLS) id 14.3.439.0; Wed, 30 Oct 2019 23:11:05 -0700 Received: from NAM05-DM3-obe.outbound.protection.outlook.com (104.47.49.59) by edgegateway.intel.com (192.55.55.69) with Microsoft SMTP Server (TLS) id 14.3.439.0; Wed, 30 Oct 2019 23:11:06 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Js8cWevTWJebgfwlSjnIpzmtzWyl8e2LNb/J0zPV2qCDXsJ45rC2WD0ZOpR9AHgDXy+lrHCIg+ZSphU2r2Xyuw/o2Ez7y7wdcvHFj365qyqLkeGWRUlxC0ancDlUh6DasJUlmekfDGoBOdx+8L1CxQ4izldwyAym4ePqAnZIFQnh0JDxZyOU3Epk7sBaw79X331k5KQ+t1iwVsQWdhTr/4OZut27S1INDaLP3ps5BLNoFz6uUgp4A7fAyouT6GilTozpiuP3AuZj6GzGFP/kMfT0bF85thi1AlvPlAKEji/hlYZDg6gNdjkIQDcXyjbJKKbTwrBWmVHHcf3d4sd4QQ== 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=ja7yIrgjuwWpgY3dL1Jv7nxB4E7cdoOHE8TzKgl9A8s=; b=kstm8fJ3xP/NFcPgtzRY51Ssn5o7stZdH0D+OdbMIwSy83RKn4uGBxOT90AkuvL/IRWsrdzJTxWq2vk6OioE6KLvZbJi7Utlwo+96ZvFcu/lfE/N1Gi1BkI0e1K7AJN+DQd2z5CSccVzPynqXTxsOE4jQ6QCT0JuJfqFXtNFLA8pl311DHGgGm33jONt8LMb36Nzeh3brfhZ8RRgzrdYZBj48DHEpF58jwEJI9HwduMEchFYv07VsOHFIl9GGzRaKIv1CqK9RoTDu9d5jJP4PjG9sM5tsNYAa2HaiBdzs7uHrl0yp19stAkIe4A4WGaBUCM3LXQlSwy9D2RDXjsrwA== 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=ja7yIrgjuwWpgY3dL1Jv7nxB4E7cdoOHE8TzKgl9A8s=; b=Ej0Mbwalbb2WuDnhrPpI+ABQP7utTiP2b9dDFIiau66GTd3Mx5AUwNjoTPwneZ7AwPEnUohdO0mMKxQ+jL5XtD9pCbrSF3hFCZ3DUGdubqFShLH/ChLLBUcf2/AYt9qrDQ2JybeY/HRxK7Y6+dZUtoTefJWKGpe/CGzQPmbRu7Y= Received: from BYAPR11MB3831.namprd11.prod.outlook.com (20.178.239.150) by BYAPR11MB3272.namprd11.prod.outlook.com (20.177.186.74) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2387.24; Thu, 31 Oct 2019 06:11:03 +0000 Received: from BYAPR11MB3831.namprd11.prod.outlook.com ([fe80::1d66:1307:6b66:a78f]) by BYAPR11MB3831.namprd11.prod.outlook.com ([fe80::1d66:1307:6b66:a78f%5]) with mapi id 15.20.2387.028; Thu, 31 Oct 2019 06:11:03 +0000 From: "Kubacki, Michael A" To: "Chiu, Chasel" , "devel@edk2.groups.io" CC: "Desimone, Nathaniel L" , "Gao, Liming" , Jeremy Soller Subject: Re: [edk2-platforms: PATCH v2 3/6] KabylakeOpenBoardPkg: Add SetCacheLib library class. Thread-Topic: [edk2-platforms: PATCH v2 3/6] KabylakeOpenBoardPkg: Add SetCacheLib library class. Thread-Index: AQHVj4J6p7LL4PY1P0G3Iaz9HQjXkad0Q44Q Date: Thu, 31 Oct 2019 06:11:03 +0000 Message-ID: References: <20191031002952.3860-1-chasel.chiu@intel.com> <20191031002952.3860-4-chasel.chiu@intel.com> In-Reply-To: <20191031002952.3860-4-chasel.chiu@intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows x-ctpclassification: CTP_NT x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiOTFiZjE1YzItYWM1Yy00NjBkLWFkZGMtZjdlNzI2YjIyMmYxIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiRmpqdWVDb3BWRjRnWm5TcCs0bU1mVk01azhVNU9WWjJRblR0SW04Uk8wVTRvcXI1bkRQQ21CekR0VjBEWFBTayJ9 dlp-reaction: no-action dlp-version: 11.2.0.6 authentication-results: spf=none (sender IP is ) smtp.mailfrom=michael.a.kubacki@intel.com; x-originating-ip: [134.134.136.217] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 83415462-b80f-4701-91fc-08d75dc91c0f x-ms-traffictypediagnostic: BYAPR11MB3272: x-ms-exchange-purlcount: 1 x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-forefront-prvs: 02070414A1 x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(346002)(366004)(396003)(376002)(136003)(39860400002)(199004)(189003)(13464003)(99286004)(186003)(71200400001)(2906002)(110136005)(26005)(102836004)(86362001)(2501003)(54906003)(71190400001)(229853002)(14454004)(53546011)(6506007)(74316002)(25786009)(52536014)(66066001)(64756008)(66556008)(476003)(446003)(19627235002)(6436002)(4326008)(30864003)(66476007)(66446008)(8676002)(14444005)(478600001)(33656002)(6246003)(316002)(55016002)(76176011)(7696005)(256004)(6116002)(6306002)(81166006)(3846002)(305945005)(11346002)(486006)(81156014)(5660300002)(8936002)(9686003)(66946007)(966005)(76116006)(7736002)(559001)(579004)(569006);DIR:OUT;SFP:1102;SCL:1;SRVR:BYAPR11MB3272;H:BYAPR11MB3831.namprd11.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: IjSPZ6qh8eKyfT6bgWPh0yxpeY5awba2BxwnyLQoFRR9phUdMIbFXyW3NhJ98vQ2hQlAz9LcJ4TOJ7nRfMeP7JjJ8wVtfJDMw+/iybi+wL7nasNxDKptAWe6m7XT6rdVKLMhjbM9vYjxix6hFNgrtZYpzhKm9neJu4k+r3prtlY6+nQHht2FBQfO18okO5fsNJVJn3o5wl5i7iRlSPhKJyVHw5fuOIxEgPqfxox/aV4GACCX7NjUTcgoE/MPR9XoeTuksd968NvQLzYCU2glz7G5IjwEFUx1TKQjP8hr0/RlZjl/rG/PXmSUu9mn+EZphCjEWr8IduijJeOcOHZFSzcSt+lSwkmNXtHJZREpsLzmev/J0XLc0V5muLejEo+IR+8EFYK4qBO3L6qSx5YIKTS2V7FYPFvdECFpD/atTE7nT5JTv4mzvqkCjI1OVOyajImv+SAVrRzflwasFbYGYhGX1O3rROFQoUzlHyWncJo= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: 83415462-b80f-4701-91fc-08d75dc91c0f X-MS-Exchange-CrossTenant-originalarrivaltime: 31 Oct 2019 06:11:03.5167 (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: JOM8fb8RHtxBcSelwm7/Iz2UCKt14fhvIKslasm52cv9WyW4+4tBZ9f8ICBEEmCnSdkxxDbvYDfMWuaI+pn3Fdl20K7lT4X/0d4RCwDS5GY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR11MB3272 Return-Path: michael.a.kubacki@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Reviewed-by: Michael Kubacki > -----Original Message----- > From: Chiu, Chasel > Sent: Wednesday, October 30, 2019 5:30 PM > To: devel@edk2.groups.io > Cc: Kubacki, Michael A ; Desimone, Nathaniel > L ; Gao, Liming ; > Jeremy Soller > Subject: [edk2-platforms: PATCH v2 3/6] KabylakeOpenBoardPkg: Add > SetCacheLib library class. >=20 > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D2314 >=20 > Kabylake boards are relying on FSP to configure MTRRs so they can include > SetCacheLibNull. >=20 > Test: internal platform can boot with FSP API and Dispatch modes. >=20 > Cc: Michael Kubacki > Cc: Nate DeSimone > Cc: Liming Gao > Cc: Jeremy Soller > Signed-off-by: Chasel Chiu > --- >=20 > Platform/Intel/KabylakeOpenBoardPkg/GalagoPro3/Override/Platform/Intel > /MinPlatformPkg/PlatformInit/PlatformInitPei/PlatformInitPreMem.c | 640 > -------------------------------------------------------------------------= --------------------- > -------------------------------------------------------------------------= --------------------- > -------------------------------------------------------------------------= --------------------- > -------------------------------------------------------------------------= --------------------- > -------------------------------------------------------------------------= --------------------- > -------------------------------------------------------------------------= --------------------- > -------------------------------------------------------------------------= --- > Platform/Intel/KabylakeOpenBoardPkg/GalagoPro3/OpenBoardPkg.dsc > | 3 ++- > Platform/Intel/KabylakeOpenBoardPkg/GalagoPro3/OpenBoardPkg.fdf > | 2 +- >=20 > Platform/Intel/KabylakeOpenBoardPkg/GalagoPro3/Override/Platform/Intel > /MinPlatformPkg/PlatformInit/PlatformInitPei/PlatformInitPreMem.inf | 67 > ------------------------------------------------------------------- > Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/OpenBoardPkg.dsc > | 1 + > 5 files changed, 4 insertions(+), 709 deletions(-) >=20 > diff --git > a/Platform/Intel/KabylakeOpenBoardPkg/GalagoPro3/Override/Platform/In > tel/MinPlatformPkg/PlatformInit/PlatformInitPei/PlatformInitPreMem.c > b/Platform/Intel/KabylakeOpenBoardPkg/GalagoPro3/Override/Platform/In > tel/MinPlatformPkg/PlatformInit/PlatformInitPei/PlatformInitPreMem.c > deleted file mode 100644 > index b784026c1b..0000000000 > --- > a/Platform/Intel/KabylakeOpenBoardPkg/GalagoPro3/Override/Platform/In > tel/MinPlatformPkg/PlatformInit/PlatformInitPei/PlatformInitPreMem.c > +++ /dev/null > @@ -1,640 +0,0 @@ > -/** @file > - Source code file for Platform Init Pre-Memory PEI module > - > -Copyright (c) 2019, Intel Corporation. All rights reserved.
> -SPDX-License-Identifier: BSD-2-Clause-Patent > - > -**/ > - > -#include > -#include > -#include > -#include > -#include > -#include > -#include > -#include > -#include > -#include > -#include > -#include > -#include > -#include > -#include > -#include > -#include > -#include > -#include > -#include > -#include -#include > -#include > - > -EFI_STATUS > -EFIAPI > -MemoryDiscoveredPpiNotifyCallback ( > - IN CONST EFI_PEI_SERVICES **PeiServices, > - IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor, > - IN VOID *Ppi > - ); > - > -EFI_STATUS > -EFIAPI > -GetPlatformMemorySize ( > - IN EFI_PEI_SERVICES **PeiServices, > - IN PEI_PLATFORM_MEMORY_SIZE_PPI *This, > - IN OUT UINT64 *MemorySize > - ); > - > -/** > - > - This function checks the memory range in PEI. > - > - @param PeiServices Pointer to PEI Services. > - @param This Pei memory test PPI pointer. > - @param BeginAddress Beginning of the memory address to be checked. > - @param MemoryLength Bytes of memory range to be checked. > - @param Operation Type of memory check operation to be performed. > - @param ErrorAddress Return the address of the error memory address. > - > - @retval EFI_SUCCESS The operation completed successfully. > - @retval EFI_DEVICE_ERROR Memory test failed. It's not safe to use t= his > range of memory. > - > -**/ > -EFI_STATUS > -EFIAPI > -BaseMemoryTest ( > - IN EFI_PEI_SERVICES **PeiServices, > - IN PEI_BASE_MEMORY_TEST_PPI *This, > - IN EFI_PHYSICAL_ADDRESS BeginAddress, > - IN UINT64 MemoryLength, > - IN PEI_MEMORY_TEST_OP Operation, > - OUT EFI_PHYSICAL_ADDRESS *ErrorAddress > - ); > - > -static EFI_PEI_NOTIFY_DESCRIPTOR mMemDiscoveredNotifyList =3D { > - (EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK | > EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST), > - &gEfiPeiMemoryDiscoveredPpiGuid, > - (EFI_PEIM_NOTIFY_ENTRY_POINT) MemoryDiscoveredPpiNotifyCallback - > }; > - > -GLOBAL_REMOVE_IF_UNREFERENCED EFI_PEI_PPI_DESCRIPTOR > mPpiListRecoveryBootMode =3D { > - (EFI_PEI_PPI_DESCRIPTOR_PPI | > EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST), > - &gEfiPeiBootInRecoveryModePpiGuid, > - NULL > -}; > - > -GLOBAL_REMOVE_IF_UNREFERENCED EFI_PEI_PPI_DESCRIPTOR > mPpiBootMode =3D { > - (EFI_PEI_PPI_DESCRIPTOR_PPI | > EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST), > - &gEfiPeiMasterBootModePpiGuid, > - NULL > -}; > - > -static PEI_BASE_MEMORY_TEST_PPI mPeiBaseMemoryTestPpi =3D { > BaseMemoryTest }; > - > -static PEI_PLATFORM_MEMORY_SIZE_PPI mMemoryMemorySizePpi =3D { > GetPlatformMemorySize }; > - > -static EFI_PEI_PPI_DESCRIPTOR mMemPpiList[] =3D { > - { > - EFI_PEI_PPI_DESCRIPTOR_PPI, > - &gPeiBaseMemoryTestPpiGuid, > - &mPeiBaseMemoryTestPpi > - }, > - { > - (EFI_PEI_PPI_DESCRIPTOR_PPI | > EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST), > - &gPeiPlatformMemorySizePpiGuid, > - &mMemoryMemorySizePpi > - }, > -}; > - > -/// > -/// Memory Reserved should be between 125% to 150% of the Current > required memory -/// otherwise BdsMisc.c would do a reset to make it 125% > to avoid s4 resume issues. > -/// > -GLOBAL_REMOVE_IF_UNREFERENCED EFI_MEMORY_TYPE_INFORMATION > mDefaultMemoryTypeInformation[] =3D { > - { EfiACPIReclaimMemory, FixedPcdGet32 > (PcdPlatformEfiAcpiReclaimMemorySize) }, // ASL > - { EfiACPIMemoryNVS, FixedPcdGet32 > (PcdPlatformEfiAcpiNvsMemorySize) }, // ACPI NVS (including S3 relat= ed) > - { EfiReservedMemoryType, FixedPcdGet32 > (PcdPlatformEfiReservedMemorySize) }, // BIOS Reserved (including S3 > related) > - { EfiRuntimeServicesData, FixedPcdGet32 > (PcdPlatformEfiRtDataMemorySize) }, // Runtime Service Data > - { EfiRuntimeServicesCode, FixedPcdGet32 > (PcdPlatformEfiRtCodeMemorySize) }, // Runtime Service Code > - { EfiMaxMemoryType, 0 } > -}; > - > -VOID > -BuildMemoryTypeInformation ( > - VOID > - ) > -{ > - EFI_STATUS Status; > - EFI_PEI_READ_ONLY_VARIABLE2_PPI *VariableServices; > - UINTN DataSize; > - EFI_MEMORY_TYPE_INFORMATION MemoryData[EfiMaxMemoryType + > 1]; > - > - // > - // Locate system configuration variable > - // > - Status =3D PeiServicesLocatePpi( > - &gEfiPeiReadOnlyVariable2PpiGuid, // GUID > - 0, // INSTANCE > - NULL, // EFI_PEI_PPI_DESCRIPTOR > - (VOID **) &VariableServices // PPI > - ); > - ASSERT_EFI_ERROR(Status); > - > - DataSize =3D sizeof (MemoryData); > - Status =3D VariableServices->GetVariable ( > - VariableServices, > - EFI_MEMORY_TYPE_INFORMATION_VARIABLE_NAME= , > - &gEfiMemoryTypeInformationGuid, > - NULL, > - &DataSize, > - &MemoryData > - ); > - if (EFI_ERROR(Status)) { > - DataSize =3D sizeof (mDefaultMemoryTypeInformation); > - CopyMem(MemoryData, mDefaultMemoryTypeInformation, DataSize); > - } > - > - /// > - /// Build the GUID'd HOB for DXE > - /// > - BuildGuidDataHob ( > - &gEfiMemoryTypeInformationGuid, > - MemoryData, > - DataSize > - ); > -} > - > -EFI_STATUS > -EFIAPI > -GetPlatformMemorySize ( > - IN EFI_PEI_SERVICES **PeiServices, > - IN PEI_PLATFORM_MEMORY_SIZE_PPI *This, > - IN OUT UINT64 *MemorySize > - ) > -{ > - EFI_STATUS Status; > - EFI_PEI_READ_ONLY_VARIABLE2_PPI *Variable; > - UINTN DataSize; > - EFI_MEMORY_TYPE_INFORMATION MemoryData[EfiMaxMemoryType + > 1]; > - UINTN Index; > - EFI_BOOT_MODE BootMode; > - UINTN IndexNumber; > - > -#define PEI_MIN_MEMORY_SIZE (EFI_PHYSICAL_ADDRESS) ((320 * > 0x100000)) > - > - *MemorySize =3D PEI_MIN_MEMORY_SIZE; > - Status =3D PeiServicesLocatePpi ( > - &gEfiPeiReadOnlyVariable2PpiGuid, > - 0, > - NULL, > - (VOID **)&Variable > - ); > - > - ASSERT_EFI_ERROR (Status); > - > - Status =3D PeiServicesGetBootMode (&BootMode); > - ASSERT_EFI_ERROR (Status); > - > - DataSize =3D sizeof (MemoryData); > - > - Status =3D Variable->GetVariable ( > - Variable, > - EFI_MEMORY_TYPE_INFORMATION_VARIABLE_NAME, > - &gEfiMemoryTypeInformationGuid, > - NULL, > - &DataSize, > - &MemoryData > - ); > - IndexNumber =3D sizeof (mDefaultMemoryTypeInformation) / sizeof > (EFI_MEMORY_TYPE_INFORMATION); > - > - // > - // Accumulate maximum amount of memory needed > - // > - > - DEBUG((DEBUG_ERROR, "PEI_MIN_MEMORY_SIZE:%dKB \n", > DivU64x32(*MemorySize,1024))); > - DEBUG((DEBUG_ERROR, "IndexNumber:%d MemoryDataNumber%d \n", > IndexNumber,DataSize/ sizeof (EFI_MEMORY_TYPE_INFORMATION))); > - if (EFI_ERROR (Status)) { > - // > - // Start with minimum memory > - // > - for (Index =3D 0; Index < IndexNumber; Index++) { > - DEBUG((DEBUG_ERROR, "Index[%d].Type =3D %d > .NumberOfPages=3D0x%x\n", > Index,mDefaultMemoryTypeInformation[Index].Type,mDefaultMemoryTyp > eInformation[Index].NumberOfPages)); > - *MemorySize +=3D > mDefaultMemoryTypeInformation[Index].NumberOfPages * > EFI_PAGE_SIZE; > - } > - DEBUG((DEBUG_ERROR, "No memory type, Total platform > memory:%dKB \n", DivU64x32(*MemorySize,1024))); > - } else { > - // > - // Start with at least 0x200 pages of memory for the DXE Core and th= e DXE > Stack > - // > - for (Index =3D 0; Index < IndexNumber; Index++) { > - DEBUG((DEBUG_ERROR, "Index[%d].Type =3D %d > .NumberOfPages=3D0x%x\n", > Index,MemoryData[Index].Type,MemoryData[Index].NumberOfPages)); > - *MemorySize +=3D MemoryData[Index].NumberOfPages * > EFI_PAGE_SIZE; > - > - } > - DEBUG((DEBUG_ERROR, "has memory type, Total platform > memory:%dKB \n", DivU64x32(*MemorySize,1024))); > - } > - > - return EFI_SUCCESS; > -} > - > -/** > - > - This function checks the memory range in PEI. > - > - @param PeiServices Pointer to PEI Services. > - @param This Pei memory test PPI pointer. > - @param BeginAddress Beginning of the memory address to be checked. > - @param MemoryLength Bytes of memory range to be checked. > - @param Operation Type of memory check operation to be performed. > - @param ErrorAddress Return the address of the error memory address. > - > - @retval EFI_SUCCESS The operation completed successfully. > - @retval EFI_DEVICE_ERROR Memory test failed. It's not safe to use t= his > range of memory. > - > -**/ > -EFI_STATUS > -EFIAPI > -BaseMemoryTest ( > - IN EFI_PEI_SERVICES **PeiServices, > - IN PEI_BASE_MEMORY_TEST_PPI *This, > - IN EFI_PHYSICAL_ADDRESS BeginAddress, > - IN UINT64 MemoryLength, > - IN PEI_MEMORY_TEST_OP Operation, > - OUT EFI_PHYSICAL_ADDRESS *ErrorAddress > - ) > -{ > - UINT32 TestPattern; > - UINT32 SpanSize; > - EFI_PHYSICAL_ADDRESS TempAddress; > - > -#define MEMORY_TEST_PATTERN 0x5A5A5A5A > -#define MEMORY_TEST_COVER_SPAN 0x40000 > - > - TestPattern =3D MEMORY_TEST_PATTERN; > - SpanSize =3D 0; > - > - // > - // Make sure we don't try and test anything above the max physical > address range > - // > - ASSERT (BeginAddress + MemoryLength < MAX_ADDRESS); > - > - switch (Operation) { > - case Extensive: > - SpanSize =3D 0x4; > - break; > - > - case Sparse: > - case Quick: > - SpanSize =3D MEMORY_TEST_COVER_SPAN; > - break; > - > - case Ignore: > - goto Done; > - break; > - } > - // > - // Write the test pattern into memory range > - // > - TempAddress =3D BeginAddress; > - while (TempAddress < BeginAddress + MemoryLength) { > - (*(UINT32 *) (UINTN) TempAddress) =3D TestPattern; > - TempAddress +=3D SpanSize; > - } > - // > - // Read pattern from memory and compare it > - // > - TempAddress =3D BeginAddress; > - while (TempAddress < BeginAddress + MemoryLength) { > - if ((*(UINT32 *) (UINTN) TempAddress) !=3D TestPattern) { > - *ErrorAddress =3D TempAddress; > - return EFI_DEVICE_ERROR; > - } > - > - TempAddress +=3D SpanSize; > - } > - > -Done: > - > - return EFI_SUCCESS; > -} > - > -/** > - Set Cache Mtrr. > -**/ > -VOID > -SetCacheMtrr ( > - VOID > - ) > -{ > - EFI_STATUS Status; > - EFI_PEI_HOB_POINTERS Hob; > - MTRR_SETTINGS MtrrSetting; > - UINT64 MemoryBase; > - UINT64 MemoryLength; > - UINT64 LowMemoryLength; > - UINT64 HighMemoryLength; > - EFI_BOOT_MODE BootMode; > - EFI_RESOURCE_ATTRIBUTE_TYPE ResourceAttribute; > - UINT64 CacheMemoryLength; > - > - /// > - /// Reset all MTRR setting. > - /// > - ZeroMem(&MtrrSetting, sizeof(MTRR_SETTINGS)); > - > - /// > - /// Cache the Flash area as WP to boost performance > - /// > - Status =3D MtrrSetMemoryAttributeInMtrrSettings ( > - &MtrrSetting, > - (UINTN) PcdGet32 (PcdFlashAreaBaseAddress), > - (UINTN) PcdGet32 (PcdFlashAreaSize), > - CacheWriteProtected > - ); > - ASSERT_EFI_ERROR (Status); > - > - /// > - /// Update MTRR setting from MTRR buffer for Flash Region to be WP to > boost performance > - /// > - MtrrSetAllMtrrs (&MtrrSetting); > - > - /// > - /// Set low to 1 MB. Since 1MB cacheability will always be set > - /// until override by CSM. > - /// Initialize high memory to 0. > - /// > - LowMemoryLength =3D 0x100000; > - HighMemoryLength =3D 0; > - ResourceAttribute =3D ( > - EFI_RESOURCE_ATTRIBUTE_PRESENT | > - EFI_RESOURCE_ATTRIBUTE_INITIALIZED | > - EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE | > - EFI_RESOURCE_ATTRIBUTE_WRITE_COMBINEABLE | > - EFI_RESOURCE_ATTRIBUTE_WRITE_THROUGH_CACHEABLE | > - EFI_RESOURCE_ATTRIBUTE_WRITE_BACK_CACHEABLE > - ); > - > - Status =3D PeiServicesGetBootMode (&BootMode); > - ASSERT_EFI_ERROR (Status); > - > - if (BootMode !=3D BOOT_ON_S3_RESUME) { > - ResourceAttribute |=3D EFI_RESOURCE_ATTRIBUTE_TESTED; > - } > - > - Status =3D PeiServicesGetHobList ((VOID **) &Hob.Raw); > - while (!END_OF_HOB_LIST (Hob)) { > - if (Hob.Header->HobType =3D=3D EFI_HOB_TYPE_RESOURCE_DESCRIPTOR) { > - if ((Hob.ResourceDescriptor->ResourceType =3D=3D > EFI_RESOURCE_SYSTEM_MEMORY) || > - ((Hob.ResourceDescriptor->ResourceType =3D=3D > EFI_RESOURCE_MEMORY_RESERVED) && > - (Hob.ResourceDescriptor->ResourceAttribute =3D=3D ResourceAtt= ribute)) > - ) { > - if (Hob.ResourceDescriptor->PhysicalStart >=3D 0x100000000ULL) { > - HighMemoryLength +=3D Hob.ResourceDescriptor->ResourceLength; > - } else if (Hob.ResourceDescriptor->PhysicalStart >=3D 0x100000) = { > - LowMemoryLength +=3D Hob.ResourceDescriptor->ResourceLength; > - } > - } > - } > - > - Hob.Raw =3D GET_NEXT_HOB (Hob); > - } > - > - DEBUG ((DEBUG_INFO, "Memory Length (Below 4GB) =3D %lx.\n", > LowMemoryLength)); > - DEBUG ((DEBUG_INFO, "Memory Length (Above 4GB) =3D %lx.\n", > HighMemoryLength)); > - > - /// > - /// Assume size of main memory is multiple of 256MB > - /// > - MemoryLength =3D (LowMemoryLength + 0xFFFFFFF) & 0xF0000000; > - MemoryBase =3D 0; > - > - CacheMemoryLength =3D MemoryLength; > - /// > - /// Programming MTRRs to avoid override SPI region with UC when MAX > TOLUD Length >=3D 3.5GB > - /// > - if (MemoryLength > 0xDC000000) { > - CacheMemoryLength =3D 0xC0000000; > - Status =3D MtrrSetMemoryAttributeInMtrrSettings ( > - &MtrrSetting, > - MemoryBase, > - CacheMemoryLength, > - CacheWriteBack > - ); > - ASSERT_EFI_ERROR (Status); > - > - MemoryBase =3D 0xC0000000; > - CacheMemoryLength =3D MemoryLength - 0xC0000000; > - if (MemoryLength > 0xE0000000) { > - CacheMemoryLength =3D 0x20000000; > - Status =3D MtrrSetMemoryAttributeInMtrrSettings ( > - &MtrrSetting, > - MemoryBase, > - CacheMemoryLength, > - CacheWriteBack > - ); > - ASSERT_EFI_ERROR (Status); > - > - MemoryBase =3D 0xE0000000; > - CacheMemoryLength =3D MemoryLength - 0xE0000000; > - } > - } > - > - Status =3D MtrrSetMemoryAttributeInMtrrSettings ( > - &MtrrSetting, > - MemoryBase, > - CacheMemoryLength, > - CacheWriteBack > - ); > - ASSERT_EFI_ERROR (Status); > - > - if (LowMemoryLength !=3D MemoryLength) { > - MemoryBase =3D LowMemoryLength; > - MemoryLength -=3D LowMemoryLength; > - Status =3D MtrrSetMemoryAttributeInMtrrSettings ( > - &MtrrSetting, > - MemoryBase, > - MemoryLength, > - CacheUncacheable > - ); > - ASSERT_EFI_ERROR (Status); > - } > - > - /// > - /// VGA-MMIO - 0xA0000 to 0xC0000 to be UC > - /// > - Status =3D MtrrSetMemoryAttributeInMtrrSettings ( > - &MtrrSetting, > - 0xA0000, > - 0x20000, > - CacheUncacheable > - ); > - ASSERT_EFI_ERROR (Status); > - > - /// > - /// Update MTRR setting from MTRR buffer > - /// > - MtrrSetAllMtrrs (&MtrrSetting); > - > - return ; > -} > - > -VOID > -ReportCpuHob ( > - VOID > - ) > -{ > - UINT8 PhysicalAddressBits; > - UINT32 RegEax; > - > - AsmCpuid (0x80000000, &RegEax, NULL, NULL, NULL); > - if (RegEax >=3D 0x80000008) { > - AsmCpuid (0x80000008, &RegEax, NULL, NULL, NULL); > - PhysicalAddressBits =3D (UINT8) RegEax; > - } else { > - PhysicalAddressBits =3D 36; > - } > - > - /// > - /// Create a CPU hand-off information > - /// > - BuildCpuHob (PhysicalAddressBits, 16); -} > - > -/** > - Install Firmware Volume Hob's once there is main memory > - > - @param[in] PeiServices General purpose services available to ev= ery > PEIM. > - @param[in] NotifyDescriptor Notify that this module published. > - @param[in] Ppi PPI that was installed. > - > - @retval EFI_SUCCESS The function completed successfully. > -**/ > -EFI_STATUS > -EFIAPI > -MemoryDiscoveredPpiNotifyCallback ( > - IN CONST EFI_PEI_SERVICES **PeiServices, > - IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor, > - IN VOID *Ppi > - ) > -{ > - EFI_STATUS Status; > - EFI_BOOT_MODE BootMode; > - > - Status =3D BoardInitAfterMemoryInit (); > - ASSERT_EFI_ERROR (Status); > - > - Status =3D PeiServicesGetBootMode (&BootMode); > - ASSERT_EFI_ERROR (Status); > - > - > - ReportCpuHob (); > - > - TestPointMemoryDiscoveredMtrrFunctional (); > - > - TestPointMemoryDiscoveredMemoryResourceFunctional (); > - > - /// > - /// If S3 resume, then we are done > - /// > - if (BootMode =3D=3D BOOT_ON_S3_RESUME) { > - return EFI_SUCCESS; > - } > - > - TestPointMemoryDiscoveredDmaProtectionEnabled (); > - > - if (PcdGetBool (PcdStopAfterMemInit)) { > - CpuDeadLoop (); > - } > - > - return Status; > -} > - > - > -/** > - This function handles PlatformInit task after PeiReadOnlyVariable2 PPI > produced > - > - @param[in] PeiServices Pointer to PEI Services Table. > - > - @retval EFI_SUCCESS The function completes successfully > - @retval others > -**/ > -EFI_STATUS > -EFIAPI > -PlatformInitPreMem ( > - IN CONST EFI_PEI_SERVICES **PeiServices > - ) > -{ > - EFI_STATUS Status; > - EFI_BOOT_MODE BootMode; > - > - // > - // Start board detection > - // > - BoardDetect (); > - > - BoardDebugInit (); > - > - TestPointDebugInitDone (); > - > - if (PcdGetBool (PcdStopAfterDebugInit)) { > - CpuDeadLoop (); > - } > - > - BootMode =3D BoardBootModeDetect (); > - Status =3D PeiServicesSetBootMode (BootMode); > - ASSERT_EFI_ERROR (Status); > - if (BootMode =3D=3D BOOT_IN_RECOVERY_MODE) { > - Status =3D PeiServicesInstallPpi (&mPpiListRecoveryBootMode); > - } > - /// > - /// Signal possible dependent modules that there has been a > - /// final boot mode determination, it is used to build BIST > - /// Hob for Dxe use. > - /// > - Status =3D PeiServicesInstallPpi (&mPpiBootMode); > - ASSERT_EFI_ERROR (Status); > - > - BuildMemoryTypeInformation (); > - > - if (!PcdGetBool(PcdFspWrapperBootMode)) { > - Status =3D PeiServicesInstallPpi (mMemPpiList); > - ASSERT_EFI_ERROR (Status); > - } > - > - Status =3D BoardInitBeforeMemoryInit (); > - ASSERT_EFI_ERROR (Status); > - > - return Status; > -} > - > - > -/** > - Platform Init before memory PEI module entry point > - > - @param[in] FileHandle Not used. > - @param[in] PeiServices General purpose services available to= every > PEIM. > - > - @retval EFI_SUCCESS The function completes successfully > - @retval EFI_OUT_OF_RESOURCES Insufficient resources to create > database > -**/ > -EFI_STATUS > -EFIAPI > -PlatformInitPreMemEntryPoint ( > - IN EFI_PEI_FILE_HANDLE FileHandle, > - IN CONST EFI_PEI_SERVICES **PeiServices > - ) > -{ > - EFI_STATUS Status; > - > - Status =3D PlatformInitPreMem (PeiServices); > - > - /// > - /// After code reorangized, memorycallback will run because the PPI is > already > - /// installed when code run to here, it is supposed that the > InstallEfiMemory is > - /// done before. > - /// > - Status =3D PeiServicesNotifyPpi (&mMemDiscoveredNotifyList); > - > - return Status; > -} > diff --git > a/Platform/Intel/KabylakeOpenBoardPkg/GalagoPro3/OpenBoardPkg.dsc > b/Platform/Intel/KabylakeOpenBoardPkg/GalagoPro3/OpenBoardPkg.dsc > index f59248bba4..d1384d9773 100644 > --- a/Platform/Intel/KabylakeOpenBoardPkg/GalagoPro3/OpenBoardPkg.dsc > +++ > b/Platform/Intel/KabylakeOpenBoardPkg/GalagoPro3/OpenBoardPkg.dsc > @@ -159,6 +159,7 @@ > ####################################### >=20 > DebugLib|MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode/PeiDx > eDebugLibReportStatusCode.inf >=20 > SerialPortLib|MdePkg/Library/BaseSerialPortLibNull/BaseSerialPortLibNull.= in > f > + > + > SetCacheLib|$(PLATFORM_PACKAGE)/Library/SetCacheLib/SetCacheLibNull. > in > + f >=20 > ####################################### > # Platform Package > @@ -260,7 +261,7 @@ > # Platform Package > ####################################### > $(PLATFORM_PACKAGE)/PlatformInit/ReportFv/ReportFvPei.inf > - > $(PROJECT)/Override/Platform/Intel/MinPlatformPkg/PlatformInit/PlatformI > nitPei/PlatformInitPreMem.inf { > + > + > $(PLATFORM_PACKAGE)/PlatformInit/PlatformInitPei/PlatformInitPreMem.i > n > + f { > > !if gKabylakeOpenBoardPkgTokenSpaceGuid.PcdMultiBoardSupport =3D= =3D > FALSE >=20 > BoardInitLib|$(PROJECT)/Library/BoardInitLib/PeiBoardInitPreMemLib.inf > diff --git > a/Platform/Intel/KabylakeOpenBoardPkg/GalagoPro3/OpenBoardPkg.fdf > b/Platform/Intel/KabylakeOpenBoardPkg/GalagoPro3/OpenBoardPkg.fdf > index 80efab1aad..6827019c25 100644 > --- a/Platform/Intel/KabylakeOpenBoardPkg/GalagoPro3/OpenBoardPkg.fdf > +++ > b/Platform/Intel/KabylakeOpenBoardPkg/GalagoPro3/OpenBoardPkg.fdf > @@ -237,7 +237,7 @@ INF MdeModulePkg/Core/Pei/PeiMain.inf !include > $(PLATFORM_PACKAGE)/Include/Fdf/CorePreMemoryInclude.fdf >=20 > INF $(PLATFORM_PACKAGE)/PlatformInit/ReportFv/ReportFvPei.inf > -INF > $(PROJECT)/Override/Platform/Intel/MinPlatformPkg/PlatformInit/PlatformI > nitPei/PlatformInitPreMem.inf > +INF > +$(PLATFORM_PACKAGE)/PlatformInit/PlatformInitPei/PlatformInitPreMem > .inf > INF IntelFsp2WrapperPkg/FspmWrapperPeim/FspmWrapperPeim.inf > INF > $(PLATFORM_PACKAGE)/PlatformInit/SiliconPolicyPei/SiliconPolicyPeiPreMe > m.inf > INF $(PLATFORM_BOARD_PACKAGE)/BiosInfo/BiosInfo.inf > diff --git > a/Platform/Intel/KabylakeOpenBoardPkg/GalagoPro3/Override/Platform/In > tel/MinPlatformPkg/PlatformInit/PlatformInitPei/PlatformInitPreMem.inf > b/Platform/Intel/KabylakeOpenBoardPkg/GalagoPro3/Override/Platform/In > tel/MinPlatformPkg/PlatformInit/PlatformInitPei/PlatformInitPreMem.inf > deleted file mode 100644 > index 76dd67d1a8..0000000000 > --- > a/Platform/Intel/KabylakeOpenBoardPkg/GalagoPro3/Override/Platform/In > tel/MinPlatformPkg/PlatformInit/PlatformInitPei/PlatformInitPreMem.inf > +++ /dev/null > @@ -1,67 +0,0 @@ > -### @file > -# Component information file for the Platform Init Pre-Memory PEI module= . > -# > -# Copyright (c) 2019, Intel Corporation. All rights reserved.
-# -# = SPDX- > License-Identifier: BSD-2-Clause-Patent -# -### > - > -[Defines] > - INF_VERSION =3D 0x00010017 > - BASE_NAME =3D PlatformInitPreMem > - FILE_GUID =3D EEEE611D-F78F-4FB9-B868-55907F16928= 0 > - VERSION_STRING =3D 1.0 > - MODULE_TYPE =3D PEIM > - ENTRY_POINT =3D PlatformInitPreMemEntryPoint > - > -[LibraryClasses] > - BaseMemoryLib > - BoardInitLib > - DebugLib > - HobLib > - IoLib > - MemoryAllocationLib > - MtrrLib > - PeimEntryPoint > - PeiServicesLib > - ReportFvLib > - TestPointCheckLib > - TimerLib > - > -[Packages] > - MinPlatformPkg/MinPlatformPkg.dec > - MdeModulePkg/MdeModulePkg.dec > - MdePkg/MdePkg.dec > - UefiCpuPkg/UefiCpuPkg.dec > - > -[Pcd] > - gMinPlatformPkgTokenSpaceGuid.PcdFspWrapperBootMode ## > CONSUMES > - gMinPlatformPkgTokenSpaceGuid.PcdFlashAreaBaseAddress ## > CONSUMES > - gMinPlatformPkgTokenSpaceGuid.PcdFlashAreaSize ## CONSUM= ES > - gMinPlatformPkgTokenSpaceGuid.PcdStopAfterDebugInit ## > CONSUMES > - gMinPlatformPkgTokenSpaceGuid.PcdStopAfterMemInit ## > CONSUMES > - > -[FixedPcd] > - gMinPlatformPkgTokenSpaceGuid.PcdPlatformEfiAcpiReclaimMemorySize > ## CONSUMES > - gMinPlatformPkgTokenSpaceGuid.PcdPlatformEfiAcpiNvsMemorySize > ## CONSUMES > - gMinPlatformPkgTokenSpaceGuid.PcdPlatformEfiReservedMemorySize > ## CONSUMES > - gMinPlatformPkgTokenSpaceGuid.PcdPlatformEfiRtDataMemorySize ## > CONSUMES > - gMinPlatformPkgTokenSpaceGuid.PcdPlatformEfiRtCodeMemorySize > ## CONSUMES > - > -[Sources] > - PlatformInitPreMem.c > - > -[Ppis] > - gEfiPeiMemoryDiscoveredPpiGuid > - gEfiPeiMasterBootModePpiGuid ## PRODUCES > - gEfiPeiBootInRecoveryModePpiGuid ## PRODUCES > - gEfiPeiReadOnlyVariable2PpiGuid > - gPeiBaseMemoryTestPpiGuid > - gPeiPlatformMemorySizePpiGuid > - > -[Guids] > - gEfiMemoryTypeInformationGuid > - > -[Depex] > - gEfiPeiReadOnlyVariable2PpiGuid > diff --git > a/Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/OpenBoardPkg.dsc > b/Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/OpenBoardPkg.dsc > index 7e65eeda6f..6df8008215 100644 > --- > a/Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/OpenBoardPkg.dsc > +++ > b/Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/OpenBoardPkg.dsc > @@ -208,6 +208,7 @@ > !if $(TARGET) =3D=3D DEBUG >=20 > TestPointCheckLib|$(PLATFORM_PACKAGE)/Test/Library/TestPointCheckLib > /PeiTestPointCheckLib.inf > !endif > + > + > SetCacheLib|$(PLATFORM_PACKAGE)/Library/SetCacheLib/SetCacheLibNull. > in > + f >=20 > ####################################### > # Board Package > -- > 2.13.3.windows.1