Signed-off-by: Martin Roth <gaumless@gmail.com> Change-Id: Ice46117ccd3a082e20ce0d18421fd7da92aa3dbf Reviewed-on: https://review.coreboot.org/c/coreboot/+/77330 Reviewed-by: Felix Singer <service+coreboot-gerrit@felixsinger.de> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
		
			
				
	
	
		
			408 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			408 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| Upcoming release - coreboot 4.21
 | ||
| ========================================================================
 | ||
| 
 | ||
| The 4.21 release is scheduled for August 21st, 2023
 | ||
| 
 | ||
| In the past quarter year, the coreboot project has gotten over 1200 new
 | ||
| patches from around 140 authors, 20 of whom contributed for the first
 | ||
| time.
 | ||
| 
 | ||
| Thank you to all of our donors, the code contributors, the people who
 | ||
| take time to review all of those patches and all of the people who care
 | ||
| about the coreboot project. There have been a number of new companies
 | ||
| starting to use coreboot recently, and we appreciate all of the
 | ||
| contributions and support.
 | ||
| 
 | ||
| ### Upcoming switch from master branch to main branch
 | ||
| 
 | ||
| Historically, the initial branch that was created in a new git
 | ||
| repository was named ‘master’. In line with many other projects,
 | ||
| coreboot has decided to switch away from this name and use the name
 | ||
| ‘main’ instead. You can read about the initial reasoning on the SFC’s
 | ||
| website: https://sfconservancy.org/news/2020/jun/23/gitbranchname/
 | ||
| 
 | ||
| At some point before the 4.22 release, coreboot will be switching from
 | ||
| the master branch to the main branch. This shouldn’t be a difficult
 | ||
| change for most people, as everyone will just have to rebase on top of
 | ||
| a different branch name.
 | ||
| 
 | ||
| We’ve already created the main branch, and it is currently synced with
 | ||
| the master branch. Please update any scripts to point to main instead
 | ||
| of master.
 | ||
| 
 | ||
| At the point of the changeover, we will move all patches in gerrit to
 | ||
| the main branch and disable pushes to the master branch.
 | ||
| 
 | ||
| After the switch, we will sync the main branch to the master branch for
 | ||
| a while to give people a little more time to update any scripts that
 | ||
| are currently pointed at the master branch. Note that this update will
 | ||
| probably be done just once per day, and the frequency of updates will
 | ||
| be decreased over time. We plan to stop updating the master branch
 | ||
| following the 4.22 release.
 | ||
| 
 | ||
| Significant or interesting changes
 | ||
| ----------------------------------
 | ||
| 
 | ||
| ### lib: Support localized text of memory_training_desc in ux_locales.c
 | ||
| 
 | ||
| Most of the text in coreboot is for logging, and does not use
 | ||
| localization. There are however, some bits of text that can be
 | ||
| presented to the user, and this patch supplies a method to localize
 | ||
| them.
 | ||
| 
 | ||
| To support the localized text, we need to get the locale id by vboot
 | ||
| APIs and read raw string content file: preram_locales located at either
 | ||
| RO or RW.
 | ||
| 
 | ||
| The preram_locales file follows the format:
 | ||
| 
 | ||
|     [PRERAM_LOCALES_VERSION_BYTE (\x01)]
 | ||
|     [string_name_1] [\x00]
 | ||
|     [locale_id_1] [\x00] [localized_string_1] [\x00]
 | ||
|     [locale_id_2] [\x00] [localized_string_2] …
 | ||
|     [\x01]
 | ||
|     [string_name_2] [\x00] ...
 | ||
| 
 | ||
| This code will search for the correct localized string that its string
 | ||
| name is `memory_training_desc` and its locale ID matches the ID vb2api
 | ||
| returns. If no valid string found, we will try to display in English
 | ||
| (locale ID 0).
 | ||
| 
 | ||
| 
 | ||
| ### Improved the bootsplash support
 | ||
| 
 | ||
| The JPEG decoder, that was added many years ago to display a bootsplash
 | ||
| in coreboot, has a few quirks. People used to do some voodoo with GIMP
 | ||
| to convert images to the right format, but we can also achieve the same
 | ||
