| /*++ | |
| 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 | |