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

Reply via email to