TianoCore EDK2 master
Loading...
Searching...
No Matches
Tcg2TraditionalMm.c File Reference

Go to the source code of this file.

Functions

VOID Tcg2NotifyMmReady (VOID)
 
BOOLEAN Tcg2IsPrimaryBufferValid (IN EFI_PHYSICAL_ADDRESS Buffer, IN UINT64 Length)
 
BOOLEAN Tcg2IsNonPrimaryBufferValid (IN EFI_PHYSICAL_ADDRESS Buffer, IN UINT64 Length)
 
BOOLEAN IsTpm20Dtpm (VOID)
 
EFI_STATUS EFIAPI InitializeTcgSmm (IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable)
 

Detailed Description

TCG2 SMM driver that updates TPM2 items in ACPI table and registers SMI2 callback functions for Tcg2 physical presence, ClearMemory, and sample for dTPM StartMethod.

Caution: This module requires additional review when modified. This driver will have external input - variable and ACPINvs data in SMM mode. This external input must be validated carefully to avoid security issue.

PhysicalPresenceCallback() and MemoryClearCallback() will receive untrusted input and do some check.

Copyright (c) 2015 - 2024, Intel Corporation. All rights reserved.
Copyright (c) Microsoft Corporation. SPDX-License-Identifier: BSD-2-Clause-Patent

Definition in file Tcg2TraditionalMm.c.

Function Documentation

◆ InitializeTcgSmm()

EFI_STATUS EFIAPI InitializeTcgSmm ( IN EFI_HANDLE  ImageHandle,
IN EFI_SYSTEM_TABLE SystemTable 
)

The driver's entry point.

It install callbacks for TPM physical presence and MemoryClear, and locate SMM variable to be used in the callback function.

Parameters
[in]ImageHandleThe firmware allocated handle for the EFI image.
[in]SystemTableA pointer to the EFI System Table.
Return values
EFI_SUCCESSThe entry point is executed successfully.
OthersSome error occurs when executing this entry point.

Definition at line 112 of file Tcg2TraditionalMm.c.

◆ IsTpm20Dtpm()

BOOLEAN IsTpm20Dtpm ( VOID  )

This function checks if the required DTPM instance is TPM 2.0.

Return values
TRUEThe required DTPM instance is equal to gEfiTpmDeviceInstanceTpm20DtpmGuid.
FALSEThe required DTPM instance is not equal to gEfiTpmDeviceInstanceTpm20DtpmGuid.

Definition at line 90 of file Tcg2TraditionalMm.c.

◆ Tcg2IsNonPrimaryBufferValid()

BOOLEAN Tcg2IsNonPrimaryBufferValid ( IN EFI_PHYSICAL_ADDRESS  Buffer,
IN UINT64  Length 
)

This function is for the NonPrimary Buffer validation routine. The NonPrimary Buffer is the buffer which is pointed from the communication buffer.

Parameters
BufferThe buffer start address to be checked.
LengthThe buffer length to be checked.
Return values
TRUEThis buffer is valid.
FALSEThis buffer is not valid.

Definition at line 75 of file Tcg2TraditionalMm.c.

◆ Tcg2IsPrimaryBufferValid()

BOOLEAN Tcg2IsPrimaryBufferValid ( IN EFI_PHYSICAL_ADDRESS  Buffer,
IN UINT64  Length 
)

This function is for the Primary Buffer validation routine. The Primary Buffer is the communication buffer requested from Communicate protocol/PPI.

Parameters
BufferThe buffer start address to be checked.
LengthThe buffer length to be checked.
Return values
TRUEThis buffer is valid per processor architecture and not overlap with SMRAM.
FALSEThis buffer is not valid per processor architecture or overlap with SMRAM.

Definition at line 55 of file Tcg2TraditionalMm.c.

◆ Tcg2NotifyMmReady()

VOID Tcg2NotifyMmReady ( VOID  )

Notify the system that the SMM variable driver is ready.

Definition at line 26 of file Tcg2TraditionalMm.c.