coreboot 24.05 release

The coreboot project is pleased to announce the release of coreboot version 24.05. This update represents three months of hard work and commitment from our community. With over 20 new members and contributions from more than a hundred fifty other people in coding, reviewing patches, and other areas, this release showcases the strength of our collaborative efforts.

With this release, coreboot has expanded its support, adding 25 new platforms or variants and 2 new processors, further demonstrating our dedication to offering flexible and adaptable firmware solutions. From laptops and servers to embedded devices, coreboot 24.05 is designed to enhance a variety of hardware platforms with its strong features.

We are grateful to all the contributors who have made this release possible. Your expertise and collaborative efforts continue to propel the coreboot project forward. We value the participation of everyone in the community, from long-time developers to those new to the project, and encourage you to explore the new opportunities that coreboot 24.05 offers.

Our next release will be 24.08, scheduled for mid-August.

You can find the release on the coreboot downloads site:
https://coreboot.org/downloads.html

Significant or interesting changes

Mark 64-bit support as stable

A significant amount of work has gone into fully supporting 64-bit coreboot builds. There are still additional pieces that are happening, but with SMM holding page tables itself, we can consider SMM support stable and safe enough for general use.

security/tpm: support compiling in multiple TPM drivers

Previously, boards could only be built with code supporting TPM 1.x or TPM 2.x specifications. This has been updated with code allowing both to be built in simultaneously, allowing the system to query the TPM. For systems with soldered-down TPMs or firmware TPM solutions, it’s still possible to specify a single TPM version so that the code for the other version isn’t included.

