From 56178990be01da72c48019be47457f1b5f54e969 Mon Sep 17 00:00:00 2001 From: Jeremy Compostella Date: Wed, 25 Oct 2023 10:51:26 -0700 Subject: [PATCH] Documentation: Update 4.22 release notes with x86 CBFS cache support Change-Id: I7c9ecdc3f8316fdec0bc1bc188f1959fb8b5a458 Signed-off-by: Jeremy Compostella Reviewed-on: https://review.coreboot.org/c/coreboot/+/78655 Reviewed-by: Nicholas Chin Tested-by: build bot (Jenkins) --- .../releases/coreboot-4.22-relnotes.md | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/Documentation/releases/coreboot-4.22-relnotes.md b/Documentation/releases/coreboot-4.22-relnotes.md index f444e80a8b..8b9a099c12 100644 --- a/Documentation/releases/coreboot-4.22-relnotes.md +++ b/Documentation/releases/coreboot-4.22-relnotes.md @@ -59,6 +59,44 @@ Related important commits: - b7832de0260b042c25bf8f53abcb32e20a29ae9c ("x86: Add .data section support for pre-memory stages") +### x86: Support CBFS cache for pre-memory stages and ramstage + +The CBFS cache scratchpad offers a generic way to decompress CBFS +files through the cbfs_map() function without having to reserve a +per-file specific memory region. + +CBFS cache x86 support has been added to pre-memory stages and +ramstage. + +1. **pre-memory stages**: The new `PRERAM_CBFS_CACHE_SIZE` Kconfig can + be used to set the pre-memory stages CBFS cache size. A cache size + of zero disables the CBFS cache feature for all pre-memory + stages. The default value is 16 KiB which seems a reasonable + minimal value enough to satisfy basic needs such as the + decompression of a small configuration file. This setting can be + adjusted depending on the platform needs and capabilities. + + Note that we have set this size to zero for all the platforms + without enough space in Cache-As-RAM to accommodate the default + size. + +2. **ramstage**: The new `RAMSTAGE_CBFS_CACHE_SIZE` Kconfig can be + used to set the ramstage CBFS cache size. A cache size of zero + disables the CBFS cache feature for ramstage. Similarly to + pre-memory stages support, the default size is 16 KiB. + + As we want to support S3 suspend/resume use-case, the CBFS cache + memory cannot be released to the operating system and therefore + cannot be an unreserved memory region. The ramstage CBFS cache + scratchpad is defined as a simple C static buffer as it allows us + to keep the simple and robust design of the static initialization + of the `cbfs_cache` global variable (cf. src/lib/cbfs.c). + + However, since some AMD SoCs (cf. `SOC_AMD_COMMON_BLOCK_NONCAR` + Kconfig) already define a `_cbfs_cache` region we also introduced a + `POSTRAM_CBFS_CACHE_IN_BSS` Kconfig to gate the use of a static + buffer as the CBFS cache scratchpad. + ### Toolchain updates * Upgrade GMP from 6.2.1 to 6.3.0