| with ImageMagick's `convert`. The currently known constraints are:
 | ||
| 
 | ||
| * The framebuffer's color format is ignored,
 | ||
| * only YCC 4:2:0 color sampling is supported, and
 | ||
| * width and height have to be a multiple of 16 pixels.
 | ||
| 
 | ||
| Beside that, we can only display the bootsplash if it completely fits
 | ||
| into the framebuffer. As the latter's size is often decided at runtime,
 | ||
| we can't do much more than offering an option to set a specific size.
 | ||
| 
 | ||
| The build system has been extended so that the necessary adjustments to
 | ||
| the picture can be done by it and several options have been added to
 | ||
| Kconfig.
 | ||
| 
 | ||
| 
 | ||
| ### libpayload/uhci: Re-write UHCI RH driver w/ generic_hub API
 | ||
| 
 | ||
| This is a complete rewrite of the UHCI root-hub driver, based on the
 | ||
| xHCI one. We are doing things by the book as far as possible. One
 | ||
| special case is uhci_rh_reset_port() which does the reset sequencing
 | ||
| that usually the hardware would do.
 | ||
| 
 | ||
| This abandons some quirks of the old driver:
 | ||
| * Ports are not disabled/re-enabled for every attachment anymore.
 | ||
| * We solely rely on the Connect Status Change bit to track changes.
 | ||
| * Further status changes are now deferred to the next polling round.
 | ||
| 
 | ||
| 
 | ||
| ### linux_trampoline: Handle coreboot framebuffer & 64-bit addresses
 | ||
| 
 | ||
| Translate the coreboot framebuffer info from coreboot tables to the
 | ||
| Linux zero page.
 | ||
| 
 | ||
| To support full 64-bit addresses, there is a new field `ext_lfb_base`
 | ||
| since Linux 4.1. It is unclear, however, how a loader is supposed to
 | ||
| know if the kernel is compatible with this. Filling these previously
 | ||
| reserved bits doesn't hurt, but an old kernel would probably ignore
 | ||
| them and not know that it's handling a clipped, invalid address. So we
 | ||
| play safe, and only allow 64-bit addresses for kernels after the 2.15
 | ||
| version bump of the boot protocol.
 | ||
| 
 | ||
| 
 | ||
| ### arch/x86: Don't allow hw floating point operations
 | ||
| 
 | ||
| Even though coreboot does not allow floating point operations, some
 | ||
| compilers like clang generate code using hw floating point registers,
 | ||
| e.g. SSE %XMMx registers on 64bit code by default. Floating point
 | ||
| operations need to be enabled in hardware for this to work (CR4). Also
 | ||
| in SMM we explicitly need to save and restore floating point registers
 | ||
| for this reason. If we instruct the compiler to not generate code with
 | ||
| FPU ops, this simplifies our code as we can skip that step.
 | ||
| 
 | ||
| With clang this reduces the binary size a bit. For instance ramstage
 | ||
| for emulation/qemu-q35 drops by 4 kB from from 216600 bytes
 | ||
| decompressed to 212768 bytes.
 | ||
| 
 | ||
| Since we now explicitly compile both ramstage and smihandler code
 | ||
| without floating point operations and associated registers we don't
 | ||
| need to save/restore floating point registers in SMM.
 | ||
| 
 | ||
| The EFER MSR is in the SMM save state and RSM properly restores it.
 | ||
| Returning to 32bit mode was only done so that fxsave was done in the
 | ||
| same mode as fxrstor, but this is no longer done.
 | ||
| 
 | ||
| 
 | ||
| ### Caching of PCIe 5.0 HSPHY firmware in SPI flash
 | ||
| 
 | ||
| This adds the ability to cache the PCIe 5.0 HSPHY firmware in the SPI
 | ||
| flash. A new flashmap region is created for that purpose. The goal of
 | ||
| caching is to reduce the dependency on the CSME (Converged Security and
 | ||
| Management Engine) and the HECI (Host Embedded Controller Interface) IP
 | ||
| LOAD command which may fail when the CSME is disabled, e.g. soft
 | ||
| disabled by HECI command or HAP (High Assurance Platform mode). By
 | ||
