UINTN mBootPerformanceTableSize;\r
BOOLEAN mPeiPhase = FALSE;\r
BOOLEAN mDxePhase = FALSE;\r
+UINT64 mResetEnd = 0;\r
\r
PERF_SUMMARY_DATA SummaryData = { 0 }; ///< Create the SummaryData structure and init. to ZERO.\r
MEASUREMENT_RECORD *mMeasurementList = NULL;\r
{\r
EFI_ACPI_5_0_FPDT_PERFORMANCE_RECORD_HEADER *RecordHeader;\r
UINT8 *PerformanceTablePtr;\r
+ UINT8 *BasicBootTablePtr;\r
+ UINT64 ResetEnd;\r
UINT16 StartProgressId;\r
UINTN TableLength;\r
UINT8 *StartRecordEvent;\r
return EFI_OUT_OF_RESOURCES;\r
}\r
\r
+ //\r
+ // Update the ResetEnd which was logged at the beginning of firmware image execution\r
+ //\r
+ TableLength = sizeof (EFI_ACPI_5_0_FPDT_PERFORMANCE_TABLE_HEADER);\r
+ BasicBootTablePtr = (mBootPerformanceTable + TableLength);\r
+ ResetEnd = ((EFI_ACPI_5_0_FPDT_FIRMWARE_BASIC_BOOT_RECORD *)BasicBootTablePtr)->ResetEnd;\r
+\r
+ if (ResetEnd > 0) {\r
+ mResetEnd = ResetEnd;\r
+ }\r
+\r
TableLength = sizeof (BOOT_PERFORMANCE_TABLE);\r
PerformanceTablePtr = (mBootPerformanceTable + TableLength);\r
\r
#string STR_DP_TIMER_PROPERTIES #language en-US "System Performance Timer counts %s from 0x%Lx to 0x%Lx\n"\r
#string STR_DP_VERBOSE_THRESHOLD #language en-US "Measurements less than %,Ld microseconds are not displayed.\n"\r
#string STR_DP_SECTION_PHASES #language en-US "Major Phases"\r
+#string STR_DP_RESET_END #language en-US " Reset End: %L8d (us)\n"\r
#string STR_DP_SEC_PHASE #language en-US " SEC Phase Duration: %L8d (us)\n"\r
#string STR_DP_PHASE_BDSTO #language en-US " BDS Timeout: %L8d (ms) included in BDS Duration\n"\r
#string STR_DP_PHASE_DURATION #language en-US "%5a Phase Duration: %L8d (ms)\n"\r
extern UINTN mBootPerformanceTableLength;\r
extern MEASUREMENT_RECORD *mMeasurementList;\r
extern UINTN mMeasurementNum;\r
+extern UINT64 mResetEnd;\r
\r
extern PERF_SUMMARY_DATA SummaryData; ///< Create the SummaryData structure and init. to ZERO.\r
\r
\r
Total = 0;\r
\r
+ // print Reset End if it's valid\r
+ //\r
+ if (SecTime > mResetEnd) {\r
+ SecTime = SecTime - mResetEnd; // Calculate sec time duration start from the beginning of firmware image execution\r
+ ElapsedTime = DurationInMicroSeconds (mResetEnd); // Calculate elapsed time in microseconds\r
+ Total += DivU64x32 (ElapsedTime, 1000); // Accumulate time in milliseconds\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DP_RESET_END), mDpHiiHandle, ElapsedTime);\r
+ }\r
+\r
// print SEC phase duration time\r
//\r
if (SecTime > 0) {\r