REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the EmulatorPkg package Cc: Andrew Fish <afish@apple.com> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com> Reviewed-by: Ray Ni <ray.ni@intel.com>
		
			
				
	
	
		
			113 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			113 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
  Perform the platform memory test
 | 
						|
 | 
						|
Copyright (c) 2004 - 2018, Intel Corporation. All rights reserved.<BR>
 | 
						|
SPDX-License-Identifier: BSD-2-Clause-Patent
 | 
						|
 | 
						|
**/
 | 
						|
 | 
						|
#include "PlatformBm.h"
 | 
						|
 | 
						|
//
 | 
						|
// BDS Platform Functions
 | 
						|
//
 | 
						|
 | 
						|
/**
 | 
						|
  Perform the memory test base on the memory test intensive level,
 | 
						|
  and update the memory resource.
 | 
						|
 | 
						|
  @param  Level         The memory test intensive level.
 | 
						|
 | 
						|
  @retval EFI_STATUS    Success test all the system memory and update
 | 
						|
                        the memory resource
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
PlatformBootManagerMemoryTest (
 | 
						|
  IN EXTENDMEM_COVERAGE_LEVEL  Level
 | 
						|
  )
 | 
						|
{
 | 
						|
  EFI_STATUS                        Status;
 | 
						|
  EFI_STATUS                        KeyStatus;
 | 
						|
  EFI_STATUS                        InitStatus;
 | 
						|
  EFI_STATUS                        ReturnStatus;
 | 
						|
  BOOLEAN                           RequireSoftECCInit;
 | 
						|
  EFI_GENERIC_MEMORY_TEST_PROTOCOL  *GenMemoryTest;
 | 
						|
  UINT64                            TestedMemorySize;
 | 
						|
  UINT64                            TotalMemorySize;
 | 
						|
  BOOLEAN                           ErrorOut;
 | 
						|
  BOOLEAN                           TestAbort;
 | 
						|
  EFI_INPUT_KEY                     Key;
 | 
						|
 | 
						|
  ReturnStatus = EFI_SUCCESS;
 | 
						|
  ZeroMem (&Key, sizeof (EFI_INPUT_KEY));
 | 
						|
 | 
						|
  TestedMemorySize = 0;
 | 
						|
  TotalMemorySize  = 0;
 | 
						|
  ErrorOut         = FALSE;
 | 
						|
  TestAbort        = FALSE;
 | 
						|
 | 
						|
  RequireSoftECCInit = FALSE;
 | 
						|
 | 
						|
  Status = gBS->LocateProtocol (
 | 
						|
                  &gEfiGenericMemTestProtocolGuid,
 | 
						|
                  NULL,
 | 
						|
                  (VOID **)&GenMemoryTest
 | 
						|
                  );
 | 
						|
  if (EFI_ERROR (Status)) {
 | 
						|
    return EFI_SUCCESS;
 | 
						|
  }
 | 
						|
 | 
						|
  InitStatus = GenMemoryTest->MemoryTestInit (
 | 
						|
                                GenMemoryTest,
 | 
						|
                                Level,
 | 
						|
                                &RequireSoftECCInit
 | 
						|
                                );
 | 
						|
  if (InitStatus == EFI_NO_MEDIA) {
 | 
						|
    //
 | 
						|
    // The PEI codes also have the relevant memory test code to check the memory,
 | 
						|
    // it can select to test some range of the memory or all of them. If PEI code
 | 
						|
    // checks all the memory, this BDS memory test will has no not-test memory to
 | 
						|
    // do the test, and then the status of EFI_NO_MEDIA will be returned by
 | 
						|
    // "MemoryTestInit". So it does not need to test memory again, just return.
 | 
						|
    //
 | 
						|
    return EFI_SUCCESS;
 | 
						|
  }
 | 
						|
 | 
						|
  DEBUG ((DEBUG_INFO, "Enter memory test.\n"));
 | 
						|
  do {
 | 
						|
    Status = GenMemoryTest->PerformMemoryTest (
 | 
						|
                              GenMemoryTest,
 | 
						|
                              &TestedMemorySize,
 | 
						|
                              &TotalMemorySize,
 | 
						|
                              &ErrorOut,
 | 
						|
                              TestAbort
 | 
						|
                              );
 | 
						|
    if (ErrorOut && (Status == EFI_DEVICE_ERROR)) {
 | 
						|
      PrintXY (10, 10, NULL, NULL, L"Memory Testing failed!");
 | 
						|
      ASSERT (0);
 | 
						|
    }
 | 
						|
 | 
						|
    DEBUG ((DEBUG_INFO, "Perform memory test (ESC to skip).\n"));
 | 
						|
 | 
						|
    if (!PcdGetBool (PcdConInConnectOnDemand)) {
 | 
						|
      KeyStatus = gST->ConIn->ReadKeyStroke (gST->ConIn, &Key);
 | 
						|
      if (!EFI_ERROR (KeyStatus) && (Key.ScanCode == SCAN_ESC)) {
 | 
						|
        if (!RequireSoftECCInit) {
 | 
						|
          Status = GenMemoryTest->Finished (GenMemoryTest);
 | 
						|
          goto Done;
 | 
						|
        }
 | 
						|
 | 
						|
        TestAbort = TRUE;
 | 
						|
      }
 | 
						|
    }
 | 
						|
  } while (Status != EFI_NOT_FOUND);
 | 
						|
 | 
						|
  Status = GenMemoryTest->Finished (GenMemoryTest);
 | 
						|
 | 
						|
Done:
 | 
						|
  DEBUG ((DEBUG_INFO, "%d bytes of system memory tested OK\r\n", TotalMemorySize));
 | 
						|
 | 
						|
  return ReturnStatus;
 | 
						|
}
 |