| caching that firmware, this allows the PCIe 5.0 root ports to keep
 | ||
| functioning even if CSME/HECI is not functional.
 | ||
| 
 | ||
| 
 | ||
| ### Extracting of TPM logs using cbmem tool
 | ||
| 
 | ||
| CBMEM can contain logs in different forms (at most one is present):
 | ||
|  * coreboot-specific format (CBMEM_ID_TPM_CB_LOG exported as
 | ||
|    LB_TAG_TPM_CB_LOG)
 | ||
|  * TPM1.2 format (CBMEM_ID_TCPA_TCG_LOG)
 | ||
|  * TPM2 format (CBMEM_ID_TPM2_TCG_LOG)
 | ||
| 
 | ||
| The last two follow specifications by Trusted Computing Group, but
 | ||
| until now cbmem couldn't print them.
 | ||
| 
 | ||
| These changes make the cbmem utility check for existence of TPM1.2/TPM2
 | ||
| logs in CBMEM and add code necessary for parsing and printing of their
 | ||
| entries.
 | ||
| 
 | ||
| `cbmem -L` for CONFIG_TPM1=y case
 | ||
| 
 | ||
| ```
 | ||
| TCPA log:
 | ||
| 	Specification: 1.21
 | ||
| 	Platform class: PC Client
 | ||
| TCPA log entry 1:
 | ||
| 	PCR: 2
 | ||
| 	Event type: Action
 | ||
| 	Digest: 5622416ea417186aa1ac32b32c527ac09009fb5e
 | ||
| 	Event data: FMAP: FMAP
 | ||
| ```
 | ||
| 
 | ||
| `cbmem -L` for CONFIG_TPM2=y case
 | ||
| 
 | ||
| ```
 | ||
| TPM2 log:
 | ||
| 	Specification: 2.00
 | ||
| 	Platform class: PC Client
 | ||
| TPM2 log entry 1:
 | ||
| 	PCR: 2
 | ||
| 	Event type: Action
 | ||
| 	Digests:
 | ||
| 		 SHA256: 68d27f08cb261463a6d004524333ac5db1a3c2166721785a6061327b6538657c
 | ||
| 	Event data: FMAP: FMAP
 | ||
| ```
 | ||
| 
 | ||
| 
 | ||
| ### soc/amd: read domain resource window configuration from hardware
 | ||
| 
 | ||
| Read the MMIO and IO decode windows for the PCI root complex and the
 | ||
| PCI bus number range decoded to the PCI root complex from the data
 | ||
| fabric registers and pass the information to the resource allocator so
 | ||
| it has the correct constraints to do its job. Also generate the
 | ||
| corresponding ACPI resource producers in the SSDT so that the OS knows
 | ||
| about this too. This is required for the upcoming USB 4 support.
 | ||
| 
 | ||
| 
 | ||
| Additional coreboot changes
 | ||
| ---------------------------
 | ||
| 
 | ||
| * Added SPDX headers to more files to help automated license checking.
 | ||
|   The linter has been enabled to check the Makefiles as well.
 | ||
| * Cleaned up Kconfig files and source code.
 | ||
| * Enabled acpigen to generate tables for SPCR (Serial Port Console
 | ||
|   Redirection) and GTDT (Generic Timer Description Table).
 | ||
| * The resource allocation above the 4GiB boundary has been improved.
 | ||
| * Most of the code has been adjusted to make use of C99 flexible arrays
 | ||
|   instead of one-element or zero-length arrays.
 | ||
| * Additional Dockerfiles based on Arch and Alpine Linux have been added
 | ||
|   to build-test with alternate build environments, including musl-libc.
 | ||
|   They are very basic at the moment and not equal to the coreboot-sdk.
 | ||
|   They will be extended in the future.
 | ||
| * Added support for ITE IT8784E to superiotool.
 | ||
| * Added support for Intel 700 chipset series to inteltool and a build
 | ||
|   issue with musl–libc has been fixed.
 | ||
| * Added support for Intel 800 chipset series to ifdtool.
 | ||
| * The coreboot-sdk container has been extended so that it allows
 | ||
|   extracting the MRC binary from Haswell-based ChromeOS firmware images.
 | ||
