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 <[email protected]>
Reviewed-by: Samer EL-Haj-Mahmoud <[email protected]>
Reviewed-by: Joseph Shifflett <[email protected]>
Reviewed-by: Michael Kinney <[email protected]>
---
.../DxeCorePerformanceLib/DxeCorePerformanceLib.c | 5 ++++-
.../DxeCorePerformanceLib/DxeCorePerformanceLib.inf | 6 ++++--
.../Library/PeiPerformanceLib/PeiPerformanceLib.c | 20
+++++++++++++++-----
.../Library/PeiPerformanceLib/PeiPerformanceLib.inf | 6 ++++--
MdeModulePkg/MdeModulePkg.dec | 10 ++++++++++
5 files changed, 37 insertions(+), 10 deletions(-)
diff --git
a/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.c
b/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.c
index 0eb8e57..c3a6d70 100644
--- a/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.c
+++ b/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.c
@@ -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);
diff --git
a/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.inf
b/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.inf
index 5f29063..f73d0a4 100644
---
a/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.inf
+++
b/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.inf
@@ -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
diff --git
a/MdeModulePkg/Library/PeiPerformanceLib/PeiPerformanceLib.c
b/MdeModulePkg/Library/PeiPerformanceLib/PeiPerformanceLib.c
index 9674bbc..b3b11b9 100644
--- a/MdeModulePkg/Library/PeiPerformanceLib/PeiPerformanceLib.c
+++ b/MdeModulePkg/Library/PeiPerformanceLib/PeiPerformanceLib.c
@@ -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;
}
diff --git
a/MdeModulePkg/Library/PeiPerformanceLib/PeiPerformanceLib.inf
b/MdeModulePkg/Library/PeiPerformanceLib/PeiPerformanceLib.inf
index 7a5d240..08aa064 100644
--- a/MdeModulePkg/Library/PeiPerformanceLib/PeiPerformanceLib.inf
+++ b/MdeModulePkg/Library/PeiPerformanceLib/PeiPerformanceLib.inf
@@ -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
diff --git a/MdeModulePkg/MdeModulePkg.dec
b/MdeModulePkg/MdeModulePkg.dec
index efd870b..1a20561 100644
--- a/MdeModulePkg/MdeModulePkg.dec
+++ b/MdeModulePkg/MdeModulePkg.dec
@@ -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