// Add entries for future releases here.
const releaseList = [
{ version: ‘24.05’, date: ’14. May 2024′ },
{ version: ‘24.02.01’, date: ’29. February 2024′ },
{ version: ‘4.22.01’,date: ’24. November 2023′ },

Previously, boards could only be built with code supporting TPM 1.x or TPM 2.x specifications. This has been updated with code allowing both to be built in simultaneously, allowing the system to query the TPM. For systems with soldered-down TPMs or firmware TPM solutions, it’s still possible to specify a single TPM version so that the code for the other version isn’t included.

arch/arm64: Add EL1/EL2/EL3 support for arm64

Previously, arch/arm64 required coreboot to run on EL3 due to EL3 register access. This might be an issue when, for example, one boots into TF-A first and drops into EL2 for coreboot afterwards.

This patch aims at making arch/arm64 more versatile by removing the current EL3 constraint and allowing arm64 coreboot to run on EL1, EL2 and EL3.

The strategy is to add a Kconfig option (ARM64_CURRENT_EL) which allows us to specify coreboot’s EL upon entry. Based on that, we access the appropriate ELx registers. So, for example, when running coreboot on EL1, we would not access vbar_el3 or vbar_el2 but instead vbar_el1. This way, we don’t generate faults when accessing higher-EL registers.

Additional coreboot changes

  • util/smmstoretool: support processing ROMs
  • cpu/x86: Link page tables in stage if possible
  • lib/lzmadecode: Allow for 8 byte reads on 64bit to speed up decompression
  • mb/lenovo/*: Set VR12 PSI to fix crash
  • Numerous fixes for clang support
  • Ongoing code cleanup
  • Docs: Replace Recommonmark with MyST Parser. For changes, see the commit message in https://review.coreboot.org/73158

Changes to external resources

Toolchain updates

  • util/kconfig: Uprev to Linux 6.8’s kconfig
  • crossgcc: Upgrade CMake from 3.27.7 to version 3.28.3
  • util/crossgcc: Update LLVM from 16.0.6 to 17.0.6
  • crossgcc: Upgrade binutils from 2.41 to 2.42
  • util/crossgcc/buildgcc: Use Intel mirror for ACPICA

Git submodule pointers

  • amd_blobs: Update from commit id 64cdd7c8ef to ae5fc7d277 (1 commits)
  • arm-trusted-firmware: Update from commit id 17bef2248d to 48f1bc9f52 (517 commits)
  • cmocka: Update from commit id 8931845c35 to 8be3737209 (32 commits)
  • fsp: Update from commit id 507ef01cce to cc6399e8c7 (14 commits)
  • intel-microcode: Update from commit id ece0d294a2 to 41af345005 (1 commit)
  • vboot: Update from commit id 3d37d2aafe to 09fcd2184f (27 commits)

External payloads

  • payloads/U-Boot: Upgrade from U-Boot v2023.07 to v2024.4
  • payloads/edk2: Add Kconfig options for LAPIC timer & UFS support
  • payloads/Kconfig: Add flat binary as payload option

Platform Updates

Added mainboards:

  • AMD BirmanPlus for Glinda SoC
  • AMD BirmanPlus for Phoenix SoC
  • ASROCK Z97 Extreme6
  • Dell OptiPlex 7020/9020 MT
  • Dell OptiPlex 7020/9020 SFF
  • Framework Azalea (Framework 13 AMD 7040)
  • Google Brox EC ISH
  • Google Bujia
  • Google Glassway
  • Google Greenbayupoc
  • Google Kyogre
  • Google Lotso
  • Google Nova
  • Google Pujjoga
  • Google Riven
  • Google Skitty
  • Google Squirtle
  • Google Sundance
  • Google Tivviks
  • Google Trulo
  • Google Veluza
  • Google Wugtrio
  • Google Yavista
  • HP Pro 3500 Series
  • Lenovo ThinkCentre M700 / M900 Tiny
  • Lenovo ThinkCentre M710s
  • Raptor Computing Systems Talos II
  • SiFive HiFive Unmatched

Removed Mainboards

  • Intel Alderlake-M RVP
  • Intel Alderlake-M RVP with Chrome EC

Updated SoCs

  • Added src/soc/ibm/power9
  • Added src/soc/sifive/fu740

Statistics from the 24.02 to the 24.05 release

  • Total Commits: 722
  • Average Commits per day: 8.55
  • Total lines added: 302523
  • Average lines added per commit: 419.01
  • Number of patches adding more than 100 lines: 57
  • Average lines added per small commit: 37.80
  • Total lines removed: 16089
  • Average lines removed per commit: 22.28
  • Total difference between added and removed: 286434
  • Total authors: 131
  • New authors: 23

Significant Known and Open Issues

coreboot-wide or architecture-wide issues

  • 522 – ‘region_overlap()’ issues due to an integer overflow.
  • 519 – make gconfig – could not find glade file
  • 518 – make xconfig – g++: fatal error: no input files

Payload-specific issues

  • 499 – edk2 boot fails with RESOURCE_ALLOCATION_TOP_DOWN enabled
  • 496 – Missing malloc check in libpayload
  • 484 – No USB keyboard support with secondary payloads
  • 414 – X9SAE-V: No USB keyboard init on SeaBIOS using Radeon RX 6800XT

Platform-specific issues

  • 524 – X2APIC Options cause Linux to crash on emulation/qemu-i440fx
  • 517 – lenovo x230 boot stuck with connected external monitor
  • 509 – SD Card hotplug not working on Apollo Lake
  • 507 – Windows GPU driver fails on Google guybrush & skyrim boards
  • 506 – APL/GML don’t boot OS when CPU microcode included “from tree”
  • 505 – Harcuvar CRB – 15 of 16 cores present in the operating system
  • 499 – T440p – EDK2 fails with RESOURCE_ALLOCATION_TOP_DOWN enabled
  • 495 – Stoney Chromebooks not booting PSPSecureOS
  • 478 – X200 booting Linux takes a long time with TSC
  • 474 – X200s crashes after graphic init with 8GB RAM
  • 457 – Haswell (t440p): CAR mem region conflicts with CBFS_SIZE > 8mb
  • 453 – Intel HDMI / DP Audio not present in Windows after libgfxinit
  • 449 – ThinkPad T440p fail to start, continuous beeping & LED blinking
  • 448 – Thinkpad T440P ACPI Battery Value Issues
  • 446 – Optiplex 9010 No Post
  • 439 – Lenovo X201 Turbo Boost not working (stuck on 2,4GHz)
  • 427 – x200: Two battery charging issues
  • 412 – x230 reboots on suspend
  • 393 – T500 restarts rather than waking up from suspend
  • 350 – I225 PCIe device not detected on Harcuvar