Move Smbios measurement from TCG driver to Smbios driver.

This is patch to remove smbios measurement in TCG driver. There will be other patch to add it in Smbios driver.

The problem of current SMBIOS measurement is:
1) TCG drivers do not support SMBIOS3.0 table.
2) TCG drivers do not follow TCG platform spec on: "Platform configuration information that is automatically updated,
 such as clock registers, and system unique information, such as asset numbers or serial numbers,
 MUST NOT be measured into PCR [1], or any other PCR."

So we decide to move Smbios measurement from TCG drivers to Smbios driver.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: "Yao, Jiewen" <jiewen.yao@intel.com>
Reviewed-by: "Zhang, Chao B" <chao.b.zhang@intel.com>


git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18677 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
Yao, Jiewen 2015-10-27 03:54:08 +00:00 committed by jyao1
parent c41eeb447d
commit d2de448338
6 changed files with 3 additions and 108 deletions

View File

@ -15,11 +15,9 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#include <PiDxe.h>
#include <IndustryStandard/Acpi.h>
#include <IndustryStandard/PeImage.h>
#include <IndustryStandard/SmBios.h>
#include <IndustryStandard/TcpaAcpi.h>
#include <Guid/GlobalVariable.h>
#include <Guid/SmBios.h>
#include <Guid/HobList.h>
#include <Guid/TcgEventHob.h>
#include <Guid/EventGroup.h>
@ -1690,42 +1688,13 @@ MeasureHandoffTables (
)
{
EFI_STATUS Status;
SMBIOS_TABLE_ENTRY_POINT *SmbiosTable;
TCG_PCR_EVENT_HDR TcgEvent;
EFI_HANDOFF_TABLE_POINTERS HandoffTables;
UINTN ProcessorNum;
EFI_CPU_PHYSICAL_LOCATION *ProcessorLocBuf;
ProcessorLocBuf = NULL;
//
// Measure SMBIOS with EV_EFI_HANDOFF_TABLES to PCR[1]
//
Status = EfiGetSystemConfigurationTable (
&gEfiSmbiosTableGuid,
(VOID **) &SmbiosTable
);
if (!EFI_ERROR (Status) && SmbiosTable != NULL) {
TcgEvent.PCRIndex = 1;
TcgEvent.EventType = EV_EFI_HANDOFF_TABLES;
TcgEvent.EventSize = sizeof (HandoffTables);
HandoffTables.NumberOfTables = 1;
HandoffTables.TableEntry[0].VendorGuid = gEfiSmbiosTableGuid;
HandoffTables.TableEntry[0].VendorTable = SmbiosTable;
DEBUG ((DEBUG_INFO, "The Smbios Table starts at: 0x%x\n", SmbiosTable->TableAddress));
DEBUG ((DEBUG_INFO, "The Smbios Table size: 0x%x\n", SmbiosTable->TableLength));
Status = TcgDxeHashLogExtendEvent (
0,
(UINT8*)(UINTN)SmbiosTable->TableAddress,
SmbiosTable->TableLength,
&TcgEvent,
(UINT8*)&HandoffTables
);
}
Status = EFI_SUCCESS;
if (PcdGet8 (PcdTpmPlatformClass) == TCG_PLATFORM_TYPE_SERVER) {
//

View File

@ -61,10 +61,6 @@
Tcg2PhysicalPresenceLib
[Guids]
## SOMETIMES_CONSUMES ## SystemTable # Smbios Table
## SOMETIMES_CONSUMES ## GUID # Handoff Table for measurement.
gEfiSmbiosTableGuid
## SOMETIMES_CONSUMES ## Variable:L"SecureBoot"
## SOMETIMES_CONSUMES ## Variable:L"PK"
## SOMETIMES_CONSUMES ## Variable:L"KEK"

View File

@ -23,11 +23,9 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#include <IndustryStandard/Tpm12.h>
#include <IndustryStandard/Acpi.h>
#include <IndustryStandard/PeImage.h>
#include <IndustryStandard/SmBios.h>
#include <IndustryStandard/TcpaAcpi.h>
#include <Guid/GlobalVariable.h>
#include <Guid/SmBios.h>
#include <Guid/HobList.h>
#include <Guid/TcgEventHob.h>
#include <Guid/EventGroup.h>
@ -748,42 +746,13 @@ MeasureHandoffTables (
)
{
EFI_STATUS Status;
SMBIOS_TABLE_ENTRY_POINT *SmbiosTable;
TCG_PCR_EVENT_HDR TcgEvent;
EFI_HANDOFF_TABLE_POINTERS HandoffTables;
UINTN ProcessorNum;
EFI_CPU_PHYSICAL_LOCATION *ProcessorLocBuf;
ProcessorLocBuf = NULL;
//
// Measure SMBIOS with EV_EFI_HANDOFF_TABLES to PCR[1]
//
Status = EfiGetSystemConfigurationTable (
&gEfiSmbiosTableGuid,
(VOID **) &SmbiosTable
);
if (!EFI_ERROR (Status) && SmbiosTable != NULL) {
TcgEvent.PCRIndex = 1;
TcgEvent.EventType = EV_EFI_HANDOFF_TABLES;
TcgEvent.EventSize = sizeof (HandoffTables);
HandoffTables.NumberOfTables = 1;
HandoffTables.TableEntry[0].VendorGuid = gEfiSmbiosTableGuid;
HandoffTables.TableEntry[0].VendorTable = SmbiosTable;
DEBUG ((DEBUG_INFO, "The Smbios Table starts at: 0x%x\n", SmbiosTable->TableAddress));
DEBUG ((DEBUG_INFO, "The Smbios Table size: 0x%x\n", SmbiosTable->TableLength));
Status = TcgDxeHashLogExtendEventI (
&mTcgDxeData,
(UINT8*)(UINTN)SmbiosTable->TableAddress,
SmbiosTable->TableLength,
&TcgEvent,
(UINT8*)&HandoffTables
);
}
Status = EFI_SUCCESS;
if (PcdGet8 (PcdTpmPlatformClass) == TCG_PLATFORM_TYPE_SERVER) {
//

View File

@ -54,10 +54,6 @@
ReportStatusCodeLib
[Guids]
## SOMETIMES_CONSUMES ## SystemTable # Smbios Table
## SOMETIMES_CONSUMES ## GUID # Handoff Table for measurement.
gEfiSmbiosTableGuid
gEfiGlobalVariableGuid ## SOMETIMES_CONSUMES ## Variable:L"BootXXXX"
gTcgEventEntryHobGuid ## SOMETIMES_CONSUMES ## HOB
gTpmErrorHobGuid ## SOMETIMES_CONSUMES ## HOB

View File

@ -15,11 +15,9 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#include <PiDxe.h>
#include <IndustryStandard/Acpi.h>
#include <IndustryStandard/PeImage.h>
#include <IndustryStandard/SmBios.h>
#include <IndustryStandard/TcpaAcpi.h>
#include <Guid/GlobalVariable.h>
#include <Guid/SmBios.h>
#include <Guid/HobList.h>
#include <Guid/TcgEventHob.h>
#include <Guid/EventGroup.h>
@ -1046,42 +1044,13 @@ MeasureHandoffTables (
)
{
EFI_STATUS Status;
SMBIOS_TABLE_ENTRY_POINT *SmbiosTable;
TCG_PCR_EVENT_HDR TcgEvent;
EFI_HANDOFF_TABLE_POINTERS HandoffTables;
UINTN ProcessorNum;
EFI_CPU_PHYSICAL_LOCATION *ProcessorLocBuf;
ProcessorLocBuf = NULL;
//
// Measure SMBIOS with EV_EFI_HANDOFF_TABLES to PCR[1]
//
Status = EfiGetSystemConfigurationTable (
&gEfiSmbiosTableGuid,
(VOID **) &SmbiosTable
);
if (!EFI_ERROR (Status) && SmbiosTable != NULL) {
TcgEvent.PCRIndex = 1;
TcgEvent.EventType = EV_EFI_HANDOFF_TABLES;
TcgEvent.EventSize = sizeof (HandoffTables);
HandoffTables.NumberOfTables = 1;
HandoffTables.TableEntry[0].VendorGuid = gEfiSmbiosTableGuid;
HandoffTables.TableEntry[0].VendorTable = SmbiosTable;
DEBUG ((DEBUG_INFO, "The Smbios Table starts at: 0x%x\n", SmbiosTable->TableAddress));
DEBUG ((DEBUG_INFO, "The Smbios Table size: 0x%x\n", SmbiosTable->TableLength));
Status = TcgDxeHashLogExtendEvent (
0,
(UINT8*)(UINTN)SmbiosTable->TableAddress,
SmbiosTable->TableLength,
&TcgEvent,
(UINT8*)&HandoffTables
);
}
Status = EFI_SUCCESS;
if (PcdGet8 (PcdTpmPlatformClass) == TCG_PLATFORM_TYPE_SERVER) {
//

View File

@ -60,10 +60,6 @@
ReportStatusCodeLib
[Guids]
## SOMETIMES_CONSUMES ## SystemTable # Smbios Table
## SOMETIMES_CONSUMES ## GUID # Handoff Table for measurement.
gEfiSmbiosTableGuid
## SOMETIMES_CONSUMES ## Variable:L"SecureBoot"
## SOMETIMES_CONSUMES ## Variable:L"PK"
## SOMETIMES_CONSUMES ## Variable:L"KEK"