From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (NAM11-CO1-obe.outbound.protection.outlook.com []) by mx.groups.io with SMTP id smtpd.web10.4137.1607505882100027011 for ; Wed, 09 Dec 2020 01:24:42 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@os.amperecomputing.com header.s=selector2 header.b=YdBy0/rj; spf=fail (domain: os.amperecomputing.com, ip: , mailfrom: nhi@os.amperecomputing.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=B67RyboBwJSqwyC8gwenXqJgkETJJrkrJ62Gfkgk6I/ODpYAbAM42r+QjzTm4+Mmqr0pzvfXM3neT4Ji3ZAYl5OzCLlb11EHkobT7kNSRkMeJQysAoGx9j1OLtUrS4UoMXNSeIf3HCUVhkgzlkQ4kKh415h+eFX9zL1nh1xLGVoTfgCoXMbgyQY01kDc/8uzEMQjC9UCVEprfz6i5FmfFOqQukwhybZ8rKbHqiti20xZq6xWSZFtK3i1sJgtGTdXD0WKAFHs7nAjVXy+2pvxVVysX/Z44ASua1BgwcCSoZKpkDweRkZBhUtPRFvIDlXXdkT65sp9hW4nBRcV7rhqCw== 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=wFLMRWbg2HDLvknWyO53Ud6rAAdBDtqsBMuhaqyYzoM=; b=SUg4g3rxVLoMlRDU88giGBMWct7/bAfSdoBYIWDnXtk7zIaeykPCJC2AEnFR67HrMdiBCd1L7bidjy+LwikGLdOZXs8jkPDCd1wkZtuQ8z/1xuxXuUg/DYFN5rDYpueg2Jr9i1euPeqwbXKr5LjlaE4YCorCUyMk2rlxRVM50NyDQxAF8OZIvL/mdZVOFAu3jGGsYKyUIAIfXngASW6N68Vn6ajdjRHw+NNRsqaxCAI1VJDOMt2aUgvf41LhHCh/+rLQ5EmHoljDSZfN3r/hve+pJZ9yE6mb6EsIUbgCckIjOMfiJE9G637YLqIdgoUN/iUJXBOHKuLxIwqoNSpHqQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=os.amperecomputing.com; dmarc=pass action=none header.from=os.amperecomputing.com; dkim=pass header.d=os.amperecomputing.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=os.amperecomputing.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=wFLMRWbg2HDLvknWyO53Ud6rAAdBDtqsBMuhaqyYzoM=; b=YdBy0/rjea94yYXz5VV/2BMVad60eDRJ9VqSZfuGCBdxKVhuOL1drJ9yKplXHtNsX6gNRVKTgLdqF9SY2Ep0KDYPJucoo47Vh1M52vw/6f5jJbXBLdCst9O/anvT1l88vS5guckiGSxKygGLRD5FCWFBa34wHvzZ9aUMNDFL42s= Authentication-Results: edk2.groups.io; dkim=none (message not signed) header.d=none;edk2.groups.io; dmarc=none action=none header.from=os.amperecomputing.com; Received: from DM6PR01MB5849.prod.exchangelabs.com (2603:10b6:5:205::20) by DM6PR01MB5609.prod.exchangelabs.com (2603:10b6:5:157::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3632.21; Wed, 9 Dec 2020 09:24:41 +0000 Received: from DM6PR01MB5849.prod.exchangelabs.com ([fe80::c814:9a08:5c2e:4076]) by DM6PR01MB5849.prod.exchangelabs.com ([fe80::c814:9a08:5c2e:4076%5]) with mapi id 15.20.3632.023; Wed, 9 Dec 2020 09:24:41 +0000 From: "Nhi Pham" To: devel@edk2.groups.io Cc: Vu Nguyen Subject: [edk2-platforms][PATCH 20/34] AmpereAltraPkg: Add DebugInfoPei module Date: Wed, 9 Dec 2020 16:25:17 +0700 Message-Id: <20201209092531.30867-21-nhi@os.amperecomputing.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201209092531.30867-1-nhi@os.amperecomputing.com> References: <20201209092531.30867-1-nhi@os.amperecomputing.com> X-Originating-IP: [118.69.219.201] X-ClientProxiedBy: HK0PR01CA0054.apcprd01.prod.exchangelabs.com (2603:1096:203:a6::18) To DM6PR01MB5849.prod.exchangelabs.com (2603:10b6:5:205::20) Return-Path: nhi@os.amperecomputing.com MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from sw004.amperecomputing.com (118.69.219.201) by HK0PR01CA0054.apcprd01.prod.exchangelabs.com (2603:1096:203:a6::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3654.12 via Frontend Transport; Wed, 9 Dec 2020 09:24:40 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 0f1a7ec2-90d6-42f9-e43f-08d89c244207 X-MS-TrafficTypeDiagnostic: DM6PR01MB5609: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1850; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: HizxXIytmHQIfO0leAiMr9z+0R3Braj/v5Gc+N5Gs9GdW7Opwpy1kiN/y7bN5lzAj4pVSONSrUnEYJJ2QNReK0PhYpjmPT7xarWIAKm3liKPoNg09ew3vXW3Jsa3Pdm6oRA++2aQBkIMmRo0/0JBH4ERVdlMyeBe5rE/c37tlGaCy/SKVM4J5aZPpaYmaqeXzHn+xS9q4b5/uNnguf2eNI19FJQUWPFpJUWjX5nGLsIkgRXS91wmsdqgAU/1rag/xsorXqGJrXTCh2KVlgX13jDbgyz8Sw3PSKaM4sCDTgJ9cLYTPkqhoTvAHj4TUmljEKHyVxbwiWtTQ8gUc6PoNe2IZIMIGqPlkwowXgwuEoagHOVHfMemMK5itENVzMaS X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR01MB5849.prod.exchangelabs.com;PTR:;CAT:NONE;SFS:(4636009)(376002)(136003)(346002)(366004)(5660300002)(956004)(508600001)(52116002)(66946007)(6916009)(2616005)(1076003)(19627235002)(86362001)(6512007)(66476007)(26005)(8936002)(16526019)(107886003)(6666004)(186003)(6486002)(8676002)(6506007)(83380400001)(2906002)(34490700003)(66556008)(4326008);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?2BFW/cKNzbqKuiMnw5J4s3ornR8RvN83e1KmgL9xOu/DnmS2iT+xuhZVoudt?= =?us-ascii?Q?xF+MlCwSHMEi2nJnxvRR2v4x8EKgxlAmDn7Ke1KgYiJgguupaI8LAvzqS+pR?= =?us-ascii?Q?h4bK/rLuJ3ARxdNNg63o6Sp0VXPBfqkPzSTiON9zffZxHWQaA7GRmbW4TlTh?= =?us-ascii?Q?UwNtgD7eFRL+fqGvgPN5SEgz/wkGiw+V00rEBpY5xjrYb7aJlTN7RaaBk4vh?= =?us-ascii?Q?vSlU3sYqHLeghjzKlYP8IPnu9pEn7toEZHKg+yJe+vkjcIP6ePGDhiH3XvoY?= =?us-ascii?Q?9g6VVirq7TW5RL30cAYfadoLk6DgtXZpIncqo2LTfJGtjZBap8R4g2+5DcJ5?= =?us-ascii?Q?wqbQbyxwdDF7o5h1uhMam/jbOZR1WXZTy3x/dSzgqATE6ysO/mao7dt6oJ0j?= =?us-ascii?Q?Vu1THAlkDCFuI9YjY2sypUp1/MFIo1nnDlG5YNROz7YtTvH64m13P8eluKx6?= =?us-ascii?Q?xKykqPMhYFBQ0cu6jr8koxWtigLM14TLsAvFWiqmSqtc7Q24tIKN33o4zD+O?= =?us-ascii?Q?Tys1XN4/+9eV0NDWUMShfovVprh1l0eChH4CzylA6hgBX0kr/HNBJ1mNCfjI?= =?us-ascii?Q?sbmUw2L5Nu+0w4SecfoQUvlXvLZ/MCCnu257XTKtKKhmbG4tynUGDckDkmIE?= =?us-ascii?Q?cVi8876zuT+nh+oQk/oY+uljWgJ9dJekMsOfN45Jkb7wxHAYjQuhnkTeJhpF?= =?us-ascii?Q?J1SDgbmrbeY3JyMDrWxtkgLf8XDjsBI4UHt9GQwyUKSybucd2lENnbKSCTC4?= =?us-ascii?Q?aYHcgCtEXkJmoPf6gAsaS7yNZviEHS0XMwglBHTsawrUflDw2DKaXd5XESzW?= =?us-ascii?Q?R5odpL16mZr+8SVIRY7CQoO026n0thAcergCClVUEeBvk1/qr0g+/ZFLZD+h?= =?us-ascii?Q?R33DqJ+JpBlUL8CMGIhINK1yxG+fUhN6w55f/3KmSyITLrIqRJBr7k7soP2L?= =?us-ascii?Q?3cOBXPa04ylz81IEO9s4t6Scwe5yAacQ0tP+8P/0C3EkI4wr2BP97bzPdFq9?= =?us-ascii?Q?xKxk?= X-OriginatorOrg: os.amperecomputing.com X-MS-Exchange-CrossTenant-AuthSource: DM6PR01MB5849.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Dec 2020 09:24:41.2734 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3bc2b170-fd94-476d-b0ce-4229bdc904a7 X-MS-Exchange-CrossTenant-Network-Message-Id: 0f1a7ec2-90d6-42f9-e43f-08d89c244207 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: EvJIS/yQcn0N2wPByOXCR3TLswokTmNSboN8q248EKv6sPwyiB6Z4iYeHsPhbWwfGcLmTXs5Dq7s4BH94ZhjYOVOkklIaN6vg0VooDjxK+k= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR01MB5609 Content-Type: text/plain From: Vu Nguyen Help to show debug info to UART console during boot process. Signed-off-by: Vu Nguyen --- Silicon/Ampere/AmpereAltraPkg/Ac01Pkg.dsc.inc | 1 + Platform/Ampere/JadePkg/Jade.fdf | 5 + Silicon/Ampere/AmpereAltraPkg/Drivers/DebugInfoPei/DebugInfoPei.inf | 40 ++++ Silicon/Ampere/AmpereAltraPkg/Drivers/DebugInfoPei/DebugInfoPei.c | 226 ++++++++++++++++++++ 4 files changed, 272 insertions(+) diff --git a/Silicon/Ampere/AmpereAltraPkg/Ac01Pkg.dsc.inc b/Silicon/Ampere/AmpereAltraPkg/Ac01Pkg.dsc.inc index 746db5052c16..708b4bea003b 100755 --- a/Silicon/Ampere/AmpereAltraPkg/Ac01Pkg.dsc.inc +++ b/Silicon/Ampere/AmpereAltraPkg/Ac01Pkg.dsc.inc @@ -523,6 +523,7 @@ [Components.common] ArmPlatformPkg/PlatformPei/PlatformPeim.inf Silicon/Ampere/Drivers/ATFHobPei/ATFHobPeim.inf Silicon/Ampere/AmpereAltraPkg/Drivers/MemoryInitPeim/MemoryInitPeim.inf + Silicon/Ampere/AmpereAltraPkg/Drivers/DebugInfoPei/DebugInfoPei.inf Silicon/Ampere/AmpereAltraPkg/Drivers/MmCommunicationPei/MmCommunicationPei.inf Silicon/Ampere/AmpereAltraPkg/Drivers/FlashPei/FlashPei.inf ArmPkg/Drivers/CpuPei/CpuPei.inf diff --git a/Platform/Ampere/JadePkg/Jade.fdf b/Platform/Ampere/JadePkg/Jade.fdf index bc618c2c6805..195ff2322e12 100755 --- a/Platform/Ampere/JadePkg/Jade.fdf +++ b/Platform/Ampere/JadePkg/Jade.fdf @@ -181,6 +181,11 @@ [FV.FV_PEI] INF MdeModulePkg/Universal/ReportStatusCodeRouter/Pei/ReportStatusCodeRouterPei.inf INF MdeModulePkg/Universal/StatusCodeHandler/Pei/StatusCodeHandlerPei.inf + # + # Print platform information before passing control into the Driver Execution Environment (DXE) phase + # + INF Silicon/Ampere/AmpereAltraPkg/Drivers/DebugInfoPei/DebugInfoPei.inf + INF MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf [FV.FvMain] diff --git a/Silicon/Ampere/AmpereAltraPkg/Drivers/DebugInfoPei/DebugInfoPei.inf b/Silicon/Ampere/AmpereAltraPkg/Drivers/DebugInfoPei/DebugInfoPei.inf new file mode 100755 index 000000000000..9d18c682a0d0 --- /dev/null +++ b/Silicon/Ampere/AmpereAltraPkg/Drivers/DebugInfoPei/DebugInfoPei.inf @@ -0,0 +1,40 @@ +## @file +# +# Copyright (c) 2020, Ampere Computing LLC. All rights reserved.
+# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x0001001B + BASE_NAME = DebugInfo + FILE_GUID = C0571D26-6176-11E9-8647-D663BD873D93 + MODULE_TYPE = PEIM + VERSION_STRING = 1.0 + ENTRY_POINT = DebugInfoPeiEntryPoint + +[Sources] + DebugInfoPei.c + +[Packages] + ArmPkg/ArmPkg.dec + ArmPlatformPkg/ArmPlatformPkg.dec + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + Silicon/Ampere/AmperePkg.dec + Silicon/Ampere/AmpereAltraPkg/Ac01Pkg.dec + +[LibraryClasses] + PeimEntryPoint + PrintLib + SerialPortLib + NVParamLib + HobLib + ArmLib + AmpereCpuLib + +[Guids] + +[Depex] + TRUE diff --git a/Silicon/Ampere/AmpereAltraPkg/Drivers/DebugInfoPei/DebugInfoPei.c b/Silicon/Ampere/AmpereAltraPkg/Drivers/DebugInfoPei/DebugInfoPei.c new file mode 100755 index 000000000000..8ab4aeb09d76 --- /dev/null +++ b/Silicon/Ampere/AmpereAltraPkg/Drivers/DebugInfoPei/DebugInfoPei.c @@ -0,0 +1,226 @@ +/** @file + + Copyright (c) 2020, Ampere Computing LLC. 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 + +#define MAX_PRINT_LEN 512 + +#define GB_SCALE_FACTOR 1073741824 +#define MB_SCALE_FACTOR 1048576 +#define KB_SCALE_FACTOR 1024 +#define MHZ_SCALE_FACTOR 1000000 + +STATIC VOID +SerialPrint ( + IN CONST CHAR8 *FormatString, + ... + ) +{ + CHAR8 Buf[MAX_PRINT_LEN]; + VA_LIST Marker; + UINTN NumberOfPrinted; + + VA_START (Marker, FormatString); + NumberOfPrinted = AsciiVSPrint (Buf, sizeof (Buf), FormatString, Marker); + SerialPortWrite ((UINT8 *) Buf, NumberOfPrinted); + VA_END (Marker); +} + +/** + Print any existence NVRAM. +**/ +STATIC VOID +PrintNVRAM ( + VOID + ) +{ + EFI_STATUS Status; + NVPARAM Idx; + UINT32 Val; + UINT16 ACLRd = NV_PERM_ALL; + BOOLEAN Flag; + + Flag = FALSE; + for (Idx = NV_PREBOOT_PARAM_START; Idx <= NV_PREBOOT_PARAM_MAX; Idx += NVPARAM_SIZE) { + Status = NVParamGet (Idx, ACLRd, &Val); + if (!EFI_ERROR (Status)) { + if (!Flag) { + SerialPrint ("Pre-boot Configuration Setting:\n"); + Flag = TRUE; + } + SerialPrint (" %04X: 0x%X (%d)\n", (UINT32) Idx, Val, Val); + } + } + + Flag = FALSE; + for (Idx = NV_MANU_PARAM_START; Idx <= NV_MANU_PARAM_MAX; Idx += NVPARAM_SIZE) { + Status = NVParamGet (Idx, ACLRd, &Val); + if (!EFI_ERROR (Status)) { + if (!Flag) { + SerialPrint ("Manufacturer Configuration Setting:\n"); + Flag = TRUE; + } + SerialPrint (" %04X: 0x%X (%d)\n", (UINT32) Idx, Val, Val); + } + } + + Flag = FALSE; + for (Idx = NV_USER_PARAM_START; Idx <= NV_USER_PARAM_MAX; Idx += NVPARAM_SIZE) { + Status = NVParamGet (Idx, ACLRd, &Val); + if (!EFI_ERROR (Status)) { + if (!Flag) { + SerialPrint ("User Configuration Setting:\n"); + Flag = TRUE; + } + SerialPrint (" %04X: 0x%X (%d)\n", (UINT32) Idx, Val, Val); + } + } + + Flag = FALSE; + for (Idx = NV_BOARD_PARAM_START; Idx <= NV_BOARD_PARAM_MAX; Idx += NVPARAM_SIZE) { + Status = NVParamGet (Idx, ACLRd, &Val); + if (!EFI_ERROR (Status)) { + if (!Flag) { + SerialPrint ("Board Configuration Setting:\n"); + Flag = TRUE; + } + SerialPrint (" %04X: 0x%X (%d)\n", (UINT32) Idx, Val, Val); + } + } +} + +STATIC +CHAR8 * +GetCCIXLinkSpeed ( + IN UINTN Speed + ) +{ + switch (Speed) { + case 1: + return "2.5 GT/s"; + + case 2: + return "5 GT/s"; + + case 3: + return "8 GT/s"; + + case 4: + case 6: + return "16 GT/s"; + + case 0xa: + return "20 GT/s"; + + case 0xf: + return "25 GT/s"; + } + + return "Unknown"; +} + +/** + Print system info +**/ +STATIC VOID +PrintSystemInfo ( + VOID + ) +{ + UINTN Idx; + VOID *Hob; + PlatformInfoHob_V2 *PlatformHob; + CONST EFI_GUID PlatformHobGuid = PLATFORM_INFO_HOB_GUID_V2; + + Hob = GetFirstGuidHob (&PlatformHobGuid); + if (Hob == NULL) { + return; + } + + PlatformHob = (PlatformInfoHob_V2 *) GET_GUID_HOB_DATA (Hob); + + SerialPrint ("SCP FW version : %a\n", (const CHAR8 *) PlatformHob->SmPmProVer); + SerialPrint ("SCP FW build date : %a\n", (const CHAR8 *) PlatformHob->SmPmProBuild); + + SerialPrint ("Failsafe status : %d\n", PlatformHob->FailSafeStatus); + SerialPrint ("Reset status : %d\n", PlatformHob->ResetStatus); + SerialPrint ("CPU info\n"); + SerialPrint (" CPU ID : %X\n", ArmReadMidr ()); + SerialPrint (" CPU Clock : %d MHz\n", PlatformHob->CpuClk / MHZ_SCALE_FACTOR); + SerialPrint (" Number of active sockets : %d\n", GetNumberActiveSockets ()); + SerialPrint (" Number of active cores : %d\n", GetNumberActiveCores ()); + if (GetNumberActiveSockets () > 1) { + SerialPrint (" Inter Socket Connection 0 : Width: x%d / Speed %a\n", + PlatformHob->Link2PWidth[0], GetCCIXLinkSpeed (PlatformHob->Link2PSpeed[0])); + SerialPrint (" Inter Socket Connection 1 : Width: x%d / Speed %a\n", + PlatformHob->Link2PWidth[1], GetCCIXLinkSpeed (PlatformHob->Link2PSpeed[1])); + } + for (Idx = 0; Idx < GetNumberActiveSockets (); Idx ++) { + SerialPrint (" Socket[%d]: Core voltage : %d\n", Idx, PlatformHob->CoreVoltage[Idx]); + SerialPrint (" Socket[%d]: SCU ProductID : %X\n", Idx, PlatformHob->ScuProductId[Idx]); + SerialPrint (" Socket[%d]: Max cores : %d\n", Idx, PlatformHob->MaxNumOfCore[Idx]); + SerialPrint (" Socket[%d]: Warranty : %d\n", Idx, PlatformHob->Warranty[Idx]); + SerialPrint (" Socket[%d]: Subnuma : %d\n", Idx, PlatformHob->SubNumaMode[Idx]); + SerialPrint (" Socket[%d]: RC disable mask : %X\n", Idx, PlatformHob->RcDisableMask[Idx]); + SerialPrint (" Socket[%d]: AVS enabled : %d\n", Idx, PlatformHob->AvsEnable[Idx]); + SerialPrint (" Socket[%d]: AVS voltage : %d\n", Idx, PlatformHob->AvsVoltageMV[Idx]); + } + + SerialPrint ("SOC info\n"); + SerialPrint (" DDR Frequency : %d MHz\n", PlatformHob->DramInfo.MaxSpeed); + for (Idx = 0; Idx < GetNumberActiveSockets (); Idx ++) { + SerialPrint (" Socket[%d]: Soc voltage : %d\n", Idx, PlatformHob->SocVoltage[Idx]); + SerialPrint (" Socket[%d]: DIMM1 voltage : %d\n", Idx, PlatformHob->Dimm1Voltage[Idx]); + SerialPrint (" Socket[%d]: DIMM2 voltage : %d\n", Idx, PlatformHob->Dimm2Voltage[Idx]); + } + + SerialPrint (" PCP Clock : %d MHz\n", PlatformHob->PcpClk / MHZ_SCALE_FACTOR); + SerialPrint (" SOC Clock : %d MHz\n", PlatformHob->SocClk / MHZ_SCALE_FACTOR); + SerialPrint (" SYS Clock : %d MHz\n", PlatformHob->SysClk / MHZ_SCALE_FACTOR); + SerialPrint (" AHB Clock : %d MHz\n", PlatformHob->AhbClk / MHZ_SCALE_FACTOR); +} + +/** + Entry point function for the PEIM + + @param FileHandle Handle of the file being invoked. + @param PeiServices Describes the list of possible PEI Services. + + @return EFI_SUCCESS If we installed our PPI + +**/ +EFI_STATUS +EFIAPI +DebugInfoPeiEntryPoint ( + IN EFI_PEI_FILE_HANDLE FileHandle, + IN CONST EFI_PEI_SERVICES **PeiServices + ) +{ + PrintSystemInfo (); + PrintNVRAM (); + + return EFI_SUCCESS; +} -- 2.17.1