MdeModulePkg/ResetSystemPei: Add reset notifications in PEI

The Reset Notification protocol is added in UEFI spec to support
reset notification mechanism in the DXE phase.
This patch adds similar EDKII specific Reset Notification PPI to PEI
phase to provide the same support.

Cc: Liming Gao <liming.gao@intel.com>
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Reviewed-by: Star Zeng <star.zeng@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Bret Barkelew <Bret.Barkelew@microsoft.com>
Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com>
This commit is contained in:
Bret Barkelew
2018-01-31 18:31:40 -08:00
committed by Ruiyu Ni
parent 052c98ce24
commit ce2697abeb
8 changed files with 65 additions and 11 deletions

View File

@@ -25,6 +25,7 @@ EFI_PEI_RESET2_PPI mPpiReset2 = {
EFI_GUID *mProcessingOrder[] = {
&gEdkiiPlatformSpecificResetFilterPpiGuid,
&gEdkiiPlatformSpecificResetNotificationPpiGuid,
&gEdkiiPlatformSpecificResetHandlerPpiGuid
};
@@ -36,6 +37,14 @@ RESET_FILTER_INSTANCE mResetFilter = {
&gEdkiiPlatformSpecificResetFilterPpiGuid
};
RESET_FILTER_INSTANCE mResetNotification = {
{
RegisterResetNotify,
UnregisterResetNotify
},
&gEdkiiPlatformSpecificResetNotificationPpiGuid
};
RESET_FILTER_INSTANCE mResetHandler = {
{
RegisterResetNotify,
@@ -55,6 +64,11 @@ EFI_PEI_PPI_DESCRIPTOR mPpiListReset[] = {
&gEdkiiPlatformSpecificResetFilterPpiGuid,
&mResetFilter.ResetFilter
},
{
EFI_PEI_PPI_DESCRIPTOR_PPI,
&gEdkiiPlatformSpecificResetNotificationPpiGuid,
&mResetNotification.ResetFilter
},
{
EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST,
&gEdkiiPlatformSpecificResetHandlerPpiGuid,
@@ -101,6 +115,7 @@ RegisterResetNotify (
ResetFilter = (RESET_FILTER_INSTANCE *) This;
ASSERT (CompareGuid (ResetFilter->Guid, &gEdkiiPlatformSpecificResetFilterPpiGuid) ||
CompareGuid (ResetFilter->Guid, &gEdkiiPlatformSpecificResetNotificationPpiGuid) ||
CompareGuid (ResetFilter->Guid, &gEdkiiPlatformSpecificResetHandlerPpiGuid)
);
@@ -187,6 +202,7 @@ UnregisterResetNotify (
ResetFilter = (RESET_FILTER_INSTANCE *)This;
ASSERT (CompareGuid (ResetFilter->Guid, &gEdkiiPlatformSpecificResetFilterPpiGuid) ||
CompareGuid (ResetFilter->Guid, &gEdkiiPlatformSpecificResetNotificationPpiGuid) ||
CompareGuid (ResetFilter->Guid, &gEdkiiPlatformSpecificResetHandlerPpiGuid)
);

View File

@@ -21,6 +21,7 @@
#include <Ppi/Reset2.h>
#include <Ppi/PlatformSpecificResetFilter.h>
#include <Ppi/PlatformSpecificResetNotification.h>
#include <Ppi/PlatformSpecificResetHandler.h>
#include <Library/BaseLib.h>

View File

@@ -48,9 +48,10 @@
ReportStatusCodeLib
[Ppis]
gEfiPeiReset2PpiGuid ## PRODUCES
gEdkiiPlatformSpecificResetFilterPpiGuid ## PRODUCES
gEdkiiPlatformSpecificResetHandlerPpiGuid ## PRODUCES
gEfiPeiReset2PpiGuid ## PRODUCES
gEdkiiPlatformSpecificResetFilterPpiGuid ## PRODUCES
gEdkiiPlatformSpecificResetHandlerPpiGuid ## PRODUCES
gEdkiiPlatformSpecificResetNotificationPpiGuid ## PRODUCES
[Pcd]
gEfiMdeModulePkgTokenSpaceGuid.PcdMaximumPeiResetNotifies