Shia: Thanks for your contribution. I suggest to install system table with gMemoryStatusCodeRecordGuid, don't introduce PCD. For SMM memory status code, install SmmConfigurationTable with gMemoryStatusCodeRecordGuid. Then, for PEI/DXE/SMM, they can all be found.
Thanks Liming > -----Original Message----- > From: edk2-devel [mailto:[email protected]] On Behalf Of > Cinnamon Shia > Sent: Tuesday, June 21, 2016 3:30 PM > To: [email protected] > Cc: [email protected]; Tian, Feng <[email protected]>; Zeng, Star > <[email protected]> > Subject: [edk2] [PATCH] MdeModulePkg/MemoryStatusCode: Expose the > DXE memory status code table. > > Let data of DXE memory status code can be used by other modules. > 1. Add a dynamic PCD to save the address of DXE memory status code table. > 2. Move RUNTIME_MEMORY_STATUSCODE_HEADER to its public header file. > > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Cinnamon Shia <[email protected]> > --- > MdeModulePkg/Include/Guid/MemoryStatusCodeRecord.h | 30 > ++++++++++++++++++---- > MdeModulePkg/MdeModulePkg.dec | 5 ++++ > .../RuntimeDxe/MemoryStatusCodeWorker.c | 16 +++++++----- > .../RuntimeDxe/StatusCodeHandlerRuntimeDxe.h | 10 +------- > .../RuntimeDxe/StatusCodeHandlerRuntimeDxe.inf | 3 ++- > .../StatusCodeHandler/Smm/StatusCodeHandlerSmm.h | 10 +------- > 6 files changed, 43 insertions(+), 31 deletions(-) > > diff --git a/MdeModulePkg/Include/Guid/MemoryStatusCodeRecord.h > b/MdeModulePkg/Include/Guid/MemoryStatusCodeRecord.h > index d6c3243..27d39e1 100644 > --- a/MdeModulePkg/Include/Guid/MemoryStatusCodeRecord.h > +++ b/MdeModulePkg/Include/Guid/MemoryStatusCodeRecord.h > @@ -2,13 +2,14 @@ > GUID used to identify status code records HOB that originate from the PEI > status code. > > Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<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. > +(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 > -http://opensource.org/licenses/bsd-license.php. > +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. > +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" > BASIS, > +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER > EXPRESS OR IMPLIED. > > **/ > > @@ -56,6 +57,25 @@ typedef struct { > } MEMORY_STATUSCODE_PACKET_HEADER; > > /// > +/// A header structure that is followed by an array of records that contain > the > +/// parameters passed into the ReportStatusCode() service in the DXE > Services Table. > +/// > +typedef struct { > + /// > + /// The index pointing to the last recored being stored. > + /// > + UINT32 RecordIndex; > + /// > + /// The number of records being stored. > + /// > + UINT32 NumberOfRecords; > + /// > + /// The maximum number of records that can be stored. > + /// > + UINT32 MaxRecordsNumber; > +} RUNTIME_MEMORY_STATUSCODE_HEADER; > + > +/// > /// A structure that contains the parameters passed into the > ReportStatusCode() > /// service in the PEI Services Table. > /// > diff --git a/MdeModulePkg/MdeModulePkg.dec > b/MdeModulePkg/MdeModulePkg.dec > index 27efb37..ed2062d 100644 > --- a/MdeModulePkg/MdeModulePkg.dec > +++ b/MdeModulePkg/MdeModulePkg.dec > @@ -1601,5 +1601,10 @@ > # @ValidList 0x80000001 | 0x0 > > gEfiMdeModulePkgTokenSpaceGuid.PcdIdentifyMappingPageTablePtr|0x0| > UINT64|0x00030002 > > + ## This dynamic PCD hold an address to point to the DXE memory status > code table. > + # @Prompt DXE Memory Status Code Table pointer. > + # @ValidList 0x80000001 | 0x0 > + > gEfiMdeModulePkgTokenSpaceGuid.PcdDxeMemoryStatusCodeTablePtr|0x > 0|UINT64|0x00030003 > + > [UserExtensions.TianoCore."ExtraFiles"] > MdeModulePkgExtra.uni > diff --git > a/MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/MemoryStat > usCodeWorker.c > b/MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/MemoryStat > usCodeWorker.c > index 8680497..93e08d6 100644 > --- > a/MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/MemoryStat > usCodeWorker.c > +++ > b/MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/MemoryStat > usCodeWorker.c > @@ -2,13 +2,14 @@ > Runtime memory status code worker. > > Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<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 > - 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. > + (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 > + 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. > > **/ > > @@ -40,6 +41,7 @@ RtMemoryStatusCodeInitializeWorker ( > mRtMemoryStatusCodeTable->NumberOfRecords = 0; > mRtMemoryStatusCodeTable->MaxRecordsNumber = > (PcdGet16 (PcdStatusCodeMemorySize) * 1024) / sizeof > (MEMORY_STATUSCODE_RECORD); > + PcdSet64S (PcdDxeMemoryStatusCodeTablePtr, > (UINT64)(UINTN)mRtMemoryStatusCodeTable); > > return EFI_SUCCESS; > } > diff --git > a/MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/StatusCodeH > andlerRuntimeDxe.h > b/MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/StatusCodeH > andlerRuntimeDxe.h > index 2bf3412..d736566 100644 > --- > a/MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/StatusCodeH > andlerRuntimeDxe.h > +++ > b/MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/StatusCodeH > andlerRuntimeDxe.h > @@ -2,6 +2,7 @@ > Internal include file for Status Code Handler Driver. > > Copyright (c) 2006 - 2012, 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 > @@ -40,15 +41,6 @@ > // > #define MAX_DEBUG_MESSAGE_LENGTH 0x100 > > -// > -// Runtime memory status code worker definition > -// > -typedef struct { > - UINT32 RecordIndex; > - UINT32 NumberOfRecords; > - UINT32 MaxRecordsNumber; > -} RUNTIME_MEMORY_STATUSCODE_HEADER; > - > extern RUNTIME_MEMORY_STATUSCODE_HEADER > *mRtMemoryStatusCodeTable; > > /** > diff --git > a/MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/StatusCodeH > andlerRuntimeDxe.inf > b/MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/StatusCodeH > andlerRuntimeDxe.inf > index ba22ca4..44d6dc5 100644 > --- > a/MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/StatusCodeH > andlerRuntimeDxe.inf > +++ > b/MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/StatusCodeH > andlerRuntimeDxe.inf > @@ -2,7 +2,7 @@ > # Status Code Handler Driver which produces general handlers and hook > them onto the DXE status code router. > # > # 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 > @@ -67,6 +67,7 @@ > > [Pcd] > gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeMemorySize |128| > gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseMemory ## > SOMETIMES_CONSUMES > + gEfiMdeModulePkgTokenSpaceGuid.PcdDxeMemoryStatusCodeTablePtr > > [Depex] > gEfiRscHandlerProtocolGuid > diff --git > a/MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerS > mm.h > b/MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerS > mm.h > index ee85a69..a35a0f0 100644 > --- > a/MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerS > mm.h > +++ > b/MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerS > mm.h > @@ -2,6 +2,7 @@ > Internal include file for Status Code Handler Driver. > > Copyright (c) 2009 - 2012, 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 > @@ -37,15 +38,6 @@ > // > #define MAX_DEBUG_MESSAGE_LENGTH 0x100 > > -// > -// Runtime memory status code worker definition > -// > -typedef struct { > - UINT32 RecordIndex; > - UINT32 NumberOfRecords; > - UINT32 MaxRecordsNumber; > -} RUNTIME_MEMORY_STATUSCODE_HEADER; > - > extern RUNTIME_MEMORY_STATUSCODE_HEADER > *mSmmMemoryStatusCodeTable; > > /** > -- > 2.8.3.windows.1 > > _______________________________________________ > edk2-devel mailing list > [email protected] > https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

