drivers/intel/fsp2_0: track end of firmware notifications

The end of firmware notification is currently not being tracked
so it's hard to get good data on how long it takes. Update the
code to provide timestamp data as well as post codes.

BUG=chrome-os-partner:56656

Change-Id: I74c1043f2e72d9d85b23a99b8253ac465f62a7f2
Signed-off-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-on: https://review.coreboot.org/17373
Tested-by: build bot (Jenkins)
Reviewed-by: Furquan Shaikh <furquan@google.com>
Reviewed-by: Andrey Petrov <andrey.petrov@intel.com>
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Reviewed-by: Giri P Mudusuru <giri.p.mudusuru@intel.com>
This commit is contained in:
Aaron Durbin 2016-11-10 21:09:25 -06:00
parent bf696f5602
commit 96b3c6f937
3 changed files with 26 additions and 1 deletions

View File

@ -86,6 +86,8 @@ enum timestamp_id {
TS_FSP_AFTER_ENUMERATE = 957, TS_FSP_AFTER_ENUMERATE = 957,
TS_FSP_BEFORE_FINALIZE = 958, TS_FSP_BEFORE_FINALIZE = 958,
TS_FSP_AFTER_FINALIZE = 959, TS_FSP_AFTER_FINALIZE = 959,
TS_FSP_BEFORE_END_OF_FIRMWARE = 960,
TS_FSP_AFTER_END_OF_FIRMWARE = 961,
/* 1000+ reserved for payloads (1000-1200: ChromeOS depthcharge) */ /* 1000+ reserved for payloads (1000-1200: ChromeOS depthcharge) */
@ -183,7 +185,10 @@ static const struct timestamp_id_to_name {
{ TS_FSP_AFTER_ENUMERATE, { TS_FSP_AFTER_ENUMERATE,
"returning from FspNotify(AfterPciEnumeration)" }, "returning from FspNotify(AfterPciEnumeration)" },
{ TS_FSP_BEFORE_FINALIZE, "calling FspNotify(ReadyToBoot)" }, { TS_FSP_BEFORE_FINALIZE, "calling FspNotify(ReadyToBoot)" },
{ TS_FSP_AFTER_FINALIZE, "returning from FspNotify(ReadyToBoot)" } { TS_FSP_AFTER_FINALIZE, "returning from FspNotify(ReadyToBoot)" },
{ TS_FSP_BEFORE_END_OF_FIRMWARE, "calling FspNotify(EndOfFirmware)" },
{ TS_FSP_AFTER_END_OF_FIRMWARE,
"returning from FspNotify(EndOfFirmware)" },
}; };
#endif #endif

View File

@ -37,6 +37,9 @@ static void fsp_notify(enum fsp_notify_phase phase)
} else if (phase == READY_TO_BOOT) { } else if (phase == READY_TO_BOOT) {
timestamp_add_now(TS_FSP_BEFORE_FINALIZE); timestamp_add_now(TS_FSP_BEFORE_FINALIZE);
post_code(POST_FSP_NOTIFY_BEFORE_FINALIZE); post_code(POST_FSP_NOTIFY_BEFORE_FINALIZE);
} else if (phase == END_OF_FIRMWARE) {
timestamp_add_now(TS_FSP_BEFORE_END_OF_FIRMWARE);
post_code(POST_FSP_NOTIFY_BEFORE_END_OF_FIRMWARE);
} }
ret = fspnotify(&notify_params); ret = fspnotify(&notify_params);
@ -47,6 +50,9 @@ static void fsp_notify(enum fsp_notify_phase phase)
} else if (phase == READY_TO_BOOT) { } else if (phase == READY_TO_BOOT) {
timestamp_add_now(TS_FSP_AFTER_FINALIZE); timestamp_add_now(TS_FSP_AFTER_FINALIZE);
post_code(POST_FSP_NOTIFY_BEFORE_FINALIZE); post_code(POST_FSP_NOTIFY_BEFORE_FINALIZE);
} else if (phase == END_OF_FIRMWARE) {
timestamp_add_now(TS_FSP_AFTER_END_OF_FIRMWARE);
post_code(POST_FSP_NOTIFY_AFTER_END_OF_FIRMWARE);
} }
fsp_debug_after_notify(ret); fsp_debug_after_notify(ret);

View File

@ -202,6 +202,20 @@
*/ */
#define POST_BS_PAYLOAD_BOOT 0x7b #define POST_BS_PAYLOAD_BOOT 0x7b
/**
* \brief Before calling FSP Notify before End of Firmware
*
* Going to call into FSP binary for Notify phase
*/
#define POST_FSP_NOTIFY_BEFORE_END_OF_FIRMWARE 0x88
/**
* \brief Before calling FSP Notify after End of Firmware
*
* Going to call into FSP binary for Notify phase
*/
#define POST_FSP_NOTIFY_AFTER_END_OF_FIRMWARE 0x89
/** /**
* \brief Before calling FSP TempRamInit * \brief Before calling FSP TempRamInit
* *