Skip to content

Commit e95cd15

Browse files
committed
Updated the dynamic scaling functionality to remove setting the LAML/LASA thus removing the need to have the ACPI event log. If there is no log region reported in the ACPI table then no table need exist as there would be no other way to access it. This simplifies the dynamic scaling code as well as removes a bunch of features such as the truncation event and needing to reinstall the table. Updated the ACPI code to fix an issue where the template was outdated and the revision was reporting V5 but the template was still using an the V4 version of the Start Method specific parameters.
1 parent 4d886b7 commit e95cd15

12 files changed

Lines changed: 174 additions & 588 deletions

File tree

MdePkg/Include/IndustryStandard/Tpm2Acpi.h

Lines changed: 41 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -24,19 +24,25 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
2424
#define EFI_TPM2_ACPI_TABLE_START_METHOD_SPECIFIC_PARAMETERS_MAX_SIZE_REVISION_5 16
2525
#define EFI_TPM2_ACPI_TABLE_START_METHOD_SPECIFIC_PARAMETERS_MAX_SIZE EFI_TPM2_ACPI_TABLE_START_METHOD_SPECIFIC_PARAMETERS_MAX_SIZE_REVISION_5
2626

27-
typedef struct {
28-
EFI_ACPI_DESCRIPTION_HEADER Header;
29-
// Flags field is replaced in version 4 and above
30-
// BIT0~15: PlatformClass This field is only valid for version 4 and above
31-
// BIT16~31: Reserved
32-
UINT32 Flags;
33-
UINT64 AddressOfControlArea;
27+
// MU_CHANGE - [BEGIN]
28+
29+
// Common fields shared across all TPM2 ACPI table revisions.
30+
// Flags field is replaced in version 4 and above:
31+
// BIT0~15: PlatformClass This field is only valid for version 4 and above
32+
// BIT16~31: Reserved
33+
//
34+
#define EFI_TPM2_ACPI_TABLE_COMMON_FIELDS \
35+
EFI_ACPI_DESCRIPTION_HEADER Header; \
36+
UINT32 Flags; \
37+
UINT64 AddressOfControlArea; \
3438
UINT32 StartMethod;
35-
// UINT8 PlatformSpecificParameters[]; // size up to 16
36-
// UINT32 Laml; // Optional
37-
// UINT64 Lasa; // Optional
39+
40+
typedef struct {
41+
EFI_TPM2_ACPI_TABLE_COMMON_FIELDS
3842
} EFI_TPM2_ACPI_TABLE;
3943

44+
// MU_CHANGE - [END]
45+
4046
#define EFI_TPM2_ACPI_TABLE_START_METHOD_ACPI 2
4147
#define EFI_TPM2_ACPI_TABLE_START_METHOD_TIS 6
4248
#define EFI_TPM2_ACPI_TABLE_START_METHOD_COMMAND_RESPONSE_BUFFER_INTERFACE 7
@@ -64,7 +70,8 @@ typedef struct {
6470
UINT32 Interrupt;
6571
UINT8 Flags;
6672
UINT8 OperationFlags;
67-
UINT8 Reserved[2];
73+
UINT8 Attributes; // MU_CHANGE
74+
UINT8 Reserved; // MU_CHANGE
6875
UINT32 SmcFunctionId;
6976
} EFI_TPM2_ACPI_START_METHOD_SPECIFIC_PARAMETERS_ARM_SMC;
7077

@@ -83,31 +90,34 @@ typedef struct {
8390
// MU_CHANGE - [BEGIN]
8491

8592
typedef struct {
86-
EFI_ACPI_DESCRIPTION_HEADER Header;
87-
// Flags field is replaced in version 4 and above
88-
// BIT0~15: PlatformClass This field is only valid for version 4 and above
89-
// BIT16~31: Reserved
90-
UINT32 Flags;
91-
UINT64 AddressOfControlArea;
92-
UINT32 StartMethod;
93-
UINT8 PlatformSpecificParameters[12]; // size up to 12
94-
UINT32 Laml; // Optional
95-
UINT64 Lasa; // Optional
93+
EFI_TPM2_ACPI_TABLE_COMMON_FIELDS
94+
union {
95+
UINT8 PlatformSpecificParameters[EFI_TPM2_ACPI_TABLE_START_METHOD_SPECIFIC_PARAMETERS_MAX_SIZE_REVISION_4];
96+
EFI_TPM2_ACPI_START_METHOD_SPECIFIC_PARAMETERS_ARM_SMC SmcParameters;
97+
EFI_TPM2_ACPI_START_METHOD_SPECIFIC_PARAMETERS_ARM_FFA FfaParameters;
98+
};
99+
UINT32 Laml; // Optional
100+
UINT64 Lasa; // Optional
96101
} EFI_TPM2_ACPI_TABLE_V4;
97102

98103
typedef struct {
99-
EFI_ACPI_DESCRIPTION_HEADER Header;
100-
// Flags field is replaced in version 4 and above
101-
// BIT0~15: PlatformClass This field is only valid for version 4 and above
102-
// BIT16~31: Reserved
103-
UINT32 Flags;
104-
UINT64 AddressOfControlArea;
105-
UINT32 StartMethod;
106-
EFI_TPM2_ACPI_START_METHOD_SPECIFIC_PARAMETERS_ARM_FFA FfaParameters;
107-
UINT32 Laml; // Optional
108-
UINT64 Lasa; // Optional
104+
EFI_TPM2_ACPI_TABLE_COMMON_FIELDS
105+
union {
106+
UINT8 PlatformSpecificParameters[EFI_TPM2_ACPI_TABLE_START_METHOD_SPECIFIC_PARAMETERS_MAX_SIZE_REVISION_5];
107+
EFI_TPM2_ACPI_START_METHOD_SPECIFIC_PARAMETERS_ARM_SMC SmcParameters;
108+
EFI_TPM2_ACPI_START_METHOD_SPECIFIC_PARAMETERS_ARM_FFA FfaParameters;
109+
};
110+
UINT32 Laml; // Optional
111+
UINT64 Lasa; // Optional
109112
} EFI_TPM2_ACPI_TABLE_V5;
110113

114+
typedef struct {
115+
EFI_TPM2_ACPI_TABLE_COMMON_FIELDS
116+
UINT8 PlatformSpecificParameters[EFI_TPM2_ACPI_TABLE_START_METHOD_SPECIFIC_PARAMETERS_MAX_SIZE];
117+
UINT32 Laml; // Optional
118+
UINT64 Lasa; // Optional
119+
} EFI_TPM2_ACPI_TABLE_TEMPLATE;
120+
111121
// MU_CHANGE - [END]
112122

113123
#define EFI_TPM2_ACPI_TABLE_ARM_FFA_PARAMETER_FLAG_NOTIFICATION_SUPPORT BIT0

MdePkg/Include/IndustryStandard/UefiTcgPlatform.h

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -101,11 +101,6 @@
101101
#define FIRMWARE_DEBUGGER_EVENT_STRING "UEFI Debug Mode"
102102
#define FIRMWARE_DEBUGGER_EVENT_STRING_LEN (sizeof(FIRMWARE_DEBUGGER_EVENT_STRING) - 1)
103103

104-
// MU_CHANGE
105-
// String logged as a NO_ACTION event to mark the ACPI-visible TCG
106-
// log as truncated when dynamic scaling occurs post ReadyToBoot.
107-
#define TCG_LOG_TRUNCATION_EVENT_STRING "TCG Event Log Truncated"
108-
109104
//
110105
// Set structure alignment to 1-byte
111106
//

SecurityPkg/Tcg/Tcg2Acpi/Tcg2Acpi.c

Lines changed: 45 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -97,23 +97,9 @@ typedef struct {
9797

9898
#endif
9999

100-
// MU_CHANGE - [END]
100+
EFI_TPM2_ACPI_TABLE_TEMPLATE mTpm2AcpiTemplate;
101101

102-
EFI_TPM2_ACPI_TABLE_V4 mTpm2AcpiTemplate = {
103-
{
104-
EFI_ACPI_5_0_TRUSTED_COMPUTING_PLATFORM_2_TABLE_SIGNATURE,
105-
sizeof (mTpm2AcpiTemplate),
106-
EFI_TPM2_ACPI_TABLE_REVISION,
107-
//
108-
// Compiler initializes the remaining bytes to 0
109-
// These fields should be filled in in production
110-
//
111-
},
112-
0, // BIT0~15: PlatformClass
113-
// BIT16~31: Reserved
114-
0, // Control Area
115-
EFI_TPM2_ACPI_TABLE_START_METHOD_TIS, // StartMethod
116-
};
102+
// MU_CHANGE - [END]
117103

118104
TCG_NVS *mTcgNvs;
119105

@@ -801,6 +787,8 @@ PublishTpm2 (
801787
UINT64 OemTableId;
802788
EFI_TPM2_ACPI_CONTROL_AREA *ControlArea;
803789
TPM2_PTP_INTERFACE_TYPE InterfaceType;
790+
EFI_TPM2_ACPI_TABLE_V4 *Tpm2AcpiTableV4; // MU_CHANGE
791+
EFI_TPM2_ACPI_TABLE_V5 *Tpm2AcpiTableV5; // MU_CHANGE
804792

805793
//
806794
// Measure to PCR[0] with event EV_POST_CODE ACPI DATA.
@@ -818,13 +806,14 @@ PublishTpm2 (
818806
EV_POSTCODE_INFO_ACPI_DATA,
819807
ACPI_DATA_LEN,
820808
&mTpm2AcpiTemplate,
821-
mTpm2AcpiTemplate.Header.Length
809+
sizeof (EFI_TPM2_ACPI_TABLE_TEMPLATE)
822810
);
823811
}
824812

825813
// MU_CHANGE [END]
826814

827-
mTpm2AcpiTemplate.Header.Revision = PcdGet8 (PcdTpm2AcpiTableRev);
815+
mTpm2AcpiTemplate.Header.Signature = EFI_ACPI_5_0_TRUSTED_COMPUTING_PLATFORM_2_TABLE_SIGNATURE; // MU_CHANGE
816+
mTpm2AcpiTemplate.Header.Revision = PcdGet8 (PcdTpm2AcpiTableRev); // MU_CHANGE
828817
DEBUG ((DEBUG_INFO, "Tpm2 ACPI table revision is %d\n", mTpm2AcpiTemplate.Header.Revision));
829818

830819
//
@@ -837,17 +826,45 @@ PublishTpm2 (
837826
DEBUG ((DEBUG_INFO, "Tpm2 ACPI table PlatformClass is %d\n", (mTpm2AcpiTemplate.Flags & 0x0000FFFF)));
838827
}
839828

840-
mTpm2AcpiTemplate.Laml = PcdGet32 (PcdTpm2AcpiTableLaml);
841-
mTpm2AcpiTemplate.Lasa = PcdGet64 (PcdTpm2AcpiTableLasa);
842-
if ((mTpm2AcpiTemplate.Header.Revision < EFI_TPM2_ACPI_TABLE_REVISION_4) ||
843-
(mTpm2AcpiTemplate.Laml == 0) || (mTpm2AcpiTemplate.Lasa == 0))
844-
{
845-
//
846-
// If version is smaller than 4 or Laml/Lasa is not valid, rollback to original Length.
847-
//
848-
mTpm2AcpiTemplate.Header.Length = sizeof (EFI_TPM2_ACPI_TABLE);
829+
// MU_CHANGE - [BEGIN]
830+
831+
switch (mTpm2AcpiTemplate.Header.Revision) {
832+
case EFI_TPM2_ACPI_TABLE_REVISION_3:
833+
mTpm2AcpiTemplate.Header.Length = sizeof (EFI_TPM2_ACPI_TABLE);
834+
break;
835+
836+
case EFI_TPM2_ACPI_TABLE_REVISION_4:
837+
mTpm2AcpiTemplate.Header.Length = sizeof (EFI_TPM2_ACPI_TABLE_V4);
838+
Tpm2AcpiTableV4 = (EFI_TPM2_ACPI_TABLE_V4*)&mTpm2AcpiTemplate;
839+
Tpm2AcpiTableV4->Laml = PcdGet32 (PcdTpm2AcpiTableLaml);
840+
Tpm2AcpiTableV4->Lasa = PcdGet64 (PcdTpm2AcpiTableLasa);
841+
842+
if ((Tpm2AcpiTableV4->Laml == 0) || (Tpm2AcpiTableV4->Lasa == 0)) {
843+
// Remove LAML/LASA from the length if either is 0.
844+
mTpm2AcpiTemplate.Header.Length -= (sizeof (UINT32) + sizeof (UINT64));
845+
}
846+
break;
847+
848+
case EFI_TPM2_ACPI_TABLE_REVISION_5:
849+
mTpm2AcpiTemplate.Header.Length = sizeof (EFI_TPM2_ACPI_TABLE_V5);
850+
Tpm2AcpiTableV5 = (EFI_TPM2_ACPI_TABLE_V5*)&mTpm2AcpiTemplate;
851+
Tpm2AcpiTableV5->Laml = PcdGet32 (PcdTpm2AcpiTableLaml);
852+
Tpm2AcpiTableV5->Lasa = PcdGet64 (PcdTpm2AcpiTableLasa);
853+
854+
if ((Tpm2AcpiTableV5->Laml == 0) || (Tpm2AcpiTableV5->Lasa == 0)) {
855+
// Remove LAML/LASA from the length if either is 0.
856+
mTpm2AcpiTemplate.Header.Length -= (sizeof (UINT32) + sizeof (UINT64));
857+
}
858+
break;
859+
860+
default:
861+
break;
849862
}
850863

864+
DEBUG ((DEBUG_INFO, "Tpm2 ACPI table size %d\n", mTpm2AcpiTemplate.Header.Length));
865+
866+
// MU_CHANGE - [END]
867+
851868
InterfaceType = PcdGet8 (PcdActiveTpmInterfaceType);
852869
switch (InterfaceType) {
853870
case Tpm2PtpInterfaceCrb:
@@ -861,6 +878,7 @@ PublishTpm2 (
861878
break;
862879
case Tpm2PtpInterfaceFifo:
863880
case Tpm2PtpInterfaceTis:
881+
mTpm2AcpiTemplate.StartMethod = EFI_TPM2_ACPI_TABLE_START_METHOD_TIS; // MU_CHANGE
864882
break;
865883
default:
866884
DEBUG ((DEBUG_ERROR, "TPM2 InterfaceType get error! %d\n", InterfaceType));

SecurityPkg/Tcg/Tcg2AcpiFfa/Tcg2AcpiFfa.c

Lines changed: 52 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -89,23 +89,9 @@ typedef struct {
8989

9090
#endif
9191

92-
// MU_CHANGE - [END]
92+
EFI_TPM2_ACPI_TABLE_TEMPLATE mTpm2AcpiTemplate;
9393

94-
EFI_TPM2_ACPI_TABLE_V5 mTpm2AcpiTemplate = {
95-
{
96-
EFI_ACPI_5_0_TRUSTED_COMPUTING_PLATFORM_2_TABLE_SIGNATURE,
97-
sizeof (mTpm2AcpiTemplate),
98-
EFI_TPM2_ACPI_TABLE_REVISION,
99-
//
100-
// Compiler initializes the remaining bytes to 0
101-
// These fields should be filled in in production
102-
//
103-
},
104-
0, // BIT0~15: PlatformClass
105-
// BIT16~31: Reserved
106-
0, // Control Area
107-
EFI_TPM2_ACPI_TABLE_START_METHOD_TIS, // StartMethod
108-
};
94+
// MU_CHANGE - [END]
10995

11096
/**
11197
Patch version string of Physical Presence interface supported by platform. The initial string tag in TPM
@@ -348,7 +334,7 @@ PublishTpm2 (
348334
UINT64 OemTableId;
349335
EFI_TPM2_ACPI_CONTROL_AREA *ControlArea;
350336
TPM2_PTP_INTERFACE_TYPE InterfaceType;
351-
UINT64 PartitionId;
337+
EFI_TPM2_ACPI_TABLE_V5 *Tpm2AcpiTableV5; // MU_CHANGE
352338

353339
STATIC_ASSERT ((FixedPcdGet64 (PcdTpmMaxAddress) - FixedPcdGet64 (PcdTpmBaseAddress)) == (FixedPcdGet32 (PcdTpmCrbRegionSize) - 1), "TPM CRB region size mismatch");
354340

@@ -358,60 +344,70 @@ PublishTpm2 (
358344
// Otherwise, the PCR record would be different after event log update
359345
// or the PCD configuration change.
360346
//
361-
TpmMeasureAndLogData (
362-
0,
363-
EV_POST_CODE,
364-
EV_POSTCODE_INFO_ACPI_DATA,
365-
ACPI_DATA_LEN,
366-
&mTpm2AcpiTemplate,
367-
mTpm2AcpiTemplate.Header.Length
368-
);
347+
// MU_CHANGE [BEGIN]
348+
// Allow a platform to drop TCG ACPI measurements until we have a chance to make them more
349+
// consistent and functional.
350+
if (!FixedPcdGetBool (PcdSkipTcgSmmAcpiMeasurements)) {
351+
TpmMeasureAndLogData (
352+
0,
353+
EV_POST_CODE,
354+
EV_POSTCODE_INFO_ACPI_DATA,
355+
ACPI_DATA_LEN,
356+
&mTpm2AcpiTemplate,
357+
sizeof (EFI_TPM2_ACPI_TABLE_TEMPLATE)
358+
);
359+
}
369360

370-
mTpm2AcpiTemplate.Header.Revision = PcdGet8 (PcdTpm2AcpiTableRev);
361+
mTpm2AcpiTemplate.Header.Signature = EFI_ACPI_5_0_TRUSTED_COMPUTING_PLATFORM_2_TABLE_SIGNATURE;
362+
mTpm2AcpiTemplate.Header.Length = sizeof (EFI_TPM2_ACPI_TABLE_V5);
363+
mTpm2AcpiTemplate.Header.Revision = PcdGet8 (PcdTpm2AcpiTableRev);
371364
DEBUG ((DEBUG_INFO, "Tpm2 ACPI table revision is %d\n", mTpm2AcpiTemplate.Header.Revision));
372365

366+
// FF-A is only supported in revisions 5 and up.
373367
if (mTpm2AcpiTemplate.Header.Revision < EFI_TPM2_ACPI_TABLE_REVISION_5) {
374-
DEBUG ((DEBUG_ERROR, "%a The minimum revision supported for TPM over FFA table is 5, not %d.\n", __func__, mTpm2AcpiTemplate.Header.Revision));
368+
DEBUG ((DEBUG_ERROR, "The minimum revision supported for TPM over FF-A table is 5\n"));
375369
ASSERT (FALSE);
376370
return EFI_UNSUPPORTED;
377371
}
378372

379-
mTpm2AcpiTemplate.Flags = (mTpm2AcpiTemplate.Flags & 0xFFFF0000) | PcdGet8 (PcdTpmPlatformClass);
380-
DEBUG ((DEBUG_INFO, "Tpm2 ACPI table PlatformClass is %d\n", (mTpm2AcpiTemplate.Flags & 0x0000FFFF)));
381-
382-
mTpm2AcpiTemplate.Laml = PcdGet32 (PcdTpm2AcpiTableLaml);
383-
mTpm2AcpiTemplate.Lasa = PcdGet64 (PcdTpm2AcpiTableLasa);
384-
if ((mTpm2AcpiTemplate.Laml == 0) || (mTpm2AcpiTemplate.Lasa == 0)) {
385-
//
386-
// If version is smaller than 4 or Laml/Lasa is not valid, rollback to original Length.
387-
//
388-
mTpm2AcpiTemplate.Header.Length = sizeof (EFI_TPM2_ACPI_TABLE);
389-
}
390-
373+
// CRB over FF-A only supports the CRB interface type.
391374
InterfaceType = PcdGet8 (PcdActiveTpmInterfaceType);
392375
DEBUG ((DEBUG_INFO, "Tpm Active Interface Type %d\n", InterfaceType));
393-
394-
PartitionId = PcdGet16 (PcdTpmServiceFfaPartitionId);
395-
ASSERT (PartitionId != 0);
396-
if (InterfaceType == Tpm2PtpInterfaceCrb) {
397-
mTpm2AcpiTemplate.StartMethod = EFI_TPM2_ACPI_TABLE_START_METHOD_COMMAND_RESPONSE_BUFFER_INTERFACE_WITH_FFA;
398-
mTpm2AcpiTemplate.AddressOfControlArea = PcdGet64 (PcdTpmBaseAddress) + 0x40;
399-
mTpm2AcpiTemplate.FfaParameters.Flags = 0x00; // Notifications Not Supported
400-
mTpm2AcpiTemplate.FfaParameters.Attributes = (EFI_TPM2_ACPI_TABLE_ARM_FFA_PARAMETER_ATTR_CRB_REGION_SIZE_4KB << EFI_TPM2_ACPI_TABLE_ARM_FFA_PARAMETER_ATTR_CRB_REGION_SIZE_SHIFT) |
401-
(EFI_TPM2_ACPI_TABLE_ARM_FFA_PARAMETER_ATTR_MEM_TYPE_NOT_CACHABLE << EFI_TPM2_ACPI_TABLE_ARM_FFA_PARAMETER_ATTR_MEM_TYPE_SHIFT);
402-
mTpm2AcpiTemplate.FfaParameters.PartitionId = PartitionId; // Partition ID
403-
ControlArea = (EFI_TPM2_ACPI_CONTROL_AREA *)(UINTN)mTpm2AcpiTemplate.AddressOfControlArea;
404-
ControlArea->CommandSize = 0xF80;
405-
ControlArea->ResponseSize = 0xF80;
406-
ControlArea->Command = PcdGet64 (PcdTpmBaseAddress) + 0x80;
407-
ControlArea->Response = PcdGet64 (PcdTpmBaseAddress) + 0x80;
408-
} else {
409-
DEBUG ((DEBUG_ERROR, "TPM2 InterfaceType get error! %d\n", InterfaceType));
376+
if (InterfaceType != Tpm2PtpInterfaceCrb) {
377+
DEBUG ((DEBUG_ERROR, "TPM over FF-A only supports CRB interface\n"));
410378
return EFI_UNSUPPORTED;
411379
}
412380

381+
mTpm2AcpiTemplate.Flags = (mTpm2AcpiTemplate.Flags & 0xFFFF0000) | PcdGet8 (PcdTpmPlatformClass);
382+
DEBUG ((DEBUG_INFO, "Tpm2 ACPI table PlatformClass is %d\n", (mTpm2AcpiTemplate.Flags & 0x0000FFFF)));
383+
384+
Tpm2AcpiTableV5 = (EFI_TPM2_ACPI_TABLE_V5*)&mTpm2AcpiTemplate;
385+
Tpm2AcpiTableV5->Laml = PcdGet32 (PcdTpm2AcpiTableLaml);
386+
Tpm2AcpiTableV5->Lasa = PcdGet64 (PcdTpm2AcpiTableLasa);
387+
if ((Tpm2AcpiTableV5->Laml == 0) || (Tpm2AcpiTableV5->Lasa == 0)) {
388+
// Remove LAML/LASA from the length if either is 0.
389+
mTpm2AcpiTemplate.Header.Length -= (sizeof (UINT32) + sizeof (UINT64));
390+
}
391+
413392
DEBUG ((DEBUG_INFO, "Tpm2 ACPI table size %d\n", mTpm2AcpiTemplate.Header.Length));
414393

394+
mTpm2AcpiTemplate.StartMethod = EFI_TPM2_ACPI_TABLE_START_METHOD_COMMAND_RESPONSE_BUFFER_INTERFACE_WITH_FFA;
395+
mTpm2AcpiTemplate.AddressOfControlArea = PcdGet64 (PcdTpmBaseAddress) + 0x40;
396+
ControlArea = (EFI_TPM2_ACPI_CONTROL_AREA *)(UINTN)mTpm2AcpiTemplate.AddressOfControlArea;
397+
ControlArea->CommandSize = 0xF80;
398+
ControlArea->ResponseSize = 0xF80;
399+
ControlArea->Command = PcdGet64 (PcdTpmBaseAddress) + 0x80;
400+
ControlArea->Response = PcdGet64 (PcdTpmBaseAddress) + 0x80;
401+
402+
// Set the FF-A specific parameters.
403+
Tpm2AcpiTableV5->FfaParameters.Flags = 0x00; // Notifications Not Supported
404+
Tpm2AcpiTableV5->FfaParameters.Attributes = (EFI_TPM2_ACPI_TABLE_ARM_FFA_PARAMETER_ATTR_CRB_REGION_SIZE_4KB << EFI_TPM2_ACPI_TABLE_ARM_FFA_PARAMETER_ATTR_CRB_REGION_SIZE_SHIFT) |
405+
(EFI_TPM2_ACPI_TABLE_ARM_FFA_PARAMETER_ATTR_MEM_TYPE_NOT_CACHABLE << EFI_TPM2_ACPI_TABLE_ARM_FFA_PARAMETER_ATTR_MEM_TYPE_SHIFT);
406+
Tpm2AcpiTableV5->FfaParameters.PartitionId = PcdGet16 (PcdTpmServiceFfaPartitionId);
407+
ASSERT (Tpm2AcpiTableV5->FfaParameters.PartitionId != 0);
408+
409+
// MU_CHANGE [END]
410+
415411
CopyMem (mTpm2AcpiTemplate.Header.OemId, PcdGetPtr (PcdAcpiDefaultOemId), sizeof (mTpm2AcpiTemplate.Header.OemId));
416412
OemTableId = PcdGet64 (PcdAcpiDefaultOemTableId);
417413
CopyMem (&mTpm2AcpiTemplate.Header.OemTableId, &OemTableId, sizeof (UINT64));

SecurityPkg/Tcg/Tcg2AcpiFfa/Tcg2AcpiFfa.inf

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,10 @@
6666
gEfiSecurityPkgTokenSpaceGuid.PcdTpm2AcpiTableLaml ## CONSUMES
6767
gEfiSecurityPkgTokenSpaceGuid.PcdTpm2AcpiTableLasa ## CONSUMES
6868
gEfiSecurityPkgTokenSpaceGuid.PcdTpmServiceFfaPartitionId ## CONSUMES
69+
## MU_CHANGE
70+
# Allow a platform to drop TCG ACPI measurements until we have a chance to make them more
71+
# consistent and functional.
72+
gEfiSecurityPkgTokenSpaceGuid.PcdSkipTcgSmmAcpiMeasurements ## CONSUMES
6973

7074
[FixedPcd]
7175
gEfiSecurityPkgTokenSpaceGuid.PcdTpmBaseAddress ## CONSUMES

0 commit comments

Comments
 (0)