mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-23 21:54:27 +02:00
MdePkg/SmmServicesTableLib: Return TRUE in InSmm ()
SmmServicesTableLib instance only supports DXE_SMM_DRIVER type drivers that will be loaded into SMM range. InSmm() could return TRUE directly. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Jeff Fan <jeff.fan@intel.com> Reviewed-by: Jiewen Yao <Jiewen.Yao@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18495 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
fb977e3395
commit
4e904348e3
@ -1,7 +1,7 @@
|
|||||||
/** @file
|
/** @file
|
||||||
SMM Services Table Library.
|
SMM Services Table Library.
|
||||||
|
|
||||||
Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2009 - 2015, Intel Corporation. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
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
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
@ -18,7 +18,6 @@
|
|||||||
#include <Library/DebugLib.h>
|
#include <Library/DebugLib.h>
|
||||||
|
|
||||||
EFI_SMM_SYSTEM_TABLE2 *gSmst = NULL;
|
EFI_SMM_SYSTEM_TABLE2 *gSmst = NULL;
|
||||||
EFI_SMM_BASE2_PROTOCOL *mInternalSmmBase2 = NULL;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
The constructor function caches the pointer of SMM Services Table.
|
The constructor function caches the pointer of SMM Services Table.
|
||||||
@ -36,8 +35,10 @@ SmmServicesTableLibConstructor (
|
|||||||
IN EFI_SYSTEM_TABLE *SystemTable
|
IN EFI_SYSTEM_TABLE *SystemTable
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
|
EFI_SMM_BASE2_PROTOCOL *InternalSmmBase2;
|
||||||
|
|
||||||
|
InternalSmmBase2 = NULL;
|
||||||
//
|
//
|
||||||
// Retrieve SMM Base2 Protocol, Do not use gBS from UefiBootServicesTableLib on purpose
|
// Retrieve SMM Base2 Protocol, Do not use gBS from UefiBootServicesTableLib on purpose
|
||||||
// to prevent inclusion of gBS, gST, and gImageHandle from SMM Drivers unless the
|
// to prevent inclusion of gBS, gST, and gImageHandle from SMM Drivers unless the
|
||||||
@ -46,25 +47,15 @@ SmmServicesTableLibConstructor (
|
|||||||
Status = SystemTable->BootServices->LocateProtocol (
|
Status = SystemTable->BootServices->LocateProtocol (
|
||||||
&gEfiSmmBase2ProtocolGuid,
|
&gEfiSmmBase2ProtocolGuid,
|
||||||
NULL,
|
NULL,
|
||||||
(VOID **)&mInternalSmmBase2
|
(VOID **)&InternalSmmBase2
|
||||||
);
|
);
|
||||||
ASSERT_EFI_ERROR (Status);
|
ASSERT_EFI_ERROR (Status);
|
||||||
ASSERT (mInternalSmmBase2 != NULL);
|
ASSERT (InternalSmmBase2 != NULL);
|
||||||
|
|
||||||
//
|
|
||||||
// Check to see if we are already in SMM
|
|
||||||
//
|
|
||||||
if (!InSmm ()) {
|
|
||||||
//
|
|
||||||
// We are not in SMM, so SMST is not needed
|
|
||||||
//
|
|
||||||
return EFI_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// We are in SMM, retrieve the pointer to SMM System Table
|
// We are in SMM, retrieve the pointer to SMM System Table
|
||||||
//
|
//
|
||||||
mInternalSmmBase2->GetSmstLocation (mInternalSmmBase2, &gSmst);
|
InternalSmmBase2->GetSmstLocation (InternalSmmBase2, &gSmst);
|
||||||
ASSERT (gSmst != NULL);
|
ASSERT (gSmst != NULL);
|
||||||
|
|
||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
@ -87,11 +78,8 @@ InSmm (
|
|||||||
VOID
|
VOID
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
BOOLEAN InSmm;
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Check to see if we are already in SMM
|
// We are already in SMM
|
||||||
//
|
//
|
||||||
mInternalSmmBase2->InSmm (mInternalSmmBase2, &InSmm);
|
return TRUE;
|
||||||
return InSmm;
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user