From nobody Fri Nov 1 12:24:25 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) smtp.mailfrom=edk2-devel-bounces@lists.01.org Return-Path: Received: from ml01.01.org (ml01.01.org [198.145.21.10]) by mx.zohomail.com with SMTPS id 1517560293908101.14449771675595; Fri, 2 Feb 2018 00:31:33 -0800 (PST) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 960D422393654; Fri, 2 Feb 2018 00:25:23 -0800 (PST) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id D9DB521E0BA09 for ; Fri, 2 Feb 2018 00:25:21 -0800 (PST) Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 02 Feb 2018 00:31:00 -0800 Received: from shwdeopenpsi114.ccr.corp.intel.com ([10.239.157.135]) by fmsmga005.fm.intel.com with ESMTP; 02 Feb 2018 00:30:59 -0800 X-Original-To: edk2-devel@lists.01.org Received-SPF: none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) client-ip=198.145.21.10; envelope-from=edk2-devel-bounces@lists.01.org; helo=ml01.01.org; Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=192.55.52.88; helo=mga01.intel.com; envelope-from=dandan.bi@intel.com; receiver=edk2-devel@lists.01.org X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.46,447,1511856000"; d="scan'208";a="200629851" From: Dandan Bi To: edk2-devel@lists.01.org Date: Fri, 2 Feb 2018 16:30:32 +0800 Message-Id: <1517560234-17068-7-git-send-email-dandan.bi@intel.com> X-Mailer: git-send-email 1.9.5.msysgit.1 In-Reply-To: <1517560234-17068-1-git-send-email-dandan.bi@intel.com> References: <1517560234-17068-1-git-send-email-dandan.bi@intel.com> Subject: [edk2] [PATCH v3 6/8] MdeModulePkg/FirmwarePerfDxe:Enhance for new pref infrastructure X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Star Zeng , Liming Gao MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" X-ZohoMail: RSF_4 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" V3:Add handling for the case when performance feature is not enabled. V2: Update FirmwarePerformanceDxe to receive the address of performance records instead of records content. 1. Remove the macro EXTENSION_RECORD_SIZE, since the extension size can be got through PcdExtFpdtBootRecordPadSize. 2. Hook EFI_SW_DXE_BS_PC_READY_TO_BOOT_EVENT to install ACPI table 3. Copy SMM record accord to the allocated size 4. Receive Boot performance table address instead of contents which are reported DxeCorePerformanceLib. Cc: Liming Gao Cc: Star Zeng Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Dandan Bi --- .../FirmwarePerformanceDxe.c | 294 ++++-------------= ---- .../FirmwarePerformanceDxe.inf | 4 +- 2 files changed, 51 insertions(+), 247 deletions(-) diff --git a/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableDxe/Fi= rmwarePerformanceDxe.c b/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDat= aTableDxe/FirmwarePerformanceDxe.c index b004cac..51a72f0 100644 --- a/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableDxe/FirmwareP= erformanceDxe.c +++ b/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableDxe/FirmwareP= erformanceDxe.c @@ -3,11 +3,11 @@ =20 This module register report status code listener to collect performance = data for Firmware Basic Boot Performance Record and other boot performance re= cords,=20 and install FPDT to ACPI table. =20 - Copyright (c) 2011 - 2017, Intel Corporation. All rights reserved.
+ Copyright (c) 2011 - 2018, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BS= D License which accompanies this distribution. The full text of the license may b= e found at http://opensource.org/licenses/bsd-license.php =20 @@ -18,19 +18,17 @@ =20 #include =20 #include #include -#include #include #include =20 #include #include #include #include -#include =20 #include #include #include #include @@ -40,26 +38,23 @@ #include #include #include #include =20 -#define EXTENSION_RECORD_SIZE 0x10000 -#define SMM_BOOT_RECORD_COMM_SIZE OFFSET_OF (EFI_SMM_COMMUNICATE_HEADER, D= ata) + sizeof(SMM_BOOT_RECORD_COMMUNICATE) +#define SMM_BOOT_RECORD_COMM_SIZE (OFFSET_OF (EFI_SMM_COMMUNICATE_HEADER, = Data) + sizeof(SMM_BOOT_RECORD_COMMUNICATE)) =20 EFI_RSC_HANDLER_PROTOCOL *mRscHandlerProtocol =3D NULL; =20 BOOLEAN mLockBoxReady =3D FALSE; EFI_EVENT mReadyToBootEvent; EFI_EVENT mLegacyBootEvent; EFI_EVENT mExitBootServicesEvent; UINTN mFirmwarePerformanceTableTemplateKey =3D 0; -UINT32 mBootRecordSize =3D 0; -UINT32 mBootRecordMaxSize =3D 0; -UINT8 *mBootRecordBuffer =3D NULL; BOOLEAN mDxeCoreReportStatusCodeEnable =3D FALSE; =20 BOOT_PERFORMANCE_TABLE *mAcpiBootPerformanceTable =3D= NULL; +BOOT_PERFORMANCE_TABLE *mReceivedAcpiBootPerformanceT= able =3D NULL; S3_PERFORMANCE_TABLE *mAcpiS3PerformanceTable =3D= NULL; =20 FIRMWARE_PERFORMANCE_TABLE mFirmwarePerformanceTableTemplate =3D { { EFI_ACPI_5_0_FIRMWARE_PERFORMANCE_DATA_TABLE_SIGNATURE, @@ -327,186 +322,66 @@ InstallFirmwarePerformanceDataTable ( VOID ) { EFI_STATUS Status; EFI_ACPI_TABLE_PROTOCOL *AcpiTableProtocol; - UINTN Size; - UINT8 *SmmBootRecordCommBuffer; - EFI_SMM_COMMUNICATE_HEADER *SmmCommBufferHeader; - SMM_BOOT_RECORD_COMMUNICATE *SmmCommData; - UINTN CommSize; UINTN BootPerformanceDataSize; - UINT8 *BootPerformanceData;=20 - EFI_SMM_COMMUNICATION_PROTOCOL *Communication; FIRMWARE_PERFORMANCE_VARIABLE PerformanceVariable; - EDKII_PI_SMM_COMMUNICATION_REGION_TABLE *SmmCommRegionTable; - EFI_MEMORY_DESCRIPTOR *SmmCommMemRegion; - UINTN Index; - VOID *SmmBootRecordData; - UINTN SmmBootRecordDataSize; - UINTN ReservedMemSize; + UINTN Size; =20 // // Get AcpiTable Protocol. // Status =3D gBS->LocateProtocol (&gEfiAcpiTableProtocolGuid, NULL, (VOID = **) &AcpiTableProtocol); if (EFI_ERROR (Status)) { return Status; } =20 - // - // Collect boot records from SMM drivers. - // - SmmBootRecordCommBuffer =3D NULL; - SmmCommData =3D NULL; - SmmBootRecordData =3D NULL; - SmmBootRecordDataSize =3D 0; - ReservedMemSize =3D 0; - Status =3D gBS->LocateProtocol (&gEfiSmmCommunicationProtocolGuid, NULL,= (VOID **) &Communication); - if (!EFI_ERROR (Status)) { - // - // Initialize communicate buffer=20 - // Get the prepared Reserved Memory Range + if (mReceivedAcpiBootPerformanceTable !=3D NULL) { + mAcpiBootPerformanceTable =3D mReceivedAcpiBootPerformanceTable; + mAcpiBootPerformanceTable->BasicBoot.ResetEnd =3D mBootPerformanceTabl= eTemplate.BasicBoot.ResetEnd; + } else { // - Status =3D EfiGetSystemConfigurationTable ( - &gEdkiiPiSmmCommunicationRegionTableGuid,=20 - (VOID **) &SmmCommRegionTable - ); + // Try to allocate the same runtime buffer as last time boot. + // + BootPerformanceDataSize =3D sizeof (BOOT_PERFORMANCE_TABLE); + ZeroMem (&PerformanceVariable, sizeof (PerformanceVariable)); + Size =3D sizeof (PerformanceVariable); + Status =3D gRT->GetVariable ( + EFI_FIRMWARE_PERFORMANCE_VARIABLE_NAME, + &gEfiFirmwarePerformanceGuid, + NULL, + &Size, + &PerformanceVariable + ); if (!EFI_ERROR (Status)) { - ASSERT (SmmCommRegionTable !=3D NULL); - SmmCommMemRegion =3D (EFI_MEMORY_DESCRIPTOR *) (SmmCommRegionTable += 1); - for (Index =3D 0; Index < SmmCommRegionTable->NumberOfEntries; Index= ++) { - if (SmmCommMemRegion->Type =3D=3D EfiConventionalMemory) { - break; - } - SmmCommMemRegion =3D (EFI_MEMORY_DESCRIPTOR *) ((UINT8 *) SmmCommM= emRegion + SmmCommRegionTable->DescriptorSize); + Status =3D gBS->AllocatePages ( + AllocateAddress, + EfiReservedMemoryType, + EFI_SIZE_TO_PAGES (BootPerformanceDataSize), + &PerformanceVariable.BootPerformanceTablePointer + ); + if (!EFI_ERROR (Status)) { + mAcpiBootPerformanceTable =3D (BOOT_PERFORMANCE_TABLE *) (UINTN) = PerformanceVariable.BootPerformanceTablePointer; } - ASSERT (Index < SmmCommRegionTable->NumberOfEntries); - ASSERT (SmmCommMemRegion->PhysicalStart > 0); - ASSERT (SmmCommMemRegion->NumberOfPages > 0); - ReservedMemSize =3D (UINTN) SmmCommMemRegion->NumberOfPages * EFI_PA= GE_SIZE; - =20 + } + if (mAcpiBootPerformanceTable =3D=3D NULL) { // - // Check enough reserved memory space + // Fail to allocate at specified address, continue to allocate at an= y address. // - if (ReservedMemSize > SMM_BOOT_RECORD_COMM_SIZE) { - SmmBootRecordCommBuffer =3D (VOID *) (UINTN) SmmCommMemRegion->Phy= sicalStart; - SmmCommBufferHeader =3D (EFI_SMM_COMMUNICATE_HEADER*)SmmBootRecord= CommBuffer; - SmmCommData =3D (SMM_BOOT_RECORD_COMMUNICATE*)SmmCommBufferHeader-= >Data; - ZeroMem((UINT8*)SmmCommData, sizeof(SMM_BOOT_RECORD_COMMUNICATE)); - =20 - CopyGuid (&SmmCommBufferHeader->HeaderGuid, &gEfiFirmwarePerforman= ceGuid); - SmmCommBufferHeader->MessageLength =3D sizeof(SMM_BOOT_RECORD_COMM= UNICATE); - CommSize =3D SMM_BOOT_RECORD_COMM_SIZE; - =20 - // - // Get the size of boot records. - // - SmmCommData->Function =3D SMM_FPDT_FUNCTION_GET_BOOT_RECORD_= SIZE; - SmmCommData->BootRecordData =3D NULL; - Status =3D Communication->Communicate (Communication, SmmBootRecor= dCommBuffer, &CommSize); - ASSERT_EFI_ERROR (Status); - =20 - if (!EFI_ERROR (SmmCommData->ReturnStatus) && SmmCommData->BootRec= ordSize !=3D 0) { - // - // Get all boot records - // - SmmCommData->Function =3D SMM_FPDT_FUNCTION_GET_BOOT_RECOR= D_DATA_BY_OFFSET; - SmmBootRecordDataSize =3D SmmCommData->BootRecordSize; - SmmBootRecordData =3D AllocateZeroPool(SmmBootRecordDa= taSize); - ASSERT (SmmBootRecordData !=3D NULL); - SmmCommData->BootRecordOffset =3D 0; - SmmCommData->BootRecordData =3D (VOID *) ((UINTN) SmmCommMemRe= gion->PhysicalStart + SMM_BOOT_RECORD_COMM_SIZE); - SmmCommData->BootRecordSize =3D ReservedMemSize - SMM_BOOT_REC= ORD_COMM_SIZE; - while (SmmCommData->BootRecordOffset < SmmBootRecordDataSize) { - Status =3D Communication->Communicate (Communication, SmmBootR= ecordCommBuffer, &CommSize); - ASSERT_EFI_ERROR (Status); - ASSERT_EFI_ERROR(SmmCommData->ReturnStatus); - CopyMem ((UINT8 *) SmmBootRecordData + SmmCommData->BootRecord= Offset, SmmCommData->BootRecordData, SmmCommData->BootRecordSize); - SmmCommData->BootRecordOffset =3D SmmCommData->BootRecordOffse= t + SmmCommData->BootRecordSize; - } - } - } - } - } - - // - // Prepare memory for Boot Performance table. - // Boot Performance table includes BasicBoot record, and one or more app= ended Boot Records.=20 - // - BootPerformanceDataSize =3D sizeof (BOOT_PERFORMANCE_TABLE) + mBootRecor= dSize + PcdGet32 (PcdExtFpdtBootRecordPadSize); - if (SmmCommData !=3D NULL) { - BootPerformanceDataSize +=3D SmmBootRecordDataSize; - } - - // - // Try to allocate the same runtime buffer as last time boot. - // - ZeroMem (&PerformanceVariable, sizeof (PerformanceVariable)); - Size =3D sizeof (PerformanceVariable); - Status =3D gRT->GetVariable ( - EFI_FIRMWARE_PERFORMANCE_VARIABLE_NAME, - &gEfiFirmwarePerformanceGuid, - NULL, - &Size, - &PerformanceVariable - ); - if (!EFI_ERROR (Status)) { - Status =3D gBS->AllocatePages ( - AllocateAddress, - EfiReservedMemoryType, - EFI_SIZE_TO_PAGES (BootPerformanceDataSize), - &PerformanceVariable.BootPerformanceTablePointer - ); - if (!EFI_ERROR (Status)) { - mAcpiBootPerformanceTable =3D (BOOT_PERFORMANCE_TABLE *) (UINTN) Per= formanceVariable.BootPerformanceTablePointer; + mAcpiBootPerformanceTable =3D (BOOT_PERFORMANCE_TABLE *) FpdtAllocat= eReservedMemoryBelow4G (BootPerformanceDataSize); } - } - - if (mAcpiBootPerformanceTable =3D=3D NULL) { - // - // Fail to allocate at specified address, continue to allocate at any = address. - // - mAcpiBootPerformanceTable =3D (BOOT_PERFORMANCE_TABLE *) FpdtAllocateR= eservedMemoryBelow4G (BootPerformanceDataSize); - } - DEBUG ((EFI_D_INFO, "FPDT: ACPI Boot Performance Table address =3D 0x%x\= n", mAcpiBootPerformanceTable)); - - if (mAcpiBootPerformanceTable =3D=3D NULL) { - if (SmmCommData !=3D NULL && SmmBootRecordData !=3D NULL) { - FreePool (SmmBootRecordData); - } - if (mAcpiS3PerformanceTable !=3D NULL) { - FreePages (mAcpiS3PerformanceTable, EFI_SIZE_TO_PAGES (sizeof (S3_PE= RFORMANCE_TABLE))); - mAcpiS3PerformanceTable =3D NULL; + DEBUG ((DEBUG_INFO, "FPDT: ACPI Boot Performance Table address =3D 0x%= x\n", mAcpiBootPerformanceTable)); + if (mAcpiBootPerformanceTable =3D=3D NULL) { + return EFI_OUT_OF_RESOURCES; } - return EFI_OUT_OF_RESOURCES; - } - - // - // Prepare Boot Performance Table. - // - BootPerformanceData =3D (UINT8 *) mAcpiBootPerformanceTable; - // - // Fill Basic Boot record to Boot Performance Table. - // - CopyMem (mAcpiBootPerformanceTable, &mBootPerformanceTableTemplate, size= of (mBootPerformanceTableTemplate)); - BootPerformanceData =3D BootPerformanceData + mAcpiBootPerformanceTable-= >Header.Length; - // - // Fill Boot records from boot drivers. - // - CopyMem (BootPerformanceData, mBootRecordBuffer, mBootRecordSize); - mAcpiBootPerformanceTable->Header.Length +=3D mBootRecordSize; - BootPerformanceData =3D BootPerformanceData + mBootRecordSize; - if (SmmCommData !=3D NULL && SmmBootRecordData !=3D NULL) { // - // Fill Boot records from SMM drivers. + // Fill Basic Boot record to Boot Performance Table. // - CopyMem (BootPerformanceData, SmmBootRecordData, SmmBootRecordDataSize= ); - FreePool (SmmBootRecordData); - mAcpiBootPerformanceTable->Header.Length =3D (UINT32) (mAcpiBootPerfor= manceTable->Header.Length + SmmBootRecordDataSize); - BootPerformanceData =3D BootPerformanceData + SmmBootRecordDataSize; + CopyMem (mAcpiBootPerformanceTable, &mBootPerformanceTableTemplate, si= zeof (mBootPerformanceTableTemplate)); } + BootPerformanceDataSize =3D mAcpiBootPerformanceTable->Header.Length; =20 // // Save Boot Performance Table address to Variable for use in S4 resume. // PerformanceVariable.BootPerformanceTablePointer =3D (EFI_PHYSICAL_ADDRES= S) (UINTN) mAcpiBootPerformanceTable; @@ -523,11 +398,11 @@ InstallFirmwarePerformanceDataTable ( // Update S3 Performance Table Pointer in template. // mFirmwarePerformanceTableTemplate.S3PointerRecord.S3PerformanceTablePoin= ter =3D (UINT64) (UINTN) mAcpiS3PerformanceTable; // // Save Runtime Performance Table pointers to Variable. - // Don't check SetVariable return status. It doesn't impact FPDT table g= eneration.=20 + // Don't check SetVariable return status. It doesn't impact FPDT table g= eneration. // gRT->SetVariable ( EFI_FIRMWARE_PERFORMANCE_VARIABLE_NAME, &gEfiFirmwarePerformanceGuid, EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS, @@ -544,56 +419,24 @@ InstallFirmwarePerformanceDataTable ( &mFirmwarePerformanceTableTemplate, mFirmwarePerformanceTableTemplate.Header.L= ength, &mFirmwarePerformanceTableTemplateKey ); if (EFI_ERROR (Status)) { - FreePages (mAcpiBootPerformanceTable, EFI_SIZE_TO_PAGES (BootPerforman= ceDataSize)); + if (mAcpiBootPerformanceTable !=3D NULL) { + FreePages (mAcpiBootPerformanceTable, EFI_SIZE_TO_PAGES (BootPerform= anceDataSize)); + } if (mAcpiS3PerformanceTable !=3D NULL) { FreePages (mAcpiS3PerformanceTable, EFI_SIZE_TO_PAGES (sizeof (S3_PE= RFORMANCE_TABLE))); } mAcpiBootPerformanceTable =3D NULL; mAcpiS3PerformanceTable =3D NULL; return Status; } - =20 - // - // Free temp Boot record, and update Boot Record to point to Basic Boot = performance table. - // - if (mBootRecordBuffer !=3D NULL) { - FreePool (mBootRecordBuffer); - } - mBootRecordBuffer =3D (UINT8 *) mAcpiBootPerformanceTable; - mBootRecordSize =3D mAcpiBootPerformanceTable->Header.Length; - mBootRecordMaxSize =3D mBootRecordSize + PcdGet32 (PcdExtFpdtBootRecordP= adSize); - =20 return EFI_SUCCESS; } =20 /** - Notify function for event group EFI_EVENT_GROUP_READY_TO_BOOT. This is u= sed to - install the Firmware Performance Data Table. - - @param[in] Event The Event that is being processed. - @param[in] Context The Event Context. - -**/ -VOID -EFIAPI -FpdtReadyToBootEventNotify ( - IN EFI_EVENT Event, - IN VOID *Context - ) -{ - if (mAcpiBootPerformanceTable =3D=3D NULL) { - // - // ACPI Firmware Performance Data Table not installed yet, install it = now. - // - InstallFirmwarePerformanceDataTable (); - } -} - -/** Report status code listener of FPDT. This is used to collect performance= data for OsLoaderLoadImageStart and OsLoaderStartImageStart in FPDT. =20 @param[in] CodeType Indicates the type of status code being = reported. @param[in] Value Describes the current status of a hardwa= re or software entity. @@ -697,46 +540,22 @@ FpdtStatusCodeListenerDxe ( DEBUG ((EFI_D_INFO, "FPDT: Boot Performance - ResetEnd = =3D %ld\n", mAcpiBootPerformanceTable->BasicBoot.ResetEnd)); DEBUG ((EFI_D_INFO, "FPDT: Boot Performance - OsLoaderLoadImageStart = =3D 0\n")); DEBUG ((EFI_D_INFO, "FPDT: Boot Performance - OsLoaderStartImageStart = =3D %ld\n", mAcpiBootPerformanceTable->BasicBoot.OsLoaderStartImageStart)); DEBUG ((EFI_D_INFO, "FPDT: Boot Performance - ExitBootServicesEntry = =3D 0\n")); DEBUG ((EFI_D_INFO, "FPDT: Boot Performance - ExitBootServicesExit = =3D 0\n")); - } else if (Data !=3D NULL && CompareGuid (&Data->Type, &gEfiFirmwarePerf= ormanceGuid)) { - // - // Append one or more Boot records - // + } else if (Value =3D=3D (EFI_SOFTWARE_DXE_BS_DRIVER | EFI_SW_DXE_BS_PC_R= EADY_TO_BOOT_EVENT)) { if (mAcpiBootPerformanceTable =3D=3D NULL) { // - // Append Boot records before FPDT ACPI table is installed.=20 - // - if (mBootRecordSize + Data->Size > mBootRecordMaxSize) { - mBootRecordBuffer =3D ReallocatePool (mBootRecordSize, mBootRecord= Size + Data->Size + EXTENSION_RECORD_SIZE, mBootRecordBuffer); - ASSERT (mBootRecordBuffer !=3D NULL); - mBootRecordMaxSize =3D mBootRecordSize + Data->Size + EXTENSION_RE= CORD_SIZE; - } - // - // Save boot record into the temp memory space. - // - CopyMem (mBootRecordBuffer + mBootRecordSize, Data + 1, Data->Size); - mBootRecordSize +=3D Data->Size; - } else { + // ACPI Firmware Performance Data Table not installed yet, install i= t now. // - // Append Boot records after FPDT ACPI table is installed.=20 - // - if (mBootRecordSize + Data->Size > mBootRecordMaxSize) { - // - // No enough space to save boot record. - // - Status =3D EFI_OUT_OF_RESOURCES; - } else { - // - // Save boot record into BootPerformance table - // - CopyMem (mBootRecordBuffer + mBootRecordSize, Data + 1, Data->Size= ); - mBootRecordSize +=3D Data->Size; - mAcpiBootPerformanceTable->Header.Length =3D mBootRecordSize; - } + InstallFirmwarePerformanceDataTable (); } + } else if (Data !=3D NULL && CompareGuid (&Data->Type, &gEfiFirmwarePerf= ormanceGuid)) { + // + // Get the Boot performance table and then install it to ACPI table. + // + CopyMem (&mReceivedAcpiBootPerformanceTable, Data + 1, Data->Size); } else { // // Ignore else progress code. // Status =3D EFI_UNSUPPORTED; @@ -851,23 +670,10 @@ FirmwarePerformanceDxeEntryPoint ( &mExitBootServicesEvent ); ASSERT_EFI_ERROR (Status); =20 // - // Create ready to boot event to install ACPI FPDT table. - // - Status =3D gBS->CreateEventEx ( - EVT_NOTIFY_SIGNAL, - TPL_NOTIFY, - FpdtReadyToBootEventNotify, - NULL, - &gEfiEventReadyToBootGuid, - &mReadyToBootEvent - ); - ASSERT_EFI_ERROR (Status); - - // // Retrieve GUID HOB data that contains the ResetEnd. // GuidHob =3D GetFirstGuidHob (&gEfiFirmwarePerformanceGuid); if (GuidHob !=3D NULL) { Performance =3D (FIRMWARE_SEC_PERFORMANCE *) GET_GUID_HOB_DATA (GuidHo= b); diff --git a/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableDxe/Fi= rmwarePerformanceDxe.inf b/MdeModulePkg/Universal/Acpi/FirmwarePerformanceD= ataTableDxe/FirmwarePerformanceDxe.inf index 49d8420..d65e04e 100644 --- a/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableDxe/FirmwareP= erformanceDxe.inf +++ b/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableDxe/FirmwareP= erformanceDxe.inf @@ -3,11 +3,11 @@ # # This module registers report status code listener to collect performanc= e data # for Firmware Basic Boot Performance Record and other boot performance r= ecords,=20 # and install FPDT to ACPI table. # -# Copyright (c) 2011 - 2016, Intel Corporation. All rights reserved.
+# Copyright (c) 2011 - 2018, Intel Corporation. All rights reserved.
# This program and the accompanying materials # are licensed and made available under the terms and conditions of the B= SD License # which accompanies this distribution. The full text of the license may = be found at # http://opensource.org/licenses/bsd-license.php # =20 @@ -53,11 +53,10 @@ UefiLib =20 [Protocols] gEfiAcpiTableProtocolGuid ## CONSUMES gEfiRscHandlerProtocolGuid ## CONSUMES - gEfiSmmCommunicationProtocolGuid ## SOMETIMES_CONSUMES gEfiVariableArchProtocolGuid ## CONSUMES gEfiLockBoxProtocolGuid ## CONSUMES =20 [Guids] gEfiEventExitBootServicesGuid ## CONSUMES ##= Event @@ -68,11 +67,10 @@ ## PRODUCES ## Variable:L"FirmwarePerformance" ## SOMETIMES_CONSUMES ## UNDEFINED # Used to do smm communication ## SOMETIMES_CONSUMES ## UNDEFINED # StatusCode Data gEfiFirmwarePerformanceGuid gFirmwarePerformanceS3PointerGuid ## PRODUCES ## UNDEFINED #= SaveLockBox - gEdkiiPiSmmCommunicationRegionTableGuid ## SOMETIMES_CONSUMES #= # SystemTable =20 [Pcd] gEfiMdeModulePkgTokenSpaceGuid.PcdProgressCodeOsLoaderLoad ## CONSUMES gEfiMdeModulePkgTokenSpaceGuid.PcdProgressCodeOsLoaderStart ## CONSUMES gEfiMdeModulePkgTokenSpaceGuid.PcdExtFpdtBootRecordPadSize ## CONSUMES --=20 1.9.5.msysgit.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel