soc/qualcomm/sc7280/socinfo: Add missing <console/console.h>
[coreboot.git] / Documentation / releases / coreboot-4.22-relnotes.md
blob8d0cc7a7473dfd3a8f5acf9431485340e871be46
1 coreboot 4.22 & 4.22.01 releases
2 ========================================================================
4 The next release is planned for the 19th of February, 2024
6 These notes cover the latest updates and improvements to coreboot over
7 the past three months. A big thank you to the returning contributors as
8 well as the 14 individuals who committed code for the first time. We
9 greatly appreciate everyone's dedication and expertise. As with past
10 releases, this one reflects a commitment to open source innovation,
11 security enhancements, and expanding hardware support.
14 ## 4.22.01 release
16 The week between tagging a release and announcing it publicly is used
17 to test the tagged version and make sure everything is working as we
18 expect. This is done instead of freezing the tree and doing release
19 candidates before the release.
21 For the 4.22 release cycle we found an uninitialized variable error on
22 the sandybridge/ivybridge platforms and rolled that into the 4.22.01
23 release package.
25 ## coreboot version naming update
27 This release is the last release to use the incrementing 4.xx release
28 name scheme. For future releases, coreboot is switching to a
29 Year.Month.Sub-version naming scheme. As such, the next release,
30 scheduled for February of 2024 will be numbered 24.02, with the
31 sub-version of 00 implied. If we need to do a fix or future release of
32 the 24.02 release, we'll append the values .01, .02 and so on to the
33 initial release value.
36 ## coreboot default branch update
38 Immediately after the 4.21 release, the coreboot project changed the
39 default git branch from 'master' to 'main'. For the first couple of
40 months after the change, The master branch was synced with the main
41 branch several times a day, allowing people time to update any scripts.
42 As of 2023-11-01, the sync rate has slowed to once a week. This will
43 continue until the next release, at which time the master branch will
44 be removed.
48 Significant or interesting changes
49 ----------------------------------
51 ### x86: support .data section for pre-memory stages
53 x86 pre-memory stages did not support the `.data` section and as a
54 result developers were required to include runtime initialization code
55 instead of relying on C global variable definitions.
57 Other platforms do not have that limitation. Hence, resolving it helps
58 to align code and reduce compilation-based restrictions (cf. the use of
59 `ENV_HAS_DATA_SECTION` compilation flag in various places of coreboot
60 code).
62 There were three types of binary to consider:
63 1. eXecute-In-Place pre-memory stages
64 2. `bootblock` stage is a bit different as it uses Cache-As-Ram but
65    the memory mapping and its entry code different
66 3. pre-memory stages loaded in and executed from Cache-As-RAM
67    (cf. `CONFIG_NO_XIP_EARLY_STAGES`).
69 eXecute-In-Place pre-memory stages (#1) rely on a new ELF segment as
70 the code segment Virtual Memory Address and Load Memory Address are
71 identical but the data needs to be linked in cache-As-RAM (VMA) to be
72 stored right after the code (LMA).
74 `bootblock` (#2) also uses this new segment to store the data right
75 after the code and it loads it to Cache-As-RAM at runtime. However, the
76 code involved is different.
78 Not eXecute-In-Place pre-memory stages (#3) did not need any special
79 work other than enabling a .data section as the code and data VMA / LMA
80 translation vector is the same.
82 Related 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")
88 ### x86: Support CBFS cache for pre-memory stages and ramstage
90 The CBFS cache scratchpad offers a generic way to decompress CBFS files
91 through the cbfs_map() function without having to reserve a per-file
92 specific memory region.
94 CBFS cache x86 support has been added to pre-memory stages and
95 ramstage.
97 1. **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.
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.
109 2. **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.
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).
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.
127 ### Allow romstage to be combined into the bootblock
129 Having 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)
134 When this is not the case there is no need for the extra complexity
135 that romstage brings. Including the romstage sources inside the
136 bootblock substantially reduces the total code footprint. Often the
137 resulting code is 10-20k smaller.
139 This is controlled via a Kconfig option.
142 ### soc/intel/cmn/gfx: Add API to report presence of external display
144 This implements an API to report the presence of an external display on
145 Intel silicon. The API uses information from the transcoder and
146 framebuffer to determine if an external display is connected.
148 For example, if the transcoder is attached to any DDI ports other than
149 DDI-A (eDP), and the framebuffer is initialized, then it is likely that
150 an external display is present.
152 This information can be used by payloads to determine whether or not to
153 power on the display, even if eDP is not initialized.
156 ### device/pci_rom: Set VBIOS checksum when filling VFCT table
158 AMD's Windows display drivers validate the checksum of the VBIOS data
159 in the VFCT table (which gets modified by the FSP GOP driver), so
160 ensure it is set correctly after copying the VBIOS into the table if
161 the FSP GOP driver was run. Without the correct checksum, the Windows
162 GPU drivers will fail to load with a code 43 error in Device Manager.
166 Additional coreboot changes
167 ---------------------------
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
186 Changes to external resources
187 -----------------------------
189 ### Toolchain updates
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
196 ### Git submodule pointers
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)
209 ### External payloads
211 * U-Boot: Use github mirror and the latest version
212 * edk2: Update default branch for MrChromebox repo to 2023-09
216 Platform Updates
217 ----------------
219 ### Added 17 mainboards
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
240 ### Added 1 SoC
242 * src/soc/amd/genoa
246 Statistics from the 4.21 to the 4.22 release
247 --------------------------------------------
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
263 Significant Known and Open Issues
264 ---------------------------------
266 Issues from the coreboot bugtracker: https://ticket.coreboot.org/
268 ### Payload-specific issues
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 +-----+-----------------------------------------------------------------+
285 ### Platform-specific issues
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 +-----+-----------------------------------------------------------------+
331 Plans for the next release
332 --------------------------
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
341 coreboot Links and Contact Information
342 --------------------------------------
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