MdeModulePkg: Increase the maximum number of PEI performance log entries
The maximum number of PEI performance log entries is 255. Add a new PCD, PcdMaxPeiPerformanceLogEntries16, to increase the maximum number of PEI performance log entries. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Cinnamon Shia <cinnamon.shia@hpe.com> Reviewed-by: Samer EL-Haj-Mahmoud <elhaj@hpe.com> Reviewed-by: Joseph Shifflett <joseph.shifflett@hpe.com> Reviewed-by: Michael Kinney <michael.d.kinney@intel.com> Reviewed-by: Star Zeng <star.zeng@intel.com>
This commit is contained in:
@ -4,10 +4,11 @@
|
||||
This file implements all APIs in Performance Library class in MdePkg. It creates
|
||||
performance logging GUIDed HOB on the first performance logging and then logs the
|
||||
performance data to the GUIDed HOB. Due to the limitation of temporary RAM, the maximum
|
||||
number of performance logging entry is specified by PcdMaxPeiPerformanceLogEntries.
|
||||
number of performance logging entry is specified by PcdMaxPeiPerformanceLogEntries or
|
||||
PcdMaxPeiPerformanceLogEntries16.
|
||||
|
||||
Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>
|
||||
(C) Copyright 2015 Hewlett Packard Enterprise Development LP<BR>
|
||||
(C) Copyright 2015-2016 Hewlett Packard Enterprise Development LP<BR>
|
||||
This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
@ -51,10 +52,14 @@ InternalGetPerformanceHobLog (
|
||||
{
|
||||
EFI_HOB_GUID_TYPE *GuidHob;
|
||||
UINTN PeiPerformanceSize;
|
||||
UINT16 PeiPerformanceLogEntries;
|
||||
|
||||
ASSERT (PeiPerformanceLog != NULL);
|
||||
ASSERT (PeiPerformanceIdArray != NULL);
|
||||
|
||||
PeiPerformanceLogEntries = (UINT16) (PcdGet16 (PcdMaxPeiPerformanceLogEntries16) != 0 ?
|
||||
PcdGet16 (PcdMaxPeiPerformanceLogEntries16) :
|
||||
PcdGet8 (PcdMaxPeiPerformanceLogEntries));
|
||||
GuidHob = GetFirstGuidHob (&gPerformanceProtocolGuid);
|
||||
|
||||
if (GuidHob != NULL) {
|
||||
@ -71,11 +76,11 @@ InternalGetPerformanceHobLog (
|
||||
// PEI Performance HOB was not found, then build one.
|
||||
//
|
||||
PeiPerformanceSize = sizeof (PEI_PERFORMANCE_LOG_HEADER) +
|
||||
sizeof (PEI_PERFORMANCE_LOG_ENTRY) * PcdGet8 (PcdMaxPeiPerformanceLogEntries);
|
||||
sizeof (PEI_PERFORMANCE_LOG_ENTRY) * PeiPerformanceLogEntries;
|
||||
*PeiPerformanceLog = BuildGuidHob (&gPerformanceProtocolGuid, PeiPerformanceSize);
|
||||
*PeiPerformanceLog = ZeroMem (*PeiPerformanceLog, PeiPerformanceSize);
|
||||
|
||||
PeiPerformanceSize = sizeof (UINT32) * PcdGet8 (PcdMaxPeiPerformanceLogEntries);
|
||||
PeiPerformanceSize = sizeof (UINT32) * PeiPerformanceLogEntries;
|
||||
*PeiPerformanceIdArray = BuildGuidHob (&gPerformanceExProtocolGuid, PeiPerformanceSize);
|
||||
*PeiPerformanceIdArray = ZeroMem (*PeiPerformanceIdArray, PeiPerformanceSize);
|
||||
}
|
||||
@ -180,10 +185,15 @@ StartPerformanceMeasurementEx (
|
||||
UINT32 *PeiPerformanceIdArray;
|
||||
PEI_PERFORMANCE_LOG_ENTRY *LogEntryArray;
|
||||
UINT32 Index;
|
||||
UINT16 PeiPerformanceLogEntries;
|
||||
|
||||
PeiPerformanceLogEntries = (UINT16) (PcdGet16 (PcdMaxPeiPerformanceLogEntries16) != 0 ?
|
||||
PcdGet16 (PcdMaxPeiPerformanceLogEntries16) :
|
||||
PcdGet8 (PcdMaxPeiPerformanceLogEntries));
|
||||
|
||||
InternalGetPerformanceHobLog (&PeiPerformanceLog, &PeiPerformanceIdArray);
|
||||
|
||||
if (PeiPerformanceLog->NumberOfEntries >= PcdGet8 (PcdMaxPeiPerformanceLogEntries)) {
|
||||
if (PeiPerformanceLog->NumberOfEntries >= PeiPerformanceLogEntries) {
|
||||
DEBUG ((DEBUG_ERROR, "PEI performance log array out of resources\n"));
|
||||
return RETURN_OUT_OF_RESOURCES;
|
||||
}
|
||||
|
Reference in New Issue
Block a user