/** @file This driver will register two callbacks to call fsp's notifies. Copyright (c) 2014 - 2016, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #include #include #include #include #include #include #include #include #include #include #include #include #include /** SMM End Of Dxe event notification handler. @param[in] Protocol Points to the protocol's unique identifier. @param[in] Interface Points to the interface instance. @param[in] Handle The handle on which the interface was installed. @retval EFI_SUCCESS Notification handler runs successfully. **/ EFI_STATUS EFIAPI SmmEndOfDxeEventNotify ( IN CONST EFI_GUID *Protocol, IN VOID *Interface, IN EFI_HANDLE Handle ) { TestPointSmmEndOfDxeSmrrFunctional (); return EFI_SUCCESS; } /** SMM Ready To Lock event notification handler. @param[in] Protocol Points to the protocol's unique identifier. @param[in] Interface Points to the interface instance. @param[in] Handle The handle on which the interface was installed. @retval EFI_SUCCESS Notification handler runs successfully. **/ EFI_STATUS EFIAPI SmmReadyToLockEventNotify ( IN CONST EFI_GUID *Protocol, IN VOID *Interface, IN EFI_HANDLE Handle ) { TestPointSmmReadyToLockSmmMemoryAttributeTableFunctional (); TestPointSmmReadyToLockSecureSmmCommunicationBuffer (); return EFI_SUCCESS; } /** SMM Ready To Boot event notification handler. @param[in] Protocol Points to the protocol's unique identifier. @param[in] Interface Points to the interface instance. @param[in] Handle The handle on which the interface was installed. @retval EFI_SUCCESS Notification handler runs successfully. **/ EFI_STATUS EFIAPI SmmReadyToBootEventNotify ( IN CONST EFI_GUID *Protocol, IN VOID *Interface, IN EFI_HANDLE Handle ) { TestPointSmmReadyToBootSmmPageProtection (); return EFI_SUCCESS; } /** SMM Exit Boot Services event notification handler. @param[in] Protocol Points to the protocol's unique identifier. @param[in] Interface Points to the interface instance. @param[in] Handle The handle on which the interface was installed. @retval EFI_SUCCESS Notification handler runs successfully. **/ EFI_STATUS EFIAPI SmmExitBootServicesEventNotify ( IN CONST EFI_GUID *Protocol, IN VOID *Interface, IN EFI_HANDLE Handle ) { TestPointSmmExitBootServices (); return EFI_SUCCESS; } /** Initialize SMM Platform. @param[in] ImageHandle Image handle of this driver. @param[in] SystemTable Global system service table. @retval EFI_SUCCESS Initialization complete. @exception EFI_UNSUPPORTED The chipset is unsupported by this driver. @retval EFI_OUT_OF_RESOURCES Do not have enough resources to initialize the driver. @retval EFI_DEVICE_ERROR Device error, driver exits abnormally. **/ EFI_STATUS EFIAPI PlatformInitSmmEntryPoint ( IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable ) { EFI_STATUS Status; VOID *SmmEndOfDxeRegistration; VOID *SmmReadyToLockRegistration; VOID *SmmReadyToBootRegistration; VOID *SmmExitBootServicesRegistration; Status = gSmst->SmmRegisterProtocolNotify ( &gEfiSmmEndOfDxeProtocolGuid, SmmEndOfDxeEventNotify, &SmmEndOfDxeRegistration ); ASSERT_EFI_ERROR (Status); Status = gSmst->SmmRegisterProtocolNotify ( &gEfiSmmReadyToLockProtocolGuid, SmmReadyToLockEventNotify, &SmmReadyToLockRegistration ); ASSERT_EFI_ERROR (Status); Status = gSmst->SmmRegisterProtocolNotify ( &gEdkiiSmmReadyToBootProtocolGuid, SmmReadyToBootEventNotify, &SmmReadyToBootRegistration ); ASSERT_EFI_ERROR (Status); Status = gSmst->SmmRegisterProtocolNotify ( &gEdkiiSmmExitBootServicesProtocolGuid, SmmExitBootServicesEventNotify, &SmmExitBootServicesRegistration ); ASSERT_EFI_ERROR (Status); return EFI_SUCCESS; }