mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-29 08:34:07 +02:00
MdeModulePkg/DxeCore: Install UEFI mem attrib table at EndOfDxe.
So that the SMM can consume it to set page protection for the UEFI runtime page with EFI_MEMORY_RO attribute. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Jiewen Yao <jiewen.yao@intel.com> Reviewed-by: Star Zeng <star.zeng@intel.com>
This commit is contained in:
parent
ac6613db46
commit
b2305dd277
@ -240,6 +240,23 @@ InstallMemoryAttributesTableOnReadyToBoot (
|
|||||||
mMemoryAttributesTableReadyToBoot = TRUE;
|
mMemoryAttributesTableReadyToBoot = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Install initial MemoryAttributesTable on EndOfDxe.
|
||||||
|
Then SMM can consume this information.
|
||||||
|
|
||||||
|
@param[in] Event The Event this notify function registered to.
|
||||||
|
@param[in] Context Pointer to the context data registered to the Event.
|
||||||
|
**/
|
||||||
|
VOID
|
||||||
|
EFIAPI
|
||||||
|
InstallMemoryAttributesTableOnEndOfDxe (
|
||||||
|
IN EFI_EVENT Event,
|
||||||
|
IN VOID *Context
|
||||||
|
)
|
||||||
|
{
|
||||||
|
InstallMemoryAttributesTable ();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Initialize MemoryAttrubutesTable support.
|
Initialize MemoryAttrubutesTable support.
|
||||||
**/
|
**/
|
||||||
@ -251,18 +268,35 @@ CoreInitializeMemoryAttributesTable (
|
|||||||
{
|
{
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
EFI_EVENT ReadyToBootEvent;
|
EFI_EVENT ReadyToBootEvent;
|
||||||
|
EFI_EVENT EndOfDxeEvent;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Construct the table at ReadyToBoot.
|
// Construct the table at ReadyToBoot.
|
||||||
//
|
//
|
||||||
Status = CoreCreateEventInternal (
|
Status = CoreCreateEventInternal (
|
||||||
EVT_NOTIFY_SIGNAL,
|
EVT_NOTIFY_SIGNAL,
|
||||||
TPL_CALLBACK - 1,
|
TPL_CALLBACK,
|
||||||
InstallMemoryAttributesTableOnReadyToBoot,
|
InstallMemoryAttributesTableOnReadyToBoot,
|
||||||
NULL,
|
NULL,
|
||||||
&gEfiEventReadyToBootGuid,
|
&gEfiEventReadyToBootGuid,
|
||||||
&ReadyToBootEvent
|
&ReadyToBootEvent
|
||||||
);
|
);
|
||||||
ASSERT_EFI_ERROR (Status);
|
ASSERT_EFI_ERROR (Status);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Construct the initial table at EndOfDxe,
|
||||||
|
// then SMM can consume this information.
|
||||||
|
// Use TPL_NOTIFY here, as such SMM code (TPL_CALLBACK)
|
||||||
|
// can run after it.
|
||||||
|
//
|
||||||
|
Status = CoreCreateEventInternal (
|
||||||
|
EVT_NOTIFY_SIGNAL,
|
||||||
|
TPL_NOTIFY,
|
||||||
|
InstallMemoryAttributesTableOnEndOfDxe,
|
||||||
|
NULL,
|
||||||
|
&gEfiEndOfDxeEventGroupGuid,
|
||||||
|
&EndOfDxeEvent
|
||||||
|
);
|
||||||
|
ASSERT_EFI_ERROR (Status);
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user