mirror of https://github.com/acidanthera/audk.git
Remove old modules after renaming.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3362 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
05177bef44
commit
656a2b8907
|
@ -1,145 +0,0 @@
|
||||||
/*++
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
--*/
|
|
||||||
|
|
||||||
#include <BaseMemoryTest.h>
|
|
||||||
|
|
||||||
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, PcdGet32 (PcdStatusCodeValueMemoryTestStarted));
|
|
||||||
|
|
||||||
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, PcdGet32 (PcdStatusCodeValueUncorrectableMemoryError));
|
|
||||||
|
|
||||||
return EFI_DEVICE_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
TempAddress += SpanSize;
|
|
||||||
}
|
|
||||||
|
|
||||||
Done:
|
|
||||||
return EFI_SUCCESS;
|
|
||||||
}
|
|
|
@ -1,95 +0,0 @@
|
||||||
/*++
|
|
||||||
|
|
||||||
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_
|
|
||||||
|
|
||||||
#include <PiPei.h>
|
|
||||||
#include <Ppi/BaseMemoryTest.h>
|
|
||||||
#include <Library/DebugLib.h>
|
|
||||||
#include <Library/PeimEntryPoint.h>
|
|
||||||
#include <Library/ReportStatusCodeLib.h>
|
|
||||||
#include <Library/PcdLib.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
|
|
|
@ -1,57 +0,0 @@
|
||||||
#/** @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.common]
|
|
||||||
BaseMemoryTest.c
|
|
||||||
BaseMemoryTest.h
|
|
||||||
|
|
||||||
[Packages]
|
|
||||||
MdePkg/MdePkg.dec
|
|
||||||
|
|
||||||
[LibraryClasses]
|
|
||||||
ReportStatusCodeLib
|
|
||||||
PeimEntryPoint
|
|
||||||
DebugLib
|
|
||||||
|
|
||||||
[Ppis]
|
|
||||||
gPeiBaseMemoryTestPpiGuid # PPI ALWAYS_PRODUCED
|
|
||||||
|
|
||||||
[PcdsFixedAtBuild.common]
|
|
||||||
PcdStatusCodeValueMemoryTestStarted|gEfiMdePkgTokenSpaceGuid
|
|
||||||
PcdStatusCodeValueUncorrectableMemoryError|gEfiMdePkgTokenSpaceGuid
|
|
||||||
|
|
|
@ -1,56 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<ModuleSurfaceArea xmlns="http://www.TianoCore.org/2006/Edk2.0">
|
|
||||||
<MsaHeader>
|
|
||||||
<ModuleName>PeiBaseMemoryTestInit</ModuleName>
|
|
||||||
<ModuleType>PEIM</ModuleType>
|
|
||||||
<GuidValue>736EB068-8C01-47c5-964B-1C57BD5D4D64</GuidValue>
|
|
||||||
<Version>1.0</Version>
|
|
||||||
<Abstract>Component description file for PeiBaseMemoryTestInit module.</Abstract>
|
|
||||||
<Description>This driver provides memory test ppi for memory test in Pei Phase.</Description>
|
|
||||||
<Copyright>Copyright (c) 2006 - 2007, Intel Corporation</Copyright>
|
|
||||||
<License>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.</License>
|
|
||||||
<Specification>FRAMEWORK_BUILD_PACKAGING_SPECIFICATION 0x00000052</Specification>
|
|
||||||
</MsaHeader>
|
|
||||||
<ModuleDefinitions>
|
|
||||||
<SupportedArchitectures>IA32 X64 IPF EBC</SupportedArchitectures>
|
|
||||||
<BinaryModule>false</BinaryModule>
|
|
||||||
<OutputFileBasename>PeiBaseMemoryTestInit</OutputFileBasename>
|
|
||||||
</ModuleDefinitions>
|
|
||||||
<LibraryClassDefinitions>
|
|
||||||
<LibraryClass Usage="ALWAYS_CONSUMED" RecommendedInstanceGuid="bda39d3a-451b-4350-8266-81ab10fa0523">
|
|
||||||
<Keyword>DebugLib</Keyword>
|
|
||||||
<HelpText>Recommended libary Instance is PeiDxeDebugLibReportStatusCode instance in MdePkg.</HelpText>
|
|
||||||
</LibraryClass>
|
|
||||||
<LibraryClass Usage="ALWAYS_CONSUMED">
|
|
||||||
<Keyword>PeimEntryPoint</Keyword>
|
|
||||||
</LibraryClass>
|
|
||||||
<LibraryClass Usage="ALWAYS_CONSUMED">
|
|
||||||
<Keyword>ReportStatusCodeLib</Keyword>
|
|
||||||
</LibraryClass>
|
|
||||||
</LibraryClassDefinitions>
|
|
||||||
<SourceFiles>
|
|
||||||
<Filename>BaseMemoryTest.h</Filename>
|
|
||||||
<Filename>BaseMemoryTest.c</Filename>
|
|
||||||
</SourceFiles>
|
|
||||||
<PackageDependencies>
|
|
||||||
<Package PackageGuid="5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"/>
|
|
||||||
<Package PackageGuid="68169ab0-d41b-4009-9060-292c253ac43d"/>
|
|
||||||
</PackageDependencies>
|
|
||||||
<PPIs>
|
|
||||||
<Ppi Usage="ALWAYS_PRODUCED">
|
|
||||||
<PpiCName>gPeiBaseMemoryTestPpiGuid</PpiCName>
|
|
||||||
</Ppi>
|
|
||||||
</PPIs>
|
|
||||||
<Externs>
|
|
||||||
<Specification>EFI_SPECIFICATION_VERSION 0x00020000</Specification>
|
|
||||||
<Specification>EDK_RELEASE_VERSION 0x00020000</Specification>
|
|
||||||
<Extern>
|
|
||||||
<ModuleEntryPoint>PeiBaseMemoryTestInit</ModuleEntryPoint>
|
|
||||||
</Extern>
|
|
||||||
</Externs>
|
|
||||||
</ModuleSurfaceArea>
|
|
|
@ -1,214 +0,0 @@
|
||||||
/*++
|
|
||||||
|
|
||||||
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:
|
|
||||||
|
|
||||||
NullMemoryTest.c
|
|
||||||
|
|
||||||
Abstract:
|
|
||||||
|
|
||||||
--*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "NullMemoryTest.h"
|
|
||||||
|
|
||||||
//
|
|
||||||
// Module global members
|
|
||||||
//
|
|
||||||
UINT64 mTestedSystemMemory = 0;
|
|
||||||
UINT64 mTotalSystemMemory = 0;
|
|
||||||
EFI_HANDLE mGenericMemoryTestHandle;
|
|
||||||
|
|
||||||
//
|
|
||||||
// Driver entry here
|
|
||||||
//
|
|
||||||
EFI_GENERIC_MEMORY_TEST_PROTOCOL mGenericMemoryTest = {
|
|
||||||
InitializeMemoryTest,
|
|
||||||
GenPerformMemoryTest,
|
|
||||||
GenMemoryTestFinished,
|
|
||||||
GenCompatibleRangeTest
|
|
||||||
};
|
|
||||||
|
|
||||||
EFI_STATUS
|
|
||||||
EFIAPI
|
|
||||||
GenericMemoryTestEntryPoint (
|
|
||||||
IN EFI_HANDLE ImageHandle,
|
|
||||||
IN EFI_SYSTEM_TABLE *SystemTable
|
|
||||||
)
|
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
The generic memory test driver's entry point, it can initialize private data
|
|
||||||
to default value
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
ImageHandle of the loaded driver
|
|
||||||
Pointer to the System Table
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
Status
|
|
||||||
|
|
||||||
EFI_SUCCESS - Protocol successfully installed
|
|
||||||
EFI_OUT_OF_RESOURCES - Can not allocate protocol data structure in base
|
|
||||||
memory
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
|
||||||
EFI_STATUS Status;
|
|
||||||
|
|
||||||
//
|
|
||||||
// Install the protocol
|
|
||||||
//
|
|
||||||
Status = gBS->InstallProtocolInterface (
|
|
||||||
&mGenericMemoryTestHandle,
|
|
||||||
&gEfiGenericMemTestProtocolGuid,
|
|
||||||
EFI_NATIVE_INTERFACE,
|
|
||||||
&mGenericMemoryTest
|
|
||||||
);
|
|
||||||
|
|
||||||
return Status;
|
|
||||||
}
|
|
||||||
//
|
|
||||||
// EFI_GENERIC_MEMORY_TEST_PROTOCOL implementation
|
|
||||||
//
|
|
||||||
EFI_STATUS
|
|
||||||
EFIAPI
|
|
||||||
InitializeMemoryTest (
|
|
||||||
IN EFI_GENERIC_MEMORY_TEST_PROTOCOL *This,
|
|
||||||
IN EXTENDMEM_COVERAGE_LEVEL Level,
|
|
||||||
OUT BOOLEAN *RequireSoftECCInit
|
|
||||||
)
|
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
|
||||||
UINTN NumberOfDescriptors;
|
|
||||||
EFI_GCD_MEMORY_SPACE_DESCRIPTOR *MemorySpaceMap;
|
|
||||||
UINTN Index;
|
|
||||||
|
|
||||||
gDS->GetMemorySpaceMap (&NumberOfDescriptors, &MemorySpaceMap);
|
|
||||||
for (Index = 0; Index < NumberOfDescriptors; Index++) {
|
|
||||||
if (MemorySpaceMap[Index].GcdMemoryType == EfiGcdMemoryTypeReserved &&
|
|
||||||
(MemorySpaceMap[Index].Capabilities & (EFI_MEMORY_PRESENT | EFI_MEMORY_INITIALIZED | EFI_MEMORY_TESTED)) ==
|
|
||||||
(EFI_MEMORY_PRESENT | EFI_MEMORY_INITIALIZED)
|
|
||||||
) {
|
|
||||||
gDS->RemoveMemorySpace (
|
|
||||||
MemorySpaceMap[Index].BaseAddress,
|
|
||||||
MemorySpaceMap[Index].Length
|
|
||||||
);
|
|
||||||
|
|
||||||
gDS->AddMemorySpace (
|
|
||||||
EfiGcdMemoryTypeSystemMemory,
|
|
||||||
MemorySpaceMap[Index].BaseAddress,
|
|
||||||
MemorySpaceMap[Index].Length,
|
|
||||||
MemorySpaceMap[Index].Capabilities &~
|
|
||||||
(EFI_MEMORY_PRESENT | EFI_MEMORY_INITIALIZED | EFI_MEMORY_TESTED | EFI_MEMORY_RUNTIME)
|
|
||||||
);
|
|
||||||
|
|
||||||
mTestedSystemMemory += MemorySpaceMap[Index].Length;
|
|
||||||
mTotalSystemMemory += MemorySpaceMap[Index].Length;
|
|
||||||
} else if (MemorySpaceMap[Index].GcdMemoryType == EfiGcdMemoryTypeSystemMemory) {
|
|
||||||
mTotalSystemMemory += MemorySpaceMap[Index].Length;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
FreePool (MemorySpaceMap);
|
|
||||||
|
|
||||||
*RequireSoftECCInit = FALSE;
|
|
||||||
return EFI_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
EFI_STATUS
|
|
||||||
EFIAPI
|
|
||||||
GenPerformMemoryTest (
|
|
||||||
IN EFI_GENERIC_MEMORY_TEST_PROTOCOL *This,
|
|
||||||
IN OUT UINT64 *TestedMemorySize,
|
|
||||||
OUT UINT64 *TotalMemorySize,
|
|
||||||
OUT BOOLEAN *ErrorOut,
|
|
||||||
IN BOOLEAN TestAbort
|
|
||||||
)
|
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
|
||||||
*ErrorOut = FALSE;
|
|
||||||
*TestedMemorySize = mTestedSystemMemory;
|
|
||||||
*TotalMemorySize = mTotalSystemMemory;
|
|
||||||
|
|
||||||
return EFI_NOT_FOUND;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
EFI_STATUS
|
|
||||||
EFIAPI
|
|
||||||
GenMemoryTestFinished (
|
|
||||||
IN EFI_GENERIC_MEMORY_TEST_PROTOCOL *This
|
|
||||||
)
|
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
|
||||||
return EFI_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
EFI_STATUS
|
|
||||||
EFIAPI
|
|
||||||
GenCompatibleRangeTest (
|
|
||||||
IN EFI_GENERIC_MEMORY_TEST_PROTOCOL *This,
|
|
||||||
IN EFI_PHYSICAL_ADDRESS StartAddress,
|
|
||||||
IN UINT64 Length
|
|
||||||
)
|
|
||||||
/*++
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
|
|
||||||
--*/
|
|
||||||
{
|
|
||||||
EFI_GCD_MEMORY_SPACE_DESCRIPTOR descriptor;
|
|
||||||
|
|
||||||
gDS->GetMemorySpaceDescriptor (StartAddress, &descriptor);
|
|
||||||
|
|
||||||
gDS->RemoveMemorySpace (StartAddress, Length);
|
|
||||||
|
|
||||||
gDS->AddMemorySpace (
|
|
||||||
EfiGcdMemoryTypeSystemMemory,
|
|
||||||
StartAddress,
|
|
||||||
Length,
|
|
||||||
descriptor.Capabilities &~(EFI_MEMORY_PRESENT | EFI_MEMORY_INITIALIZED | EFI_MEMORY_TESTED | EFI_MEMORY_RUNTIME)
|
|
||||||
);
|
|
||||||
|
|
||||||
return EFI_SUCCESS;
|
|
||||||
}
|
|
|
@ -1,124 +0,0 @@
|
||||||
/*++
|
|
||||||
|
|
||||||
Copyright (c) 2006, 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:
|
|
||||||
|
|
||||||
NullMemoryTest.h
|
|
||||||
|
|
||||||
Abstract:
|
|
||||||
The generic memory test driver definition
|
|
||||||
|
|
||||||
--*/
|
|
||||||
|
|
||||||
#ifndef _NULL_MEMORY_TEST_H
|
|
||||||
#define _NULL_MEMORY_TEST_H
|
|
||||||
|
|
||||||
//
|
|
||||||
// The package level header files this module uses
|
|
||||||
//
|
|
||||||
#include <PiDxe.h>
|
|
||||||
|
|
||||||
//
|
|
||||||
// The protocols, PPI and GUID defintions for this module
|
|
||||||
//
|
|
||||||
#include <Protocol/GenericMemoryTest.h>
|
|
||||||
//
|
|
||||||
// The Library classes this module consumes
|
|
||||||
//
|
|
||||||
#include <Library/DebugLib.h>
|
|
||||||
#include <Library/UefiDriverEntryPoint.h>
|
|
||||||
#include <Library/DxeServicesTableLib.h>
|
|
||||||
#include <Library/UefiBootServicesTableLib.h>
|
|
||||||
#include <Library/MemoryAllocationLib.h>
|
|
||||||
|
|
||||||
//
|
|
||||||
// attributes for reserved memory before it is promoted to system memory
|
|
||||||
//
|
|
||||||
#define EFI_MEMORY_PRESENT 0x0100000000000000ULL
|
|
||||||
#define EFI_MEMORY_INITIALIZED 0x0200000000000000ULL
|
|
||||||
#define EFI_MEMORY_TESTED 0x0400000000000000ULL
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Some global define
|
|
||||||
//
|
|
||||||
#define GENERIC_CACHELINE_SIZE 0x40
|
|
||||||
|
|
||||||
//
|
|
||||||
// The SPARSE_SPAN_SIZE size can not small then the MonoTestSize
|
|
||||||
//
|
|
||||||
#define TEST_BLOCK_SIZE 0x2000000
|
|
||||||
#define QUICK_SPAN_SIZE (TEST_BLOCK_SIZE >> 2)
|
|
||||||
#define SPARSE_SPAN_SIZE (TEST_BLOCK_SIZE >> 4)
|
|
||||||
|
|
||||||
//
|
|
||||||
// This structure records every nontested memory range parsed through GCD
|
|
||||||
// service.
|
|
||||||
//
|
|
||||||
#define EFI_NONTESTED_MEMORY_RANGE_SIGNATURE EFI_SIGNATURE_32 ('N', 'T', 'M', 'E')
|
|
||||||
typedef struct {
|
|
||||||
UINTN Signature;
|
|
||||||
LIST_ENTRY Link;
|
|
||||||
EFI_PHYSICAL_ADDRESS StartAddress;
|
|
||||||
UINT64 Length;
|
|
||||||
UINT64 Capabilities;
|
|
||||||
BOOLEAN Above4G;
|
|
||||||
BOOLEAN AlreadyMapped;
|
|
||||||
} NONTESTED_MEMORY_RANGE;
|
|
||||||
|
|
||||||
#define NONTESTED_MEMORY_RANGE_FROM_LINK(link) \
|
|
||||||
CR(link, NONTESTED_MEMORY_RANGE, Link, EFI_NONTESTED_MEMORY_RANGE_SIGNATURE)
|
|
||||||
|
|
||||||
//
|
|
||||||
// This is the memory test driver's structure definition
|
|
||||||
//
|
|
||||||
#define EFI_GENERIC_MEMORY_TEST_PRIVATE_SIGNATURE EFI_SIGNATURE_32 ('G', 'E', 'M', 'T')
|
|
||||||
|
|
||||||
//
|
|
||||||
// Function Prototypes
|
|
||||||
//
|
|
||||||
EFI_STATUS
|
|
||||||
EFIAPI
|
|
||||||
InitializeMemoryTest (
|
|
||||||
IN EFI_GENERIC_MEMORY_TEST_PROTOCOL *This,
|
|
||||||
IN EXTENDMEM_COVERAGE_LEVEL Level,
|
|
||||||
OUT BOOLEAN *RequireSoftECCInit
|
|
||||||
)
|
|
||||||
;
|
|
||||||
|
|
||||||
EFI_STATUS
|
|
||||||
EFIAPI
|
|
||||||
GenPerformMemoryTest (
|
|
||||||
IN EFI_GENERIC_MEMORY_TEST_PROTOCOL *This,
|
|
||||||
IN OUT UINT64 *TestedMemorySize,
|
|
||||||
OUT UINT64 *TotalMemorySize,
|
|
||||||
OUT BOOLEAN *ErrorOut,
|
|
||||||
IN BOOLEAN TestAbort
|
|
||||||
)
|
|
||||||
;
|
|
||||||
|
|
||||||
EFI_STATUS
|
|
||||||
EFIAPI
|
|
||||||
GenMemoryTestFinished (
|
|
||||||
IN EFI_GENERIC_MEMORY_TEST_PROTOCOL *This
|
|
||||||
)
|
|
||||||
;
|
|
||||||
|
|
||||||
EFI_STATUS
|
|
||||||
EFIAPI
|
|
||||||
GenCompatibleRangeTest (
|
|
||||||
IN EFI_GENERIC_MEMORY_TEST_PROTOCOL *This,
|
|
||||||
IN EFI_PHYSICAL_ADDRESS StartAddress,
|
|
||||||
IN UINT64 Length
|
|
||||||
)
|
|
||||||
;
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,96 +0,0 @@
|
||||||
#/** @file
|
|
||||||
# Component description file for NullMemoryTest module.
|
|
||||||
#
|
|
||||||
# This driver installs EFI_GENERIC_MEMORY_TEST_PROTOCOL to
|
|
||||||
# provide simple generic memory test functions.
|
|
||||||
# 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 = NullMemoryTestDxe
|
|
||||||
FILE_GUID = 96B5C032-DF4C-4b6e-8232-438DCF448D0E
|
|
||||||
MODULE_TYPE = DXE_DRIVER
|
|
||||||
VERSION_STRING = 1.0
|
|
||||||
EDK_RELEASE_VERSION = 0x00020000
|
|
||||||
EFI_SPECIFICATION_VERSION = 0x00020000
|
|
||||||
|
|
||||||
ENTRY_POINT = GenericMemoryTestEntryPoint
|
|
||||||
|
|
||||||
#
|
|
||||||
# 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]
|
|
||||||
NullMemoryTest.h
|
|
||||||
NullMemoryTest.c
|
|
||||||
|
|
||||||
|
|
||||||
################################################################################
|
|
||||||
#
|
|
||||||
# Package Dependency Section - list of Package files that are required for
|
|
||||||
# this module.
|
|
||||||
#
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
[Packages]
|
|
||||||
MdeModulePkg/MdeModulePkg.dec
|
|
||||||
MdePkg/MdePkg.dec
|
|
||||||
|
|
||||||
|
|
||||||
################################################################################
|
|
||||||
#
|
|
||||||
# Library Class Section - list of Library Classes that are required for
|
|
||||||
# this module.
|
|
||||||
#
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
[LibraryClasses]
|
|
||||||
MemoryAllocationLib
|
|
||||||
UefiBootServicesTableLib
|
|
||||||
DxeServicesTableLib
|
|
||||||
UefiDriverEntryPoint
|
|
||||||
DebugLib
|
|
||||||
|
|
||||||
|
|
||||||
################################################################################
|
|
||||||
#
|
|
||||||
# Protocol C Name Section - list of Protocol and Protocol Notify C Names
|
|
||||||
# that this module uses or produces.
|
|
||||||
#
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
[Protocols]
|
|
||||||
gEfiGenericMemTestProtocolGuid # PROTOCOL ALWAYS_PRODUCED
|
|
||||||
|
|
||||||
################################################################################
|
|
||||||
#
|
|
||||||
# Dependency Expression Section - list of Dependency expressions that are required for
|
|
||||||
# this module.
|
|
||||||
#
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
[Depex]
|
|
||||||
TRUE
|
|
|
@ -1,64 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<ModuleSurfaceArea xmlns="http://www.TianoCore.org/2006/Edk2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
|
||||||
<MsaHeader>
|
|
||||||
<ModuleName>NullMemoryTest</ModuleName>
|
|
||||||
<ModuleType>DXE_DRIVER</ModuleType>
|
|
||||||
<GuidValue>96B5C032-DF4C-4b6e-8232-438DCF448D0E</GuidValue>
|
|
||||||
<Version>1.0</Version>
|
|
||||||
<Abstract>Component description file for NullMemoryTest module.</Abstract>
|
|
||||||
<Description>This driver installs EFI_GENERIC_MEMORY_TEST_PROTOCOL to
|
|
||||||
provide simple generic memory test functions.</Description>
|
|
||||||
<Copyright>Copyright (c) 2006 - 2007, Intel Corporation</Copyright>
|
|
||||||
<License>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.</License>
|
|
||||||
<Specification>FRAMEWORK_BUILD_PACKAGING_SPECIFICATION 0x00000052</Specification>
|
|
||||||
</MsaHeader>
|
|
||||||
<ModuleDefinitions>
|
|
||||||
<SupportedArchitectures>IA32 X64 IPF EBC</SupportedArchitectures>
|
|
||||||
<BinaryModule>false</BinaryModule>
|
|
||||||
<OutputFileBasename>NullMemoryTest</OutputFileBasename>
|
|
||||||
</ModuleDefinitions>
|
|
||||||
<LibraryClassDefinitions>
|
|
||||||
<LibraryClass Usage="ALWAYS_CONSUMED">
|
|
||||||
<Keyword>DebugLib</Keyword>
|
|
||||||
</LibraryClass>
|
|
||||||
<LibraryClass Usage="ALWAYS_CONSUMED">
|
|
||||||
<Keyword>UefiDriverEntryPoint</Keyword>
|
|
||||||
</LibraryClass>
|
|
||||||
<LibraryClass Usage="ALWAYS_CONSUMED">
|
|
||||||
<Keyword>DxeServicesTableLib</Keyword>
|
|
||||||
</LibraryClass>
|
|
||||||
<LibraryClass Usage="ALWAYS_CONSUMED">
|
|
||||||
<Keyword>UefiBootServicesTableLib</Keyword>
|
|
||||||
</LibraryClass>
|
|
||||||
<LibraryClass Usage="ALWAYS_CONSUMED">
|
|
||||||
<Keyword>MemoryAllocationLib</Keyword>
|
|
||||||
</LibraryClass>
|
|
||||||
</LibraryClassDefinitions>
|
|
||||||
<SourceFiles>
|
|
||||||
<Filename>Common.h</Filename>
|
|
||||||
<Filename>NullMemoryTest.c</Filename>
|
|
||||||
<Filename>NullMemoryTest.h</Filename>
|
|
||||||
<Filename>NullMemoryTest.dxs</Filename>
|
|
||||||
</SourceFiles>
|
|
||||||
<PackageDependencies>
|
|
||||||
<Package PackageGuid="1E73767F-8F52-4603-AEB4-F29B510B6766"/>
|
|
||||||
<Package PackageGuid="BA0D78D6-2CAF-414b-BD4D-B6762A894288"/>
|
|
||||||
</PackageDependencies>
|
|
||||||
<Protocols>
|
|
||||||
<Protocol Usage="ALWAYS_PRODUCED">
|
|
||||||
<ProtocolCName>gEfiGenericMemTestProtocolGuid</ProtocolCName>
|
|
||||||
</Protocol>
|
|
||||||
</Protocols>
|
|
||||||
<Externs>
|
|
||||||
<Specification>EFI_SPECIFICATION_VERSION 0x00020000</Specification>
|
|
||||||
<Specification>EDK_RELEASE_VERSION 0x00020000</Specification>
|
|
||||||
<Extern>
|
|
||||||
<ModuleEntryPoint>GenericMemoryTestEntryPoint</ModuleEntryPoint>
|
|
||||||
</Extern>
|
|
||||||
</Externs>
|
|
||||||
</ModuleSurfaceArea>
|
|
Loading…
Reference in New Issue