mirror of https://github.com/acidanthera/audk.git
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:
parent
96302b80d9
commit
7c50b34343
|
@ -11,6 +11,7 @@
|
|||
Performance Protocol is installed at the very beginning of DXE phase.
|
||||
|
||||
Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>
|
||||
(C) Copyright 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
|
||||
|
@ -522,7 +523,9 @@ DxeCorePerformanceLibConstructor (
|
|||
);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
|
||||
mMaxGaugeRecords = INIT_DXE_GAUGE_DATA_ENTRIES + PcdGet8 (PcdMaxPeiPerformanceLogEntries);
|
||||
mMaxGaugeRecords = INIT_DXE_GAUGE_DATA_ENTRIES + (UINT16) (PcdGet16 (PcdMaxPeiPerformanceLogEntries16) != 0 ?
|
||||
PcdGet16 (PcdMaxPeiPerformanceLogEntries16) :
|
||||
PcdGet8 (PcdMaxPeiPerformanceLogEntries));
|
||||
|
||||
mGaugeData = AllocateZeroPool (sizeof (GAUGE_DATA_HEADER) + (sizeof (GAUGE_DATA_ENTRY_EX) * mMaxGaugeRecords));
|
||||
ASSERT (mGaugeData != NULL);
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
# Performance and PerformanceEx Protocol are installed at the very beginning of DXE phase.
|
||||
#
|
||||
# Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>
|
||||
# (C) Copyright 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
|
||||
|
@ -66,5 +67,6 @@
|
|||
gPerformanceExProtocolGuid
|
||||
|
||||
[Pcd]
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdMaxPeiPerformanceLogEntries ## CONSUMES
|
||||
gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyMask ## CONSUMES
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdMaxPeiPerformanceLogEntries ## CONSUMES
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdMaxPeiPerformanceLogEntries16 ## CONSUMES
|
||||
gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyMask ## CONSUMES
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
# so that it can be taken over by DxeCorePerformanceLib.
|
||||
#
|
||||
# Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>
|
||||
# (C) Copyright 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
|
||||
|
@ -58,5 +59,6 @@
|
|||
gPerformanceExProtocolGuid
|
||||
|
||||
[Pcd]
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdMaxPeiPerformanceLogEntries ## CONSUMES
|
||||
gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyMask ## CONSUMES
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdMaxPeiPerformanceLogEntries ## CONSUMES
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdMaxPeiPerformanceLogEntries16 ## CONSUMES
|
||||
gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyMask ## CONSUMES
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
#
|
||||
# Copyright (c) 2007 - 2016, Intel Corporation. All rights reserved.<BR>
|
||||
# Copyright (c) 2016, Linaro Ltd. All rights reserved.<BR>
|
||||
# (C) Copyright 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 that accompanies this distribution.
|
||||
# The full text of the license may be found at
|
||||
|
@ -869,9 +870,18 @@
|
|||
gEfiMdeModulePkgTokenSpaceGuid.PcdCapsuleCoalesceFile|{ 0xA6, 0xE4, 0xFD, 0xF7, 0x4C, 0x29, 0x3c, 0x49, 0xB5, 0x0F, 0x97, 0x34, 0x55, 0x3B, 0xB7, 0x57 }|VOID*|0x30000017
|
||||
|
||||
## Maximum number of performance log entries during PEI phase.
|
||||
# Use PcdMaxPeiPerformanceLogEntries16 if the number of entries required is
|
||||
# more than 255.
|
||||
# @Prompt Maximum number of PEI performance log entries.
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdMaxPeiPerformanceLogEntries|40|UINT8|0x0001002f
|
||||
|
||||
## Maximum number of performance log entries during PEI phase.
|
||||
# If set to 0, then PcdMaxPeiPerformanceLogEntries determines the number of
|
||||
# entries. If greater than 0, then this PCD determines the number of entries,
|
||||
# and PcdMaxPeiPerformanceLogEntries is ignored.
|
||||
# @Prompt Maximum number of PEI performance log entries.
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdMaxPeiPerformanceLogEntries16|0|UINT16|0x00010035
|
||||
|
||||
## RTC Update Timeout Value(microsecond).
|
||||
# @Prompt RTC Update Timeout Value.
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdRealTimeClockUpdateTimeout|100000|UINT32|0x00010034
|
||||
|
|
Loading…
Reference in New Issue