| * From now on POST code preprocessor macros should have a POSTCODE
 | ||
|   prefix following the name of the POST code.
 | ||
| * The NASM compiler provided by the coreboot toolchain wasn’t properly
 | ||
|   integrated into xcompile and thus it wasn’t used by the build system.
 | ||
|   Instead, it was required to install NASM on the host in order to use
 | ||
|   it. This has been fixed.
 | ||
| * The time measurement done in abuild got improved and also an issue
 | ||
|   has been fixed when the variant name contains hyphens.
 | ||
| * The RISC-V code was enabled to build with Clang.
 | ||
| * Initial work has been done to transform Camelcase options to
 | ||
|   Snakecase.
 | ||
| * The buildgcc script is now able to just fetch the tarballs if desired,
 | ||
|   which is needed for reproducible build environments for example.
 | ||
| 
 | ||
| 
 | ||
| 
 | ||
| Changes to external resources
 | ||
| -----------------------------
 | ||
| 
 | ||
| ### Toolchain
 | ||
| 
 | ||
| * binutils
 | ||
|   * Added binutils-2.40_stop_losing_entry_point_when_LTO_enabled.patch
 | ||
| * Upgrade IASL from 20221020 to 20230628
 | ||
| * Upgrade LLVM from 15.0.7 to 16.0.6
 | ||
| * Upgrade NASM from 2.15.05 to 2.16.01
 | ||
|   * Added nasm-2.16.01_handle_warning_files_while_building_in_a_directory.patch
 | ||
| * Upgrade CMake from 3.26.3 to 3.26.4
 | ||
| * Upgrade GCC from 11.3.0 to 11.4.0
 | ||
|   * Added gcc-11.4.0_rv32iafc.patch
 | ||
| 
 | ||
| 
 | ||
| ### Git submodule pointers
 | ||
| 
 | ||
| #### /3rdparty
 | ||
| * amd_blobs: Update from commit id 1cd6ea5cc5 to 6a1e1457af (5 commits)
 | ||
| * arm-trusted-firmware: Update from commit id 4c985e8674 to 37366af8d4
 | ||
| (851 commits)
 | ||
| * blobs: Update from commit id 01ba15667f to a8db7dfe82 (14 commits)
 | ||
| * fsp: Update from commit id 6f2f17f3d3 to 3beceb01f9 (24 commits)
 | ||
| * intel-microcode: Update from commit id 2be47edc99 to 6f36ebde45 (5
 | ||
| commits)
 | ||
| * libgfxinit: Update from commit id 066e52eeaa to a4be8a21b0 (18
 | ||
| commits)
 | ||
| * libhwbase: Update from commit id 8be5a82b85 to 584629b9f4 (2 commits)
 | ||
| * qc_blobs: Update from commit id 33cc4f2fd8 to a252198ec6 (4 commits)
 | ||
| * vboot: Update from commit id 35f50c3154 to 0c11187c75 (83 commits)
 | ||
| 
 | ||
| #### /util
 | ||
| * goswid: Update from commit id bdd55e4202 to 567a1c99b0 (5 commits)
 | ||
| * nvidia/cbootimage: Update from commit id 65a6d94dd5 to 80c499ebbe (1
 | ||
| commit)
 | ||
| 
 | ||
| 
 | ||
| ### External payloads
 | ||
| 
 | ||
| * Update the depthcharge payload from commit ID 902681db13 to c48613a71c
 | ||
| * Upgrade EDK2-MrChromebox from version 202304 to version 202306
 | ||
| * Upgrade SeaBIOS from version 1.16.1 to version 1.16.2
 | ||
| * Update tint from version 0.05 to version 0.07
 | ||
| * Update U-Boot from version 2021.07 to version v2023.07
 | ||
| 
 | ||
| 
 | ||
| Added mainboards:
 | ||
| -----------------
 | ||
| * ByteDance ByteDance bd_egs
 | ||
| * Google: Craaskov
 | ||
| * Google: Expresso
 | ||
| * Google: Karis
 | ||
| * Google: Karis4ES
 | ||
| * Google: Pirrha
 | ||
| * Google: Ponyta
 | ||
