/*++ | |
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: | |
GenericMemoryTest.h | |
Abstract: | |
The EFI generic memory test protocol | |
For more information please look at EfiMemoryTest.doc | |
--*/ | |
#ifndef __GENERIC_MEMORY_TEST_H__ | |
#define __GENERIC_MEMORY_TEST_H__ | |
#define EFI_GENERIC_MEMORY_TEST_PROTOCOL_GUID \ | |
{ 0x309de7f1, 0x7f5e, 0x4ace, {0xb4, 0x9c, 0x53, 0x1b, 0xe5, 0xaa, 0x95, 0xef} } | |
typedef struct _EFI_GENERIC_MEMORY_TEST_PROTOCOL EFI_GENERIC_MEMORY_TEST_PROTOCOL; | |
typedef enum { | |
IGNORE, | |
QUICK, | |
SPARSE, | |
EXTENSIVE, | |
MAXLEVEL | |
} EXTENDMEM_COVERAGE_LEVEL; | |
typedef | |
EFI_STATUS | |
(EFIAPI *EFI_MEMORY_TEST_INIT) ( | |
IN EFI_GENERIC_MEMORY_TEST_PROTOCOL *This, | |
IN EXTENDMEM_COVERAGE_LEVEL Level, | |
OUT BOOLEAN *RequireSoftECCInit | |
) | |
/*++ | |
Routine Description: | |
Initialize the generic memory test. | |
Arguments: | |
This - Protocol instance pointer. | |
Level - The coverage level of the memory test. | |
RequireSoftECCInit - Indicate if the memory need software ECC init. | |
Returns: | |
EFI_SUCCESS - The generic memory test initialized correctly. | |
EFI_NO_MEDIA - There is not any non-tested memory found, in this | |
function if not any non-tesed memory found means | |
that the memory test driver have not detect any | |
non-tested extended memory of current system. | |
--*/ | |
; | |
typedef | |
EFI_STATUS | |
(EFIAPI *EFI_PERFORM_MEMORY_TEST) ( | |
IN EFI_GENERIC_MEMORY_TEST_PROTOCOL *This, | |
OUT UINT64 *TestedMemorySize, | |
OUT UINT64 *TotalMemorySize, | |
OUT BOOLEAN *ErrorOut, | |
IN BOOLEAN IfTestAbort | |
) | |
/*++ | |
Routine Description: | |
Perform the memory test. | |
Arguments: | |
This - Protocol instance pointer. | |
TestedMemorySize - Return the tested extended memory size. | |
TotalMemorySize - Return the whole system physical memory size, this | |
value may be changed if in some case some error | |
DIMMs be disabled. | |
ErrorOut - Any time the memory error occurs, this will be TRUE. | |
IfTestAbort - Indicate if the user press "ESC" to skip the memory | |
test. | |
Returns: | |
EFI_SUCCESS - One block of memory test ok, the block size is hide | |
internally. | |
EFI_NOT_FOUND - Indicate all the non-tested memory blocks have | |
already go through. | |
--*/ | |
; | |
typedef | |
EFI_STATUS | |
(EFIAPI *EFI_MEMORY_TEST_FINISHED) ( | |
IN EFI_GENERIC_MEMORY_TEST_PROTOCOL *This | |
) | |
/*++ | |
Routine Description: | |
The memory test finished. | |
Arguments: | |
This - Protocol instance pointer. | |
Returns: | |
EFI_SUCCESS - Successful free all the generic memory test driver | |
allocated resource and notify to platform memory | |
test driver that memory test finished. | |
--*/ | |
; | |
typedef | |
EFI_STATUS | |
(EFIAPI *EFI_MEMORY_TEST_COMPATIBLE_RANGE) ( | |
IN EFI_GENERIC_MEMORY_TEST_PROTOCOL *This, | |
IN EFI_PHYSICAL_ADDRESS StartAddress, | |
IN UINT64 Length | |
) | |
/*++ | |
Routine Description: | |
Provide capability to test compatible range which used by some sepcial | |
driver required using memory range before BDS perform memory test. | |
Arguments: | |
This - Protocol instance pointer. | |
StartAddress - The start address of the memory range. | |
Length - The memory range's length. | |
Return: | |
EFI_SUCCESS - The compatible memory range pass the memory test. | |
EFI_DEVICE_ERROR - The compatible memory range test find memory error | |
and also return return the error address. | |
--*/ | |
; | |
struct _EFI_GENERIC_MEMORY_TEST_PROTOCOL { | |
EFI_MEMORY_TEST_INIT MemoryTestInit; | |
EFI_PERFORM_MEMORY_TEST PerformMemoryTest; | |
EFI_MEMORY_TEST_FINISHED Finished; | |
EFI_MEMORY_TEST_COMPATIBLE_RANGE CompatibleRangeTest; | |
}; | |
extern EFI_GUID gEfiGenericMemTestProtocolGuid; | |
#endif | |