summaryrefslogtreecommitdiff
path: root/config/submodule/coreboot
diff options
context:
space:
mode:
authorLeah Rowe <leah@libreboot.org>2026-09-20 19:56:23 +0100
committerLeah Rowe <leah@libreboot.org>2026-09-20 22:01:33 +0100
commit009103c8f6bb3c3d1a77967b8878bc71b00d1a4e (patch)
tree3ab8c1c8bda977ea42e88ba3bf4de0ce4f2aea98 /config/submodule/coreboot
parent645002ac2b63f953e8bcf9894a5482e449e72342 (diff)
switch to 15h.org fork for kgpe-d16 and kcma-d8
aka "Mike's coreboot" libreboot recently improved its multi-tree design to allow specifying git repository links per-tree instead of just per-project. this means i can now use the 15h fork quite easily, on fam15h boards. this fork uses AMD's AGESA source code instead of raptor engineering's code. the modified AGESA code is compatible with a lot more memory modules, and can support higher amounts of memory. it's generally more reliable. the only submodule they changed was the blobs one, but the only commits they add are things i don't need. they add commits that violate copyright, e.g. distributing AST2500 VGA ROM without permission. thus, i do not use their blobs repo. i use the upstream coreboot one, which has what we need. since i don't use the VGA ROM in libreboot, it's fine. therefore, the submodule config is currently the same as the old 4.11 tree. they were missing two of my build fixes. they have added some of their own as well. note that there are two boards for kgpe-d16 and d8 here: the raptor one, and the agesa one. we are using the agesa one. kfnsn4-dre still uses the old tree. Signed-off-by: Leah Rowe <leah@libreboot.org>
Diffstat (limited to 'config/submodule/coreboot')
-rw-r--r--config/submodule/coreboot/fam15h_15h/acpica-unix2-20190703.tar.gz/module.cfg5
-rw-r--r--config/submodule/coreboot/fam15h_15h/binutils-2.32.tar.xz/module.cfg5
-rw-r--r--config/submodule/coreboot/fam15h_15h/blobs/module.cfg5
-rw-r--r--config/submodule/coreboot/fam15h_15h/gcc-8.3.0.tar.xz/module.cfg5
-rw-r--r--config/submodule/coreboot/fam15h_15h/gmp-6.1.2.tar.xz/module.cfg5
-rw-r--r--config/submodule/coreboot/fam15h_15h/module.list9
-rw-r--r--config/submodule/coreboot/fam15h_15h/mpc-1.1.0.tar.gz/module.cfg5
-rw-r--r--config/submodule/coreboot/fam15h_15h/mpfr-4.0.2.tar.xz/module.cfg5
-rw-r--r--config/submodule/coreboot/fam15h_15h/nasm-2.16.03.tar.bz2/module.cfg5
-rw-r--r--config/submodule/coreboot/fam15h_15h/vboot/module.cfg5
-rw-r--r--config/submodule/coreboot/fam15h_15h/vboot/patches/0001-extract_vmlinuz.c-Fix-the-bounds-check-on-vmlinuz_he.patch178
11 files changed, 232 insertions, 0 deletions
diff --git a/config/submodule/coreboot/fam15h_15h/acpica-unix2-20190703.tar.gz/module.cfg b/config/submodule/coreboot/fam15h_15h/acpica-unix2-20190703.tar.gz/module.cfg
new file mode 100644
index 00000000..b8365f7c
--- /dev/null
+++ b/config/submodule/coreboot/fam15h_15h/acpica-unix2-20190703.tar.gz/module.cfg
@@ -0,0 +1,5 @@
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+subcurl="https://www.mirrorservice.org/sites/libreboot.org/release/misc/acpica/acpica-unix2-20190703.tar.gz"
+subcurl_bkup="https://mirror.math.princeton.edu/pub/libreboot/misc/acpica/acpica-unix2-20190703.tar.gz"
+subhash="8445a6d354ce3bcbfb5159f4ec0312b1e910c0b1b2033a2300f892e4ac580abab4e3f5b4ded379f0036299359d307330511ab7053678cfd9031d7df4c365f555"
diff --git a/config/submodule/coreboot/fam15h_15h/binutils-2.32.tar.xz/module.cfg b/config/submodule/coreboot/fam15h_15h/binutils-2.32.tar.xz/module.cfg
new file mode 100644
index 00000000..3f03f64e
--- /dev/null
+++ b/config/submodule/coreboot/fam15h_15h/binutils-2.32.tar.xz/module.cfg
@@ -0,0 +1,5 @@
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+subcurl="https://www.mirrorservice.org/sites/ftp.gnu.org/gnu/binutils/binutils-2.32.tar.xz"
+subcurl_bkup="https://ftp.nluug.nl/pub/gnu/binutils/binutils-2.32.tar.xz"
+subhash="d326408f12a03d9a61a9de56584c2af12f81c2e50d2d7e835d51565df8314df01575724afa1e43bd0db45cfc9916b41519b67dfce03232aa4978704492a6994a"
diff --git a/config/submodule/coreboot/fam15h_15h/blobs/module.cfg b/config/submodule/coreboot/fam15h_15h/blobs/module.cfg
new file mode 100644
index 00000000..3c34302c
--- /dev/null
+++ b/config/submodule/coreboot/fam15h_15h/blobs/module.cfg
@@ -0,0 +1,5 @@
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+subgit="https://review.coreboot.org/blobs.git"
+subgit_bkup="https://github.com/coreboot/blobs"
+subhash="034b27818450428f70aa9316c8bd0d65bacd8ee8"
diff --git a/config/submodule/coreboot/fam15h_15h/gcc-8.3.0.tar.xz/module.cfg b/config/submodule/coreboot/fam15h_15h/gcc-8.3.0.tar.xz/module.cfg
new file mode 100644
index 00000000..ce21c98b
--- /dev/null
+++ b/config/submodule/coreboot/fam15h_15h/gcc-8.3.0.tar.xz/module.cfg
@@ -0,0 +1,5 @@
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+subcurl="https://www.mirrorservice.org/sites/ftp.gnu.org/gnu/gcc/gcc-8.3.0/gcc-8.3.0.tar.xz"
+subcurl_bkup="https://ftp.nluug.nl/pub/gnu/gcc/gcc-8.3.0/gcc-8.3.0.tar.xz"
+subhash="1811337ae3add9680cec64968a2509d085b6dc5b6783fc1e8c295e3e47416196fd1a3ad8dfe7e10be2276b4f62c357659ce2902f239f60a8648548231b4b5802"
diff --git a/config/submodule/coreboot/fam15h_15h/gmp-6.1.2.tar.xz/module.cfg b/config/submodule/coreboot/fam15h_15h/gmp-6.1.2.tar.xz/module.cfg
new file mode 100644
index 00000000..a46b9b7c
--- /dev/null
+++ b/config/submodule/coreboot/fam15h_15h/gmp-6.1.2.tar.xz/module.cfg
@@ -0,0 +1,5 @@
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+subcurl="https://www.mirrorservice.org/sites/ftp.gnu.org/gnu/gmp/gmp-6.1.2.tar.xz"
+subcurl_bkup="https://ftp.nluug.nl/pub/gnu/gmp/gmp-6.1.2.tar.xz"
+subhash="9f098281c0593b76ee174b722936952671fab1dae353ce3ed436a31fe2bc9d542eca752353f6645b7077c1f395ab4fdd355c58e08e2a801368f1375690eee2c6"
diff --git a/config/submodule/coreboot/fam15h_15h/module.list b/config/submodule/coreboot/fam15h_15h/module.list
new file mode 100644
index 00000000..00befad9
--- /dev/null
+++ b/config/submodule/coreboot/fam15h_15h/module.list
@@ -0,0 +1,9 @@
+3rdparty/blobs
+3rdparty/vboot
+util/crossgcc/tarballs/acpica-unix2-20190703.tar.gz
+util/crossgcc/tarballs/binutils-2.32.tar.xz
+util/crossgcc/tarballs/gcc-8.3.0.tar.xz
+util/crossgcc/tarballs/gmp-6.1.2.tar.xz
+util/crossgcc/tarballs/mpc-1.1.0.tar.gz
+util/crossgcc/tarballs/mpfr-4.0.2.tar.xz
+util/crossgcc/tarballs/nasm-2.16.03.tar.bz2
diff --git a/config/submodule/coreboot/fam15h_15h/mpc-1.1.0.tar.gz/module.cfg b/config/submodule/coreboot/fam15h_15h/mpc-1.1.0.tar.gz/module.cfg
new file mode 100644
index 00000000..13a66a87
--- /dev/null
+++ b/config/submodule/coreboot/fam15h_15h/mpc-1.1.0.tar.gz/module.cfg
@@ -0,0 +1,5 @@
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+subcurl="https://www.mirrorservice.org/sites/ftp.gnu.org/gnu/mpc/mpc-1.1.0.tar.gz"
+subcurl_bkup="https://ftp.nluug.nl/pub/gnu/mpc/mpc-1.1.0.tar.gz"
+subhash="72d657958b07c7812dc9c7cbae093118ce0e454c68a585bfb0e2fa559f1bf7c5f49b93906f580ab3f1073e5b595d23c6494d4d76b765d16dde857a18dd239628"
diff --git a/config/submodule/coreboot/fam15h_15h/mpfr-4.0.2.tar.xz/module.cfg b/config/submodule/coreboot/fam15h_15h/mpfr-4.0.2.tar.xz/module.cfg
new file mode 100644
index 00000000..f2a4f0fe
--- /dev/null
+++ b/config/submodule/coreboot/fam15h_15h/mpfr-4.0.2.tar.xz/module.cfg
@@ -0,0 +1,5 @@
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+subcurl="https://www.mirrorservice.org/sites/ftp.gnu.org/gnu/mpfr/mpfr-4.0.2.tar.xz"
+subcurl_bkup="https://ftp.nluug.nl/pub/gnu/mpfr/mpfr-4.0.2.tar.xz"
+subhash="d583555d08863bf36c89b289ae26bae353d9a31f08ee3894520992d2c26e5683c4c9c193d7ad139632f71c0a476d85ea76182702a98bf08dde7b6f65a54f8b88"
diff --git a/config/submodule/coreboot/fam15h_15h/nasm-2.16.03.tar.bz2/module.cfg b/config/submodule/coreboot/fam15h_15h/nasm-2.16.03.tar.bz2/module.cfg
new file mode 100644
index 00000000..bc486e80
--- /dev/null
+++ b/config/submodule/coreboot/fam15h_15h/nasm-2.16.03.tar.bz2/module.cfg
@@ -0,0 +1,5 @@
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+subcurl="https://www.nasm.us/pub/nasm/releasebuilds/2.16.03/nasm-2.16.03.tar.bz2"
+subcurl_bkup="https://www.mirrorservice.org/sites/distfiles.macports.org/nasm/nasm-2.16.03.tar.bz2"
+subhash="f28445d368debdf44219cc57df33800a8c0e49186cd60836d4adfec7700d53b801d34aa9fc9bfda74169843f33a1e8b465e11292582eb968bb9c3a26f54dd172"
diff --git a/config/submodule/coreboot/fam15h_15h/vboot/module.cfg b/config/submodule/coreboot/fam15h_15h/vboot/module.cfg
new file mode 100644
index 00000000..a3a8f21b
--- /dev/null
+++ b/config/submodule/coreboot/fam15h_15h/vboot/module.cfg
@@ -0,0 +1,5 @@
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+subgit="https://review.coreboot.org/vboot.git"
+subgit_bkup="https://github.com/coreboot/vboot"
+subhash="ecdca931ae0637d1a9498f64862939bd5bb99e0b"
diff --git a/config/submodule/coreboot/fam15h_15h/vboot/patches/0001-extract_vmlinuz.c-Fix-the-bounds-check-on-vmlinuz_he.patch b/config/submodule/coreboot/fam15h_15h/vboot/patches/0001-extract_vmlinuz.c-Fix-the-bounds-check-on-vmlinuz_he.patch
new file mode 100644
index 00000000..1ac41de6
--- /dev/null
+++ b/config/submodule/coreboot/fam15h_15h/vboot/patches/0001-extract_vmlinuz.c-Fix-the-bounds-check-on-vmlinuz_he.patch
@@ -0,0 +1,178 @@
+From 195f61375aeec9eec16604ec59f6eda2e6058cc1 Mon Sep 17 00:00:00 2001
+From: "Luke T. Shumaker" <lukeshu@lukeshu.com>
+Date: Thu, 30 May 2024 14:08:33 -0600
+Subject: [PATCH 1/1] extract_vmlinuz.c: Fix the bounds check on
+ vmlinuz_header_{offset,size}
+
+The check on vmlinuz_header_offset and vmlinuz_header_size is obviously
+wrong:
+
+ if (!vmlinuz_header_size ||
+ kpart_data + vmlinuz_header_offset + vmlinuz_header_size >
+ kpart_data) {
+ return 1;
+ }
+
+`kpart_data + some_unsigned_values` can obviously never be `> kpart_data`,
+unless something has overflowed! And `vmlinuz_header_offset` hasn't even
+been set yet (besides being initialized to zero)!
+
+GCC will deduce that if the check didn't cause the function to bail, then
+vmlinuz_header_size (a uint32_t) must be "negative"; that is: in the range
+[2GiB,4GiB).
+
+On platforms where size_t is 32-bits, this is *especially* broken.
+memcpy's size argument must be in the range [0,2GiB). Because GCC has
+proved that vmlinuz_header_size is higher than that, it will fail to
+compile:
+
+ host/lib/extract_vmlinuz.c:67:9: error: 'memcpy' specified bound between 2147483648 and 4294967295 exceeds maximum object size 2147483647 [-Werror=stringop-overflow=]
+
+So, fix the check.
+
+I can now say that what I suspect the original author meant to write would
+be the following patch, if `vmlinuz_header_offset` were already set:
+
+ -kpart_data + vmlinuz_header_offset + vmlinuz_header_size > kpart_data
+ +now + vmlinuz_header_offset + vmlinuz_header_size > kpart_size
+
+This hypothesis is supported by `now` not getting incremented by
+`kblob_size` the way it is for the keyblock and preamble sizes.
+
+However, we can also see that even this "corrected" bounds check is
+insufficient: it does not detect the vmlinuz_header overflowing into
+kblob_data.
+
+OK, so let's describe the fix:
+
+Have a `*vmlinuz_header` pointer instead of a
+`uint64_t vmlinuz_header_offset`, to be more similar to all the other
+regions. With this change, the correct check becomes a simple
+
+ vmlinuz_header + vmlinuz_header_size > kblob_data
+
+While we're at it, make some changes that could have helped avoid this in
+the first place:
+
+ - Add comments.
+ - Calculate the vmlinuz_header offset right away, instead of waiting.
+ - Go ahead and increment `now` by `kblob_size`, to increase regularity.
+
+Change-Id: I5c03e49070b6dd2e04459566ef7dd129d27736e4
+---
+ host/lib/extract_vmlinuz.c | 72 +++++++++++++++++++++++++++-----------
+ 1 file changed, 51 insertions(+), 21 deletions(-)
+
+diff --git a/host/lib/extract_vmlinuz.c b/host/lib/extract_vmlinuz.c
+index 4ccfcf33..d2c09443 100644
+--- a/host/lib/extract_vmlinuz.c
++++ b/host/lib/extract_vmlinuz.c
+@@ -15,16 +15,44 @@
+
+ int ExtractVmlinuz(void *kpart_data, size_t kpart_size,
+ void **vmlinuz_out, size_t *vmlinuz_size) {
++ // We're going to be extracting `vmlinuz_header` and
++ // `kblob_data`, and returning the concatenation of them.
++ //
++ // kpart_data = +-[kpart_size]------------------------------------+
++ // | |
++ // keyblock = | +-[keyblock->keyblock_size]-------------------+ |
++ // | | struct vb2_keyblock keyblock | |
++ // | | char [] ...data... | |
++ // | +---------------------------------------------+ |
++ // | |
++ // preamble = | +-[preamble->preamble_size]-------------------+ |
++ // | | struct vb2_kernel_preamble preamble | |
++ // | | char [] ...data... | |
++ // | | char [] vmlinuz_header | |
++ // | | char [] ...data... | |
++ // | +---------------------------------------------+ |
++ // | |
++ // kblob_data= | +-[preamble->body_signature.data_size]--------+ |
++ // | | char [] ...data... | |
++ // | +---------------------------------------------+ |
++ // | |
++ // +-------------------------------------------------+
++
+ size_t now = 0;
++ // The 3 sections of kpart_data.
++ struct vb2_keyblock *keyblock = NULL;
+ struct vb2_kernel_preamble *preamble = NULL;
+ uint8_t *kblob_data = NULL;
+ uint32_t kblob_size = 0;
++ // vmlinuz_header
++ uint8_t *vmlinuz_header = NULL;
+ uint32_t vmlinuz_header_size = 0;
+- uint64_t vmlinuz_header_address = 0;
+- uint64_t vmlinuz_header_offset = 0;
++ // The concatenated result.
+ void *vmlinuz = NULL;
+
+- struct vb2_keyblock *keyblock = (struct vb2_keyblock *)kpart_data;
++ // Isolate the 3 sections of kpart_data.
++
++ keyblock = (struct vb2_keyblock *)kpart_data;
+ now += keyblock->keyblock_size;
+ if (now > kpart_size)
+ return 1;
+@@ -36,37 +64,39 @@ int ExtractVmlinuz(void *kpart_data, size_t kpart_size,
+
+ kblob_data = kpart_data + now;
+ kblob_size = preamble->body_signature.data_size;
+-
+- if (!kblob_data || (now + kblob_size) > kpart_size)
++ now += kblob_size;
++ if (now > kpart_size)
+ return 1;
+
++ // Find `vmlinuz_header` within `preamble`.
++
+ if (preamble->header_version_minor > 0) {
+- vmlinuz_header_address = preamble->vmlinuz_header_address;
++ // calculate the vmlinuz_header offset from
++ // the beginning of the kpart_data. The kblob doesn't
++ // include the body_load_offset, but does include
++ // the keyblock and preamble sections.
++ size_t vmlinuz_header_offset =
++ preamble->vmlinuz_header_address -
++ preamble->body_load_address +
++ keyblock->keyblock_size +
++ preamble->preamble_size;
++
++ vmlinuz_header = kpart_data + vmlinuz_header_offset;
+ vmlinuz_header_size = preamble->vmlinuz_header_size;
+ }
+
+- if (!vmlinuz_header_size ||
+- kpart_data + vmlinuz_header_offset + vmlinuz_header_size >
+- kpart_data) {
++ if (!vmlinuz_header ||
++ !vmlinuz_header_size ||
++ vmlinuz_header + vmlinuz_header_size > kblob_data) {
+ return 1;
+ }
+
+- // calculate the vmlinuz_header offset from
+- // the beginning of the kpart_data. The kblob doesn't
+- // include the body_load_offset, but does include
+- // the keyblock and preamble sections.
+- vmlinuz_header_offset = vmlinuz_header_address -
+- preamble->body_load_address +
+- keyblock->keyblock_size +
+- preamble->preamble_size;
++ // Concatenate and return.
+
+ vmlinuz = malloc(vmlinuz_header_size + kblob_size);
+ if (vmlinuz == NULL)
+ return 1;
+-
+- memcpy(vmlinuz, kpart_data + vmlinuz_header_offset,
+- vmlinuz_header_size);
+-
++ memcpy(vmlinuz, vmlinuz_header, vmlinuz_header_size);
+ memcpy(vmlinuz + vmlinuz_header_size, kblob_data, kblob_size);
+
+ *vmlinuz_out = vmlinuz;
+--
+2.45.1
+