commonlib/timestamp,amd/common/block/cpu: Add uCode timestamps
This allows keeping track of how long it takes to load the microcode. BUG=b:179699789 TEST=Boot guybrush 112:started reading uCode 990,448 (10,615) 113:finished reading uCode 991,722 (1,274) Signed-off-by: Raul E Rangel <rrangel@chromium.org> Change-Id: I86b67cf9d17786a380e90130a8fe424734e64657 Reviewed-on: https://review.coreboot.org/c/coreboot/+/56391 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Jason Glenesk <jason.glenesk@gmail.com> Reviewed-by: Paul Menzel <paulepanter@mailbox.org> Reviewed-by: Felix Held <felix-coreboot@felixheld.de>
This commit is contained in:
parent
ca74a8f430
commit
ce291b4327
|
@ -54,6 +54,8 @@ enum timestamp_id {
|
||||||
TS_END_POSTCAR = 101,
|
TS_END_POSTCAR = 101,
|
||||||
TS_DELAY_START = 110,
|
TS_DELAY_START = 110,
|
||||||
TS_DELAY_END = 111,
|
TS_DELAY_END = 111,
|
||||||
|
TS_READ_UCODE_START = 112,
|
||||||
|
TS_READ_UCODE_END = 113,
|
||||||
|
|
||||||
/* 500+ reserved for vendorcode extensions (500-600: google/chromeos) */
|
/* 500+ reserved for vendorcode extensions (500-600: google/chromeos) */
|
||||||
TS_START_COPYVER = 501,
|
TS_START_COPYVER = 501,
|
||||||
|
@ -191,6 +193,8 @@ static const struct timestamp_id_to_name {
|
||||||
{ TS_SELFBOOT_JUMP, "selfboot jump" },
|
{ TS_SELFBOOT_JUMP, "selfboot jump" },
|
||||||
{ TS_DELAY_START, "Forced delay start" },
|
{ TS_DELAY_START, "Forced delay start" },
|
||||||
{ TS_DELAY_END, "Forced delay end" },
|
{ TS_DELAY_END, "Forced delay end" },
|
||||||
|
{ TS_READ_UCODE_START, "started reading uCode" },
|
||||||
|
{ TS_READ_UCODE_END, "finished reading uCode" },
|
||||||
|
|
||||||
{ TS_START_COPYVER, "starting to load verstage" },
|
{ TS_START_COPYVER, "starting to load verstage" },
|
||||||
{ TS_END_COPYVER, "finished loading verstage" },
|
{ TS_END_COPYVER, "finished loading verstage" },
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
#include <cpu/x86/msr.h>
|
#include <cpu/x86/msr.h>
|
||||||
#include <cpu/amd/msr.h>
|
#include <cpu/amd/msr.h>
|
||||||
#include <cbfs.h>
|
#include <cbfs.h>
|
||||||
|
#include <timestamp.h>
|
||||||
|
|
||||||
_Static_assert(CONFIG_SOC_AMD_COMMON_BLOCK_UCODE_SIZE > 0,
|
_Static_assert(CONFIG_SOC_AMD_COMMON_BLOCK_UCODE_SIZE > 0,
|
||||||
"SOC_AMD_COMMON_BLOCK_UCODE_SIZE is not set");
|
"SOC_AMD_COMMON_BLOCK_UCODE_SIZE is not set");
|
||||||
|
@ -94,6 +95,7 @@ void amd_update_microcode_from_cbfs(void)
|
||||||
|
|
||||||
/* Cache the buffer so each CPU doesn't need to read the uCode from flash */
|
/* Cache the buffer so each CPU doesn't need to read the uCode from flash */
|
||||||
if (!cache_valid) {
|
if (!cache_valid) {
|
||||||
|
timestamp_add_now(TS_READ_UCODE_START);
|
||||||
ucode_list = cbfs_map("cpu_microcode_blob.bin", &ucode_len);
|
ucode_list = cbfs_map("cpu_microcode_blob.bin", &ucode_len);
|
||||||
if (!ucode_list) {
|
if (!ucode_list) {
|
||||||
printk(BIOS_WARNING, "cpu_microcode_blob.bin not found. Skipping updates.\n");
|
printk(BIOS_WARNING, "cpu_microcode_blob.bin not found. Skipping updates.\n");
|
||||||
|
@ -111,6 +113,8 @@ void amd_update_microcode_from_cbfs(void)
|
||||||
cache_valid = true;
|
cache_valid = true;
|
||||||
|
|
||||||
cbfs_unmap(ucode_list);
|
cbfs_unmap(ucode_list);
|
||||||
|
|
||||||
|
timestamp_add_now(TS_READ_UCODE_END);
|
||||||
}
|
}
|
||||||
|
|
||||||
apply_microcode_patch(&ucode_cache);
|
apply_microcode_patch(&ucode_cache);
|
||||||
|
|
Loading…
Reference in New Issue