1coreboot 4.22 & 4.22.01 releases 2======================================================================== 3 4The next release is planned for the 19th of February, 2024 5 6These notes cover the latest updates and improvements to coreboot over 7the past three months. A big thank you to the returning contributors as 8well as the 14 individuals who committed code for the first time. We 9greatly appreciate everyone's dedication and expertise. As with past 10releases, this one reflects a commitment to open source innovation, 11security enhancements, and expanding hardware support. 12 13 14## 4.22.01 release 15 16The week between tagging a release and announcing it publicly is used 17to test the tagged version and make sure everything is working as we 18expect. This is done instead of freezing the tree and doing release 19candidates before the release. 20 21For the 4.22 release cycle we found an uninitialized variable error on 22the sandybridge/ivybridge platforms and rolled that into the 4.22.01 23release package. 24 25## coreboot version naming update 26 27This release is the last release to use the incrementing 4.xx release 28name scheme. For future releases, coreboot is switching to a 29Year.Month.Sub-version naming scheme. As such, the next release, 30scheduled for February of 2024 will be numbered 24.02, with the 31sub-version of 00 implied. If we need to do a fix or future release of 32the 24.02 release, we'll append the values .01, .02 and so on to the 33initial release value. 34 35 36## coreboot default branch update 37 38Immediately after the 4.21 release, the coreboot project changed the 39default git branch from 'master' to 'main'. For the first couple of 40months after the change, The master branch was synced with the main 41branch several times a day, allowing people time to update any scripts. 42As of 2023-11-01, the sync rate has slowed to once a week. This will 43continue until the next release, at which time the master branch will 44be removed. 45 46 47 48Significant or interesting changes 49---------------------------------- 50 51### x86: support .data section for pre-memory stages 52 53x86 pre-memory stages did not support the `.data` section and as a 54result developers were required to include runtime initialization code 55instead of relying on C global variable definitions. 56 57Other platforms do not have that limitation. Hence, resolving it helps 58to align code and reduce compilation-based restrictions (cf. the use of 59`ENV_HAS_DATA_SECTION` compilation flag in various places of coreboot 60code). 61 62There were three types of binary to consider: 631. eXecute-In-Place pre-memory stages 642. `bootblock` stage is a bit different as it uses Cache-As-Ram but 65 the memory mapping and its entry code different 663. pre-memory stages loaded in and executed from Cache-As-RAM 67 (cf. `CONFIG_NO_XIP_EARLY_STAGES`). 68 69eXecute-In-Place pre-memory stages (#1) rely on a new ELF segment as 70the code segment Virtual Memory Address and Load Memory Address are 71identical but the data needs to be linked in cache-As-RAM (VMA) to be 72stored right after the code (LMA). 73 74`bootblock` (#2) also uses this new segment to store the data right 75after the code and it loads it to Cache-As-RAM at runtime. However, the 76code involved is different. 77 78Not eXecute-In-Place pre-memory stages (#3) did not need any special 79work other than enabling a .data section as the code and data VMA / LMA 80translation vector is the same. 81 82Related important commits: 83- c9cae530e5 ("cbfstool: Make add-stage support multiple ignore sections") 84- 79f2e1fc8b ("cbfstool: Make add-stage support multiple loadable segments") 85- b7832de026 ("x86: Add .data section support for pre-memory stages") 86 87 88### x86: Support CBFS cache for pre-memory stages and ramstage 89 90The CBFS cache scratchpad offers a generic way to decompress CBFS files 91through the cbfs_map() function without having to reserve a per-file 92specific memory region. 93 94CBFS cache x86 support has been added to pre-memory stages and 95ramstage. 96 971. **pre-memory stages**: The new `PRERAM_CBFS_CACHE_SIZE` Kconfig can 98 be used to set the pre-memory stages CBFS cache size. A cache size 99 of zero disables the CBFS cache feature for all pre-memory stages. 100 The default value is 16 KiB which seems a reasonable minimal value 101 enough to satisfy basic needs such as the decompression of a small 102 configuration file. This setting can be adjusted depending on the 103 platform's needs and capabilities. 104 105 Note that we have set this size to zero for all the platforms 106 without enough space in Cache-As-RAM to accommodate the default 107 size. 108 1092. **ramstage**: The new `RAMSTAGE_CBFS_CACHE_SIZE` Kconfig can be used 110 to set the ramstage CBFS cache size. A cache size of zero disables 111 the CBFS cache feature for ramstage. Similarly to pre-memory stages 112 support, the default size is 16 KiB. 113 114 As we want to support the S3 suspend/resume use case, the CBFS cache 115 memory cannot be released to the operating system and therefore 116 cannot be an unreserved memory region. The ramstage CBFS cache 117 scratchpad is defined as a simple C static buffer as it allows us to 118 keep the simple and robust design of the static initialization of 119 the `cbfs_cache` global variable (cf. src/lib/cbfs.c). 120 121 However, since some AMD SoCs (cf. `SOC_AMD_COMMON_BLOCK_NONCAR` 122 Kconfig) already define a `_cbfs_cache` region we also introduced a 123 `POSTRAM_CBFS_CACHE_IN_BSS` Kconfig to gate the use of a static 124 buffer as the CBFS cache scratchpad. 125 126 127### Allow romstage to be combined into the bootblock 128 129Having a separate romstage is only desirable: 130 - with advanced setups like vboot or normal/fallback 131 - boot medium is slow at startup (some ARM SOCs) 132 - bootblock is limited in size (Intel APL 32K) 133 134When this is not the case there is no need for the extra complexity 135that romstage brings. Including the romstage sources inside the 136bootblock substantially reduces the total code footprint. Often the 137resulting code is 10-20k smaller. 138 139This is controlled via a Kconfig option. 140 141 142### soc/intel/cmn/gfx: Add API to report presence of external display 143 144This implements an API to report the presence of an external display on 145Intel silicon. The API uses information from the transcoder and 146framebuffer to determine if an external display is connected. 147 148For example, if the transcoder is attached to any DDI ports other than 149DDI-A (eDP), and the framebuffer is initialized, then it is likely that 150an external display is present. 151 152This information can be used by payloads to determine whether or not to 153power on the display, even if eDP is not initialized. 154 155 156### device/pci_rom: Set VBIOS checksum when filling VFCT table 157 158AMD's Windows display drivers validate the checksum of the VBIOS data 159in the VFCT table (which gets modified by the FSP GOP driver), so 160ensure it is set correctly after copying the VBIOS into the table if 161the FSP GOP driver was run. Without the correct checksum, the Windows 162GPU drivers will fail to load with a code 43 error in Device Manager. 163 164 165 166Additional coreboot changes 167--------------------------- 168 169* Move all 'select' statements from Kconfig.name files to Kconfig 170* acpigen now generates variable-length PkgLength fields instead of a 171 fixed 3-byte size to improve compatibility and to bring it in line 172 with IASL 173* Work to allow Windows to run on more Chromebooks 174* General cleanup and reformatting 175* Add initial AMD openSIL implementation 176* Add ACPI table generation for ARM64 177* Stop resetting CMOS during s3 resume even if marked as invalid 178* Comply with ACPI specification by making _STR Unicode strings 179* Fix SMM get_save_state calculation, which was broken when STM was 180 enabled 181* SNB+MRC boards: Migrate MRC settings to devicetree 182* Work on chipset devicetrees for all platforms 183 184 185 186Changes to external resources 187----------------------------- 188 189### Toolchain updates 190 191* Upgrade GMP from 6.2.1 to 6.3.0 192* Upgrade binutils from 2.40 to 2.41 193* Upgrade MPFR from 4.2.0 to 4.2.1 194 195 196### Git submodule pointers 197 198* amd_blobs: Update from commit id 6a1e1457af to e4519efca7 (16 199 commits) 200* arm-trusted-firmware: Update from commit id 37366af8d4 to 88b2d81345 201 (214 commits) 202* fsp: Update from commit id 3beceb01f9 to 481ea7cf0b (15 commits) 203* intel-microcode: Update from commit id 6f36ebde45 to 6788bb07eb (1 204 commit) 205* vboot: Update from commit id 0c11187c75 to 24cb127a5e (24 commits) 206* genoa_poc/opensil: New submodule updated to 0411c75e17 (41 commits) 207 208 209### External payloads 210 211* U-Boot: Use github mirror and the latest version 212* edk2: Update default branch for MrChromebox repo to 2023-09 213 214 215 216Platform Updates 217---------------- 218 219### Added 17 mainboards 220 221* AMD Onyx 222* Google: Anraggar 223* Google: Brox 224* Google: Chinchou 225* Google: Ciri 226* Google: Deku 227* Google: Deku4ES 228* Google: Dexi 229* Google: Dochi 230* Google: Nokris 231* Google: Quandiso 232* Google: Rex4ES EC ISH 233* Intel: Meteorlake-P RVP with Chrome EC for non-Prod Silicon 234* Purism Librem 11 235* Purism Librem L1UM v2 236* Siemens FA EHL 237* Supermicro X11SSW-F 238 239 240### Added 1 SoC 241 242* src/soc/amd/genoa 243 244 245 246Statistics from the 4.21 to the 4.22 release 247-------------------------------------------- 248 249* Total Commits: 977 250* Average Commits per day: 10.98 251* Total lines added: 62993 252* Average lines added per commit: 64.48 253* Number of patches adding more than 100 lines: 60 254* Average lines added per small commit: 37.55 255* Total lines removed: 30042 256* Average lines removed per commit: 30.75 257* Total difference between added and removed: 32951 258* Total authors: 135 259* New authors: 14 260 261 262 263Significant Known and Open Issues 264--------------------------------- 265 266Issues from the coreboot bugtracker: https://ticket.coreboot.org/ 267 268### Payload-specific issues 269 270```{eval-rst} 271+-----+-----------------------------------------------------------------+ 272| # | Subject | 273+=====+=================================================================+ 274| 499 | edk2 boot fails with RESOURCE_ALLOCATION_TOP_DOWN enabled | 275+-----+-----------------------------------------------------------------+ 276| 496 | Missing malloc check in libpayload | 277+-----+-----------------------------------------------------------------+ 278| 484 | No USB keyboard support with secondary payloads | 279+-----+-----------------------------------------------------------------+ 280| 414 | X9SAE-V: No USB keyboard init on SeaBIOS using Radeon RX 6800XT | 281+-----+-----------------------------------------------------------------+ 282``` 283 284 285### Platform-specific issues 286 287```{eval-rst} 288+-----+-----------------------------------------------------------------+ 289| # | Subject | 290+=====+=================================================================+ 291| 509 | SD Card hotplug not working on Apollo Lake | 292+-----+-----------------------------------------------------------------+ 293| 507 | Windows GPU driver fails on Google guybrush & skyrim boards | 294+-----+-----------------------------------------------------------------+ 295| 506 | APL/GML don't boot OS when CPU microcode included "from tree" | 296+-----+-----------------------------------------------------------------+ 297| 505 | Harcuvar CRB - 15 of 16 cores present in the operating system | 298+-----+-----------------------------------------------------------------+ 299| 499 | T440p - EDK2 fails with RESOURCE_ALLOCATION_TOP_DOWN enabled | 300+-----+-----------------------------------------------------------------+ 301| 495 | Stoney Chromebooks not booting PSPSecureOS | 302+-----+-----------------------------------------------------------------+ 303| 478 | X200 booting Linux takes a long time with TSC | 304+-----+-----------------------------------------------------------------+ 305| 474 | X200s crashes after graphic init with 8GB RAM | 306+-----+-----------------------------------------------------------------+ 307| 457 | Haswell (t440p): CAR mem region conflicts with CBFS_SIZE > 8mb | 308+-----+-----------------------------------------------------------------+ 309| 453 | Intel HDMI / DP Audio not present in Windows after libgfxinit | 310+-----+-----------------------------------------------------------------+ 311| 449 | ThinkPad T440p fail to start, continuous beeping & LED blinking | 312+-----+-----------------------------------------------------------------+ 313| 448 | Thinkpad T440P ACPI Battery Value Issues | 314+-----+-----------------------------------------------------------------+ 315| 446 | Optiplex 9010 No Post | 316+-----+-----------------------------------------------------------------+ 317| 439 | Lenovo X201 Turbo Boost not working (stuck on 2,4GHz) | 318+-----+-----------------------------------------------------------------+ 319| 427 | x200: Two battery charging issues | 320+-----+-----------------------------------------------------------------+ 321| 412 | x230 reboots on suspend | 322+-----+-----------------------------------------------------------------+ 323| 393 | T500 restarts rather than waking up from suspend | 324+-----+-----------------------------------------------------------------+ 325| 350 | I225 PCIe device not detected on Harcuvar | 326+-----+-----------------------------------------------------------------+ 327``` 328 329 330 331Plans for the next release 332-------------------------- 333 334* Finish adding chipset device trees for all SOCs 335* Improve code for options/setup 336* Start reformatting C files with clang-format 337* Add warning/error step for Makefiles at the end 338 339 340 341coreboot Links and Contact Information 342-------------------------------------- 343 344* Main Website: https://www.coreboot.org 345* Downloads: https://coreboot.org/downloads.html 346* Source control: https://review.coreboot.org 347* Documentation: https://doc.coreboot.org 348* Issue tracker: https://ticket.coreboot.org/projects/coreboot 349* Donations: https://coreboot.org/donate.html 350