summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MdeModulePkg/Include/Guid/MemoryStatusCodeRecord.h83
-rw-r--r--MdeModulePkg/Include/Guid/StatusCodeDataTypeDebug.h49
-rw-r--r--MdeModulePkg/MdeModulePkg.dec23
3 files changed, 155 insertions, 0 deletions
diff --git a/MdeModulePkg/Include/Guid/MemoryStatusCodeRecord.h b/MdeModulePkg/Include/Guid/MemoryStatusCodeRecord.h
new file mode 100644
index 0000000..7599926
--- /dev/null
+++ b/MdeModulePkg/Include/Guid/MemoryStatusCodeRecord.h
@@ -0,0 +1,83 @@
+/** @file
+ GUID used to identify status code records HOB that originate from the PEI status code
+
+ Copyright (c) 2006 - 2009, Intel Corporation
+ All rights reserved. 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
+ http://opensource.org/licenses/bsd-license.php
+
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+**/
+
+#ifndef __MEMORY_STATUS_CODE_RECORD_H__
+#define __MEMORY_STATUS_CODE_RECORD_H__
+
+///
+/// Global ID used to identify GUIDed HOBs that start with a structure of type
+/// MEMORY_STATUSCODE_PACKET_HEADER followed by an array of structures of type
+/// MEMORY_STATUSCODE_RECORD. These GUIDed HOBs record all the information
+/// passed into the ReportStatusCode() service of PEI Services Table.
+///
+/// <pre>
+/// Memory status code records packet structure :
+/// +---------------+----------+----------+-----+----------+-----+----------+
+/// | Packet Header | Record 1 | Record 2 | ... + Record n | ... | Record m |
+/// +---------------+----------+----------+-----+----------+-----+----------+
+/// ^ ^ ^
+/// +--------- RecordIndex -----------+ |
+/// +---------------- MaxRecordsNumber----------------------+
+/// </pre>
+///
+#define MEMORY_STATUS_CODE_RECORD_GUID \
+ { \
+ 0x60cc026, 0x4c0d, 0x4dda, {0x8f, 0x41, 0x59, 0x5f, 0xef, 0x0, 0xa5, 0x2} \
+ }
+
+///
+/// A header structure that is followed by an array of records that contain the
+/// parameters passed into the ReportStatusCode() service in the PEI Services Table.
+///
+typedef struct {
+ ///
+ /// Index of the packet
+ ///
+ UINT16 PacketIndex;
+ ///
+ /// The number of active records in the packet
+ ///
+ UINT16 RecordIndex;
+ ///
+ /// The maximum number of records that the packet can store
+ ///
+ UINT32 MaxRecordsNumber;
+} MEMORY_STATUSCODE_PACKET_HEADER;
+
+///
+/// A structure that contains the parameters passed into the ReportStatusCode()
+/// service in the PEI Services Table.
+///
+typedef struct {
+ ///
+ /// Status Code type to be reported.
+ ///
+ EFI_STATUS_CODE_TYPE CodeType;
+
+ ///
+ /// An operation, plus value information about the class and subclass, used to
+ /// classify the hardware and software entity.
+ ///
+ EFI_STATUS_CODE_VALUE Value;
+
+ ///
+ /// The enumeration of a hardware or software entity within
+ /// the system. Valid instance numbers start with 1
+ ///
+ UINT32 Instance;
+} MEMORY_STATUSCODE_RECORD;
+
+extern EFI_GUID gMemoryStatusCodeRecordGuid;
+
+#endif
diff --git a/MdeModulePkg/Include/Guid/StatusCodeDataTypeDebug.h b/MdeModulePkg/Include/Guid/StatusCodeDataTypeDebug.h
new file mode 100644
index 0000000..52e7c95
--- /dev/null
+++ b/MdeModulePkg/Include/Guid/StatusCodeDataTypeDebug.h
@@ -0,0 +1,49 @@
+/** @file
+ This file defines the GUID and data structure used to pass DEBUG() macro
+ information to the Status Code Protocol and Status Code PPI.
+
+ Copyright (c) 2007 - 2009, Intel Corporation
+ All rights reserved. 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
+ http://opensource.org/licenses/bsd-license.php
+
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+**/
+
+#ifndef _STATUS_CODE_DATA_TYPE_DEBUG_H_
+#define _STATUS_CODE_DATA_TYPE_DEBUG_H_
+
+///
+/// Global ID used to identify a structure of type EFI_DEBUG_INFO
+///
+#define EFI_STATUS_CODE_DATA_TYPE_DEBUG_GUID \
+ { \
+ 0x9A4E9246, 0xD553, 0x11D5, { 0x87, 0xE2, 0x00, 0x06, 0x29, 0x45, 0xC3, 0xb9 } \
+ }
+
+///
+/// The maximum size of an EFI_DEBUG_INFO structure
+///
+#define EFI_STATUS_CODE_DATA_MAX_SIZE 200
+
+///
+/// This structure contains the ErrorLevel passed into the DEBUG() macro, followed
+/// by a 96-byte buffer that contains the variable argument list passed to the
+// DEBUG() macro that has been converted to a BASE_LIST. The 96-byte buffer is
+/// followed by a Null-terminated ASCII string that is the Format string passed
+/// to the DEBUG() macro. The maximum size of this structure is defined by
+/// EFI_STATUS_CODE_DATA_MAX_SIZE.
+///
+typedef struct {
+ ///
+ /// The debug error level passed into a DEBUG() macro.
+ ///
+ UINT32 ErrorLevel;
+} EFI_DEBUG_INFO;
+
+extern EFI_GUID gEfiStatusCodeDataTypeDebugGuid;
+
+#endif // _STATUS_CODE_DATA_TYPE_DEBUG_H_
diff --git a/MdeModulePkg/MdeModulePkg.dec b/MdeModulePkg/MdeModulePkg.dec
index d8a2d4c..e7aa773 100644
--- a/MdeModulePkg/MdeModulePkg.dec
+++ b/MdeModulePkg/MdeModulePkg.dec
@@ -131,6 +131,14 @@
## Include/Guid/StatusCodeCallbackGuid.h
gStatusCodeCallbackGuid = {0xe701458c, 0x4900, 0x4ca5, {0xb7, 0x72, 0x3d, 0x37, 0x94, 0x9f, 0x79, 0x27}}
+ ## GUID identifies status code records HOB that originate from the PEI status code
+ # Include/Guid/MemoryStatusCodeRecord.h
+ gMemoryStatusCodeRecordGuid = { 0x060CC026, 0x4C0D, 0x4DDA, { 0x8F, 0x41, 0x59, 0x5F, 0xEF, 0x00, 0xA5, 0x02 }}
+
+ ## GUID used to pass DEBUG() macro information through the Status Code Protocol and Status Code PPI
+ # Include/Guid/StatusCodeDataTypeDebug.h
+ gEfiStatusCodeDataTypeDebugGuid = { 0x9A4E9246, 0xD553, 0x11D5, { 0x87, 0xE2, 0x00, 0x06, 0x29, 0x45, 0xC3, 0xB9 }}
+
[Protocols.common]
## Load File protocol provides capability to load and unload EFI image into memory and execute it.
# Include/Protocol/LoadPe32Image.h
@@ -247,6 +255,15 @@
## This PCD specifies whether the PCI bus driver probes non-standard,
# such as 2K/1K/512, granularity for PCI to PCI bridge I/O window.
gEfiMdeModulePkgTokenSpaceGuid.PcdPciBridgeIoAlignmentProbe|FALSE|BOOLEAN|0x10000047
+ ## This PCD specifies whether StatusCode is reported via Serial port.
+ gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseSerial|TRUE|BOOLEAN|0x00010022
+
+ ## This PCD specifies whether StatusCode is stored in memory.
+ # The memory is boot time memory in PEI Phase and is runtime memory in DXE Phase.
+ gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseMemory|FALSE|BOOLEAN|0x00010023
+
+ ## This PCD specifies whether Peiphase StatusCode is replayed in DxePhase.
+ gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeReplayIn|FALSE|BOOLEAN|0x0001002d
[PcdsFeatureFlag.IA32]
##
@@ -379,3 +396,9 @@
## Null-terminated Unicode string that contains the date the formware was released
gEfiMdeModulePkgTokenSpaceGuid.PcdFirmwareReleaseDateString|L""|VOID*|0x00010053
+ ## PcdStatusCodeMemorySize is used when PcdStatusCodeUseMemory is set to true
+ # (PcdStatusCodeMemorySize * KBytes) is the total taken memory size.
+ # The default value in PeiPhase is 1 KBytes.
+ # The default value in DxePhase is 128 KBytes.
+ gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeMemorySize|1|UINT16|0x00010054
+