xref: /aosp_15_r20/external/coreboot/Documentation/releases/coreboot-4.21-relnotes.md (revision b9411a12aaaa7e1e6a6fb7c5e057f44ee179a49c)
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