Revision: 13728
http://edk2.svn.sourceforge.net/edk2/?rev=13728&view=rev
Author: qianouyang
Date: 2012-09-12 10:20:34 +0000 (Wed, 12 Sep 2012)
Log Message:
-----------
Add Tper Reset Logic by using MOR bit.
Signed-off-by: Ouyang, Qian <[email protected]>
Reviewed-by: Tian, Feng <[email protected]>
Dong, Guo <[email protected]>
Modified Paths:
--------------
trunk/edk2/SecurityPkg/Tcg/MemoryOverwriteControl/TcgMor.c
trunk/edk2/SecurityPkg/Tcg/MemoryOverwriteControl/TcgMor.h
trunk/edk2/SecurityPkg/Tcg/MemoryOverwriteControl/TcgMor.inf
Modified: trunk/edk2/SecurityPkg/Tcg/MemoryOverwriteControl/TcgMor.c
===================================================================
--- trunk/edk2/SecurityPkg/Tcg/MemoryOverwriteControl/TcgMor.c 2012-09-12
10:19:50 UTC (rev 13727)
+++ trunk/edk2/SecurityPkg/Tcg/MemoryOverwriteControl/TcgMor.c 2012-09-12
10:20:34 UTC (rev 13728)
@@ -4,7 +4,7 @@
This driver initilize MemoryOverwriteRequestControl variable. It
will clear MOR_CLEAR_MEMORY_BIT bit if it is set.
-Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.<BR>
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
@@ -17,7 +17,51 @@
#include "TcgMor.h"
+UINT8 mMorControl;
+
/**
+ Ready to Boot Event notification handler.
+
+ Sequence of OS boot events is measured in this event notification handler.
+
+ @param[in] Event Event whose notification function is being invoked
+ @param[in] Context Pointer to the notification function's context
+
+**/
+VOID
+EFIAPI
+OnReadyToBoot (
+ IN EFI_EVENT Event,
+ IN VOID *Context
+ )
+{
+ UINTN DataSize;
+
+ if (MOR_CLEAR_MEMORY_VALUE (mMorControl) == 0x0) {
+ //
+ // MorControl is expected, directly return to avoid unnecessary variable
operation
+ //
+ return ;
+ }
+ //
+ // Clear MOR_CLEAR_MEMORY_BIT
+ //
+ DEBUG ((EFI_D_INFO, "TcgMor: Clear MorClearMemory bit\n"));
+ mMorControl &= 0xFE;
+
+ DataSize = sizeof (mMorControl);
+ gRT->SetVariable (
+ MEMORY_OVERWRITE_REQUEST_VARIABLE_NAME,
+ &gEfiMemoryOverwriteControlDataGuid,
+ EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS |
EFI_VARIABLE_RUNTIME_ACCESS,
+ DataSize,
+ &mMorControl
+ );
+
+}
+
+
+/**
Entry Point for TCG MOR Control driver.
@param[in] ImageHandle Image handle of this driver.
@@ -34,48 +78,49 @@
)
{
EFI_STATUS Status;
- UINT8 MorControl;
UINTN DataSize;
+ EFI_EVENT Event;
///
/// The firmware is required to create the MemoryOverwriteRequestControl
UEFI variable.
///
- DataSize = sizeof (MorControl);
+ DataSize = sizeof (mMorControl);
Status = gRT->GetVariable (
MEMORY_OVERWRITE_REQUEST_VARIABLE_NAME,
&gEfiMemoryOverwriteControlDataGuid,
NULL,
&DataSize,
- &MorControl
+ &mMorControl
);
if (EFI_ERROR (Status)) {
//
// Set default value to 0
//
- MorControl = 0;
+ mMorControl = 0;
+ DEBUG ((EFI_D_INFO, "TcgMor: Create
gEfiMemoryOverwriteControlDataGuid!\n"));
+ Status = gRT->SetVariable (
+ MEMORY_OVERWRITE_REQUEST_VARIABLE_NAME,
+ &gEfiMemoryOverwriteControlDataGuid,
+ EFI_VARIABLE_NON_VOLATILE |
EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS,
+ DataSize,
+ &mMorControl
+ );
+ ASSERT_EFI_ERROR (Status);
+
} else {
- if (MOR_CLEAR_MEMORY_VALUE (MorControl) == 0x0) {
- //
- // MorControl is expected, directly return to avoid unnecessary variable
operation
- //
- return EFI_SUCCESS;
- }
//
- // Clear MOR_CLEAR_MEMORY_BIT
+ // Create a Ready To Boot Event and Clear the MorControl bit in the call
back function.
//
- DEBUG ((EFI_D_INFO, "TcgMor: Clear MorClearMemory bit\n"));
- MorControl &= 0xFE;
- }
+ DEBUG ((EFI_D_INFO, "TcgMor: Create ReadyToBoot Event for MorControl Bit
cleanning!\n"));
+ Status = EfiCreateEventReadyToBootEx (
+ TPL_CALLBACK,
+ OnReadyToBoot,
+ NULL,
+ &Event
+ );
+ }
- Status = gRT->SetVariable (
- MEMORY_OVERWRITE_REQUEST_VARIABLE_NAME,
- &gEfiMemoryOverwriteControlDataGuid,
- EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS
| EFI_VARIABLE_RUNTIME_ACCESS,
- DataSize,
- &MorControl
- );
- ASSERT_EFI_ERROR (Status);
return Status;
}
Modified: trunk/edk2/SecurityPkg/Tcg/MemoryOverwriteControl/TcgMor.h
===================================================================
--- trunk/edk2/SecurityPkg/Tcg/MemoryOverwriteControl/TcgMor.h 2012-09-12
10:19:50 UTC (rev 13727)
+++ trunk/edk2/SecurityPkg/Tcg/MemoryOverwriteControl/TcgMor.h 2012-09-12
10:20:34 UTC (rev 13728)
@@ -1,7 +1,7 @@
/** @file
The header file for TcgMor.
-Copyright (c) 2009, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.<BR>
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
@@ -22,6 +22,7 @@
#include <Library/UefiDriverEntryPoint.h>
#include <Library/UefiRuntimeServicesTableLib.h>
#include <Library/DebugLib.h>
+#include <Library/UefiLib.h>
#endif
Modified: trunk/edk2/SecurityPkg/Tcg/MemoryOverwriteControl/TcgMor.inf
===================================================================
--- trunk/edk2/SecurityPkg/Tcg/MemoryOverwriteControl/TcgMor.inf
2012-09-12 10:19:50 UTC (rev 13727)
+++ trunk/edk2/SecurityPkg/Tcg/MemoryOverwriteControl/TcgMor.inf
2012-09-12 10:20:34 UTC (rev 13728)
@@ -1,7 +1,7 @@
## @file
# Component description file for Memory Overwrite Control driver.
#
-# Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.<BR>
# 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
@@ -39,6 +39,7 @@
UefiRuntimeServicesTableLib
ReportStatusCodeLib
DebugLib
+ UefiLib
[Guids]
gEfiMemoryOverwriteControlDataGuid # GUID ALWAYS_CONSUMED
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
edk2-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits