2020-05-11 23:46:35 +02:00
|
|
|
Upcoming release - coreboot 4.13
|
|
|
|
================================
|
|
|
|
|
|
|
|
The 4.13 release is planned for November 2020.
|
|
|
|
|
|
|
|
Update this document with changes that should be in the release notes.
|
|
|
|
|
|
|
|
* Please use Markdown.
|
|
|
|
* See the past few release notes for the general format.
|
|
|
|
* The chip and board additions and removals will be updated right
|
|
|
|
before the release, so those do not need to be added.
|
|
|
|
|
|
|
|
Significant changes
|
|
|
|
-------------------
|
|
|
|
|
2020-11-11 10:26:11 +01:00
|
|
|
### Native refcode implementation for Bay Trail
|
|
|
|
|
|
|
|
Bay Trail no longer needs a refcode binary to function properly. The refcode
|
|
|
|
was reimplemented as coreboot code, which should be functionally equivalent.
|
|
|
|
Thus, coreboot only needs to run the MRC.bin to successfully boot Bay Trail.
|
|
|
|
|
|
|
|
### Unusual config files to build test more code
|
|
|
|
|
|
|
|
There's some new highly-unusual config files, whose only purpose is to coerce
|
|
|
|
Jenkins into build-testing several disabled-by-default coreboot config options.
|
|
|
|
This prevents them from silently decaying over time because of build failures.
|
|
|
|
|
|
|
|
### Initial support for Intel Trusted eXecution Technology
|
|
|
|
|
|
|
|
coreboot now supports enabling Intel TXT. Though it's not feature-complete yet,
|
|
|
|
the code allows successfully launching tboot, a Measured Launch Environment. It
|
|
|
|
was tested on Haswell using an Asrock B85M Pro4 mainboard with TPM 2.0 on LPC.
|
|
|
|
Though support for other platforms is still not ready, it is being worked on.
|
|
|
|
The Haswell MRC.bin needs to be patched so as to enable DPR. Given that the MRC
|
|
|
|
binary cannot be redistributed, the best long-term solution is to replace it.
|
|
|
|
|
2020-05-20 18:05:08 +02:00
|
|
|
### Hidden PCI devices
|
|
|
|
|
|
|
|
This new functionality takes advantage of the existing 'hidden' keyword in the
|
|
|
|
devicetree. Since no existing boards were using the keyword, its usage was
|
|
|
|
repurposed to make dealing with some unique PCI devices easier. The particular
|
|
|
|
case here is Intel's PMC (Power Management Controller). During the FSP-S run,
|
|
|
|
the PMC device is made hidden, meaning that its config space looks as if there
|
|
|
|
is no device there (Vendor ID reads as 0xFFFF_FFFF). However, the device does
|
|
|
|
have fixed resources, both MMIO and I/O. These were previously recorded in
|
|
|
|
different places (MMIO was typically an SA fixed resource, and I/O was treated
|
|
|
|
as an LPC resource). With this change, when a device in the tree is marked as
|
|
|
|
'hidden', it is not probed (`pci_probe_dev()`) but rather assumed to exist so
|
|
|
|
that its resources can be placed in a more natural location. This also adds the
|
|
|
|
ability for the device to participate in SSDT generation.
|
|
|
|
|
2020-06-05 09:31:21 +02:00
|
|
|
### Tools for generating SPDs for LP4x memory on TGL and JSL
|
|
|
|
|
|
|
|
A set of new tools `gen_spd.go` and `gen_part_id.go` are added to automate the
|
|
|
|
process of generating SPDs for LP4x memory and assigning hardware strap IDs for
|
|
|
|
memory parts used on TGL and JSL based boards. The SPD data obtained from memory
|
|
|
|
part vendors has to be massaged to format it correctly as per JEDEC and Intel MRC
|
|
|
|
expectations. These tools take a list of memory parts describing their physical
|
|
|
|
attributes as per their datasheet and convert those attributes into SPD files for
|
|
|
|
the platforms. More details about the tools are added in
|
|
|
|
[README.md](https://review.coreboot.org/plugins/gitiles/coreboot/+/refs/heads/master/util/spd_tools/intel/lp4x/README.md).
|
|
|
|
|
2020-07-21 23:48:48 +02:00
|
|
|
### New version of SMM loader
|
|
|
|
|
|
|
|
A new version of the SMM loader which accomodates platforms with over 32 CPU
|
|
|
|
CPU threads. The existing version of SMM loader uses a 64K code/data
|
|
|
|
segment and only a limited number of CPU threads can fit into one segment
|
|
|
|
(because of save state, STM, other features, etc). This loader extends beyond
|
|
|
|
the 64K segment to accomodate additional CPUs and in theory allows as many
|
|
|
|
CPU threads as possible limited only by SMRAM space and not by 64K. By default
|
|
|
|
this loader version is disabled. Please see cpu/x86/Kconfig for more info.
|
|
|
|
|
2020-09-05 05:12:27 +02:00
|
|
|
### Address Sanitizer
|
|
|
|
|
|
|
|
coreboot now has an in-built Address Sanitizer, a runtime memory debugger
|
|
|
|
designed to find out-of-bounds access and use-after-scope bugs. It is made
|
|
|
|
available on all x86 platforms in ramstage and on QEMU i440fx, Intel Apollo
|
|
|
|
Lake, and Haswell in romstage. Further, it can be enabled in romstage on other
|
|
|
|
x86 platforms as well. Refer [ASan documentation](../technotes/asan.md) for
|
|
|
|
more info.
|
|
|
|
|
2020-08-25 20:59:59 +02:00
|
|
|
### Initial support for x86_64
|
|
|
|
|
|
|
|
The x86_64 code support has been revived and enabled for qemu. While it started
|
|
|
|
as PoC and the only supported platform is an emulator, there's interest in
|
|
|
|
enabling additional platforms. It would allow to access more than 4GiB of memory
|
|
|
|
at runtime and possibly brings optimised code for faster execution times.
|
|
|
|
It still needs changes in assembly, fixed integer to pointer conversions in C,
|
|
|
|
wrappers for blobs, support for running Option ROMs, among other things.
|
|
|
|
|
2020-11-10 17:50:28 +01:00
|
|
|
### Preparations to minimize enabling PCI bus mastering
|
|
|
|
|
|
|
|
For security reasons, bus mastering should be enabled as late as possible. In
|
|
|
|
coreboot, it's usually not necessary and payloads should only enable it for
|
|
|
|
devices they use. Since not all payloads enable bus mastering properly yet,
|
|
|
|
some Kconfig options were added as an intermediate step to give some sort of
|
|
|
|
"backwards compatibility", which allow enabling or disabling bus mastering by
|
|
|
|
groups.
|
|
|
|
|
|
|
|
Currently available groups are:
|
|
|
|
|
|
|
|
* PCI bridges
|
|
|
|
* Any devices
|
|
|
|
|
|
|
|
For now, "Any devices" is enabled by default to keep the traditional behaviour,
|
|
|
|
which also includes all other options. This is currently necessary, for instance,
|
|
|
|
for libpayload-based payloads as the drivers don't enable bus mastering for PCI
|
|
|
|
bridges.
|
|
|
|
|
|
|
|
Exceptional cases, that may still need early bus master enabling in the future,
|
|
|
|
should get their own per-reason Kconfig option. Ideally before the next release.
|
|
|
|
|
2020-05-11 23:46:35 +02:00
|
|
|
### Add significant changes here
|
2020-11-10 17:50:28 +01:00
|
|
|
|
|
|
|
Deprecations
|
|
|
|
------------
|
|
|
|
|
|
|
|
### PCI bus master configuration options
|
|
|
|
|
|
|
|
In order to minimize the usage of PCI bus mastering, the options we introduced in
|
|
|
|
this release will be dropped in a future release again. For more details, please
|
|
|
|
see [Preparations to minimize enabling PCI bus mastering](#preparations-to-minimize-enabling-pci-bus-mastering-in-coreboot).
|