1 /** @file
2   Set the level of support for Hardware Error Record Persistence that is
3   implemented by the platform.
4 
5 Copyright (c) 2007 - 2013, Intel Corporation. All rights reserved.<BR>
6 This program and the accompanying materials
7 are licensed and made available under the terms and conditions of the BSD License
8 which accompanies this distribution.  The full text of the license may be found at
9 http://opensource.org/licenses/bsd-license.php
10 
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
13 
14 **/
15 
16 #include "HwErrRecSupport.h"
17 
18 /**
19   Set the HwErrRecSupport variable contains a binary UINT16 that supplies the
20   level of support for Hardware Error Record Persistence that is implemented
21   by the platform.
22 
23 **/
24 VOID
InitializeHwErrRecSupport(VOID)25 InitializeHwErrRecSupport (
26   VOID
27   )
28 {
29   EFI_STATUS    Status;
30   UINT16        HardwareErrorRecordLevel;
31 
32   HardwareErrorRecordLevel = PcdGet16 (PcdHardwareErrorRecordLevel);
33 
34   if (HardwareErrorRecordLevel != 0) {
35     //
36     // If level value equal 0, no need set to 0 to variable area because UEFI specification
37     // define same behavior between no value or 0 value for L"HwErrRecSupport".
38     //
39     Status = gRT->SetVariable (
40                     L"HwErrRecSupport",
41                     &gEfiGlobalVariableGuid,
42                     EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE,
43                     sizeof (UINT16),
44                     &HardwareErrorRecordLevel
45                     );
46     ASSERT_EFI_ERROR(Status);
47   }
48 }
49