1Upcoming release - coreboot 4.21 2======================================================================== 3 4The 4.21 release is scheduled for August 21st, 2023 5 6In the past quarter year, the coreboot project has gotten over 1200 new 7patches from around 140 authors, 20 of whom contributed for the first 8time. 9 10Thank you to all of our donors, the code contributors, the people who 11take time to review all of those patches and all of the people who care 12about the coreboot project. There have been a number of new companies 13starting to use coreboot recently, and we appreciate all of the 14contributions and support. 15 16## Upcoming switch from master branch to main branch 17 18Historically, the initial branch that was created in a new git 19repository was named ‘master’. In line with many other projects, 20coreboot has decided to switch away from this name and use the name 21‘main’ instead. You can read about the initial reasoning on the SFC’s 22website: https://sfconservancy.org/news/2020/jun/23/gitbranchname/ 23 24At some point before the 4.22 release, coreboot will be switching from 25the master branch to the main branch. This shouldn’t be a difficult 26change for most people, as everyone will just have to rebase on top of 27a different branch name. 28 29We’ve already created the main branch, and it is currently synced with 30the master branch. Please update any scripts to point to main instead 31of master. 32 33At the point of the changeover, we will move all patches in gerrit to 34the main branch and disable pushes to the master branch. 35 36After the switch, we will sync the main branch to the master branch for 37a while to give people a little more time to update any scripts that 38are currently pointed at the master branch. Note that this update will 39probably be done just once per day, and the frequency of updates will 40be decreased over time. We plan to stop updating the master branch 41following the 4.22 release. 42 43Significant or interesting changes 44---------------------------------- 45 46### lib: Support localized text of memory_training_desc in ux_locales.c 47 48Most of the text in coreboot is for logging, and does not use 49localization. There are however, some bits of text that can be 50presented to the user, and this patch supplies a method to localize 51them. 52 53To support the localized text, we need to get the locale id by vboot 54APIs and read raw string content file: preram_locales located at either 55RO or RW. 56 57The preram_locales file follows the format: 58 59 [PRERAM_LOCALES_VERSION_BYTE (\x01)] 60 [string_name_1] [\x00] 61 [locale_id_1] [\x00] [localized_string_1] [\x00] 62 [locale_id_2] [\x00] [localized_string_2] … 63 [\x01] 64 [string_name_2] [\x00] ... 65 66This code will search for the correct localized string that its string 67name is `memory_training_desc` and its locale ID matches the ID vb2api 68returns. If no valid string found, we will try to display in English 69(locale ID 0). 70 71 72### Improved the bootsplash support 73 74The JPEG decoder, that was added many years ago to display a bootsplash 75in coreboot, has a few quirks. People used to do some voodoo with GIMP 76to convert images to the right format, but we can also achieve the same 77with ImageMagick's `convert`. The currently known constraints are: 78 79* The framebuffer's color format is ignored, 80* only YCC 4:2:0 color sampling is supported, and 81* width and height have to be a multiple of 16 pixels. 82 83Beside that, we can only display the bootsplash if it completely fits 84into the framebuffer. As the latter's size is often decided at runtime, 85we can't do much more than offering an option to set a specific size. 86 87The build system has been extended so that the necessary adjustments to 88the picture can be done by it and several options have been added to 89Kconfig. 90 91 92### libpayload/uhci: Re-write UHCI RH driver w/ generic_hub API 93 94This is a complete rewrite of the UHCI root-hub driver, based on the 95xHCI one. We are doing things by the book as far as possible. One 96special case is uhci_rh_reset_port() which does the reset sequencing 97that usually the hardware would do. 98 99This abandons some quirks of the old driver: 100* Ports are not disabled/re-enabled for every attachment anymore. 101* We solely rely on the Connect Status Change bit to track changes. 102* Further status changes are now deferred to the next polling round. 103 104 105### linux_trampoline: Handle coreboot framebuffer & 64-bit addresses 106 107Translate the coreboot framebuffer info from coreboot tables to the 108Linux zero page. 109 110To support full 64-bit addresses, there is a new field `ext_lfb_base` 111since Linux 4.1. It is unclear, however, how a loader is supposed to 112know if the kernel is compatible with this. Filling these previously 113reserved bits doesn't hurt, but an old kernel would probably ignore 114them and not know that it's handling a clipped, invalid address. So we 115play safe, and only allow 64-bit addresses for kernels after the 2.15 116version bump of the boot protocol. 117 118 119### arch/x86: Don't allow hw floating point operations 120 121Even though coreboot does not allow floating point operations, some 122compilers like clang generate code using hw floating point registers, 123e.g. SSE %XMMx registers on 64bit code by default. Floating point 124operations need to be enabled in hardware for this to work (CR4). Also 125in SMM we explicitly need to save and restore floating point registers 126for this reason. If we instruct the compiler to not generate code with 127FPU ops, this simplifies our code as we can skip that step. 128 129With clang this reduces the binary size a bit. For instance ramstage 130for emulation/qemu-q35 drops by 4 kB from from 216600 bytes 131decompressed to 212768 bytes. 132 133Since we now explicitly compile both ramstage and smihandler code 134without floating point operations and associated registers we don't 135need to save/restore floating point registers in SMM. 136 137The EFER MSR is in the SMM save state and RSM properly restores it. 138Returning to 32bit mode was only done so that fxsave was done in the 139same mode as fxrstor, but this is no longer done. 140 141 142### Caching of PCIe 5.0 HSPHY firmware in SPI flash 143 144This adds the ability to cache the PCIe 5.0 HSPHY firmware in the SPI 145flash. A new flashmap region is created for that purpose. The goal of 146caching is to reduce the dependency on the CSME (Converged Security and 147Management Engine) and the HECI (Host Embedded Controller Interface) IP 148LOAD command which may fail when the CSME is disabled, e.g. soft 149disabled by HECI command or HAP (High Assurance Platform mode). By 150caching that firmware, this allows the PCIe 5.0 root ports to keep 151functioning even if CSME/HECI is not functional. 152 153 154### Extracting of TPM logs using cbmem tool 155 156CBMEM can contain logs in different forms (at most one is present): 157 * coreboot-specific format (CBMEM_ID_TPM_CB_LOG exported as 158 LB_TAG_TPM_CB_LOG) 159 * TPM1.2 format (CBMEM_ID_TCPA_TCG_LOG) 160 * TPM2 format (CBMEM_ID_TPM2_TCG_LOG) 161 162The last two follow specifications by Trusted Computing Group, but 163until now cbmem couldn't print them. 164 165These changes make the cbmem utility check for existence of TPM1.2/TPM2 166logs in CBMEM and add code necessary for parsing and printing of their 167entries. 168 169`cbmem -L` for CONFIG_TPM1=y case 170 171``` 172TCPA log: 173 Specification: 1.21 174 Platform class: PC Client 175TCPA log entry 1: 176 PCR: 2 177 Event type: Action 178 Digest: 5622416ea417186aa1ac32b32c527ac09009fb5e 179 Event data: FMAP: FMAP 180``` 181 182`cbmem -L` for CONFIG_TPM2=y case 183 184``` 185TPM2 log: 186 Specification: 2.00 187 Platform class: PC Client 188TPM2 log entry 1: 189 PCR: 2 190 Event type: Action 191 Digests: 192 SHA256: 68d27f08cb261463a6d004524333ac5db1a3c2166721785a6061327b6538657c 193 Event data: FMAP: FMAP 194``` 195 196 197### soc/amd: read domain resource window configuration from hardware 198 199Read the MMIO and IO decode windows for the PCI root complex and the 200PCI bus number range decoded to the PCI root complex from the data 201fabric registers and pass the information to the resource allocator so 202it has the correct constraints to do its job. Also generate the 203corresponding ACPI resource producers in the SSDT so that the OS knows 204about this too. This is required for the upcoming USB 4 support. 205 206 207Additional coreboot changes 208--------------------------- 209 210* Added SPDX headers to more files to help automated license checking. 211 The linter has been enabled to check the Makefiles as well. 212* Cleaned up Kconfig files and source code. 213* Enabled acpigen to generate tables for SPCR (Serial Port Console 214 Redirection) and GTDT (Generic Timer Description Table). 215* The resource allocation above the 4GiB boundary has been improved. 216* Most of the code has been adjusted to make use of C99 flexible arrays 217 instead of one-element or zero-length arrays. 218* Additional Dockerfiles based on Arch and Alpine Linux have been added 219 to build-test with alternate build environments, including musl-libc. 220 They are very basic at the moment and not equal to the coreboot-sdk. 221 They will be extended in the future. 222* Added support for ITE IT8784E to superiotool. 223* Added support for Intel 700 chipset series to inteltool and a build 224 issue with musl–libc has been fixed. 225* Added support for Intel 800 chipset series to ifdtool. 226* The coreboot-sdk container has been extended so that it allows 227 extracting the MRC binary from Haswell-based ChromeOS firmware images. 228* From now on POST code preprocessor macros should have a POSTCODE 229 prefix following the name of the POST code. 230* The NASM compiler provided by the coreboot toolchain wasn’t properly 231 integrated into xcompile and thus it wasn’t used by the build system. 232 Instead, it was required to install NASM on the host in order to use 233 it. This has been fixed. 234* The time measurement done in abuild got improved and also an issue 235 has been fixed when the variant name contains hyphens. 236* The RISC-V code was enabled to build with Clang. 237* Initial work has been done to transform Camelcase options to 238 Snakecase. 239* The buildgcc script is now able to just fetch the tarballs if desired, 240 which is needed for reproducible build environments for example. 241 242 243 244Changes to external resources 245----------------------------- 246 247### Toolchain 248 249* binutils 250 * Added binutils-2.40_stop_losing_entry_point_when_LTO_enabled.patch 251* Upgrade IASL from 20221020 to 20230628 252* Upgrade LLVM from 15.0.7 to 16.0.6 253* Upgrade NASM from 2.15.05 to 2.16.01 254 * Added nasm-2.16.01_handle_warning_files_while_building_in_a_directory.patch 255* Upgrade CMake from 3.26.3 to 3.26.4 256* Upgrade GCC from 11.3.0 to 11.4.0 257 * Added gcc-11.4.0_rv32iafc.patch 258 259 260### Git submodule pointers 261 262#### /3rdparty 263* amd_blobs: Update from commit id 1cd6ea5cc5 to 6a1e1457af (5 commits) 264* arm-trusted-firmware: Update from commit id 4c985e8674 to 37366af8d4 265(851 commits) 266* blobs: Update from commit id 01ba15667f to a8db7dfe82 (14 commits) 267* fsp: Update from commit id 6f2f17f3d3 to 3beceb01f9 (24 commits) 268* intel-microcode: Update from commit id 2be47edc99 to 6f36ebde45 (5 269commits) 270* libgfxinit: Update from commit id 066e52eeaa to a4be8a21b0 (18 271commits) 272* libhwbase: Update from commit id 8be5a82b85 to 584629b9f4 (2 commits) 273* qc_blobs: Update from commit id 33cc4f2fd8 to a252198ec6 (4 commits) 274* vboot: Update from commit id 35f50c3154 to 0c11187c75 (83 commits) 275 276#### /util 277* goswid: Update from commit id bdd55e4202 to 567a1c99b0 (5 commits) 278* nvidia/cbootimage: Update from commit id 65a6d94dd5 to 80c499ebbe (1 279commit) 280 281 282### External payloads 283 284* Update the depthcharge payload from commit ID 902681db13 to c48613a71c 285* Upgrade EDK2-MrChromebox from version 202304 to version 202306 286* Upgrade SeaBIOS from version 1.16.1 to version 1.16.2 287* Update tint from version 0.05 to version 0.07 288* Update U-Boot from version 2021.07 to version v2023.07 289 290 291Added mainboards: 292----------------- 293* ByteDance ByteDance bd_egs 294* Google: Craaskov 295* Google: Expresso 296* Google: Karis 297* Google: Karis4ES 298* Google: Pirrha 299* Google: Ponyta 300* Google: Screebo4ES 301* Google: Ovis 302* Google: Ovis4ES 303* Google: Rex EC ISH 304* Google: Rex4ES 305* HP Compaq Elite 8300 USDT 306* HP EliteBook 820 G2 307* IBM SBP1 308* Intel Raptorlake silicon with Alderlake-P RVP 309* Inventec Transformers 310* MSI PRO Z790-P (WIFI) 311* MSI PRO Z790-P (WIFI) DDR4 312* Star Labs Star Labs StarBook Mk VI (i3-1315U and i7-1360P) 313* System76 addw3 314* System76 bonw15 315* System76 darp9 316* System76 galp7 317* System76 gaze17 3050 318* System76 gaze17 3060-b 319* System76 gaze18 320* System76 lemp12 321* System76 oryp11 322* System76 serw13 323 324 325Removed Mainboards 326------------------ 327 328* Intel Galileo 329 330 331Updated SoCs 332------------ 333 334* Removed src/soc/intel/quark 335 336 337Statistics from the 4.20 to the 4.21 release 338-------------------------------------------- 339 340* Total Commits: 1252 341* Average Commits per day: 12.59 342* Total lines added: 317734 343* Average lines added per commit: 253.78 344* Number of patches adding more than 100 lines: 86 345* Average lines added per small commit: 36.22 346* Total lines removed: 261063 347* Average lines removed per commit: 208.52 348* Total difference between added and removed: 56671 349 350* Total authors: 143 351* New authors: 21 352 353 354Significant Known and Open Issues 355--------------------------------- 356 357 358Issues from the coreboot bugtracker: https://ticket.coreboot.org/ 359```{eval-rst} 360+-----+-----------------------------------------------------------------+ 361| # | Subject | 362+=====+=================================================================+ 363| 499 | edk2 boot fails with RESOURCE_ALLOCATION_TOP_DOWN enabled | 364+-----+-----------------------------------------------------------------+ 365| 495 | Stoney chromebooks not booting PSPSecureOS | 366+-----+-----------------------------------------------------------------+ 367| 478 | X200 booting Linux takes a long time with TSC | 368+-----+-----------------------------------------------------------------+ 369| 474 | X200s crashes after graphic init with 8GB RAM | 370+-----+-----------------------------------------------------------------+ 371| 457 | Haswell (t440p): CAR mem region conflicts with CBFS_SIZE > 8mb | 372+-----+-----------------------------------------------------------------+ 373| 453 | Intel HDMI / DP Audio device not showing up after libgfxinit | 374+-----+-----------------------------------------------------------------+ 375| 449 | ThinkPad T440p fail to start, continuous beeping & LED blinking | 376+-----+-----------------------------------------------------------------+ 377| 448 | Thinkpad T440P ACPI Battery Value Issues | 378+-----+-----------------------------------------------------------------+ 379| 446 | Optiplex 9010 No Post | 380+-----+-----------------------------------------------------------------+ 381| 439 | Lenovo X201 Turbo Boost not working (stuck on 2,4GHz) | 382+-----+-----------------------------------------------------------------+ 383| 427 | x200: Two battery charging issues | 384+-----+-----------------------------------------------------------------+ 385| 414 | X9SAE-V: No USB keyboard init on SeaBIOS using Radeon RX 6800XT | 386+-----+-----------------------------------------------------------------+ 387| 412 | x230 reboots on suspend | 388+-----+-----------------------------------------------------------------+ 389| 393 | T500 restarts rather than waking up from suspend | 390+-----+-----------------------------------------------------------------+ 391| 350 | I225 PCIe device not detected on Harcuvar | 392+-----+-----------------------------------------------------------------+ 393| 327 | OperationRegion (OPRG, SystemMemory, ASLS, 0x2000) causes BSOD | 394+-----+-----------------------------------------------------------------+ 395``` 396 397 398coreboot Links and Contact Information 399-------------------------------------- 400 401* Main Web site: https://www.coreboot.org 402* IRC: https://web.libera.chat/#coreboot 403* Downloads: https://coreboot.org/downloads.html 404* Source control: https://review.coreboot.org 405* Documentation: https://doc.coreboot.org 406* Issue tracker: https://ticket.coreboot.org/projects/coreboot 407* Donations: https://coreboot.org/donate.html 408