| * Google: Screebo4ES
 | ||
| * Google: Ovis
 | ||
| * Google: Ovis4ES
 | ||
| * Google: Rex EC ISH
 | ||
| * Google: Rex4ES
 | ||
| * HP Compaq Elite 8300 USDT
 | ||
| * HP EliteBook 820 G2
 | ||
| * IBM SBP1
 | ||
| * Intel Raptorlake silicon with Alderlake-P RVP
 | ||
| * Inventec Transformers
 | ||
| * MSI PRO Z790-P (WIFI)
 | ||
| * MSI PRO Z790-P (WIFI) DDR4
 | ||
| * Star Labs Star Labs StarBook Mk VI (i3-1315U and i7-1360P)
 | ||
| * System76 addw3
 | ||
| * System76 bonw15
 | ||
| * System76 darp9
 | ||
| * System76 galp7
 | ||
| * System76 gaze17 3050
 | ||
| * System76 gaze17 3060-b
 | ||
| * System76 gaze18
 | ||
| * System76 lemp12
 | ||
| * System76 oryp11
 | ||
| * System76 serw13
 | ||
| 
 | ||
| 
 | ||
| Removed Mainboards
 | ||
| ------------------
 | ||
| 
 | ||
| * Intel Galileo
 | ||
| 
 | ||
| 
 | ||
| Updated SoCs
 | ||
| ------------
 | ||
| 
 | ||
| * Removed src/soc/intel/quark
 | ||
| 
 | ||
| 
 | ||
| Statistics from the 4.20 to the 4.21 release
 | ||
| --------------------------------------------
 | ||
| 
 | ||
| * Total Commits: 1252
 | ||
| * Average Commits per day: 12.59
 | ||
| * Total lines added: 317734
 | ||
| * Average lines added per commit: 253.78
 | ||
| * Number of patches adding more than 100 lines: 86
 | ||
| * Average lines added per small commit: 36.22
 | ||
| * Total lines removed: 261063
 | ||
| * Average lines removed per commit: 208.52
 | ||
| * Total difference between added and removed: 56671
 | ||
| 
 | ||
| * Total authors: 143
 | ||
| * New authors: 21
 | ||
| 
 | ||
| 
 | ||
| Significant Known and Open Issues
 | ||
| ---------------------------------
 | ||
| 
 | ||
| 
 | ||
| Issues from the coreboot bugtracker: https://ticket.coreboot.org/
 | ||
| ```eval_rst
 | ||
| +-----+-----------------------------------------------------------------+
 | ||
| | #   | Subject                                                         |
 | ||
| +=====+=================================================================+
 | ||
| | 499 | edk2 boot 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 device not showing up 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                               |
 | ||
| +-----+-----------------------------------------------------------------+
 | ||
| | 414 | X9SAE-V: No USB keyboard init on SeaBIOS using Radeon RX 6800XT |
 | ||
| +-----+-----------------------------------------------------------------+
 | ||
| | 412 | x230 reboots on suspend                                         |
 | ||
| +-----+-----------------------------------------------------------------+
 | ||
| | 393 | T500 restarts rather than waking up from suspend                |
 | ||
| +-----+-----------------------------------------------------------------+
 | ||
| | 350 | I225 PCIe device not detected on Harcuvar                       |
 | ||
| +-----+-----------------------------------------------------------------+
 | ||
| | 327 | OperationRegion (OPRG, SystemMemory, ASLS, 0x2000) causes BSOD  |
 | ||
| +-----+-----------------------------------------------------------------+
 | ||
| ```
 | ||
| 
 | ||
| 
 | ||
| coreboot Links and Contact Information
 | ||
| --------------------------------------
 | ||
| 
 | ||
| * Main Web site: https://www.coreboot.org
 | ||
| * IRC: https://web.libera.chat/#coreboot
 | ||
| * Downloads: https://coreboot.org/downloads.html
 | ||
| * Source control: https://review.coreboot.org
 | ||
| * Documentation: https://doc.coreboot.org
 | ||
| * Issue tracker: https://ticket.coreboot.org/projects/coreboot
 | ||
| * Donations: https://coreboot.org/donate.html
 |