soc/intel/common/fast_spi: support caching `ext_bios` in ramstage
This patch provides a way to cache `ext_bios` region for all stages to save boot time. TEST=Able to see the ext_bios region in MTRR snapshot when cached on the Brya variants. Here is the timestamp snippet showing the payload load time as a comparison between current upstream and the patched version: upstream: 90:starting to load payload 1,072,459 (1,802) 958:calling FspNotify(ReadyToBoot) 12,818,079 (11,745,619) with this patch: 90:starting to load payload 1,072,663 (2,627) 958:calling FspNotify(ReadyToBoot) 5,299,535 (4,226,871) Signed-off-by: Subrata Banik <subratabanik@google.com> Change-Id: I87139a9ed7eb9ed43164a5199aa436dd1219145c Reviewed-on: https://review.coreboot.org/c/coreboot/+/62837 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Werner Zeh <werner.zeh@siemens.com> Reviewed-by: Tim Wawrzynczak <twawrzynczak@chromium.org> Reviewed-by: Arthur Heymans <arthur@aheymans.xyz>
This commit is contained in:
parent
242e2665d0
commit
1f28c853de
|
@ -245,11 +245,15 @@ static void fast_spi_cache_ext_bios_window(void)
|
||||||
if (!fast_spi_ext_bios_cache_range(&ext_bios_base, &ext_bios_size))
|
if (!fast_spi_ext_bios_cache_range(&ext_bios_base, &ext_bios_size))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (ENV_PAYLOAD_LOADER) {
|
||||||
|
mtrr_use_temp_range(ext_bios_base, ext_bios_size, type);
|
||||||
|
} else {
|
||||||
int mtrr = get_free_var_mtrr();
|
int mtrr = get_free_var_mtrr();
|
||||||
if (mtrr == -1)
|
if (mtrr == -1)
|
||||||
return;
|
return;
|
||||||
set_var_mtrr(mtrr, ext_bios_base, ext_bios_size, type);
|
set_var_mtrr(mtrr, ext_bios_base, ext_bios_size, type);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void fast_spi_cache_ext_bios_postcar(struct postcar_frame *pcf)
|
void fast_spi_cache_ext_bios_postcar(struct postcar_frame *pcf)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue