Notes pertaining to T480/3050 FSP licensing

Signed-off-by: Leah Rowe <info@minifree.org>
master
Leah Rowe 2024-12-29 16:56:19 +00:00
parent 6447f5d183
commit 19fab47201
2 changed files with 138 additions and 3 deletions

View File

@ -82,7 +82,7 @@ Build ROM image from source
The build target, when building from source, is thus:
./mk -b coreboot dell3050micro_fsp_16mb
./mk -b coreboot dell3050micro_vfsp_16mb
Mate Kukri's *deguard* utility disables the Intel Boot Guard on this
machine. Libreboot uses this by default, along with `me_cleaner` to provide
@ -215,3 +215,67 @@ SMT is rarely of benefit in practise, but can be useful in some circumstances.
For example, if you're compiling a large codebase from source that takes hours,
SMT increases the building speed by about 15 percent; for example, a 3 hour
build job might take about 2 hours and 40 minutes instead.
Intel FSP copyright
===================
Abstract
--------
The initial Libreboot 20241206 release included Intel FSP directly inside the
ROM images. Intel provides the FSP under a license which states (and I
paraphrase): you must not modify it, but you can redistribute it freely, so
long as the license notice is retained.
The FSP is a concatenation of three modules: FSP-T, FSP-S and FSP-M. T basically
does CAR, S is essentially romstage components, and M is raminit. Due to how
coreboot works, these components must be split into single components. Coreboot
doesn't use T by default (it implements CAR itself), but has the option to
use it. It will use M and S, only.
Technically, the process of splitting FSP into these three files counts as
a modification. Furthermore, coreboot also rebases the M module by modifying
certain pointers, so that it can integrate with coreboot to provide raminit.
Intel *themselves* own the copyright to the tool for splitting FSP,
at `3rdparty/fsp/Tools/SplitFspBin.py`, and it seems that they do intend for
the FSP to be used this way. However, until now, those using the Intel FSP
have built coreboot images from source, so the issue of modified distributions
didn't come up.
By the strictest possible interpretation of Intel's licensing, Libreboot was
technically in violation. To mitigate this, Libreboot 20241206 *revision 8* and
newer, will no longer include the Intel FSP inside images. Instead, the vendor
inject script is used for inserting the FSP into release images, which is what
we already do for several other components.
`_fsp` vs `_vfsp` targets
-------------------------
The original 20241206 release images had `_fsp` in the file name. From rev8
onward, `_vfsp` is specified instead.
Libreboot's inject script verifies checksums on files, when inserting into the
images. Because of this, if we inject FSP after the fact, that means anyone
using the old images will find errors when they try.
To mitigate this, the build targets containing `_fsp` in the name have been
retained, but these targets are set `release="n"` so that no ROM images are
provided in releases. The `_vfsp` images are provided pre-compiled, instead.
With this re-design, modern lbmk (from Libreboot 20241206 rev8 onward) can still
reliably inject Intel ME into the old `_fsp` images, if you already downloaded
those before.
Therefore, you must be especially careful to get this right. If you're running
the inject script into a tarball, it will generally detect the right one, but
inserting manually into individual image files is also possible; if you do this,
you must remember to correctly specify `dell3050micro_vfsp_16mb`,
or to specify the `_fsp` targets if you're doing this on older images.
It is extremely unlikely that Intel would have ever cracked down on Libreboot
for its previous mistake, since many other projects exist that include FSP
directly in coreboot images, even commercially. However, Libreboot wishes to
respect Intel's license, in the
most [technically correct](https://www.youtube.com/watch?v=0ZEuWJ4muYc) way
possible.

View File

@ -127,8 +127,8 @@ Please refer to the standard [build instructions](../build/) first.
The build target, when building from source, is thus:
./mk -b coreboot t480_fsp_16mb
./mk -b coreboot t480s_fsp_16mb
./mk -b coreboot t480_vfsp_16mb
./mk -b coreboot t480s_vfsp_16mb
**NOTE: The T480 and T480s may be similar, but they do have several critical
differences in their wiring, so you MUST flash the correct image. Please
@ -518,6 +518,14 @@ git add config/coreboot/t480s_fsp_16mb/
git commit -s -m "experimental/unstable t480 thunderbolt support"
```
**NOTE: With the above change, or if using the branch referenced below,
the build targets will be `t480_fsp_16mb` and `t480s_fsp_16mb`,
not `t480_vfsp_16mb` and `t480s_vfsp_16mb`; see notes regarding fsp/vfsp
elsewhere on this page. This branch also does not contain other fixes from
Libreboot 20231206 rev8/newer, since it's based on 20241206 rev2. A rebase will
not be conducted; instead, ThunderBolt PCI-E support will simply be added in
a subsequent release, and revision to the 20241206 release.**
You can now follow standard [build instructions](../build/).
The branch named `20241206-t480-thunderbolt-unstable` already has the above
@ -551,3 +559,66 @@ If you encounter this issue, check\
[this page](../../faq.md#thinkpad-acpi)
for details as to how to fix this.
Intel FSP copyright
===================
Abstract
--------
The initial Libreboot 20241206 release included Intel FSP directly inside the
ROM images. Intel provides the FSP under a license which states (and I
paraphrase): you must not modify it, but you can redistribute it freely, so
long as the license notice is retained.
The FSP is a concatenation of three modules: FSP-T, FSP-S and FSP-M. T basically
does CAR, S is essentially romstage components, and M is raminit. Due to how
coreboot works, these components must be split into single components. Coreboot
doesn't use T by default (it implements CAR itself), but has the option to
use it. It will use M and S, only.
Technically, the process of splitting FSP into these three files counts as
a modification. Furthermore, coreboot also rebases the M module by modifying
certain pointers, so that it can integrate with coreboot to provide raminit.
Intel *themselves* own the copyright to the tool for splitting FSP,
at `3rdparty/fsp/Tools/SplitFspBin.py`, and it seems that they do intend for
the FSP to be used this way. However, until now, those using the Intel FSP
have built coreboot images from source, so the issue of modified distributions
didn't come up.
By the strictest possible interpretation of Intel's licensing, Libreboot was
technically in violation. To mitigate this, Libreboot 20241206 *revision 8* and
newer, will no longer include the Intel FSP inside images. Instead, the vendor
inject script is used for inserting the FSP into release images, which is what
we already do for several other components.
`_fsp` vs `_vfsp` targets
-------------------------
The original 20241206 release images had `_fsp` in the file name. From rev8
onward, `_vfsp` is specified instead.
Libreboot's inject script verifies checksums on files, when inserting into the
images. Because of this, if we inject FSP after the fact, that means anyone
using the old images will find errors when they try.
To mitigate this, the build targets containing `_fsp` in the name have been
retained, but these targets are set `release="n"` so that no ROM images are
provided in releases. The `_vfsp` images are provided pre-compiled, instead.
With this re-design, modern lbmk (from Libreboot 20241206 rev8 onward) can still
reliably inject Intel ME into the old `_fsp` images, if you already downloaded
those before.
Therefore, you must be especially careful to get this right. If you're running
the inject script into a tarball, it will generally detect the right one, but
inserting manually into individual image files is also possible; if you do this,
you must remember to correctly specify `t480_vfsp_16mb` or `t480s_vfsp_16mb`,
or to specify the `_fsp` targets if you're doing this on older images.
It is extremely unlikely that Intel would have ever cracked down on Libreboot
for its previous mistake, since many other projects exist that include FSP
directly in coreboot images, even commercially. However, Libreboot wishes to
respect Intel's license, in the
most [technically correct](https://www.youtube.com/watch?v=0ZEuWJ4muYc) way
possible.