Raul Rangel uploaded patch set #2 to this change.

View Change

soc/amd/picasso: Add support for RAM hash

This CL allocates a region in EARLY_DRAM to store the RAM hashes. It
also introduces a hard coded memory map based on the current e820 map. In
the future we could maybe automate the generate of the hash_ranges.
Until now we will need to keep it updated.

To enable, add the following to your .config:

CONFIG_ENABLE_RAM_HASH=y

Hashing RAM from the SMM handler is pretty slow compared to trying it in
bootblock. Not sure if the OS has reset the MTRRs.

Example of entering S3:
coreboot-4.12-1163-gd9cc83a4ce58-dirty Tue Jul 7 21:34:13 UTC 2020 smm starting (log level: 8)...

SMI# #0
SMI#: SLP = 0x0c01
hash_ram: Start
for_each_range: Processing range 0x1000 -> 0xa0000
Processed block 128: crc: 0x7f00c996. Remaining: 0 MiB
Processed block 256: crc: 0x7f00c996. Remaining: 0 MiB
Processed block 384: crc: 0x7f00c996. Remaining: 0 MiB
Processed block 512: crc: 0x7f00c996. Remaining: 0 MiB
for_each_range: Processing range 0x100000 -> 0x2000000
for_each_range: Processing range 0x22cd000 -> 0xcc50c000
Processed block 128: crc: 0x9a22c19c. Remaining: 3107 MiB
Processed block 256: crc: 0x9a22c19c. Remaining: 2979 MiB
Processed block 384: crc: 0x9a22c19c. Remaining: 2851 MiB
...

Example of exiting S3:
Timestamp - ACPI wake jump: 36887335255
verify_ram: Start
for_each_range: Processing range 0x1000 -> 0xa0000
Processed block 128: crc: 0x7f00c996. Remaining: 0 MiB
Processed block 256: crc: 0x7f00c996. Remaining: 0 MiB
Processed block 384: crc: 0x7f00c996. Remaining: 0 MiB
Processed block 512: crc: 0x7f00c996. Remaining: 0 MiB
for_each_range: Processing range 0x100000 -> 0x2000000
for_each_range: Processing range 0x22cd000 -> 0xcc50c000
Processed block 128: crc: 0x9a22c19c. Remaining: 3107 MiB
Processed block 256: crc: 0x9a22c19c. Remaining: 2979 MiB
Processed block 384: crc: 0x9a22c19c. Remaining: 2851 MiB
Processed block 512: crc: 0x9a22c19c. Remaining: 2723 MiB
Processed block 640: crc: 0x9a22c19c. Remaining: 2595 MiB
Processed block 768: crc: 0x9a22c19c. Remaining: 2467 MiB
Processed block 896: crc: 0x9a22c19c. Remaining: 2339 MiB
Processed block 1024: crc: 0x9a22c19c. Remaining: 2211 MiB
Processed block 1152: crc: 0x9a22c19c. Remaining: 2083 MiB
Processed block 1280: crc: 0x9a22c19c. Remaining: 1955 MiB
Processed block 1408: crc: 0x9a22c19c. Remaining: 1827 MiB
Processed block 1536: crc: 0x9a22c19c. Remaining: 1699 MiB
Processed block 1664: crc: 0x9a22c19c. Remaining: 1571 MiB
Processed block 1792: crc: 0x9a22c19c. Remaining: 1443 MiB
Processed block 1920: crc: 0x9a22c19c. Remaining: 1315 MiB
Processed block 2048: crc: 0x9a22c19c. Remaining: 1187 MiB
Processed block 2176: crc: 0x9a22c19c. Remaining: 1059 MiB
Processed block 2304: crc: 0x9a22c19c. Remaining: 931 MiB
Processed block 2432: crc: 0x9a22c19c. Remaining: 803 MiB
Processed block 2560: crc: 0x9a22c19c. Remaining: 675 MiB
Processed block 2688: crc: 0x9a22c19c. Remaining: 547 MiB
Processed block 2816: crc: 0x9a22c19c. Remaining: 419 MiB
Processed block 2944: crc: 0x9a22c19c. Remaining: 291 MiB
Processed block 3072: crc: 0x9a22c19c. Remaining: 163 MiB
Processed block 3200: crc: 0x9a22c19c. Remaining: 35 MiB
verify_ram: Done

BUG=b:159081993
TEST=S3 suspend and resume on trembyle

Signed-off-by: Raul E Rangel <rrangel@chromium.org>
Change-Id: Ia9b80044dd794ddfb0b661d517367259917cd944
---
M src/soc/amd/picasso/Kconfig
M src/soc/amd/picasso/Makefile.inc
M src/soc/amd/picasso/memlayout.ld
A src/soc/amd/picasso/ram_hash.c
M src/soc/amd/picasso/smihandler.c
5 files changed, 65 insertions(+), 0 deletions(-)

git pull ssh://review.coreboot.org:29418/coreboot refs/changes/02/43302/2

To view, visit change 43302. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-Change-Id: Ia9b80044dd794ddfb0b661d517367259917cd944
Gerrit-Change-Number: 43302
Gerrit-PatchSet: 2
Gerrit-Owner: Raul Rangel <rrangel@chromium.org>
Gerrit-Reviewer: Julius Werner <jwerner@chromium.org>
Gerrit-Reviewer: Martin Roth <martinroth@google.com>
Gerrit-Reviewer: Patrick Georgi <pgeorgi@google.com>
Gerrit-Reviewer: build bot (Jenkins) <no-reply@coreboot.org>
Gerrit-MessageType: newpatchset