xref: /freebsd/sys/contrib/edk2/Include/Guid/MemoryOverwriteControl.h (revision f439973d6726c3be929c8fb3b1545b8b1744abc3)
1*f439973dSWarner Losh /** @file
2*f439973dSWarner Losh   GUID used for MemoryOverwriteRequestControl UEFI variable defined in
3*f439973dSWarner Losh   TCG Platform Reset Attack Mitigation Specification 1.00.
4*f439973dSWarner Losh   See http://trustedcomputinggroup.org for the latest specification
5*f439973dSWarner Losh 
6*f439973dSWarner Losh   The purpose of the MemoryOverwriteRequestControl UEFI variable is to give users (e.g., OS, loader) the ability to
7*f439973dSWarner Losh   indicate to the platform that secrets are present in memory and that the platform firmware must clear memory upon
8*f439973dSWarner Losh   a restart. The OS loader should not create the variable. Rather, the  firmware is required to create it.
9*f439973dSWarner Losh 
10*f439973dSWarner Losh   Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
11*f439973dSWarner Losh   SPDX-License-Identifier: BSD-2-Clause-Patent
12*f439973dSWarner Losh 
13*f439973dSWarner Losh **/
14*f439973dSWarner Losh 
15*f439973dSWarner Losh #ifndef _MEMORY_OVERWRITE_CONTROL_DATA_GUID_H_
16*f439973dSWarner Losh #define _MEMORY_OVERWRITE_CONTROL_DATA_GUID_H_
17*f439973dSWarner Losh 
18*f439973dSWarner Losh #define MEMORY_ONLY_RESET_CONTROL_GUID \
19*f439973dSWarner Losh   { \
20*f439973dSWarner Losh     0xe20939be, 0x32d4, 0x41be, {0xa1, 0x50, 0x89, 0x7f, 0x85, 0xd4, 0x98, 0x29} \
21*f439973dSWarner Losh   }
22*f439973dSWarner Losh 
23*f439973dSWarner Losh ///
24*f439973dSWarner Losh ///  Variable name is "MemoryOverwriteRequestControl" and it is a 1 byte unsigned value.
25*f439973dSWarner Losh ///  The attributes should be:
26*f439973dSWarner Losh ///  EFI_VARIABLE_NON_VOLATILE |
27*f439973dSWarner Losh ///  EFI_VARIABLE_BOOTSERVICE_ACCESS |
28*f439973dSWarner Losh ///  EFI_VARIABLE_RUNTIME_ACCESS
29*f439973dSWarner Losh ///
30*f439973dSWarner Losh #define MEMORY_OVERWRITE_REQUEST_VARIABLE_NAME  L"MemoryOverwriteRequestControl"
31*f439973dSWarner Losh 
32*f439973dSWarner Losh ///
33*f439973dSWarner Losh /// 0 = Firmware MUST clear the MOR bit
34*f439973dSWarner Losh /// 1 = Firmware MUST set the MOR bit
35*f439973dSWarner Losh ///
36*f439973dSWarner Losh #define MOR_CLEAR_MEMORY_BIT_MASK  0x01
37*f439973dSWarner Losh 
38*f439973dSWarner Losh ///
39*f439973dSWarner Losh /// 0 = Firmware MAY autodetect a clean shutdown of the Static RTM OS.
40*f439973dSWarner Losh /// 1 = Firmware MUST NOT autodetect a clean shutdown of the Static RTM OS.
41*f439973dSWarner Losh ///
42*f439973dSWarner Losh #define MOR_DISABLEAUTODETECT_BIT_MASK  0x10
43*f439973dSWarner Losh 
44*f439973dSWarner Losh ///
45*f439973dSWarner Losh /// MOR field bit offset
46*f439973dSWarner Losh ///
47*f439973dSWarner Losh #define MOR_CLEAR_MEMORY_BIT_OFFSET       0
48*f439973dSWarner Losh #define MOR_DISABLEAUTODETECT_BIT_OFFSET  4
49*f439973dSWarner Losh 
50*f439973dSWarner Losh /**
51*f439973dSWarner Losh   Return the ClearMemory bit value 0 or 1.
52*f439973dSWarner Losh 
53*f439973dSWarner Losh   @param mor   1 byte value that contains ClearMemory and DisableAutoDetect bit.
54*f439973dSWarner Losh 
55*f439973dSWarner Losh   @return ClearMemory bit value
56*f439973dSWarner Losh **/
57*f439973dSWarner Losh #define MOR_CLEAR_MEMORY_VALUE(mor)  (((UINT8)(mor) & MOR_CLEAR_MEMORY_BIT_MASK) >> MOR_CLEAR_MEMORY_BIT_OFFSET)
58*f439973dSWarner Losh 
59*f439973dSWarner Losh /**
60*f439973dSWarner Losh   Return the DisableAutoDetect bit value 0 or 1.
61*f439973dSWarner Losh 
62*f439973dSWarner Losh   @param mor   1 byte value that contains ClearMemory and DisableAutoDetect bit.
63*f439973dSWarner Losh 
64*f439973dSWarner Losh   @return DisableAutoDetect bit value
65*f439973dSWarner Losh **/
66*f439973dSWarner Losh #define MOR_DISABLE_AUTO_DETECT_VALUE(mor)  (((UINT8)(mor) & MOR_DISABLEAUTODETECT_BIT_MASK) >> MOR_DISABLEAUTODETECT_BIT_OFFSET)
67*f439973dSWarner Losh 
68*f439973dSWarner Losh extern EFI_GUID  gEfiMemoryOverwriteControlDataGuid;
69*f439973dSWarner Losh 
70*f439973dSWarner Losh #endif
71