coreboot/src/drivers
Reka Norman 7b5a93153a drivers/intel/fsp2_0: Update MRC cache in ramstage
Currently the MRC cache is updated in romstage, immediately after
returning from FSP-M. Since cbmem is not cached in romstage, the update
is slow (~6 ms on nissa). Specifically, the new MRC data returned by the
FSP is stored in the FSP reserved memory in cbmem, so hashing the new
data is slow.

Move the MRC cache update to ramstage, where cbmem is cached. On nissa,
this saves ~5 ms of boot time.

Before:
552:finished loading ChromeOS VPD (RW)                631,667 (16)
  3:after RAM initialization                          637,703 (6,036)
  4:end of romstage                                   650,307 (12,603)

After:
552:finished loading ChromeOS VPD (RW)                631,832 (15)
  3:after RAM initialization                          633,002 (1,169)
  4:end of romstage                                   645,582 (12,580)

In ramstage, save_mrc_data() takes ~138 us.

BUG=b:242667207
TEST=MRC caching still works as expected on nivviks - after clearing the
MRC cache, memory is retrained on the next boot, but cached data is used
on subsequent boots.

Change-Id: Ie6aa2dee83a3ab8913830746593935d36a034b8d
Signed-off-by: Reka Norman <rekanorman@chromium.org>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/67669
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Julius Werner <jwerner@chromium.org>
2022-12-06 21:16:24 +00:00
..
acpi/thermal_zone
amd src/drivers: Remove unnecessary space after casts 2022-11-22 13:40:56 +00:00
ams
analogix/anx7625
asmedia
aspeed src/drivers: Remove unnecessary space after casts 2022-11-22 13:40:56 +00:00
broadcom
camera treewide: Unify Google branding 2022-07-04 14:02:26 +00:00
crb security/tpm: remove tis_close() 2022-12-05 14:46:43 +00:00
elog drivers/elog/gsmi.c: Fix compiling for 64bit 2022-09-01 16:43:33 +00:00
emulation/qemu
generic drivers/generic/ioapic: Drop poor implementation 2022-11-13 18:48:52 +00:00
genesyslogic drivers/genesyslogic/gl9763e: Add set L1 entry delay to Max for GL9763E 2022-03-22 03:45:30 +00:00
gfx/generic
i2c security/tpm: remove tis_close() 2022-12-05 14:46:43 +00:00
intel drivers/intel/fsp2_0: Update MRC cache in ramstage 2022-12-06 21:16:24 +00:00
ipmi drivers/ipmi: Retry ipmi_get_device_id in ipmi_kcs_init 2022-12-06 15:20:18 +00:00
lenovo drivers: Remove unused <acpi/acpi.h> 2022-04-24 17:41:26 +00:00
maxim
mipi src/drivers: Clean up includes 2022-10-26 16:38:45 +00:00
mrc_cache mrc_cache: Update metadata signature 2022-10-01 00:45:25 +00:00
net drivers/net/r8168: Add support for ACPI DmaProperty 2022-11-29 19:50:59 +00:00
nxp/uwb mb/google/brya/var/ghost: Enable NXP UWB SR150 chip 2022-08-17 19:46:07 +00:00
ocp/dmi drivers/ocp/dmi: move smbios_ec_revision to ocp folder 2022-11-22 12:50:05 +00:00
parade
pc80 security/tpm: remove tis_close() 2022-12-05 14:46:43 +00:00
pcie soc/intel/cmn/block/{pcie/rtd3,usb4}: Use helper functions for _DSD 2022-12-05 14:32:04 +00:00
ricoh/rce822
secunet/dmi
siemens/nc_fpga drivers/siemens/nc_fpga: Fix typo in comment 2022-08-23 14:04:22 +00:00
sil/3114
smbus drivers/smbus: initialize SC16IS7XX I2C to UART converter chip 2022-10-03 16:14:25 +00:00
smmstore payloads/tianocore: Rename TianoCore to edk2 2022-08-13 16:35:18 +00:00
soundwire
spi security/tpm: remove tis_close() 2022-12-05 14:46:43 +00:00
ti
tpm drivers/tpm: Move TPM init to end of device init phase 2022-10-20 17:22:57 +00:00
uart drivers/uart/Kconfig: Drop unused Kconfig symbol 2022-11-17 13:26:55 +00:00
usb drivers/usb/gadget.c: Add support for EHCI debug using the WCH CH347 2022-11-11 13:33:34 +00:00
vpd CBMEM: Change declarations for initialization hooks 2022-05-20 07:15:39 +00:00
wifi/generic drivers/{wifi,wwan}: Use helper function to add DmaProperty in _DSD 2022-11-29 19:48:59 +00:00
wwan/fm drivers/{wifi,wwan}: Use helper function to add DmaProperty in _DSD 2022-11-29 19:48:59 +00:00