From f906102c508016fad87662ccf8439605f0db6a3e Mon Sep 17 00:00:00 2001 From: Aaron Durbin Date: Thu, 10 Nov 2016 21:09:25 -0600 Subject: [PATCH] UPSTREAM: 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 BRANCH=None TEST=None Signed-off-by: Aaron Durbin Reviewed-on: https://review.coreboot.org/17373 Tested-by: build bot (Jenkins) Reviewed-by: Furquan Shaikh Reviewed-by: Andrey Petrov Reviewed-by: Paul Menzel Reviewed-by: Giri P Mudusuru Change-Id: I74c1043f2e72d9d85b23a99b8253ac465f62a7f2 Reviewed-on: https://chromium-review.googlesource.com/411438 Commit-Ready: Furquan Shaikh Tested-by: Furquan Shaikh Reviewed-by: Aaron Durbin --- .../include/commonlib/timestamp_serialized.h | 7 ++++++- src/drivers/intel/fsp2_0/notify.c | 6 ++++++ src/include/console/post_codes.h | 14 ++++++++++++++ 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/commonlib/include/commonlib/timestamp_serialized.h b/src/commonlib/include/commonlib/timestamp_serialized.h index aec93c4ed6..29f5e0d6a0 100644 --- a/src/commonlib/include/commonlib/timestamp_serialized.h +++ b/src/commonlib/include/commonlib/timestamp_serialized.h @@ -86,6 +86,8 @@ enum timestamp_id { TS_FSP_AFTER_ENUMERATE = 957, TS_FSP_BEFORE_FINALIZE = 958, 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) */ @@ -183,7 +185,10 @@ static const struct timestamp_id_to_name { { TS_FSP_AFTER_ENUMERATE, "returning from FspNotify(AfterPciEnumeration)" }, { 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 diff --git a/src/drivers/intel/fsp2_0/notify.c b/src/drivers/intel/fsp2_0/notify.c index 840165375c..09d335f3c9 100644 --- a/src/drivers/intel/fsp2_0/notify.c +++ b/src/drivers/intel/fsp2_0/notify.c @@ -37,6 +37,9 @@ static void fsp_notify(enum fsp_notify_phase phase) } else if (phase == READY_TO_BOOT) { timestamp_add_now(TS_FSP_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(¬ify_params); @@ -47,6 +50,9 @@ static void fsp_notify(enum fsp_notify_phase phase) } else if (phase == READY_TO_BOOT) { timestamp_add_now(TS_FSP_AFTER_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); diff --git a/src/include/console/post_codes.h b/src/include/console/post_codes.h index c7722e5faf..9f24199cb7 100644 --- a/src/include/console/post_codes.h +++ b/src/include/console/post_codes.h @@ -202,6 +202,20 @@ */ #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 *