From ce2f555794fdb9efaf6af0d0f45a8892c58fcaa7 Mon Sep 17 00:00:00 2001 From: yshang1 Date: Mon, 2 Jul 2007 03:48:40 +0000 Subject: Add BaseMemoryTestDxe in MdeModulePkg.dsc Add RuntimeDxe in MdeModulePkg.dsc Move Security/SecurityStub/Dxe to SecurityStubDxe. Add EFI_MAX_ADDRESS in Uefi/UefiBaseType.h. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2930 6f19259b-4bc3-4df7-8a09-765794883524 --- .../Universal/BaseMemoryTestPei/BaseMemoryTest.c | 167 +++++++++++++++++++++ .../Universal/BaseMemoryTestPei/BaseMemoryTest.h | 87 +++++++++++ .../Universal/BaseMemoryTestPei/BaseMemoryTest.inf | 91 +++++++++++ .../Universal/BaseMemoryTestPei/BaseMemoryTest.msa | 56 +++++++ 4 files changed, 401 insertions(+) create mode 100644 MdeModulePkg/Universal/BaseMemoryTestPei/BaseMemoryTest.c create mode 100644 MdeModulePkg/Universal/BaseMemoryTestPei/BaseMemoryTest.h create mode 100644 MdeModulePkg/Universal/BaseMemoryTestPei/BaseMemoryTest.inf create mode 100644 MdeModulePkg/Universal/BaseMemoryTestPei/BaseMemoryTest.msa (limited to 'MdeModulePkg/Universal/BaseMemoryTestPei') diff --git a/MdeModulePkg/Universal/BaseMemoryTestPei/BaseMemoryTest.c b/MdeModulePkg/Universal/BaseMemoryTestPei/BaseMemoryTest.c new file mode 100644 index 0000000000..7b207b919d --- /dev/null +++ b/MdeModulePkg/Universal/BaseMemoryTestPei/BaseMemoryTest.c @@ -0,0 +1,167 @@ +/*++ + +Copyright (c) 2006 - 2007, 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. + +Module Name: + + BaseMemoryTest.c + +Abstract: + + The PEI memory test support + +--*/ + +// +// The package level header files this module uses +// +#include +#include +// +// The protocols, PPI and GUID defintions for this module +// +#include +// +// The Library classes this module consumes +// +#include +#include +#include + +#include + +static PEI_BASE_MEMORY_TEST_PPI mPeiBaseMemoryTestPpi = { BaseMemoryTest }; + +static EFI_PEI_PPI_DESCRIPTOR PpiListPeiBaseMemoryTest = { + (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST), + &gPeiBaseMemoryTestPpiGuid, + &mPeiBaseMemoryTestPpi +}; + +EFI_STATUS +EFIAPI +PeiBaseMemoryTestInit ( + IN EFI_FFS_FILE_HEADER *FfsHeader, + IN EFI_PEI_SERVICES **PeiServices + ) +/*++ +Description: + + Entry point function of BaseMemoryTestInit Peim. + +Arguments: + + PeiServices - General purpose services available to every PEIM. + FfsHeader - Ffs header pointer + +Returns: + + Status - Result of InstallPpi + +--*/ +{ + EFI_STATUS Status; + + Status = (**PeiServices).InstallPpi (PeiServices, &PpiListPeiBaseMemoryTest); + + return Status; +} + +EFI_STATUS +EFIAPI +BaseMemoryTest ( + IN EFI_PEI_SERVICES **PeiServices, + IN PEI_BASE_MEMORY_TEST_PPI *This, + IN EFI_PHYSICAL_ADDRESS BeginAddress, + IN UINT64 MemoryLength, + IN PEI_MEMORY_TEST_OP Operation, + OUT EFI_PHYSICAL_ADDRESS *ErrorAddress + ) +/*++ +Description: + + Test base memory. + +Arguments: + + PeiServices - General purpose services available to every PEIM. + This - Pei memory test PPI pointer. + BeginAddress - Beginning of the memory address to be checked. + MemoryLength - Bytes of memory range to be checked. + Operation - Type of memory check operation to be performed. + ErrorAddress - Return the address of the error memory address. + ErrorAddress - Address which has error when checked. + +Returns: + + Status - Result of InstallPpi + +--*/ +{ + UINT32 TestPattern; + EFI_PHYSICAL_ADDRESS TempAddress; + UINT32 SpanSize; + + REPORT_STATUS_CODE ( + EFI_PROGRESS_CODE, + EFI_COMPUTING_UNIT_MEMORY + EFI_CU_MEMORY_PC_TEST + ); + + TestPattern = TEST_PATTERN; + SpanSize = 0; + + // + // Make sure we don't try and test anything above the max physical address range + // + ASSERT (BeginAddress + MemoryLength < EFI_MAX_ADDRESS); + + switch (Operation) { + case Extensive: + SpanSize = 0x4; + break; + + case Sparse: + case Quick: + SpanSize = COVER_SPAN; + break; + + case Ignore: + goto Done; + break; + } + // + // Write the test pattern into memory range + // + TempAddress = BeginAddress; + while (TempAddress < BeginAddress + MemoryLength) { + (*(UINT32 *) (UINTN) TempAddress) = TestPattern; + TempAddress += SpanSize; + } + // + // Read pattern from memory and compare it + // + TempAddress = BeginAddress; + while (TempAddress < BeginAddress + MemoryLength) { + if ((*(UINT32 *) (UINTN) TempAddress) != TestPattern) { + *ErrorAddress = TempAddress; + REPORT_STATUS_CODE ( + EFI_ERROR_CODE | EFI_ERROR_UNRECOVERED, + EFI_COMPUTING_UNIT_MEMORY | EFI_CU_MEMORY_EC_UNCORRECTABLE + ); + + return EFI_DEVICE_ERROR; + } + + TempAddress += SpanSize; + } + +Done: + return EFI_SUCCESS; +} diff --git a/MdeModulePkg/Universal/BaseMemoryTestPei/BaseMemoryTest.h b/MdeModulePkg/Universal/BaseMemoryTestPei/BaseMemoryTest.h new file mode 100644 index 0000000000..791a66c54c --- /dev/null +++ b/MdeModulePkg/Universal/BaseMemoryTestPei/BaseMemoryTest.h @@ -0,0 +1,87 @@ +/*++ + +Copyright (c) 2006 - 2007, 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. + +Module Name: + + BaseMemoryTest.h + +Abstract: + + Tiano PEIM to provide a PEI memory test service. + +--*/ + +#ifndef _PEI_BASE_MEMORY_TEST_H_ +#define _PEI_BASE_MEMORY_TEST_H_ + +// +// Some global define +// +#define COVER_SPAN 0x40000 +#define TEST_PATTERN 0x5A5A5A5A + +EFI_STATUS +EFIAPI +PeiBaseMemoryTestInit ( + IN EFI_FFS_FILE_HEADER *FfsHeader, + IN EFI_PEI_SERVICES **PeiServices + ) +/*++ + +Routine Description: + + TODO: Add function description + +Arguments: + + FfsHeader - TODO: add argument description + PeiServices - TODO: add argument description + +Returns: + + TODO: add return values + +--*/ +; + +EFI_STATUS +EFIAPI +BaseMemoryTest ( + IN EFI_PEI_SERVICES **PeiServices, + IN PEI_BASE_MEMORY_TEST_PPI *This, + IN EFI_PHYSICAL_ADDRESS BeginAddress, + IN UINT64 MemoryLength, + IN PEI_MEMORY_TEST_OP Operation, + OUT EFI_PHYSICAL_ADDRESS *ErrorAddress + ) +/*++ + +Routine Description: + + TODO: Add function description + +Arguments: + + PeiServices - TODO: add argument description + This - TODO: add argument description + BeginAddress - TODO: add argument description + MemoryLength - TODO: add argument description + Operation - TODO: add argument description + ErrorAddress - TODO: add argument description + +Returns: + + TODO: add return values + +--*/ +; + +#endif diff --git a/MdeModulePkg/Universal/BaseMemoryTestPei/BaseMemoryTest.inf b/MdeModulePkg/Universal/BaseMemoryTestPei/BaseMemoryTest.inf new file mode 100644 index 0000000000..6010077de8 --- /dev/null +++ b/MdeModulePkg/Universal/BaseMemoryTestPei/BaseMemoryTest.inf @@ -0,0 +1,91 @@ +#/** @file +# Component description file for PeiBaseMemoryTestInit module. +# +# This driver provides memory test ppi for memory test in Pei Phase. +# Copyright (c) 2006 - 2007, 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. +# +# +#**/ + +################################################################################ +# +# Defines Section - statements that will be processed to create a Makefile. +# +################################################################################ +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = PeiBaseMemoryTestInit + FILE_GUID = 736EB068-8C01-47c5-964B-1C57BD5D4D64 + MODULE_TYPE = PEIM + VERSION_STRING = 1.0 + EDK_RELEASE_VERSION = 0x00020000 + EFI_SPECIFICATION_VERSION = 0x00020000 + + ENTRY_POINT = PeiBaseMemoryTestInit + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 IPF EBC +# + +################################################################################ +# +# Sources Section - list of files that are required for the build to succeed. +# +################################################################################ + +[Sources.common] + BaseMemoryTest.c + BaseMemoryTest.h + + +################################################################################ +# +# Includes Section - list of Include locations that are required for +# this module. +# +################################################################################ + +################################################################################ +# +# Package Dependency Section - list of Package files that are required for +# this module. +# +################################################################################ + +[Packages] + MdePkg/MdePkg.dec + IntelFrameworkPkg/IntelFrameworkPkg.dec + + +################################################################################ +# +# Library Class Section - list of Library Classes that are required for +# this module. +# +################################################################################ + +[LibraryClasses] + ReportStatusCodeLib + PeimEntryPoint + DebugLib + + +################################################################################ +# +# PPI C Name Section - list of PPI and PPI Notify C Names that this module +# uses or produces. +# +################################################################################ + +[Ppis] + gPeiBaseMemoryTestPpiGuid # PPI ALWAYS_PRODUCED + diff --git a/MdeModulePkg/Universal/BaseMemoryTestPei/BaseMemoryTest.msa b/MdeModulePkg/Universal/BaseMemoryTestPei/BaseMemoryTest.msa new file mode 100644 index 0000000000..95c5c274b4 --- /dev/null +++ b/MdeModulePkg/Universal/BaseMemoryTestPei/BaseMemoryTest.msa @@ -0,0 +1,56 @@ + + + + PeiBaseMemoryTestInit + PEIM + 736EB068-8C01-47c5-964B-1C57BD5D4D64 + 1.0 + Component description file for PeiBaseMemoryTestInit module. + This driver provides memory test ppi for memory test in Pei Phase. + Copyright (c) 2006 - 2007, 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. + FRAMEWORK_BUILD_PACKAGING_SPECIFICATION 0x00000052 + + + IA32 X64 IPF EBC + false + PeiBaseMemoryTestInit + + + + DebugLib + Recommended libary Instance is PeiDxeDebugLibReportStatusCode instance in MdePkg. + + + PeimEntryPoint + + + ReportStatusCodeLib + + + + BaseMemoryTest.h + BaseMemoryTest.c + + + + + + + + gPeiBaseMemoryTestPpiGuid + + + + EFI_SPECIFICATION_VERSION 0x00020000 + EDK_RELEASE_VERSION 0x00020000 + + PeiBaseMemoryTestInit + + + \ No newline at end of file -- cgit v1.2.3