mirror of https://github.com/acidanthera/audk.git
MdeModulePkg/VariableInfo: switch to MM communicate 2 protocol
Switch to the new MM communicate 2 protocol which supports both traditional and standalone MM. Signed-off-by: Ard Biesheuvel <ard.biesheuvel@arm.com> Reviewed-by: Liming Gao <liming.gao@intel.com> Reviewed-by: Sami Mujawar <sami.mujawar@arm.com>
This commit is contained in:
parent
3e3acb3a27
commit
789ea79e94
|
@ -20,10 +20,10 @@
|
||||||
#include <Guid/VariableFormat.h>
|
#include <Guid/VariableFormat.h>
|
||||||
#include <Guid/SmmVariableCommon.h>
|
#include <Guid/SmmVariableCommon.h>
|
||||||
#include <Guid/PiSmmCommunicationRegionTable.h>
|
#include <Guid/PiSmmCommunicationRegionTable.h>
|
||||||
#include <Protocol/SmmCommunication.h>
|
#include <Protocol/MmCommunication2.h>
|
||||||
#include <Protocol/SmmVariable.h>
|
#include <Protocol/SmmVariable.h>
|
||||||
|
|
||||||
EFI_SMM_COMMUNICATION_PROTOCOL *mSmmCommunication = NULL;
|
EFI_MM_COMMUNICATION2_PROTOCOL *mMmCommunication2 = NULL;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
This function get the variable statistics data from SMM variable driver.
|
This function get the variable statistics data from SMM variable driver.
|
||||||
|
@ -41,7 +41,7 @@ EFI_SMM_COMMUNICATION_PROTOCOL *mSmmCommunication = NULL;
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
GetVariableStatisticsData (
|
GetVariableStatisticsData (
|
||||||
IN OUT EFI_SMM_COMMUNICATE_HEADER *SmmCommunicateHeader,
|
IN OUT EFI_MM_COMMUNICATE_HEADER *SmmCommunicateHeader,
|
||||||
IN OUT UINTN *SmmCommunicateSize
|
IN OUT UINTN *SmmCommunicateSize
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
@ -49,12 +49,15 @@ GetVariableStatisticsData (
|
||||||
SMM_VARIABLE_COMMUNICATE_HEADER *SmmVariableFunctionHeader;
|
SMM_VARIABLE_COMMUNICATE_HEADER *SmmVariableFunctionHeader;
|
||||||
|
|
||||||
CopyGuid (&SmmCommunicateHeader->HeaderGuid, &gEfiSmmVariableProtocolGuid);
|
CopyGuid (&SmmCommunicateHeader->HeaderGuid, &gEfiSmmVariableProtocolGuid);
|
||||||
SmmCommunicateHeader->MessageLength = *SmmCommunicateSize - OFFSET_OF (EFI_SMM_COMMUNICATE_HEADER, Data);
|
SmmCommunicateHeader->MessageLength = *SmmCommunicateSize - OFFSET_OF (EFI_MM_COMMUNICATE_HEADER, Data);
|
||||||
|
|
||||||
SmmVariableFunctionHeader = (SMM_VARIABLE_COMMUNICATE_HEADER *) &SmmCommunicateHeader->Data[0];
|
SmmVariableFunctionHeader = (SMM_VARIABLE_COMMUNICATE_HEADER *) &SmmCommunicateHeader->Data[0];
|
||||||
SmmVariableFunctionHeader->Function = SMM_VARIABLE_FUNCTION_GET_STATISTICS;
|
SmmVariableFunctionHeader->Function = SMM_VARIABLE_FUNCTION_GET_STATISTICS;
|
||||||
|
|
||||||
Status = mSmmCommunication->Communicate (mSmmCommunication, SmmCommunicateHeader, SmmCommunicateSize);
|
Status = mMmCommunication2->Communicate (mMmCommunication2,
|
||||||
|
SmmCommunicateHeader,
|
||||||
|
SmmCommunicateHeader,
|
||||||
|
SmmCommunicateSize);
|
||||||
ASSERT_EFI_ERROR (Status);
|
ASSERT_EFI_ERROR (Status);
|
||||||
|
|
||||||
Status = SmmVariableFunctionHeader->ReturnStatus;
|
Status = SmmVariableFunctionHeader->ReturnStatus;
|
||||||
|
@ -76,7 +79,7 @@ PrintInfoFromSmm (
|
||||||
{
|
{
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
VARIABLE_INFO_ENTRY *VariableInfo;
|
VARIABLE_INFO_ENTRY *VariableInfo;
|
||||||
EFI_SMM_COMMUNICATE_HEADER *CommBuffer;
|
EFI_MM_COMMUNICATE_HEADER *CommBuffer;
|
||||||
UINTN RealCommSize;
|
UINTN RealCommSize;
|
||||||
UINTN CommSize;
|
UINTN CommSize;
|
||||||
SMM_VARIABLE_COMMUNICATE_HEADER *FunctionHeader;
|
SMM_VARIABLE_COMMUNICATE_HEADER *FunctionHeader;
|
||||||
|
@ -92,7 +95,7 @@ PrintInfoFromSmm (
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
Status = gBS->LocateProtocol (&gEfiSmmCommunicationProtocolGuid, NULL, (VOID **) &mSmmCommunication);
|
Status = gBS->LocateProtocol (&gEfiMmCommunication2ProtocolGuid, NULL, (VOID **) &mMmCommunication2);
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
@ -117,7 +120,7 @@ PrintInfoFromSmm (
|
||||||
if (Size > MaxSize) {
|
if (Size > MaxSize) {
|
||||||
MaxSize = Size;
|
MaxSize = Size;
|
||||||
RealCommSize = MaxSize;
|
RealCommSize = MaxSize;
|
||||||
CommBuffer = (EFI_SMM_COMMUNICATE_HEADER *) (UINTN) Entry->PhysicalStart;
|
CommBuffer = (EFI_MM_COMMUNICATE_HEADER *) (UINTN) Entry->PhysicalStart;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,7 +41,7 @@
|
||||||
MemoryAllocationLib
|
MemoryAllocationLib
|
||||||
|
|
||||||
[Protocols]
|
[Protocols]
|
||||||
gEfiSmmCommunicationProtocolGuid ## SOMETIMES_CONSUMES
|
gEfiMmCommunication2ProtocolGuid ## SOMETIMES_CONSUMES
|
||||||
|
|
||||||
## UNDEFINED # Used to do smm communication
|
## UNDEFINED # Used to do smm communication
|
||||||
## SOMETIMES_CONSUMES
|
## SOMETIMES_CONSUMES
|
||||||
|
|
Loading…
Reference in New Issue