MdeModulePkg/Core/Pei: Improve the copy performance

REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4697

EvacuateTempRam function will copy the temporary memory context to the rebased
pages and the raw pages. Migrations of rebased PEIMs is from cache to memory,
while raw PEIMs is from memory to memory. So the migrations of raw PEIMs
is slower than rebased PEIMs. Experimental data indicates that changing the source
address of raw PEIMs migration will improve performance by 35%.

Cc: Liming Gao <gaoliming@byosoft.com.cn>
Signed-off-by: Zhihao Li <zhihao.li@intel.com>
Message-Id: <20240301071147.519-1-zhihao.li@intel.com>
Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
Reviewed-by: Michael Kubacki <michael.kubacki@microsoft.com>
This commit is contained in:
Li, Zhihao 2024-03-01 15:11:47 +08:00 committed by mergify[bot]
parent 2ec8f0c640
commit 371940932d
1 changed files with 2 additions and 2 deletions

View File

@ -1,7 +1,7 @@
/** @file /** @file
EFI PEI Core dispatch services EFI PEI Core dispatch services
Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR> Copyright (c) 2006 - 2024, Intel Corporation. All rights reserved.<BR>
(C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR> (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent SPDX-License-Identifier: BSD-2-Clause-Patent
@ -1305,7 +1305,7 @@ EvacuateTempRam (
); );
ASSERT_EFI_ERROR (Status); ASSERT_EFI_ERROR (Status);
RawDataFvHeader = (EFI_FIRMWARE_VOLUME_HEADER *)(UINTN)FvHeaderAddress; RawDataFvHeader = (EFI_FIRMWARE_VOLUME_HEADER *)(UINTN)FvHeaderAddress;
CopyMem (RawDataFvHeader, MigratedFvHeader, (UINTN)FvHeader->FvLength); CopyMem (RawDataFvHeader, FvHeader, (UINTN)FvHeader->FvLength);
MigratedFvInfo.FvDataBase = (UINT32)(UINTN)RawDataFvHeader; MigratedFvInfo.FvDataBase = (UINT32)(UINTN)RawDataFvHeader;
} }