#include "CpuFeaturesLib.h"\r
#include "SmmStm.h"\r
\r
-#define TXT_EVTYPE_BASE 0x400\r
-#define TXT_EVTYPE_STM_HASH (TXT_EVTYPE_BASE + 14)\r
+#define TXT_EVTYPE_BASE 0x400\r
+#define TXT_EVTYPE_STM_HASH (TXT_EVTYPE_BASE + 14)\r
\r
-#define RDWR_ACCS 3\r
-#define FULL_ACCS 7\r
+#define RDWR_ACCS 3\r
+#define FULL_ACCS 7\r
\r
EFI_HANDLE mStmSmmCpuHandle = NULL;\r
\r
-BOOLEAN mLockLoadMonitor = FALSE;\r
+BOOLEAN mLockLoadMonitor = FALSE;\r
\r
//\r
// Template of STM_RSC_END structure for copying.\r
//\r
-GLOBAL_REMOVE_IF_UNREFERENCED STM_RSC_END mRscEndNode = {\r
- {END_OF_RESOURCES, sizeof (STM_RSC_END)},\r
+GLOBAL_REMOVE_IF_UNREFERENCED STM_RSC_END mRscEndNode = {\r
+ { END_OF_RESOURCES, sizeof (STM_RSC_END) },\r
};\r
\r
GLOBAL_REMOVE_IF_UNREFERENCED UINT8 *mStmResourcesPtr = NULL;\r
// System Configuration Table pointing to STM Configuration Table\r
//\r
GLOBAL_REMOVE_IF_UNREFERENCED\r
-EFI_SM_MONITOR_INIT_PROTOCOL mSmMonitorInitProtocol = {\r
+EFI_SM_MONITOR_INIT_PROTOCOL mSmMonitorInitProtocol = {\r
LoadMonitor,\r
AddPiResource,\r
DeletePiResource,\r
GetMonitorState,\r
};\r
\r
-\r
-\r
-\r
-#define CPUID1_EDX_XD_SUPPORT 0x100000\r
+#define CPUID1_EDX_XD_SUPPORT 0x100000\r
\r
//\r
// External global variables associated with SMI Handler Template\r
//\r
// Retrieve MSEG location from MSEG SRAM HOB\r
//\r
- SmramDescriptor = (EFI_SMRAM_DESCRIPTOR *) GET_GUID_HOB_DATA (GuidHob);\r
+ SmramDescriptor = (EFI_SMRAM_DESCRIPTOR *)GET_GUID_HOB_DATA (GuidHob);\r
if (SmramDescriptor->PhysicalSize > 0) {\r
- mMsegBase = (UINTN)SmramDescriptor->CpuStart;\r
- mMsegSize = (UINTN)SmramDescriptor->PhysicalSize;\r
+ mMsegBase = (UINTN)SmramDescriptor->CpuStart;\r
+ mMsegSize = (UINTN)SmramDescriptor->PhysicalSize;\r
}\r
} else if (PcdGet32 (PcdCpuMsegSize) > 0) {\r
//\r
DEBUG ((DEBUG_ERROR, "Not enough SMRAM resource to allocate MSEG size %08x\n", PcdGet32 (PcdCpuMsegSize)));\r
}\r
}\r
+\r
if (mMsegBase > 0) {\r
DEBUG ((DEBUG_INFO, "MsegBase: 0x%08x, MsegSize: 0x%08x\n", mMsegBase, mMsegSize));\r
}\r
IN UINT32 Cr3\r
)\r
{\r
- EFI_STATUS Status;\r
- TXT_PROCESSOR_SMM_DESCRIPTOR *Psd;\r
- VOID *Hob;\r
- UINT32 RegEax;\r
- UINT32 RegEdx;\r
- EFI_PROCESSOR_INFORMATION ProcessorInfo;\r
+ EFI_STATUS Status;\r
+ TXT_PROCESSOR_SMM_DESCRIPTOR *Psd;\r
+ VOID *Hob;\r
+ UINT32 RegEax;\r
+ UINT32 RegEdx;\r
+ EFI_PROCESSOR_INFORMATION ProcessorInfo;\r
\r
CopyMem ((VOID *)((UINTN)SmBase + TXT_SMM_PSD_OFFSET), &gcStmPsd, sizeof (gcStmPsd));\r
- Psd = (TXT_PROCESSOR_SMM_DESCRIPTOR *)(VOID *)((UINTN)SmBase + TXT_SMM_PSD_OFFSET);\r
- Psd->SmmGdtPtr = GdtBase;\r
+ Psd = (TXT_PROCESSOR_SMM_DESCRIPTOR *)(VOID *)((UINTN)SmBase + TXT_SMM_PSD_OFFSET);\r
+ Psd->SmmGdtPtr = GdtBase;\r
Psd->SmmGdtSize = (UINT32)GdtSize;\r
\r
//\r
//\r
// Set the value at the top of the CPU stack to the CPU Index\r
//\r
- *(UINTN*)(UINTN)gStmSmiStack = CpuIndex;\r
+ *(UINTN *)(UINTN)gStmSmiStack = CpuIndex;\r
\r
//\r
// Copy template to CPU specific SMI handler location\r
//\r
CopyMem (\r
- (VOID*)((UINTN)SmBase + SMM_HANDLER_OFFSET),\r
- (VOID*)gcStmSmiHandlerTemplate,\r
+ (VOID *)((UINTN)SmBase + SMM_HANDLER_OFFSET),\r
+ (VOID *)gcStmSmiHandlerTemplate,\r
gcStmSmiHandlerSize\r
);\r
\r
Psd->SmmSmiHandlerRip = SmBase + SMM_HANDLER_OFFSET + gcStmSmiHandlerOffset;\r
- Psd->SmmSmiHandlerRsp = (UINTN)SmiStack + StackSize - sizeof(UINTN);\r
+ Psd->SmmSmiHandlerRsp = (UINTN)SmiStack + StackSize - sizeof (UINTN);\r
Psd->SmmCr3 = Cr3;\r
\r
- DEBUG((DEBUG_INFO, "CpuSmmStmExceptionStackSize - %x\n", PcdGet32(PcdCpuSmmStmExceptionStackSize)));\r
- DEBUG((DEBUG_INFO, "Pages - %x\n", EFI_SIZE_TO_PAGES(PcdGet32(PcdCpuSmmStmExceptionStackSize))));\r
- Psd->StmProtectionExceptionHandler.SpeRsp = (UINT64)(UINTN)AllocatePages (EFI_SIZE_TO_PAGES (PcdGet32 (PcdCpuSmmStmExceptionStackSize)));\r
+ DEBUG ((DEBUG_INFO, "CpuSmmStmExceptionStackSize - %x\n", PcdGet32 (PcdCpuSmmStmExceptionStackSize)));\r
+ DEBUG ((DEBUG_INFO, "Pages - %x\n", EFI_SIZE_TO_PAGES (PcdGet32 (PcdCpuSmmStmExceptionStackSize))));\r
+ Psd->StmProtectionExceptionHandler.SpeRsp = (UINT64)(UINTN)AllocatePages (EFI_SIZE_TO_PAGES (PcdGet32 (PcdCpuSmmStmExceptionStackSize)));\r
Psd->StmProtectionExceptionHandler.SpeRsp += EFI_PAGES_TO_SIZE (EFI_SIZE_TO_PAGES (PcdGet32 (PcdCpuSmmStmExceptionStackSize)));\r
\r
- Psd->BiosHwResourceRequirementsPtr = (UINT64)(UINTN)GetStmResource ();\r
+ Psd->BiosHwResourceRequirementsPtr = (UINT64)(UINTN)GetStmResource ();\r
\r
//\r
// Get the APIC ID for the CPU specified by CpuIndex\r
//\r
Status = mSmmCpuFeaturesLibMpService->GetProcessorInfo (\r
- mSmmCpuFeaturesLibMpService,\r
- CpuIndex,\r
- &ProcessorInfo\r
- );\r
+ mSmmCpuFeaturesLibMpService,\r
+ CpuIndex,\r
+ &ProcessorInfo\r
+ );\r
ASSERT_EFI_ERROR (Status);\r
\r
Psd->LocalApicId = (UINT32)ProcessorInfo.ProcessorId;\r
- Psd->AcpiRsdp = 0;\r
+ Psd->AcpiRsdp = 0;\r
\r
Hob = GetFirstHob (EFI_HOB_TYPE_CPU);\r
if (Hob != NULL) {\r
- Psd->PhysicalAddressBits = ((EFI_HOB_CPU *) Hob)->SizeOfMemorySpace;\r
+ Psd->PhysicalAddressBits = ((EFI_HOB_CPU *)Hob)->SizeOfMemorySpace;\r
} else {\r
AsmCpuid (0x80000000, &RegEax, NULL, NULL, NULL);\r
if (RegEax >= 0x80000008) {\r
AsmCpuid (0x80000008, &RegEax, NULL, NULL, NULL);\r
- Psd->PhysicalAddressBits = (UINT8) RegEax;\r
+ Psd->PhysicalAddressBits = (UINT8)RegEax;\r
} else {\r
Psd->PhysicalAddressBits = 36;\r
}\r
break;\r
}\r
}\r
+\r
if (Rsdp == NULL) {\r
for (Index = 0; Index < gST->NumberOfTableEntries; Index++) {\r
if (CompareGuid (&(gST->ConfigurationTable[Index].VendorGuid), &gEfiAcpi10TableGuid)) {\r
VOID\r
)\r
{\r
- EFI_STATUS Status;\r
- VOID *Registration;\r
+ EFI_STATUS Status;\r
+ VOID *Registration;\r
\r
Status = gSmst->SmmInstallProtocolInterface (\r
&mStmSmmCpuHandle,\r
**/\r
BOOLEAN\r
HandleSingleResource (\r
- IN STM_RSC *Resource,\r
- IN STM_RSC *Record\r
+ IN STM_RSC *Resource,\r
+ IN STM_RSC *Record\r
)\r
{\r
- UINT64 ResourceLo;\r
- UINT64 ResourceHi;\r
- UINT64 RecordLo;\r
- UINT64 RecordHi;\r
+ UINT64 ResourceLo;\r
+ UINT64 ResourceHi;\r
+ UINT64 RecordLo;\r
+ UINT64 RecordHi;\r
\r
ResourceLo = 0;\r
ResourceHi = 0;\r
- RecordLo = 0;\r
- RecordHi = 0;\r
+ RecordLo = 0;\r
+ RecordHi = 0;\r
\r
//\r
// Calling code is responsible for making sure that\r
// thus we use just one of them as switch variable.\r
//\r
switch (Resource->Header.RscType) {\r
- case MEM_RANGE:\r
- case MMIO_RANGE:\r
- ResourceLo = Resource->Mem.Base;\r
- ResourceHi = Resource->Mem.Base + Resource->Mem.Length;\r
- RecordLo = Record->Mem.Base;\r
- RecordHi = Record->Mem.Base + Record->Mem.Length;\r
- if (Resource->Mem.RWXAttributes != Record->Mem.RWXAttributes) {\r
- if ((ResourceLo == RecordLo) && (ResourceHi == RecordHi)) {\r
- Record->Mem.RWXAttributes = Resource->Mem.RWXAttributes | Record->Mem.RWXAttributes;\r
- return TRUE;\r
- } else {\r
+ case MEM_RANGE:\r
+ case MMIO_RANGE:\r
+ ResourceLo = Resource->Mem.Base;\r
+ ResourceHi = Resource->Mem.Base + Resource->Mem.Length;\r
+ RecordLo = Record->Mem.Base;\r
+ RecordHi = Record->Mem.Base + Record->Mem.Length;\r
+ if (Resource->Mem.RWXAttributes != Record->Mem.RWXAttributes) {\r
+ if ((ResourceLo == RecordLo) && (ResourceHi == RecordHi)) {\r
+ Record->Mem.RWXAttributes = Resource->Mem.RWXAttributes | Record->Mem.RWXAttributes;\r
+ return TRUE;\r
+ } else {\r
+ return FALSE;\r
+ }\r
+ }\r
+\r
+ break;\r
+ case IO_RANGE:\r
+ case TRAPPED_IO_RANGE:\r
+ ResourceLo = (UINT64)Resource->Io.Base;\r
+ ResourceHi = (UINT64)Resource->Io.Base + (UINT64)Resource->Io.Length;\r
+ RecordLo = (UINT64)Record->Io.Base;\r
+ RecordHi = (UINT64)Record->Io.Base + (UINT64)Record->Io.Length;\r
+ break;\r
+ case PCI_CFG_RANGE:\r
+ if ((Resource->PciCfg.OriginatingBusNumber != Record->PciCfg.OriginatingBusNumber) ||\r
+ (Resource->PciCfg.LastNodeIndex != Record->PciCfg.LastNodeIndex))\r
+ {\r
return FALSE;\r
}\r
- }\r
- break;\r
- case IO_RANGE:\r
- case TRAPPED_IO_RANGE:\r
- ResourceLo = (UINT64) Resource->Io.Base;\r
- ResourceHi = (UINT64) Resource->Io.Base + (UINT64) Resource->Io.Length;\r
- RecordLo = (UINT64) Record->Io.Base;\r
- RecordHi = (UINT64) Record->Io.Base + (UINT64) Record->Io.Length;\r
- break;\r
- case PCI_CFG_RANGE:\r
- if ((Resource->PciCfg.OriginatingBusNumber != Record->PciCfg.OriginatingBusNumber) ||\r
- (Resource->PciCfg.LastNodeIndex != Record->PciCfg.LastNodeIndex)) {\r
- return FALSE;\r
- }\r
- if (CompareMem (Resource->PciCfg.PciDevicePath, Record->PciCfg.PciDevicePath, sizeof(STM_PCI_DEVICE_PATH_NODE) * (Resource->PciCfg.LastNodeIndex + 1)) != 0) {\r
- return FALSE;\r
- }\r
- ResourceLo = (UINT64) Resource->PciCfg.Base;\r
- ResourceHi = (UINT64) Resource->PciCfg.Base + (UINT64) Resource->PciCfg.Length;\r
- RecordLo = (UINT64) Record->PciCfg.Base;\r
- RecordHi = (UINT64) Record->PciCfg.Base + (UINT64) Record->PciCfg.Length;\r
- if (Resource->PciCfg.RWAttributes != Record->PciCfg.RWAttributes) {\r
- if ((ResourceLo == RecordLo) && (ResourceHi == RecordHi)) {\r
- Record->PciCfg.RWAttributes = Resource->PciCfg.RWAttributes | Record->PciCfg.RWAttributes;\r
- return TRUE;\r
- } else {\r
+\r
+ if (CompareMem (Resource->PciCfg.PciDevicePath, Record->PciCfg.PciDevicePath, sizeof (STM_PCI_DEVICE_PATH_NODE) * (Resource->PciCfg.LastNodeIndex + 1)) != 0) {\r
return FALSE;\r
}\r
- }\r
- break;\r
- case MACHINE_SPECIFIC_REG:\r
- //\r
- // Special case - merge MSR masks in place.\r
- //\r
- if (Resource->Msr.MsrIndex != Record->Msr.MsrIndex) {\r
+\r
+ ResourceLo = (UINT64)Resource->PciCfg.Base;\r
+ ResourceHi = (UINT64)Resource->PciCfg.Base + (UINT64)Resource->PciCfg.Length;\r
+ RecordLo = (UINT64)Record->PciCfg.Base;\r
+ RecordHi = (UINT64)Record->PciCfg.Base + (UINT64)Record->PciCfg.Length;\r
+ if (Resource->PciCfg.RWAttributes != Record->PciCfg.RWAttributes) {\r
+ if ((ResourceLo == RecordLo) && (ResourceHi == RecordHi)) {\r
+ Record->PciCfg.RWAttributes = Resource->PciCfg.RWAttributes | Record->PciCfg.RWAttributes;\r
+ return TRUE;\r
+ } else {\r
+ return FALSE;\r
+ }\r
+ }\r
+\r
+ break;\r
+ case MACHINE_SPECIFIC_REG:\r
+ //\r
+ // Special case - merge MSR masks in place.\r
+ //\r
+ if (Resource->Msr.MsrIndex != Record->Msr.MsrIndex) {\r
+ return FALSE;\r
+ }\r
+\r
+ Record->Msr.ReadMask |= Resource->Msr.ReadMask;\r
+ Record->Msr.WriteMask |= Resource->Msr.WriteMask;\r
+ return TRUE;\r
+ default:\r
return FALSE;\r
- }\r
- Record->Msr.ReadMask |= Resource->Msr.ReadMask;\r
- Record->Msr.WriteMask |= Resource->Msr.WriteMask;\r
- return TRUE;\r
- default:\r
- return FALSE;\r
}\r
+\r
//\r
// If resources are disjoint\r
//\r
if ((ResourceLo >= RecordLo) && (ResourceHi <= RecordHi)) {\r
return TRUE;\r
}\r
+\r
//\r
// Resources are overlapping.\r
// Resource and record are merged.\r
ResourceHi = (ResourceHi > RecordHi) ? ResourceHi : RecordHi;\r
\r
switch (Resource->Header.RscType) {\r
- case MEM_RANGE:\r
- case MMIO_RANGE:\r
- Record->Mem.Base = ResourceLo;\r
- Record->Mem.Length = ResourceHi - ResourceLo;\r
- break;\r
- case IO_RANGE:\r
- case TRAPPED_IO_RANGE:\r
- Record->Io.Base = (UINT16) ResourceLo;\r
- Record->Io.Length = (UINT16) (ResourceHi - ResourceLo);\r
- break;\r
- case PCI_CFG_RANGE:\r
- Record->PciCfg.Base = (UINT16) ResourceLo;\r
- Record->PciCfg.Length = (UINT16) (ResourceHi - ResourceLo);\r
- break;\r
- default:\r
- return FALSE;\r
+ case MEM_RANGE:\r
+ case MMIO_RANGE:\r
+ Record->Mem.Base = ResourceLo;\r
+ Record->Mem.Length = ResourceHi - ResourceLo;\r
+ break;\r
+ case IO_RANGE:\r
+ case TRAPPED_IO_RANGE:\r
+ Record->Io.Base = (UINT16)ResourceLo;\r
+ Record->Io.Length = (UINT16)(ResourceHi - ResourceLo);\r
+ break;\r
+ case PCI_CFG_RANGE:\r
+ Record->PciCfg.Base = (UINT16)ResourceLo;\r
+ Record->PciCfg.Length = (UINT16)(ResourceHi - ResourceLo);\r
+ break;\r
+ default:\r
+ return FALSE;\r
}\r
\r
return TRUE;\r
**/\r
VOID\r
AddSingleResource (\r
- IN STM_RSC *Resource\r
+ IN STM_RSC *Resource\r
)\r
{\r
- STM_RSC *Record;\r
+ STM_RSC *Record;\r
\r
Record = (STM_RSC *)mStmResourcesPtr;\r
\r
if (Record->Header.RscType == END_OF_RESOURCES) {\r
break;\r
}\r
+\r
//\r
// Go to next record if resource and record types don't match.\r
//\r
Record = (STM_RSC *)((UINTN)Record + Record->Header.Length);\r
continue;\r
}\r
+\r
//\r
// Record is handled inside of procedure - don't adjust.\r
//\r
if (HandleSingleResource (Resource, Record)) {\r
- return ;\r
+ return;\r
}\r
+\r
Record = (STM_RSC *)((UINTN)Record + Record->Header.Length);\r
}\r
\r
// Add resource to the end of area.\r
//\r
CopyMem (\r
- mStmResourcesPtr + mStmResourceSizeUsed - sizeof(mRscEndNode),\r
+ mStmResourcesPtr + mStmResourceSizeUsed - sizeof (mRscEndNode),\r
Resource,\r
Resource->Header.Length\r
);\r
CopyMem (\r
- mStmResourcesPtr + mStmResourceSizeUsed - sizeof(mRscEndNode) + Resource->Header.Length,\r
+ mStmResourcesPtr + mStmResourceSizeUsed - sizeof (mRscEndNode) + Resource->Header.Length,\r
&mRscEndNode,\r
- sizeof(mRscEndNode)\r
+ sizeof (mRscEndNode)\r
);\r
- mStmResourceSizeUsed += Resource->Header.Length;\r
+ mStmResourceSizeUsed += Resource->Header.Length;\r
mStmResourceSizeAvailable = mStmResourceTotalSize - mStmResourceSizeUsed;\r
\r
- return ;\r
+ return;\r
}\r
\r
/**\r
**/\r
VOID\r
AddResource (\r
- IN STM_RSC *ResourceList,\r
- IN UINT32 NumEntries OPTIONAL\r
+ IN STM_RSC *ResourceList,\r
+ IN UINT32 NumEntries OPTIONAL\r
)\r
{\r
- UINT32 Count;\r
- UINTN Index;\r
- STM_RSC *Resource;\r
+ UINT32 Count;\r
+ UINTN Index;\r
+ STM_RSC *Resource;\r
\r
if (NumEntries == 0) {\r
Count = 0xFFFFFFFF;\r
\r
for (Index = 0; Index < Count; Index++) {\r
if (Resource->Header.RscType == END_OF_RESOURCES) {\r
- return ;\r
+ return;\r
}\r
+\r
AddSingleResource (Resource);\r
Resource = (STM_RSC *)((UINTN)Resource + Resource->Header.Length);\r
}\r
- return ;\r
+\r
+ return;\r
}\r
\r
/**\r
**/\r
BOOLEAN\r
ValidateResource (\r
- IN STM_RSC *ResourceList,\r
- IN UINT32 NumEntries OPTIONAL\r
+ IN STM_RSC *ResourceList,\r
+ IN UINT32 NumEntries OPTIONAL\r
)\r
{\r
- UINT32 Count;\r
- UINTN Index;\r
- STM_RSC *Resource;\r
- UINTN SubIndex;\r
+ UINT32 Count;\r
+ UINTN Index;\r
+ STM_RSC *Resource;\r
+ UINTN SubIndex;\r
\r
//\r
// If NumEntries == 0 make it very big. Scan will be terminated by\r
switch (Resource->Header.RscType) {\r
case END_OF_RESOURCES:\r
if (Resource->Header.Length != sizeof (STM_RSC_END)) {\r
- return FALSE;\r
+ return FALSE;\r
}\r
+\r
//\r
// If we are passed actual number of resources to add,\r
// END_OF_RESOURCES structure between them is considered an\r
// error. If NumEntries == 0 END_OF_RESOURCES is a termination.\r
//\r
if (NumEntries != 0) {\r
- return FALSE;\r
+ return FALSE;\r
} else {\r
//\r
// If NumEntries == 0 and list reached end - return success.\r
//\r
return TRUE;\r
}\r
+\r
break;\r
\r
case MEM_RANGE:\r
if (Resource->Mem.RWXAttributes > FULL_ACCS) {\r
return FALSE;\r
}\r
+\r
break;\r
\r
case IO_RANGE:\r
if ((Resource->Io.Base + Resource->Io.Length) > 0xFFFF) {\r
return FALSE;\r
}\r
+\r
break;\r
\r
case PCI_CFG_RANGE:\r
DEBUG ((DEBUG_INFO, "ValidateResource - PCI (0x%02x, 0x%08x, 0x%02x, 0x%02x)\n", Resource->PciCfg.OriginatingBusNumber, Resource->PciCfg.LastNodeIndex, Resource->PciCfg.PciDevicePath[0].PciDevice, Resource->PciCfg.PciDevicePath[0].PciFunction));\r
- if (Resource->Header.Length != sizeof (STM_RSC_PCI_CFG_DESC) + (sizeof(STM_PCI_DEVICE_PATH_NODE) * Resource->PciCfg.LastNodeIndex)) {\r
+ if (Resource->Header.Length != sizeof (STM_RSC_PCI_CFG_DESC) + (sizeof (STM_PCI_DEVICE_PATH_NODE) * Resource->PciCfg.LastNodeIndex)) {\r
return FALSE;\r
}\r
+\r
for (SubIndex = 0; SubIndex <= Resource->PciCfg.LastNodeIndex; SubIndex++) {\r
if ((Resource->PciCfg.PciDevicePath[SubIndex].PciDevice > 0x1F) || (Resource->PciCfg.PciDevicePath[SubIndex].PciFunction > 7)) {\r
return FALSE;\r
}\r
}\r
+\r
if ((Resource->PciCfg.Base + Resource->PciCfg.Length) > 0x1000) {\r
return FALSE;\r
}\r
+\r
break;\r
\r
case MACHINE_SPECIFIC_REG:\r
if (Resource->Header.Length != sizeof (STM_RSC_MSR_DESC)) {\r
return FALSE;\r
}\r
+\r
break;\r
\r
- default :\r
+ default:\r
DEBUG ((DEBUG_ERROR, "ValidateResource - Unknown RscType(%x)\n", Resource->Header.RscType));\r
return FALSE;\r
}\r
+\r
Resource = (STM_RSC *)((UINTN)Resource + Resource->Header.Length);\r
}\r
+\r
return TRUE;\r
}\r
\r
**/\r
UINTN\r
GetResourceSize (\r
- IN STM_RSC *ResourceList,\r
- IN UINT32 NumEntries OPTIONAL\r
+ IN STM_RSC *ResourceList,\r
+ IN UINT32 NumEntries OPTIONAL\r
)\r
{\r
- UINT32 Count;\r
- UINTN Index;\r
- STM_RSC *Resource;\r
+ UINT32 Count;\r
+ UINTN Index;\r
+ STM_RSC *Resource;\r
\r
Resource = ResourceList;\r
\r
if (Resource->Header.RscType == END_OF_RESOURCES) {\r
break;\r
}\r
+\r
Resource = (STM_RSC *)((UINTN)Resource + Resource->Header.Length);\r
}\r
\r
EFI_STATUS\r
EFIAPI\r
AddPiResource (\r
- IN STM_RSC *ResourceList,\r
- IN UINT32 NumEntries OPTIONAL\r
+ IN STM_RSC *ResourceList,\r
+ IN UINT32 NumEntries OPTIONAL\r
)\r
{\r
EFI_STATUS Status;\r
//\r
// First time allocation\r
//\r
- NewResourceSize = EFI_PAGES_TO_SIZE (EFI_SIZE_TO_PAGES (ResourceSize + sizeof(mRscEndNode)));\r
+ NewResourceSize = EFI_PAGES_TO_SIZE (EFI_SIZE_TO_PAGES (ResourceSize + sizeof (mRscEndNode)));\r
DEBUG ((DEBUG_INFO, "Allocate - 0x%08x\n", NewResourceSize));\r
Status = gSmst->SmmAllocatePages (\r
AllocateAnyPages,\r
//\r
// Copy EndResource for initialization\r
//\r
- mStmResourcesPtr = (UINT8 *)(UINTN)NewResource;\r
+ mStmResourcesPtr = (UINT8 *)(UINTN)NewResource;\r
mStmResourceTotalSize = NewResourceSize;\r
- CopyMem (mStmResourcesPtr, &mRscEndNode, sizeof(mRscEndNode));\r
- mStmResourceSizeUsed = sizeof(mRscEndNode);\r
- mStmResourceSizeAvailable = mStmResourceTotalSize - sizeof(mRscEndNode);\r
+ CopyMem (mStmResourcesPtr, &mRscEndNode, sizeof (mRscEndNode));\r
+ mStmResourceSizeUsed = sizeof (mRscEndNode);\r
+ mStmResourceSizeAvailable = mStmResourceTotalSize - sizeof (mRscEndNode);\r
\r
//\r
// Let SmmCore change resource ptr\r
if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
+\r
CopyMem ((VOID *)(UINTN)NewResource, mStmResourcesPtr, mStmResourceSizeUsed);\r
mStmResourceSizeAvailable = NewResourceSize - mStmResourceSizeUsed;\r
\r
);\r
\r
mStmResourceTotalSize = NewResourceSize;\r
- mStmResourcesPtr = (UINT8 *)(UINTN)NewResource;\r
+ mStmResourcesPtr = (UINT8 *)(UINTN)NewResource;\r
\r
//\r
// Let SmmCore change resource ptr\r
EFI_STATUS\r
EFIAPI\r
DeletePiResource (\r
- IN STM_RSC *ResourceList,\r
- IN UINT32 NumEntries OPTIONAL\r
+ IN STM_RSC *ResourceList,\r
+ IN UINT32 NumEntries OPTIONAL\r
)\r
{\r
if (ResourceList != NULL) {\r
ASSERT (FALSE);\r
return EFI_UNSUPPORTED;\r
}\r
+\r
//\r
// Delete all\r
//\r
- CopyMem (mStmResourcesPtr, &mRscEndNode, sizeof(mRscEndNode));\r
- mStmResourceSizeUsed = sizeof(mRscEndNode);\r
- mStmResourceSizeAvailable = mStmResourceTotalSize - sizeof(mRscEndNode);\r
+ CopyMem (mStmResourcesPtr, &mRscEndNode, sizeof (mRscEndNode));\r
+ mStmResourceSizeUsed = sizeof (mRscEndNode);\r
+ mStmResourceSizeAvailable = mStmResourceTotalSize - sizeof (mRscEndNode);\r
return EFI_SUCCESS;\r
}\r
\r
EFI_STATUS\r
EFIAPI\r
GetPiResource (\r
- OUT STM_RSC *ResourceList,\r
- IN OUT UINT32 *ResourceSize\r
+ OUT STM_RSC *ResourceList,\r
+ IN OUT UINT32 *ResourceSize\r
)\r
{\r
if (*ResourceSize < mStmResourceSizeUsed) {\r
{\r
MSR_IA32_SMM_MONITOR_CTL_REGISTER SmmMonitorCtl;\r
\r
- SmmMonitorCtl.Uint64 = AsmReadMsr64 (MSR_IA32_SMM_MONITOR_CTL);\r
+ SmmMonitorCtl.Uint64 = AsmReadMsr64 (MSR_IA32_SMM_MONITOR_CTL);\r
SmmMonitorCtl.Bits.Valid = 1;\r
AsmWriteMsr64 (MSR_IA32_SMM_MONITOR_CTL, SmmMonitorCtl.Uint64);\r
}\r
**/\r
BOOLEAN\r
StmCheckStmImage (\r
- IN EFI_PHYSICAL_ADDRESS StmImage,\r
- IN UINTN StmImageSize\r
+ IN EFI_PHYSICAL_ADDRESS StmImage,\r
+ IN UINTN StmImageSize\r
)\r
{\r
- UINTN MinMsegSize;\r
- STM_HEADER *StmHeader;\r
- IA32_VMX_MISC_REGISTER VmxMiscMsr;\r
+ UINTN MinMsegSize;\r
+ STM_HEADER *StmHeader;\r
+ IA32_VMX_MISC_REGISTER VmxMiscMsr;\r
\r
//\r
// Check to see if STM image is compatible with CPU\r
//\r
- StmHeader = (STM_HEADER *)(UINTN)StmImage;\r
+ StmHeader = (STM_HEADER *)(UINTN)StmImage;\r
VmxMiscMsr.Uint64 = AsmReadMsr64 (MSR_IA32_VMX_MISC);\r
if (StmHeader->HwStmHdr.MsegHeaderRevision != VmxMiscMsr.Bits.MsegRevisionIdentifier) {\r
DEBUG ((DEBUG_ERROR, "STM Image not compatible with CPU\n"));\r
//\r
// We will create page table, just in case that SINIT does not create it.\r
//\r
- if (MinMsegSize < StmHeader->HwStmHdr.Cr3Offset + EFI_PAGES_TO_SIZE(6)) {\r
- MinMsegSize = StmHeader->HwStmHdr.Cr3Offset + EFI_PAGES_TO_SIZE(6);\r
+ if (MinMsegSize < StmHeader->HwStmHdr.Cr3Offset + EFI_PAGES_TO_SIZE (6)) {\r
+ MinMsegSize = StmHeader->HwStmHdr.Cr3Offset + EFI_PAGES_TO_SIZE (6);\r
}\r
}\r
\r
**/\r
VOID\r
StmLoadStmImage (\r
- IN EFI_PHYSICAL_ADDRESS StmImage,\r
- IN UINTN StmImageSize\r
+ IN EFI_PHYSICAL_ADDRESS StmImage,\r
+ IN UINTN StmImageSize\r
)\r
{\r
MSR_IA32_SMM_MONITOR_CTL_REGISTER SmmMonitorCtl;\r
// Get MSEG base address from MSR_IA32_SMM_MONITOR_CTL\r
//\r
SmmMonitorCtl.Uint64 = AsmReadMsr64 (MSR_IA32_SMM_MONITOR_CTL);\r
- MsegBase = SmmMonitorCtl.Bits.MsegBase << 12;\r
+ MsegBase = SmmMonitorCtl.Bits.MsegBase << 12;\r
\r
//\r
// Zero all of MSEG base address\r
EFI_STATUS\r
EFIAPI\r
LoadMonitor (\r
- IN EFI_PHYSICAL_ADDRESS StmImage,\r
- IN UINTN StmImageSize\r
+ IN EFI_PHYSICAL_ADDRESS StmImage,\r
+ IN UINTN StmImageSize\r
)\r
{\r
MSR_IA32_SMM_MONITOR_CTL_REGISTER SmmMonitorCtl;\r
}\r
\r
// Record STM_HASH to PCR 0, just in case it is NOT TXT launch, we still need provide the evidence.\r
- TpmMeasureAndLogData(\r
+ TpmMeasureAndLogData (\r
0, // PcrIndex\r
TXT_EVTYPE_STM_HASH, // EventType\r
NULL, // EventLog\r
\r
**/\r
VOID *\r
-GetStmResource(\r
+GetStmResource (\r
VOID\r
)\r
{\r
**/\r
VOID\r
NotifyStmResourceChange (\r
- VOID *StmResource\r
+ VOID *StmResource\r
)\r
{\r
UINTN Index;\r
TXT_PROCESSOR_SMM_DESCRIPTOR *Psd;\r
\r
for (Index = 0; Index < gSmst->NumberOfCpus; Index++) {\r
- Psd = (TXT_PROCESSOR_SMM_DESCRIPTOR *)((UINTN)gSmst->CpuSaveState[Index] - SMRAM_SAVE_STATE_MAP_OFFSET + TXT_SMM_PSD_OFFSET);\r
+ Psd = (TXT_PROCESSOR_SMM_DESCRIPTOR *)((UINTN)gSmst->CpuSaveState[Index] - SMRAM_SAVE_STATE_MAP_OFFSET + TXT_SMM_PSD_OFFSET);\r
Psd->BiosHwResourceRequirementsPtr = (UINT64)(UINTN)StmResource;\r
}\r
- return ;\r
-}\r
\r
+ return;\r
+}\r
\r
/**\r
This is STM setup BIOS callback.\r
{\r
mStmState &= ~EFI_SM_MONITOR_STATE_ACTIVATED;\r
}\r
-\r