/** @file\r
- The generic memory test driver definition\r
+ Include file of the NULL memory test driver.\r
\r
-Copyright (c) 2006 - 2008, Intel Corporation. <BR>\r
-All rights reserved. This program and the accompanying materials\r
+Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
+This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
which accompanies this distribution. The full text of the license may be found at\r
http://opensource.org/licenses/bsd-license.php\r
\r
**/\r
\r
-#ifndef _NULL_MEMORY_TEST_H\r
-#define _NULL_MEMORY_TEST_H\r
+#ifndef _NULL_MEMORY_TEST_H_\r
+#define _NULL_MEMORY_TEST_H_\r
\r
\r
#include <PiDxe.h>\r
#include <Library/MemoryAllocationLib.h>\r
\r
//\r
-// attributes for reserved memory before it is promoted to system memory\r
+// Definition of memory status.\r
//\r
#define EFI_MEMORY_PRESENT 0x0100000000000000ULL\r
#define EFI_MEMORY_INITIALIZED 0x0200000000000000ULL\r
#define EFI_MEMORY_TESTED 0x0400000000000000ULL\r
\r
+/**\r
+ Initialize the generic memory test.\r
\r
-//\r
-// Some global define\r
-//\r
-#define GENERIC_CACHELINE_SIZE 0x40\r
+ This function implements EFI_GENERIC_MEMORY_TEST_PROTOCOL.MemoryTestInit.\r
+ It simply promotes untested reserved memory to system memory without real test.\r
\r
-//\r
-// The SPARSE_SPAN_SIZE size can not small then the MonoTestSize\r
-//\r
-#define TEST_BLOCK_SIZE 0x2000000\r
-#define QUICK_SPAN_SIZE (TEST_BLOCK_SIZE >> 2)\r
-#define SPARSE_SPAN_SIZE (TEST_BLOCK_SIZE >> 4)\r
+ @param This Protocol instance pointer. \r
+ @param Level The coverage level of the memory test. \r
+ @param RequireSoftECCInit Indicate if the memory need software ECC init. \r
\r
-//\r
-// This structure records every nontested memory range parsed through GCD\r
-// service.\r
-//\r
-#define EFI_NONTESTED_MEMORY_RANGE_SIGNATURE EFI_SIGNATURE_32 ('N', 'T', 'M', 'E')\r
-typedef struct {\r
- UINTN Signature;\r
- LIST_ENTRY Link;\r
- EFI_PHYSICAL_ADDRESS StartAddress;\r
- UINT64 Length;\r
- UINT64 Capabilities;\r
- BOOLEAN Above4G;\r
- BOOLEAN AlreadyMapped;\r
-} NONTESTED_MEMORY_RANGE;\r
-\r
-#define NONTESTED_MEMORY_RANGE_FROM_LINK(link) \\r
- CR(link, NONTESTED_MEMORY_RANGE, Link, EFI_NONTESTED_MEMORY_RANGE_SIGNATURE)\r
+ @retval EFI_SUCCESS The generic memory test initialized correctly. \r
+ @retval EFI_NO_MEDIA There is not any non-tested memory found, in this \r
+ function if not any non-tesed memory found means \r
+ that the memory test driver have not detect any \r
+ non-tested extended memory of current system. \r
\r
-//\r
-// This is the memory test driver's structure definition\r
-//\r
-#define EFI_GENERIC_MEMORY_TEST_PRIVATE_SIGNATURE EFI_SIGNATURE_32 ('G', 'E', 'M', 'T')\r
-\r
-//\r
-// Function Prototypes\r
-//\r
+**/\r
EFI_STATUS\r
EFIAPI\r
InitializeMemoryTest (\r
IN EFI_GENERIC_MEMORY_TEST_PROTOCOL *This,\r
IN EXTENDMEM_COVERAGE_LEVEL Level,\r
OUT BOOLEAN *RequireSoftECCInit\r
- )\r
-;\r
+ );\r
+\r
+/**\r
+ Perform the memory test.\r
+\r
+ This function implements EFI_GENERIC_MEMORY_TEST_PROTOCOL.PerformMemoryTest.\r
+ It simply returns EFI_NOT_FOUND.\r
+\r
+ @param This Protocol instance pointer. \r
+ @param TestedMemorySize Return the tested extended memory size. \r
+ @param TotalMemorySize Return the whole system physical memory size, this \r
+ value may be changed if in some case some error \r
+ DIMMs be disabled. \r
+ @param ErrorOut Any time the memory error occurs, this will be \r
+ TRUE. \r
+ @param IfTestAbort Indicate if the user press "ESC" to skip the memory \r
+ test. \r
+\r
+ @retval EFI_SUCCESS One block of memory test ok, the block size is hide \r
+ internally. \r
+ @retval EFI_NOT_FOUND Indicate all the non-tested memory blocks have \r
+ already go through. \r
+ @retval EFI_DEVICE_ERROR Mis-compare error, and no agent can handle it\r
\r
+**/\r
EFI_STATUS\r
EFIAPI\r
GenPerformMemoryTest (\r
OUT UINT64 *TotalMemorySize,\r
OUT BOOLEAN *ErrorOut,\r
IN BOOLEAN TestAbort\r
- )\r
-;\r
+ );\r
+\r
+/**\r
+ The memory test finished.\r
+\r
+ This function implements EFI_GENERIC_MEMORY_TEST_PROTOCOL.Finished.\r
+ It simply returns EFI_SUCCESS.\r
+\r
+ @param This Protocol instance pointer. \r
+\r
+ @retval EFI_SUCCESS Successful free all the generic memory test driver \r
+ allocated resource and notify to platform memory \r
+ test driver that memory test finished. \r
\r
+**/\r
EFI_STATUS\r
EFIAPI\r
GenMemoryTestFinished (\r
IN EFI_GENERIC_MEMORY_TEST_PROTOCOL *This\r
- )\r
-;\r
+ );\r
+\r
+/**\r
+ Provide capability to test compatible range which used by some special\r
+ driver required using memory range before BDS perform memory test.\r
+\r
+ This function implements EFI_GENERIC_MEMORY_TEST_PROTOCOL.CompatibleRangeTest.\r
+ It simply set the memory range to system memory.\r
\r
+ @param This Protocol instance pointer. \r
+ @param StartAddress The start address of the memory range. \r
+ @param Length The memory range's length. \r
+ \r
+ @retval EFI_SUCCESS The compatible memory range pass the memory test. \r
+ @retval EFI_INVALID_PARAMETER The compatible memory range must be below 16M.\r
+\r
+**/\r
EFI_STATUS\r
EFIAPI\r
GenCompatibleRangeTest (\r
IN EFI_GENERIC_MEMORY_TEST_PROTOCOL *This,\r
IN EFI_PHYSICAL_ADDRESS StartAddress,\r
IN UINT64 Length\r
- )\r
-;\r
+ );\r
\r
#endif\r