summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbuild6
-rw-r--r--config/coreboot/default/patches/0052-Disable-compression-on-refcode-insertion.patch31
-rw-r--r--config/coreboot/hp820g2_12mb/target.cfg1
-rw-r--r--config/coreboot/next/patches/0013-soc-intel-pmc-Hardcoded-poweroff-after-power-fail.patch82
-rw-r--r--config/dependencies/arch2
-rwxr-xr-xconfig/dependencies/debian2
-rwxr-xr-xconfig/dependencies/fedora382
-rwxr-xr-xconfig/dependencies/fedora402
-rwxr-xr-xconfig/dependencies/fedora415
-rw-r--r--config/dependencies/parabola2
-rwxr-xr-xconfig/dependencies/trisquel4
-rwxr-xr-xconfig/dependencies/ubuntu20042
-rwxr-xr-xconfig/dependencies/ubuntu24042
-rw-r--r--config/flashprog/patches/0001-Workaround-for-MX25-chips.patch24
-rw-r--r--config/flashprog/target.cfg3
-rw-r--r--config/git/flashprog/pkg.cfg2
-rw-r--r--config/grub/default/patches/0001-mitigate-grub-s-missing-characters-for-borders-arrow.patch4
-rw-r--r--config/grub/default/patches/0002-say-the-name-libreboot-in-the-grub-menu.patch6
-rw-r--r--config/grub/default/patches/0003-Add-CC0-license.patch8
-rw-r--r--config/grub/default/patches/0004-Define-GRUB_UINT32_MAX.patch4
-rw-r--r--config/grub/default/patches/0005-Add-Argon2-algorithm.patch11
-rw-r--r--config/grub/default/patches/0006-Error-on-missing-Argon2id-parameters.patch4
-rw-r--r--config/grub/default/patches/0007-Compile-with-Argon2id-support.patch8
-rw-r--r--config/grub/default/patches/0008-Make-grub-install-work-with-Argon2.patch4
-rw-r--r--config/grub/default/patches/0009-at_keyboard-coreboot-force-scancodes2-translate.patch4
-rw-r--r--config/grub/default/patches/0010-keylayouts-don-t-print-Unknown-key-message.patch4
-rw-r--r--config/grub/default/patches/0011-don-t-print-missing-prefix-errors-on-the-screen.patch8
-rw-r--r--config/grub/default/patches/0012-don-t-print-error-if-module-not-found.patch8
-rw-r--r--config/grub/default/patches/0013-don-t-print-empty-error-messages.patch4
-rw-r--r--config/grub/default/target.cfg2
-rw-r--r--config/grub/nvme/patches/0001-mitigate-grub-s-missing-characters-for-borders-arrow.patch4
-rw-r--r--config/grub/nvme/patches/0002-say-the-name-libreboot-in-the-grub-menu.patch6
-rw-r--r--config/grub/nvme/patches/0003-Add-CC0-license.patch8
-rw-r--r--config/grub/nvme/patches/0004-Define-GRUB_UINT32_MAX.patch4
-rw-r--r--config/grub/nvme/patches/0005-Add-Argon2-algorithm.patch11
-rw-r--r--config/grub/nvme/patches/0006-Error-on-missing-Argon2id-parameters.patch4
-rw-r--r--config/grub/nvme/patches/0007-Compile-with-Argon2id-support.patch8
-rw-r--r--config/grub/nvme/patches/0008-Make-grub-install-work-with-Argon2.patch4
-rw-r--r--config/grub/nvme/patches/0009-at_keyboard-coreboot-force-scancodes2-translate.patch4
-rw-r--r--config/grub/nvme/patches/0010-keylayouts-don-t-print-Unknown-key-message.patch4
-rw-r--r--config/grub/nvme/patches/0011-don-t-print-missing-prefix-errors-on-the-screen.patch8
-rw-r--r--config/grub/nvme/patches/0012-don-t-print-error-if-module-not-found.patch8
-rw-r--r--config/grub/nvme/patches/0013-don-t-print-empty-error-messages.patch4
-rw-r--r--config/grub/nvme/patches/0014-Add-native-NVMe-driver-based-on-SeaBIOS.patch17
-rw-r--r--config/grub/nvme/target.cfg2
-rw-r--r--config/grub/xhci/patches/0001-mitigate-grub-s-missing-characters-for-borders-arrow.patch4
-rw-r--r--config/grub/xhci/patches/0002-say-the-name-libreboot-in-the-grub-menu.patch6
-rw-r--r--config/grub/xhci/patches/0003-Add-CC0-license.patch8
-rw-r--r--config/grub/xhci/patches/0004-Define-GRUB_UINT32_MAX.patch4
-rw-r--r--config/grub/xhci/patches/0005-Add-Argon2-algorithm.patch11
-rw-r--r--config/grub/xhci/patches/0006-Error-on-missing-Argon2id-parameters.patch4
-rw-r--r--config/grub/xhci/patches/0007-Compile-with-Argon2id-support.patch8
-rw-r--r--config/grub/xhci/patches/0008-Make-grub-install-work-with-Argon2.patch4
-rw-r--r--config/grub/xhci/patches/0009-at_keyboard-coreboot-force-scancodes2-translate.patch4
-rw-r--r--config/grub/xhci/patches/0010-keylayouts-don-t-print-Unknown-key-message.patch4
-rw-r--r--config/grub/xhci/patches/0011-don-t-print-missing-prefix-errors-on-the-screen.patch8
-rw-r--r--config/grub/xhci/patches/0012-don-t-print-error-if-module-not-found.patch8
-rw-r--r--config/grub/xhci/patches/0013-don-t-print-empty-error-messages.patch4
-rw-r--r--config/grub/xhci/patches/0014-grub-core-bus-usb-Parse-SuperSpeed-companion-descrip.patch4
-rw-r--r--config/grub/xhci/patches/0015-usb-Add-enum-for-xHCI.patch4
-rw-r--r--config/grub/xhci/patches/0016-usbtrans-Set-default-maximum-packet-size.patch4
-rw-r--r--config/grub/xhci/patches/0017-grub-core-bus-usb-Add-function-pointer-for-attach-de.patch4
-rw-r--r--config/grub/xhci/patches/0018-grub-core-bus-usb-usbhub-Add-new-private-fields-for-.patch4
-rw-r--r--config/grub/xhci/patches/0019-grub-core-bus-usb-Add-xhci-support.patch6
-rw-r--r--config/grub/xhci/patches/0020-grub-core-bus-usb-usbhub-Add-xHCI-non-root-hub-suppo.patch4
-rw-r--r--config/grub/xhci/patches/0021-Fix-compilation-on-x86_64.patch4
-rw-r--r--config/grub/xhci/patches/0022-Add-native-NVMe-driver-based-on-SeaBIOS.patch17
-rw-r--r--config/grub/xhci/target.cfg2
-rw-r--r--config/seabios/default/target.cfg2
-rw-r--r--config/submodule/grub/default/gnulib/module.cfg4
-rw-r--r--config/submodule/grub/nvme/gnulib/module.cfg4
-rw-r--r--config/submodule/grub/xhci/gnulib/module.cfg4
-rw-r--r--include/git.sh15
-rw-r--r--include/lib.sh49
-rw-r--r--include/mrc.sh2
-rw-r--r--include/rom.sh44
-rw-r--r--include/vendor.sh489
-rwxr-xr-xscript/trees35
-rw-r--r--util/nvmutil/AUTHORS1
-rw-r--r--util/nvmutil/COPYING3
-rw-r--r--util/nvmutil/Makefile20
-rw-r--r--util/nvmutil/nvmutil.c91
-rw-r--r--util/spkmodem_recv/Makefile9
83 files changed, 807 insertions, 442 deletions
diff --git a/build b/build
index 033cb433..2e04f59f 100755
--- a/build
+++ b/build
@@ -1,6 +1,6 @@
#!/usr/bin/env sh
# SPDX-License-Identifier: GPL-3.0-or-later
-# Copyright (c) 2020-2024 Leah Rowe <leah@libreboot.org>
+# Copyright (c) 2020-2025 Leah Rowe <leah@libreboot.org>
# Copyright (c) 2022 Caleb La Grange <thonkpeasant@protonmail.com>
set -u -e
@@ -14,7 +14,7 @@ fi
. "include/vendor.sh"
. "include/mrc.sh"
-eval `setvars "" vdir src_dirname srcdir mode xp ser`
+eval "`setvars "" vdir src_dirname srcdir mode xp ser`"
err="fail"
main()
@@ -48,7 +48,7 @@ git_init()
{
[ -L ".git" ] && return 1
[ -e ".git" ] && return 0
- eval `setvars "$(date -Rud @$versiondate)" cdate _nogit`
+ eval "`setvars "$(date -Rud @$versiondate)" cdate _nogit`"
git init || return 1
git add -A . || return 1
diff --git a/config/coreboot/default/patches/0052-Disable-compression-on-refcode-insertion.patch b/config/coreboot/default/patches/0052-Disable-compression-on-refcode-insertion.patch
new file mode 100644
index 00000000..1c089279
--- /dev/null
+++ b/config/coreboot/default/patches/0052-Disable-compression-on-refcode-insertion.patch
@@ -0,0 +1,31 @@
+From 1e72e6df7f5d71fd41350e34d0a8bd5230349235 Mon Sep 17 00:00:00 2001
+From: Leah Rowe <info@minifree.org>
+Date: Tue, 31 Dec 2024 14:42:24 +0000
+Subject: [PATCH 1/1] Disable compression on refcode insertion
+
+Compression is not reliably reproducible. In an lbmk release
+context, this means we cannot rely on vendorfile insertion.
+
+Therefore, use uncompressed refcode.
+
+Signed-off-by: Leah Rowe <info@minifree.org>
+---
+ Makefile.mk | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile.mk b/Makefile.mk
+index e9ad2ccbb2..6a96d45a83 100644
+--- a/Makefile.mk
++++ b/Makefile.mk
+@@ -1364,7 +1364,7 @@ endif
+ cbfs-files-$(CONFIG_HAVE_REFCODE_BLOB) += $(CONFIG_CBFS_PREFIX)/refcode
+ $(CONFIG_CBFS_PREFIX)/refcode-file := $(REFCODE_BLOB)
+ $(CONFIG_CBFS_PREFIX)/refcode-type := stage
+-$(CONFIG_CBFS_PREFIX)/refcode-compression := $(CBFS_COMPRESS_FLAG)
++$(CONFIG_CBFS_PREFIX)/refcode-compression := none
+
+ cbfs-files-$(CONFIG_SEABIOS_VGA_COREBOOT) += vgaroms/seavgabios.bin
+ vgaroms/seavgabios.bin-file := $(CONFIG_PAYLOAD_VGABIOS_FILE)
+--
+2.39.5
+
diff --git a/config/coreboot/hp820g2_12mb/target.cfg b/config/coreboot/hp820g2_12mb/target.cfg
index f94fb6aa..7fe45119 100644
--- a/config/coreboot/hp820g2_12mb/target.cfg
+++ b/config/coreboot/hp820g2_12mb/target.cfg
@@ -5,7 +5,6 @@ xarch="i386-elf"
payload_seabios="y"
payload_grub="y"
payload_memtest="y"
-release="n"
grub_scan_disk="nvme ahci"
grubtree="xhci"
vcfg="hp820g2"
diff --git a/config/coreboot/next/patches/0013-soc-intel-pmc-Hardcoded-poweroff-after-power-fail.patch b/config/coreboot/next/patches/0013-soc-intel-pmc-Hardcoded-poweroff-after-power-fail.patch
new file mode 100644
index 00000000..6ea65c8d
--- /dev/null
+++ b/config/coreboot/next/patches/0013-soc-intel-pmc-Hardcoded-poweroff-after-power-fail.patch
@@ -0,0 +1,82 @@
+From aa13bb380d8286373089de291b62c6070df20573 Mon Sep 17 00:00:00 2001
+From: Leah Rowe <info@minifree.org>
+Date: Tue, 31 Dec 2024 01:40:42 +0000
+Subject: [PATCH 1/1] soc/intel/pmc: Hardcoded poweroff after power fail
+
+Coreboot can set the power state for power on after previous
+power failure, based on the option table. On the ThinkPad T480,
+we have no nvram and, due to coreboot's design, we therefore
+have no option table, so the default setting is enabled.
+
+In my testing, this seems to be that the system will turn on
+after a power failure. If your ThinkPad was previously in a state
+where it wouldn't turn on when plugging in the power, it'd be fine.
+
+If your battery ran out later on, this would be triggered and
+your ThinkPad would permanently turn on, when plugging in a charger,
+and there is currently no way to configure this behaviour.
+
+We currently only use the common SoC PMC code on the ThinkPad
+T480, T480s and the Dell OptiPlex 3050 Micro, at the time of
+this patch, and it is desirable that the system be set to power
+off after power fail anyway.
+
+In some cases, you might want the opposite, for example if you're
+running a server. This will be documented on the website, for that
+reason.
+
+Signed-off-by: Leah Rowe <info@minifree.org>
+---
+ src/soc/intel/common/block/pmc/pmclib.c | 36 +++----------------------
+ 1 file changed, 4 insertions(+), 32 deletions(-)
+
+diff --git a/src/soc/intel/common/block/pmc/pmclib.c b/src/soc/intel/common/block/pmc/pmclib.c
+index c51a960854..a836932fe5 100644
+--- a/src/soc/intel/common/block/pmc/pmclib.c
++++ b/src/soc/intel/common/block/pmc/pmclib.c
+@@ -760,38 +760,10 @@ void pmc_clear_pmcon_sts(void)
+
+ void pmc_set_power_failure_state(const bool target_on)
+ {
+- const unsigned int state = get_uint_option("power_on_after_fail",
+- CONFIG_MAINBOARD_POWER_FAILURE_STATE);
+-
+- /*
+- * On the shutdown path (target_on == false), we only need to
+- * update the register for MAINBOARD_POWER_STATE_PREVIOUS. For
+- * all other cases, we don't write the register to avoid clob-
+- * bering the value set on the boot path. This is necessary,
+- * for instance, when we can't access the option backend in SMM.
+- */
+-
+- switch (state) {
+- case MAINBOARD_POWER_STATE_OFF:
+- if (!target_on)
+- break;
+- printk(BIOS_INFO, "Set power off after power failure.\n");
+- pmc_soc_set_afterg3_en(false);
+- break;
+- case MAINBOARD_POWER_STATE_ON:
+- if (!target_on)
+- break;
+- printk(BIOS_INFO, "Set power on after power failure.\n");
+- pmc_soc_set_afterg3_en(true);
+- break;
+- case MAINBOARD_POWER_STATE_PREVIOUS:
+- printk(BIOS_INFO, "Keep power state after power failure.\n");
+- pmc_soc_set_afterg3_en(target_on);
+- break;
+- default:
+- printk(BIOS_WARNING, "Unknown power-failure state: %d\n", state);
+- break;
+- }
++ if (!target_on)
++ return;
++ printk(BIOS_INFO, "Set power off after power failure.\n");
++ pmc_soc_set_afterg3_en(false);
+ }
+
+ /* This function returns the highest assertion duration of the SLP_Sx assertion widths */
+--
+2.39.5
+
diff --git a/config/dependencies/arch b/config/dependencies/arch
index ff20ecd8..feb38d49 100644
--- a/config/dependencies/arch
+++ b/config/dependencies/arch
@@ -6,7 +6,7 @@ acpica arm-none-eabi-binutils arm-none-eabi-gcc arm-none-eabi-newlib \
autogen base-devel bison cmake curl device-mapper doxygen \
dtc e2fsprogs flex freetype2 fuse2 gawk gcc-ada gdb gettext git \
help2man innoextract libftdi libgpiod libjaylink libpciaccess libusb nasm \
-ncurses openssl p7zip ccache \
+ncurses openssl p7zip ccache less libx86 \
pandoc parted pciutils perl perl-libwww python python-setuptools rsync \
sharutils subversion swig texinfo ttf-dejavu unarchiver unzip wget xz zlib mtools \
"
diff --git a/config/dependencies/debian b/config/dependencies/debian
index 48dab1c9..00ccfc1a 100755
--- a/config/dependencies/debian
+++ b/config/dependencies/debian
@@ -7,7 +7,7 @@ binutils-arm-none-eabi bison build-essential cmake curl device-tree-compiler \
doxygen e2fsprogs efitools flex fonts-unifont gawk gcc-arm-linux-gnueabi \
gcc-arm-none-eabi gdb gettext git gnat help2man innoextract libdevmapper-dev \
libfdt-dev libfont-freetype-perl libfreetype-dev libftdi-dev libftdi1-dev libfuse-dev \
-libjaylink-dev libgnutls28-dev libgpiod-dev liblz4-tool liblzma-dev libncurses5-dev
+libjaylink-dev libgnutls28-dev libgpiod-dev lz4 liblz4-dev liblzma-dev libncurses5-dev
libncurses-dev libnewlib-arm-none-eabi libopts25 libopts25-dev libpci-dev libpython3-dev \
libsdl2-dev libselinux1-dev libssl-dev libtool libusb-1.0 libusb-1.0-0-dev \
libusb-dev lz4 lzma lzma-alone m4 nasm openssl p7zip p7zip-full parted pciutils \
diff --git a/config/dependencies/fedora38 b/config/dependencies/fedora38
index 8af77879..a34bbbf0 100755
--- a/config/dependencies/fedora38
+++ b/config/dependencies/fedora38
@@ -1,6 +1,6 @@
# SPDX-License-Identifier: GPL-3.0-or-later
-pkg_add="dnf install"
+pkg_add="dnf ${reinstall}install"
pkglist=" \
acpica-tools arm-none-eabi-binutils arm-none-eabi-gcc \
arm-none-eabi-gcc arm-none-eabi-newlib autogen bison bzip2 cmake curl \
diff --git a/config/dependencies/fedora40 b/config/dependencies/fedora40
index fa99b6fa..3ca84aa0 100755
--- a/config/dependencies/fedora40
+++ b/config/dependencies/fedora40
@@ -1,6 +1,6 @@
# SPDX-License-Identifier: GPL-3.0-or-later
-pkg_add="dnf install"
+pkg_add="dnf ${reinstall}install"
pkglist=" \
acpica-tools arm-none-eabi-binutils arm-none-eabi-gcc \
arm-none-eabi-gcc arm-none-eabi-newlib autogen bison bzip2 cmake curl \
diff --git a/config/dependencies/fedora41 b/config/dependencies/fedora41
index 486674b4..4c06b199 100755
--- a/config/dependencies/fedora41
+++ b/config/dependencies/fedora41
@@ -1,6 +1,6 @@
# SPDX-License-Identifier: GPL-3.0-or-later
-pkg_add="dnf install"
+pkg_add="dnf ${reinstall}install"
pkglist=" \
acpica-tools arm-none-eabi-binutils arm-none-eabi-gcc arm-none-eabi-gcc-cs-c++ \
arm-none-eabi-gcc arm-none-eabi-newlib autogen bison bzip2 cmake curl \
@@ -10,6 +10,7 @@ innoextract intltool libftdi-devel libgpiod-devel libjaylink-devel \
libselinux-devel libusb1 libusb1-devel nasm ncurses-devel openssl-devel openssl-devel-engine \
p7zip p7zip-plugins pandoc parted pciutils-devel perl perl-libwww-perl \
python-unversioned-command python3 python3-setuptools rsync sharutils \
-subversion systemd-devel texinfo unar unifont unifont-fonts \
+subversion systemd-devel texinfo unar unifont unifont-fonts uuid-devel \
unifont-ttf-fonts unzip wget xz zlib-devel ccache swig python3-devel \
+libuuid-devel \
"
diff --git a/config/dependencies/parabola b/config/dependencies/parabola
index 9a4006a4..eb7115f7 100644
--- a/config/dependencies/parabola
+++ b/config/dependencies/parabola
@@ -6,7 +6,7 @@ acpica arm-none-eabi-binutils arm-none-eabi-gcc arm-none-eabi-newlib \
autogen base-devel bdf-unifont bison cmake curl device-mapper doxygen \
dtc e2fsprogs flex freetype2 fuse2 gawk gcc-ada gdb gettext git \
help2man innoextract libftdi libgpiod libjaylink libpciaccess libusb nasm \
-ncurses openssl p7zip \
+ncurses openssl p7zip less libx86 \
pandoc parted pciutils perl perl-libwww python python-setuptools rsync \
sharutils subversion swig texinfo ttf-dejavu unarchiver unifont-utils unzip \
wget xz zlib ccache \
diff --git a/config/dependencies/trisquel b/config/dependencies/trisquel
index 5575cd38..fb364c28 100755
--- a/config/dependencies/trisquel
+++ b/config/dependencies/trisquel
@@ -6,8 +6,8 @@ autoconf autogen automake autopoint autotools-dev bc binutils-arm-none-eabi \
bison build-essential cmake curl device-tree-compiler doxygen e2fsprogs efitools \
flex gawk gcc-arm-linux-gnueabi gcc-arm-none-eabi gdb gettext git gnat help2man \
innoextract libdevmapper-dev libfdt-dev libfont-freetype-perl libfreetype6-dev \
-libftdi-dev libfuse-dev libgnutls28-dev libgpiod-dev libjaylink-dev liblz4-tool \
-liblzma-dev libncurses5-dev ccache \
+libftdi-dev libfuse-dev libgnutls28-dev libgpiod-dev libjaylink-dev \
+liblzma-dev libncurses5-dev ccache lz4 liblz4-dev \
libncurses-dev libnewlib-arm-none-eabi libopts25 libopts25-dev libpci-dev \
libpython3-dev libsdl2-dev libselinux1-dev libssl-dev libtool libusb-1.0-0 \
libusb-1.0-0-dev lz4 lzma lzma-alone m4 nasm openssl p7zip p7zip-full parted \
diff --git a/config/dependencies/ubuntu2004 b/config/dependencies/ubuntu2004
index de4e3449..ce69a4d9 100755
--- a/config/dependencies/ubuntu2004
+++ b/config/dependencies/ubuntu2004
@@ -6,7 +6,7 @@ autoconf autogen automake autopoint autotools-dev bc binutils-arm-none-eabi \
bison build-essential cmake curl device-tree-compiler doxygen e2fsprogs efitools \
flex gawk gcc-arm-linux-gnueabi gcc-arm-none-eabi gdb gettext git gnat help2man \
innoextract libdevmapper-dev libfdt-dev libfont-freetype-perl libfreetype6-dev \
-libftdi-dev libfuse-dev libgnutls28-dev liblz4-tool liblzma-dev libncurses5-dev \
+libftdi-dev libfuse-dev libgnutls28-dev lz4 liblz4-dev liblzma-dev libncurses5-dev \
libncurses-dev libnewlib-arm-none-eabi libopts25 libopts25-dev libpci-dev \
libpython3-dev libsdl2-dev libselinux1-dev libssl-dev libtool libusb-1.0-0 \
libusb-1.0-0-dev lz4 lzma lzma-alone m4 nasm openssl p7zip p7zip-full parted \
diff --git a/config/dependencies/ubuntu2404 b/config/dependencies/ubuntu2404
index 4d9add19..b0633e69 100755
--- a/config/dependencies/ubuntu2404
+++ b/config/dependencies/ubuntu2404
@@ -6,7 +6,7 @@ autoconf autogen automake autopoint autotools-dev bc binutils-arm-none-eabi \
bison build-essential cmake curl device-tree-compiler doxygen e2fsprogs efitools \
flex gawk gcc-arm-linux-gnueabi gcc-arm-none-eabi gdb gettext git gnat help2man \
innoextract libdevmapper-dev libfdt-dev libfont-freetype-perl libfreetype6-dev \
-libftdi-dev libfuse-dev libgnutls28-dev liblz4-tool liblzma-dev libncurses5-dev \
+libftdi-dev libfuse-dev libgnutls28-dev lz4 liblz4-dev liblzma-dev libncurses5-dev \
libncurses-dev libnewlib-arm-none-eabi libopts25 libopts25-dev libpci-dev \
libpython3-dev libsdl2-dev libselinux1-dev libssl-dev libtool libusb-1.0-0 \
libusb-1.0-0-dev lz4 lzma lzma-alone m4 nasm openssl p7zip p7zip-full parted \
diff --git a/config/flashprog/patches/0001-Workaround-for-MX25-chips.patch b/config/flashprog/patches/0001-Workaround-for-MX25-chips.patch
index fc3befb1..f7b9ad79 100644
--- a/config/flashprog/patches/0001-Workaround-for-MX25-chips.patch
+++ b/config/flashprog/patches/0001-Workaround-for-MX25-chips.patch
@@ -1,4 +1,4 @@
-From 9d8c79eecf760e4f963a0a7f29b577cd84962a2a Mon Sep 17 00:00:00 2001
+From 9d7b97a0f08a3f0f62c389aee61e92377d82d645 Mon Sep 17 00:00:00 2001
From: consts <grudnevkv@gmail.com>
Date: Fri, 2 Mar 2018 07:03:37 +0000
Subject: [PATCH 1/1] Workaround for MX25 chips
@@ -17,10 +17,10 @@ Change-Id: I43a306b67862b59c1dcd02729e189f3bf73f481b
3 files changed, 16 insertions(+), 1 deletion(-)
diff --git a/cli_classic.c b/cli_classic.c
-index ab5f8b1..2825033 100644
+index 26253dc..5a80394 100644
--- a/cli_classic.c
+++ b/cli_classic.c
-@@ -67,6 +67,7 @@ static void cli_classic_usage(const char *name)
+@@ -68,6 +68,7 @@ static void cli_classic_usage(const char *name)
" -o | --output <logfile> log output to <logfile>\n"
" --flash-contents <ref-file> assume flash contents to be <ref-file>\n"
" -L | --list-supported print supported devices\n"
@@ -28,7 +28,7 @@ index ab5f8b1..2825033 100644
#if CONFIG_PRINT_WIKI == 1
" -z | --list-supported-wiki print supported devices in wiki syntax\n"
#endif
-@@ -262,6 +263,7 @@ int main(int argc, char *argv[])
+@@ -231,6 +232,7 @@ int flashprog_classic_main(int argc, char *argv[])
{"version", 0, NULL, 'R'},
{"output", 1, NULL, 'o'},
{"progress", 0, NULL, OPTION_PROGRESS},
@@ -36,9 +36,9 @@ index ab5f8b1..2825033 100644
{NULL, 0, NULL, 0},
};
-@@ -478,6 +480,9 @@ int main(int argc, char *argv[])
- cli_classic_abort_usage("No log filename specified.\n");
- }
+@@ -357,6 +359,9 @@ int flashprog_classic_main(int argc, char *argv[])
+ cli_classic_usage(argv[0]);
+ exit(0);
break;
+ case 'm': /* --workaround-mx */
+ workaround_mx = 1;
@@ -47,12 +47,12 @@ index ab5f8b1..2825033 100644
show_progress = true;
break;
diff --git a/include/programmer.h b/include/programmer.h
-index 873dc37..2007fd6 100644
+index 11d15a8..3b33d5a 100644
--- a/include/programmer.h
+++ b/include/programmer.h
-@@ -364,6 +364,7 @@ enum ich_chipset {
- CHIPSET_GEMINI_LAKE,
- CHIPSET_ELKHART_LAKE,
+@@ -372,6 +372,7 @@ enum ich_chipset {
+ CHIPSET_LUNAR_LAKE,
+ CHIPSET_ARROW_LAKE,
};
+extern int workaround_mx; /* workaround for MX25* chips, makes flash operations more reliable, less failures */
@@ -87,5 +87,5 @@ index 748ef99..9bbdee9 100644
readarr);
}
--
-2.39.2
+2.39.5
diff --git a/config/flashprog/target.cfg b/config/flashprog/target.cfg
new file mode 100644
index 00000000..2d9243b7
--- /dev/null
+++ b/config/flashprog/target.cfg
@@ -0,0 +1,3 @@
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+makeargs="WARNERROR=no"
diff --git a/config/git/flashprog/pkg.cfg b/config/git/flashprog/pkg.cfg
index e1a89795..6cfbdb38 100644
--- a/config/git/flashprog/pkg.cfg
+++ b/config/git/flashprog/pkg.cfg
@@ -1,5 +1,5 @@
# SPDX-License-Identifier: GPL-3.0-or-later
-rev="d128a0ae87086b37c0e5d7a8d934bcdee173402f"
+rev="eb2c04185f8f471c768b742d66e4c552effdd9cb"
url="https://review.sourcearcade.org/flashprog"
bkup_url="https://github.com/SourceArcade/flashprog.git"
diff --git a/config/grub/default/patches/0001-mitigate-grub-s-missing-characters-for-borders-arrow.patch b/config/grub/default/patches/0001-mitigate-grub-s-missing-characters-for-borders-arrow.patch
index 7aa0d568..e5d24e7e 100644
--- a/config/grub/default/patches/0001-mitigate-grub-s-missing-characters-for-borders-arrow.patch
+++ b/config/grub/default/patches/0001-mitigate-grub-s-missing-characters-for-borders-arrow.patch
@@ -1,4 +1,4 @@
-From 8b55c63ab6094bc9017eedd34bd7d0ae3c04cb9c Mon Sep 17 00:00:00 2001
+From 26b89e90c8d6d89f2e52b00ad15ba58fd2e1fbfb Mon Sep 17 00:00:00 2001
From: Leah Rowe <leah@libreboot.org>
Date: Sun, 31 Oct 2021 03:47:05 +0000
Subject: [PATCH 01/13] mitigate grub's missing characters for borders/arrow
@@ -86,5 +86,5 @@ index 9c383e64a..8ec1dd1e8 100644
grub_term_highlight_color = old_color_highlight;
geo->timeout_y = geo->first_entry_y + geo->num_entries
--
-2.39.2
+2.39.5
diff --git a/config/grub/default/patches/0002-say-the-name-libreboot-in-the-grub-menu.patch b/config/grub/default/patches/0002-say-the-name-libreboot-in-the-grub-menu.patch
index 66e68f5c..6b0665db 100644
--- a/config/grub/default/patches/0002-say-the-name-libreboot-in-the-grub-menu.patch
+++ b/config/grub/default/patches/0002-say-the-name-libreboot-in-the-grub-menu.patch
@@ -1,4 +1,4 @@
-From 3b719f8153350f9bfac2cb889d37562cdf566cc8 Mon Sep 17 00:00:00 2001
+From 10d264bdfde24fcf78da6f641898eb267f83066f Mon Sep 17 00:00:00 2001
From: Leah Rowe <leah@libreboot.org>
Date: Sat, 19 Nov 2022 16:30:24 +0000
Subject: [PATCH 02/13] say the name libreboot, in the grub menu
@@ -8,7 +8,7 @@ Subject: [PATCH 02/13] say the name libreboot, in the grub menu
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/grub-core/normal/main.c b/grub-core/normal/main.c
-index bd4431000..300f55fe1 100644
+index bd4431000..ff16e0f2e 100644
--- a/grub-core/normal/main.c
+++ b/grub-core/normal/main.c
@@ -209,7 +209,7 @@ grub_normal_init_page (struct grub_term_output *term,
@@ -21,5 +21,5 @@ index bd4431000..300f55fe1 100644
return;
--
-2.39.2
+2.39.5
diff --git a/config/grub/default/patches/0003-Add-CC0-license.patch b/config/grub/default/patches/0003-Add-CC0-license.patch
index 5795b05c..a5f75eb4 100644
--- a/config/grub/default/patches/0003-Add-CC0-license.patch
+++ b/config/grub/default/patches/0003-Add-CC0-license.patch
@@ -1,4 +1,4 @@
-From 09cbe5c71236987605cd375c4f69c6a36401e81c Mon Sep 17 00:00:00 2001
+From 689c09a6b675ba52318cd879b289ac3d67073cd4 Mon Sep 17 00:00:00 2001
From: Ax333l <main@axelen.xyz>
Date: Thu, 17 Aug 2023 00:00:00 +0000
Subject: [PATCH 03/13] Add CC0 license
@@ -10,10 +10,10 @@ Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch>
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/grub-core/kern/dl.c b/grub-core/kern/dl.c
-index 0bf40caa6..4011e2d15 100644
+index 8ad015b07..9980bae90 100644
--- a/grub-core/kern/dl.c
+++ b/grub-core/kern/dl.c
-@@ -470,7 +470,8 @@ grub_dl_check_license (grub_dl_t mod, Elf_Ehdr *e)
+@@ -494,7 +494,8 @@ grub_dl_check_license (grub_dl_t mod, Elf_Ehdr *e)
if (grub_strcmp ((char *) e + s->sh_offset, "LICENSE=GPLv3") == 0
|| grub_strcmp ((char *) e + s->sh_offset, "LICENSE=GPLv3+") == 0
@@ -38,5 +38,5 @@ index a42c20bd1..7157a30aa 100644
grub_util_error ("%s: incompatible license", filename);
}
--
-2.39.2
+2.39.5
diff --git a/config/grub/default/patches/0004-Define-GRUB_UINT32_MAX.patch b/config/grub/default/patches/0004-Define-GRUB_UINT32_MAX.patch
index cb910c85..9550110e 100644
--- a/config/grub/default/patches/0004-Define-GRUB_UINT32_MAX.patch
+++ b/config/grub/default/patches/0004-Define-GRUB_UINT32_MAX.patch
@@ -1,4 +1,4 @@
-From fb7e3d852bf3658b6e3cf4725c40f2a3eaa56c5b Mon Sep 17 00:00:00 2001
+From 63dc3c9ca6e5635b5c7e7ba24c996b23e79a92e3 Mon Sep 17 00:00:00 2001
From: Ax333l <main@axelen.xyz>
Date: Thu, 17 Aug 2023 00:00:00 +0000
Subject: [PATCH 04/13] Define GRUB_UINT32_MAX
@@ -35,5 +35,5 @@ index 45079bf65..8c0b30395 100644
#define GRUB_PROPERLY_ALIGNED_ARRAY(name, size) grub_properly_aligned_t name[((size) + sizeof (grub_properly_aligned_t) - 1) / sizeof (grub_properly_aligned_t)]
--
-2.39.2
+2.39.5
diff --git a/config/grub/default/patches/0005-Add-Argon2-algorithm.patch b/config/grub/default/patches/0005-Add-Argon2-algorithm.patch
index 1adfdef7..fef68ee3 100644
--- a/config/grub/default/patches/0005-Add-Argon2-algorithm.patch
+++ b/config/grub/default/patches/0005-Add-Argon2-algorithm.patch
@@ -1,4 +1,4 @@
-From 9bc9e32ace3f103ff12aab063c8a250c8ba6a642 Mon Sep 17 00:00:00 2001
+From be6452a88ff3cbe033d37b739829e41798682510 Mon Sep 17 00:00:00 2001
From: Ax333l <main@axelen.xyz>
Date: Thu, 17 Aug 2023 00:00:00 +0000
Subject: [PATCH 05/13] Add Argon2 algorithm
@@ -30,10 +30,10 @@ Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch>
create mode 100644 grub-core/lib/argon2/ref.c
diff --git a/docs/grub-dev.texi b/docs/grub-dev.texi
-index 1276c5930..cd6fb0e1e 100644
+index 3ad8e3efa..d7c6232af 100644
--- a/docs/grub-dev.texi
+++ b/docs/grub-dev.texi
-@@ -503,11 +503,75 @@ GRUB includes some code from other projects, and it is sometimes necessary
+@@ -503,12 +503,76 @@ GRUB includes some code from other projects, and it is sometimes necessary
to update it.
@menu
@@ -41,6 +41,7 @@ index 1276c5930..cd6fb0e1e 100644
* Gnulib::
* jsmn::
* minilzo::
+ * libtasn1::
@end menu
+@node Argon2
@@ -110,7 +111,7 @@ index 1276c5930..cd6fb0e1e 100644
@section Gnulib
diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
-index 705d73fab..452f11b20 100644
+index f70e02e69..f5f9b040c 100644
--- a/grub-core/Makefile.core.def
+++ b/grub-core/Makefile.core.def
@@ -1219,6 +1219,14 @@ module = {
@@ -2607,5 +2608,5 @@ index 000000000..c933df80d
+ }
+}
--
-2.39.2
+2.39.5
diff --git a/config/grub/default/patches/0006-Error-on-missing-Argon2id-parameters.patch b/config/grub/default/patches/0006-Error-on-missing-Argon2id-parameters.patch
index 6fb8fca2..8abe7669 100644
--- a/config/grub/default/patches/0006-Error-on-missing-Argon2id-parameters.patch
+++ b/config/grub/default/patches/0006-Error-on-missing-Argon2id-parameters.patch
@@ -1,4 +1,4 @@
-From 7090ad00b4c3b4a9af3d7e9df245aed5969da79d Mon Sep 17 00:00:00 2001
+From 39f620fbe7c4a791062b59d4a8d26c35408aca45 Mon Sep 17 00:00:00 2001
From: Ax333l <main@axelen.xyz>
Date: Thu, 17 Aug 2023 00:00:00 +0000
Subject: [PATCH 06/13] Error on missing Argon2id parameters
@@ -54,5 +54,5 @@ index d5106402f..bc818ea69 100644
goto err;
case LUKS2_KDF_TYPE_PBKDF2:
--
-2.39.2
+2.39.5
diff --git a/config/grub/default/patches/0007-Compile-with-Argon2id-support.patch b/config/grub/default/patches/0007-Compile-with-Argon2id-support.patch
index 65d89c33..19da5e51 100644
--- a/config/grub/default/patches/0007-Compile-with-Argon2id-support.patch
+++ b/config/grub/default/patches/0007-Compile-with-Argon2id-support.patch
@@ -1,4 +1,4 @@
-From 54bad25f08aab9bae2fbc2122aba9eb678549cc6 Mon Sep 17 00:00:00 2001
+From c192948ea0329d06cf4706667305b473b48c15f5 Mon Sep 17 00:00:00 2001
From: Ax333l <main@axelen.xyz>
Date: Thu, 17 Aug 2023 00:00:00 +0000
Subject: [PATCH 07/13] Compile with Argon2id support
@@ -11,7 +11,7 @@ Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch>
3 files changed, 17 insertions(+), 4 deletions(-)
diff --git a/Makefile.util.def b/Makefile.util.def
-index 0f74a1680..5a15e5637 100644
+index 038253b37..2f19569c9 100644
--- a/Makefile.util.def
+++ b/Makefile.util.def
@@ -3,7 +3,7 @@ AutoGen definitions Makefile.tpl;
@@ -35,7 +35,7 @@ index 0f74a1680..5a15e5637 100644
common = grub-core/disk/luks.c;
common = grub-core/disk/luks2.c;
diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
-index 452f11b20..5c1af8682 100644
+index f5f9b040c..f1f38d8d3 100644
--- a/grub-core/Makefile.core.def
+++ b/grub-core/Makefile.core.def
@@ -1242,7 +1242,7 @@ module = {
@@ -79,5 +79,5 @@ index bc818ea69..5b9eaa599 100644
hash = grub_crypto_lookup_md_by_name (k->kdf.u.pbkdf2.hash);
if (!hash)
--
-2.39.2
+2.39.5
diff --git a/config/grub/default/patches/0008-Make-grub-install-work-with-Argon2.patch b/config/grub/default/patches/0008-Make-grub-install-work-with-Argon2.patch
index 83c268ed..cb954976 100644
--- a/config/grub/default/patches/0008-Make-grub-install-work-with-Argon2.patch
+++ b/config/grub/default/patches/0008-Make-grub-install-work-with-Argon2.patch
@@ -1,4 +1,4 @@
-From a04a61ac008379d14749b0a1c47a8c9641c9eed5 Mon Sep 17 00:00:00 2001
+From 2887e35e882a86e474052112a23608570b3f41b2 Mon Sep 17 00:00:00 2001
From: Ax333l <main@axelen.xyz>
Date: Thu, 17 Aug 2023 00:00:00 +0000
Subject: [PATCH 08/13] Make grub-install work with Argon2
@@ -22,5 +22,5 @@ index 7dc5657bb..cf7315891 100644
have_cryptodisk = 1;
}
--
-2.39.2
+2.39.5
diff --git a/config/grub/default/patches/0009-at_keyboard-coreboot-force-scancodes2-translate.patch b/config/grub/default/patches/0009-at_keyboard-coreboot-force-scancodes2-translate.patch
index 2a728537..763fea91 100644
--- a/config/grub/default/patches/0009-at_keyboard-coreboot-force-scancodes2-translate.patch
+++ b/config/grub/default/patches/0009-at_keyboard-coreboot-force-scancodes2-translate.patch
@@ -1,4 +1,4 @@
-From 68f1bf73366ee0da82676c076cd9f282f89a888b Mon Sep 17 00:00:00 2001
+From 548c5b227718783776b81d1e074b1982e76f2327 Mon Sep 17 00:00:00 2001
From: Leah Rowe <leah@libreboot.org>
Date: Mon, 30 Oct 2023 22:19:21 +0000
Subject: [PATCH 09/13] at_keyboard coreboot: force scancodes2+translate
@@ -103,5 +103,5 @@ index f8a129eb7..8207225c2 100644
grub_dprintf ("atkeyb", "returned set %d\n", ps2_state.current_set);
if (ps2_state.current_set == 2)
--
-2.39.2
+2.39.5
diff --git a/config/grub/default/patches/0010-keylayouts-don-t-print-Unknown-key-message.patch b/config/grub/default/patches/0010-keylayouts-don-t-print-Unknown-key-message.patch
index bd15fdd5..a0eff28d 100644
--- a/config/grub/default/patches/0010-keylayouts-don-t-print-Unknown-key-message.patch
+++ b/config/grub/default/patches/0010-keylayouts-don-t-print-Unknown-key-message.patch
@@ -1,4 +1,4 @@
-From c0f2f1b156cbc6f89accf9ce827ae13e8a347969 Mon Sep 17 00:00:00 2001
+From 89764949b2bcfaad122800f336aa205fea4a1fed Mon Sep 17 00:00:00 2001
From: Leah Rowe <leah@libreboot.org>
Date: Tue, 31 Oct 2023 10:33:28 +0000
Subject: [PATCH 10/13] keylayouts: don't print "Unknown key" message
@@ -34,5 +34,5 @@ index aa3ba34f2..445fa0601 100644
}
--
-2.39.2
+2.39.5
diff --git a/config/grub/default/patches/0011-don-t-print-missing-prefix-errors-on-the-screen.patch b/config/grub/default/patches/0011-don-t-print-missing-prefix-errors-on-the-screen.patch
index 5031474a..d2ed0055 100644
--- a/config/grub/default/patches/0011-don-t-print-missing-prefix-errors-on-the-screen.patch
+++ b/config/grub/default/patches/0011-don-t-print-missing-prefix-errors-on-the-screen.patch
@@ -1,4 +1,4 @@
-From 34cab10d16b45938be82705bc8720c76f2aa1542 Mon Sep 17 00:00:00 2001
+From c6de75a3369aebb51df1659d89a6d7024c84d85e Mon Sep 17 00:00:00 2001
From: Leah Rowe <leah@libreboot.org>
Date: Sun, 5 Nov 2023 16:14:58 +0000
Subject: [PATCH 11/13] don't print missing prefix errors on the screen
@@ -85,10 +85,10 @@ index 18de52562..2a0fea6c8 100644
}
file = try_open_from_prefix (prefix, filename);
diff --git a/grub-core/kern/dl.c b/grub-core/kern/dl.c
-index 4011e2d15..af3bd00d0 100644
+index 9980bae90..4457cad7c 100644
--- a/grub-core/kern/dl.c
+++ b/grub-core/kern/dl.c
-@@ -758,7 +758,7 @@ grub_dl_load (const char *name)
+@@ -871,7 +871,7 @@ grub_dl_load (const char *name)
return 0;
if (! grub_dl_dir) {
@@ -98,5 +98,5 @@ index 4011e2d15..af3bd00d0 100644
}
--
-2.39.2
+2.39.5
diff --git a/config/grub/default/patches/0012-don-t-print-error-if-module-not-found.patch b/config/grub/default/patches/0012-don-t-print-error-if-module-not-found.patch
index 9184e6fb..85cde7a7 100644
--- a/config/grub/default/patches/0012-don-t-print-error-if-module-not-found.patch
+++ b/config/grub/default/patches/0012-don-t-print-error-if-module-not-found.patch
@@ -1,4 +1,4 @@
-From bf4fbc14d4d9a4612b70531b9678676571a46818 Mon Sep 17 00:00:00 2001
+From e8e419fe16843e7b7d8c614531df9447db689d28 Mon Sep 17 00:00:00 2001
From: Leah Rowe <leah@libreboot.org>
Date: Sun, 5 Nov 2023 16:36:22 +0000
Subject: [PATCH 12/13] don't print error if module not found
@@ -17,10 +17,10 @@ Signed-off-by: Leah Rowe <leah@libreboot.org>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/grub-core/kern/dl.c b/grub-core/kern/dl.c
-index af3bd00d0..21d0cedb1 100644
+index 4457cad7c..ea9fe8019 100644
--- a/grub-core/kern/dl.c
+++ b/grub-core/kern/dl.c
-@@ -486,7 +486,7 @@ grub_dl_resolve_name (grub_dl_t mod, Elf_Ehdr *e)
+@@ -510,7 +510,7 @@ grub_dl_resolve_name (grub_dl_t mod, Elf_Ehdr *e)
s = grub_dl_find_section (e, ".modname");
if (!s)
@@ -30,5 +30,5 @@ index af3bd00d0..21d0cedb1 100644
mod->name = grub_strdup ((char *) e + s->sh_offset);
if (! mod->name)
--
-2.39.2
+2.39.5
diff --git a/config/grub/default/patches/0013-don-t-print-empty-error-messages.patch b/config/grub/default/patches/0013-don-t-print-empty-error-messages.patch
index 1fc76bcd..70ce3059 100644
--- a/config/grub/default/patches/0013-don-t-print-empty-error-messages.patch
+++ b/config/grub/default/patches/0013-don-t-print-empty-error-messages.patch
@@ -1,4 +1,4 @@
-From e920aefcca3ad131d0f14d02955c3420fb99ee85 Mon Sep 17 00:00:00 2001
+From 6eb22aa4110b99245fd31dcaad979d5049d398d6 Mon Sep 17 00:00:00 2001
From: Leah Rowe <leah@libreboot.org>
Date: Sun, 5 Nov 2023 17:25:20 +0000
Subject: [PATCH 13/13] don't print empty error messages
@@ -27,5 +27,5 @@ index 53c734de7..7cac53983 100644
}
}
--
-2.39.2
+2.39.5
diff --git a/config/grub/default/target.cfg b/config/grub/default/target.cfg
index b06d8e64..300fdd7e 100644
--- a/config/grub/default/target.cfg
+++ b/config/grub/default/target.cfg
@@ -1,4 +1,4 @@
# SPDX-License-Identifier: GPL-3.0-or-later
tree="default"
-rev="b53ec06a1d6f22ffc1139cbfc0f292e4ca2da9cd"
+rev="6811f6f09d61996a3acbc4fc0414e45964f0e2d9"
diff --git a/config/grub/nvme/patches/0001-mitigate-grub-s-missing-characters-for-borders-arrow.patch b/config/grub/nvme/patches/0001-mitigate-grub-s-missing-characters-for-borders-arrow.patch
index b5ab0e5a..e7f71551 100644
--- a/config/grub/nvme/patches/0001-mitigate-grub-s-missing-characters-for-borders-arrow.patch
+++ b/config/grub/nvme/patches/0001-mitigate-grub-s-missing-characters-for-borders-arrow.patch
@@ -1,4 +1,4 @@
-From b89bf30d11fdc4fdc9bc5350621e73a2fc0d5b89 Mon Sep 17 00:00:00 2001
+From 985e87b15e60edb31d8b70f765b97cc8d436d10e Mon Sep 17 00:00:00 2001
From: Leah Rowe <leah@libreboot.org>
Date: Sun, 31 Oct 2021 03:47:05 +0000
Subject: [PATCH 01/14] mitigate grub's missing characters for borders/arrow
@@ -86,5 +86,5 @@ index 9c383e64a..8ec1dd1e8 100644
grub_term_highlight_color = old_color_highlight;
geo->timeout_y = geo->first_entry_y + geo->num_entries
--
-2.39.2
+2.39.5
diff --git a/config/grub/nvme/patches/0002-say-the-name-libreboot-in-the-grub-menu.patch b/config/grub/nvme/patches/0002-say-the-name-libreboot-in-the-grub-menu.patch
index c1a674ec..5036a859 100644
--- a/config/grub/nvme/patches/0002-say-the-name-libreboot-in-the-grub-menu.patch
+++ b/config/grub/nvme/patches/0002-say-the-name-libreboot-in-the-grub-menu.patch
@@ -1,4 +1,4 @@
-From e074baff4a8ab3a6f8e397b49f6b3eade8728e02 Mon Sep 17 00:00:00 2001
+From f9ae737976ff52fc656459942dd0bdbd763e66df Mon Sep 17 00:00:00 2001
From: Leah Rowe <leah@libreboot.org>
Date: Sat, 19 Nov 2022 16:30:24 +0000
Subject: [PATCH 02/14] say the name libreboot, in the grub menu
@@ -8,7 +8,7 @@ Subject: [PATCH 02/14] say the name libreboot, in the grub menu
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/grub-core/normal/main.c b/grub-core/normal/main.c
-index bd4431000..300f55fe1 100644
+index bd4431000..ff16e0f2e 100644
--- a/grub-core/normal/main.c
+++ b/grub-core/normal/main.c
@@ -209,7 +209,7 @@ grub_normal_init_page (struct grub_term_output *term,
@@ -21,5 +21,5 @@ index bd4431000..300f55fe1 100644
return;
--
-2.39.2
+2.39.5
diff --git a/config/grub/nvme/patches/0003-Add-CC0-license.patch b/config/grub/nvme/patches/0003-Add-CC0-license.patch
index 6434ed21..cfb8f56a 100644
--- a/config/grub/nvme/patches/0003-Add-CC0-license.patch
+++ b/config/grub/nvme/patches/0003-Add-CC0-license.patch
@@ -1,4 +1,4 @@
-From a62b61c5f3fda5a49e007095d79e654603c658d8 Mon Sep 17 00:00:00 2001
+From 40c559b7f1e402520a9044b4d3e22b7afd1bb981 Mon Sep 17 00:00:00 2001
From: Ax333l <main@axelen.xyz>
Date: Thu, 17 Aug 2023 00:00:00 +0000
Subject: [PATCH 03/14] Add CC0 license
@@ -10,10 +10,10 @@ Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch>
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/grub-core/kern/dl.c b/grub-core/kern/dl.c
-index 0bf40caa6..4011e2d15 100644
+index 8ad015b07..9980bae90 100644
--- a/grub-core/kern/dl.c
+++ b/grub-core/kern/dl.c
-@@ -470,7 +470,8 @@ grub_dl_check_license (grub_dl_t mod, Elf_Ehdr *e)
+@@ -494,7 +494,8 @@ grub_dl_check_license (grub_dl_t mod, Elf_Ehdr *e)
if (grub_strcmp ((char *) e + s->sh_offset, "LICENSE=GPLv3") == 0
|| grub_strcmp ((char *) e + s->sh_offset, "LICENSE=GPLv3+") == 0
@@ -38,5 +38,5 @@ index a42c20bd1..7157a30aa 100644
grub_util_error ("%s: incompatible license", filename);
}
--
-2.39.2
+2.39.5
diff --git a/config/grub/nvme/patches/0004-Define-GRUB_UINT32_MAX.patch b/config/grub/nvme/patches/0004-Define-GRUB_UINT32_MAX.patch
index 310fe8bf..bdd6d4de 100644
--- a/config/grub/nvme/patches/0004-Define-GRUB_UINT32_MAX.patch
+++ b/config/grub/nvme/patches/0004-Define-GRUB_UINT32_MAX.patch
@@ -1,4 +1,4 @@
-From c8c80f05753c26b7d7f5e3c3993039c565194875 Mon Sep 17 00:00:00 2001
+From 2d5493a02da107e7f3673b0ff5f0920ad557df78 Mon Sep 17 00:00:00 2001
From: Ax333l <main@axelen.xyz>
Date: Thu, 17 Aug 2023 00:00:00 +0000
Subject: [PATCH 04/14] Define GRUB_UINT32_MAX
@@ -35,5 +35,5 @@ index 45079bf65..8c0b30395 100644
#define GRUB_PROPERLY_ALIGNED_ARRAY(name, size) grub_properly_aligned_t name[((size) + sizeof (grub_properly_aligned_t) - 1) / sizeof (grub_properly_aligned_t)]
--
-2.39.2
+2.39.5
diff --git a/config/grub/nvme/patches/0005-Add-Argon2-algorithm.patch b/config/grub/nvme/patches/0005-Add-Argon2-algorithm.patch
index b26e1f2c..d816825e 100644
--- a/config/grub/nvme/patches/0005-Add-Argon2-algorithm.patch
+++ b/config/grub/nvme/patches/0005-Add-Argon2-algorithm.patch
@@ -1,4 +1,4 @@
-From d171eb927e33f20627797cdca0dc81a3f3f478e0 Mon Sep 17 00:00:00 2001
+From 520573cfa2b370a7d72102321bb0735a86e2999c Mon Sep 17 00:00:00 2001
From: Ax333l <main@axelen.xyz>
Date: Thu, 17 Aug 2023 00:00:00 +0000
Subject: [PATCH 05/14] Add Argon2 algorithm
@@ -30,10 +30,10 @@ Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch>
create mode 100644 grub-core/lib/argon2/ref.c
diff --git a/docs/grub-dev.texi b/docs/grub-dev.texi
-index 1276c5930..cd6fb0e1e 100644
+index 3ad8e3efa..d7c6232af 100644
--- a/docs/grub-dev.texi
+++ b/docs/grub-dev.texi
-@@ -503,11 +503,75 @@ GRUB includes some code from other projects, and it is sometimes necessary
+@@ -503,12 +503,76 @@ GRUB includes some code from other projects, and it is sometimes necessary
to update it.
@menu
@@ -41,6 +41,7 @@ index 1276c5930..cd6fb0e1e 100644
* Gnulib::
* jsmn::
* minilzo::
+ * libtasn1::
@end menu
+@node Argon2
@@ -110,7 +111,7 @@ index 1276c5930..cd6fb0e1e 100644
@section Gnulib
diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
-index 705d73fab..452f11b20 100644
+index f70e02e69..f5f9b040c 100644
--- a/grub-core/Makefile.core.def
+++ b/grub-core/Makefile.core.def
@@ -1219,6 +1219,14 @@ module = {
@@ -2607,5 +2608,5 @@ index 000000000..c933df80d
+ }
+}
--
-2.39.2
+2.39.5
diff --git a/config/grub/nvme/patches/0006-Error-on-missing-Argon2id-parameters.patch b/config/grub/nvme/patches/0006-Error-on-missing-Argon2id-parameters.patch
index 98a69414..c94c7580 100644
--- a/config/grub/nvme/patches/0006-Error-on-missing-Argon2id-parameters.patch
+++ b/config/grub/nvme/patches/0006-Error-on-missing-Argon2id-parameters.patch
@@ -1,4 +1,4 @@
-From 916de62553b3bcc4a565e1ea8f562031fb2a7b0f Mon Sep 17 00:00:00 2001
+From d3b500914ce84be6bcae0f4f5fefff21e4e0ca63 Mon Sep 17 00:00:00 2001
From: Ax333l <main@axelen.xyz>
Date: Thu, 17 Aug 2023 00:00:00 +0000
Subject: [PATCH 06/14] Error on missing Argon2id parameters
@@ -54,5 +54,5 @@ index d5106402f..bc818ea69 100644
goto err;
case LUKS2_KDF_TYPE_PBKDF2:
--
-2.39.2
+2.39.5
diff --git a/config/grub/nvme/patches/0007-Compile-with-Argon2id-support.patch b/config/grub/nvme/patches/0007-Compile-with-Argon2id-support.patch
index 487ab2a2..cd4b6e49 100644
--- a/config/grub/nvme/patches/0007-Compile-with-Argon2id-support.patch
+++ b/config/grub/nvme/patches/0007-Compile-with-Argon2id-support.patch
@@ -1,4 +1,4 @@
-From fa5deb59606422773ba8e77f3ab56226a10b116b Mon Sep 17 00:00:00 2001
+From 5774fd23a381d7d96e65ede9dd300b7e83fa1f06 Mon Sep 17 00:00:00 2001
From: Ax333l <main@axelen.xyz>
Date: Thu, 17 Aug 2023 00:00:00 +0000
Subject: [PATCH 07/14] Compile with Argon2id support
@@ -11,7 +11,7 @@ Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch>
3 files changed, 17 insertions(+), 4 deletions(-)
diff --git a/Makefile.util.def b/Makefile.util.def
-index 0f74a1680..5a15e5637 100644
+index 038253b37..2f19569c9 100644
--- a/Makefile.util.def
+++ b/Makefile.util.def
@@ -3,7 +3,7 @@ AutoGen definitions Makefile.tpl;
@@ -35,7 +35,7 @@ index 0f74a1680..5a15e5637 100644
common = grub-core/disk/luks.c;
common = grub-core/disk/luks2.c;
diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
-index 452f11b20..5c1af8682 100644
+index f5f9b040c..f1f38d8d3 100644
--- a/grub-core/Makefile.core.def
+++ b/grub-core/Makefile.core.def
@@ -1242,7 +1242,7 @@ module = {
@@ -79,5 +79,5 @@ index bc818ea69..5b9eaa599 100644
hash = grub_crypto_lookup_md_by_name (k->kdf.u.pbkdf2.hash);
if (!hash)
--
-2.39.2
+2.39.5
diff --git a/config/grub/nvme/patches/0008-Make-grub-install-work-with-Argon2.patch b/config/grub/nvme/patches/0008-Make-grub-install-work-with-Argon2.patch
index 327989fa..7e240cc8 100644
--- a/config/grub/nvme/patches/0008-Make-grub-install-work-with-Argon2.patch
+++ b/config/grub/nvme/patches/0008-Make-grub-install-work-with-Argon2.patch
@@ -1,4 +1,4 @@
-From dad12fd3307bd15e55f5ea483f174a1d3eaa45f5 Mon Sep 17 00:00:00 2001
+From b8b9be1749d4802dde57f3547a1ee91c8fec1c3e Mon Sep 17 00:00:00 2001
From: Ax333l <main@axelen.xyz>
Date: Thu, 17 Aug 2023 00:00:00 +0000
Subject: [PATCH 08/14] Make grub-install work with Argon2
@@ -22,5 +22,5 @@ index 7dc5657bb..cf7315891 100644
have_cryptodisk = 1;
}
--
-2.39.2
+2.39.5
diff --git a/config/grub/nvme/patches/0009-at_keyboard-coreboot-force-scancodes2-translate.patch b/config/grub/nvme/patches/0009-at_keyboard-coreboot-force-scancodes2-translate.patch
index ddd3b85b..0fea10a5 100644
--- a/config/grub/nvme/patches/0009-at_keyboard-coreboot-force-scancodes2-translate.patch
+++ b/config/grub/nvme/patches/0009-at_keyboard-coreboot-force-scancodes2-translate.patch
@@ -1,4 +1,4 @@
-From 55d2ea1ebaa6b399736aa24393e08d007fde988c Mon Sep 17 00:00:00 2001
+From 93790c5686ea2ac4da8d2c67377fe84fd37df953 Mon Sep 17 00:00:00 2001
From: Leah Rowe <leah@libreboot.org>
Date: Mon, 30 Oct 2023 22:19:21 +0000
Subject: [PATCH 09/14] at_keyboard coreboot: force scancodes2+translate
@@ -103,5 +103,5 @@ index f8a129eb7..8207225c2 100644
grub_dprintf ("atkeyb", "returned set %d\n", ps2_state.current_set);
if (ps2_state.current_set == 2)
--
-2.39.2
+2.39.5
diff --git a/config/grub/nvme/patches/0010-keylayouts-don-t-print-Unknown-key-message.patch b/config/grub/nvme/patches/0010-keylayouts-don-t-print-Unknown-key-message.patch
index ed3c1f4a..06c308d1 100644
--- a/config/grub/nvme/patches/0010-keylayouts-don-t-print-Unknown-key-message.patch
+++ b/config/grub/nvme/patches/0010-keylayouts-don-t-print-Unknown-key-message.patch
@@ -1,4 +1,4 @@
-From 4e89b0da7213b710bfb4d95a20e34b193f39e58c Mon Sep 17 00:00:00 2001
+From a18f0ddb9a396828bd11f540ed134047efe4b2bd Mon Sep 17 00:00:00 2001
From: Leah Rowe <leah@libreboot.org>
Date: Tue, 31 Oct 2023 10:33:28 +0000
Subject: [PATCH 10/14] keylayouts: don't print "Unknown key" message
@@ -34,5 +34,5 @@ index aa3ba34f2..445fa0601 100644
}
--
-2.39.2
+2.39.5
diff --git a/config/grub/nvme/patches/0011-don-t-print-missing-prefix-errors-on-the-screen.patch b/config/grub/nvme/patches/0011-don-t-print-missing-prefix-errors-on-the-screen.patch
index 77cb7a64..f2b8de10 100644
--- a/config/grub/nvme/patches/0011-don-t-print-missing-prefix-errors-on-the-screen.patch
+++ b/config/grub/nvme/patches/0011-don-t-print-missing-prefix-errors-on-the-screen.patch
@@ -1,4 +1,4 @@
-From d14c9af2656ee6b63b029ac28816f38d4ae26946 Mon Sep 17 00:00:00 2001
+From 233c4f1a1182fd10ef60da98dd00b687c9edbee4 Mon Sep 17 00:00:00 2001
From: Leah Rowe <leah@libreboot.org>
Date: Sun, 5 Nov 2023 16:14:58 +0000
Subject: [PATCH 11/14] don't print missing prefix errors on the screen
@@ -85,10 +85,10 @@ index 18de52562..2a0fea6c8 100644
}
file = try_open_from_prefix (prefix, filename);
diff --git a/grub-core/kern/dl.c b/grub-core/kern/dl.c
-index 4011e2d15..af3bd00d0 100644
+index 9980bae90..4457cad7c 100644
--- a/grub-core/kern/dl.c
+++ b/grub-core/kern/dl.c
-@@ -758,7 +758,7 @@ grub_dl_load (const char *name)
+@@ -871,7 +871,7 @@ grub_dl_load (const char *name)
return 0;
if (! grub_dl_dir) {
@@ -98,5 +98,5 @@ index 4011e2d15..af3bd00d0 100644
}
--
-2.39.2
+2.39.5
diff --git a/config/grub/nvme/patches/0012-don-t-print-error-if-module-not-found.patch b/config/grub/nvme/patches/0012-don-t-print-error-if-module-not-found.patch
index ada8288e..41b0c2a8 100644
--- a/config/grub/nvme/patches/0012-don-t-print-error-if-module-not-found.patch
+++ b/config/grub/nvme/patches/0012-don-t-print-error-if-module-not-found.patch
@@ -1,4 +1,4 @@
-From d58c6298f62e70084a14aabc6c46b31d61f28152 Mon Sep 17 00:00:00 2001
+From c5ef7185f0e32a1a33aca181427cbee8f22af8d2 Mon Sep 17 00:00:00 2001
From: Leah Rowe <leah@libreboot.org>
Date: Sun, 5 Nov 2023 16:36:22 +0000
Subject: [PATCH 12/14] don't print error if module not found
@@ -17,10 +17,10 @@ Signed-off-by: Leah Rowe <leah@libreboot.org>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/grub-core/kern/dl.c b/grub-core/kern/dl.c
-index af3bd00d0..21d0cedb1 100644
+index 4457cad7c..ea9fe8019 100644
--- a/grub-core/kern/dl.c
+++ b/grub-core/kern/dl.c
-@@ -486,7 +486,7 @@ grub_dl_resolve_name (grub_dl_t mod, Elf_Ehdr *e)
+@@ -510,7 +510,7 @@ grub_dl_resolve_name (grub_dl_t mod, Elf_Ehdr *e)
s = grub_dl_find_section (e, ".modname");
if (!s)
@@ -30,5 +30,5 @@ index af3bd00d0..21d0cedb1 100644
mod->name = grub_strdup ((char *) e + s->sh_offset);
if (! mod->name)
--
-2.39.2
+2.39.5
diff --git a/config/grub/nvme/patches/0013-don-t-print-empty-error-messages.patch b/config/grub/nvme/patches/0013-don-t-print-empty-error-messages.patch
index f89977b4..0c9c7f80 100644
--- a/config/grub/nvme/patches/0013-don-t-print-empty-error-messages.patch
+++ b/config/grub/nvme/patches/0013-don-t-print-empty-error-messages.patch
@@ -1,4 +1,4 @@
-From 031ee85c97452f6d1a5f341ff41c65aace5584c4 Mon Sep 17 00:00:00 2001
+From 8e8d7a4f391538e4c0d42226ac48f5a1325deeb5 Mon Sep 17 00:00:00 2001
From: Leah Rowe <leah@libreboot.org>
Date: Sun, 5 Nov 2023 17:25:20 +0000
Subject: [PATCH 13/14] don't print empty error messages
@@ -27,5 +27,5 @@ index 53c734de7..7cac53983 100644
}
}
--
-2.39.2
+2.39.5
diff --git a/config/grub/nvme/patches/0014-Add-native-NVMe-driver-based-on-SeaBIOS.patch b/config/grub/nvme/patches/0014-Add-native-NVMe-driver-based-on-SeaBIOS.patch
index bfe28efd..c6b7bb87 100644
--- a/config/grub/nvme/patches/0014-Add-native-NVMe-driver-based-on-SeaBIOS.patch
+++ b/config/grub/nvme/patches/0014-Add-native-NVMe-driver-based-on-SeaBIOS.patch
@@ -1,4 +1,4 @@
-From 246a626a369fc3730c6b5c21982fd89ed19c6fe0 Mon Sep 17 00:00:00 2001
+From 0e358c800b58f8122e8d333541eba08cf1b4dbef Mon Sep 17 00:00:00 2001
From: Mate Kukri <km@mkukri.xyz>
Date: Mon, 20 May 2024 11:43:35 +0100
Subject: [PATCH 14/14] Add native NVMe driver based on SeaBIOS
@@ -31,19 +31,20 @@ index 43635d5ff..2c86dbbf6 100644
endif
diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
-index 5c1af8682..02967d3ff 100644
+index f1f38d8d3..d09f9ffbc 100644
--- a/grub-core/Makefile.core.def
+++ b/grub-core/Makefile.core.def
-@@ -2614,3 +2614,9 @@ module = {
- enable = efi;
- depends = part_gpt;
- };
+@@ -2676,4 +2676,10 @@ module = {
+ common = tests/asn1/asn1_test.c;
+ cflags = '-Wno-uninitialized';
+ cppflags = '-I$(srcdir)/lib/libtasn1-grub -I$(srcdir)/tests/asn1/';
++};
+
+module = {
+ name = nvme;
+ common = disk/nvme.c;
+ enable = pci;
-+};
+ };
diff --git a/grub-core/commands/nativedisk.c b/grub-core/commands/nativedisk.c
index 6806bff9c..fd68a513e 100644
--- a/grub-core/commands/nativedisk.c
@@ -1070,5 +1071,5 @@ index fbf23df7f..186e76f0b 100644
struct grub_disk;
--
-2.39.2
+2.39.5
diff --git a/config/grub/nvme/target.cfg b/config/grub/nvme/target.cfg
index 331070b0..ea4018df 100644
--- a/config/grub/nvme/target.cfg
+++ b/config/grub/nvme/target.cfg
@@ -1,4 +1,4 @@
# SPDX-License-Identifier: GPL-3.0-or-later
tree="nvme"
-rev="b53ec06a1d6f22ffc1139cbfc0f292e4ca2da9cd"
+rev="6811f6f09d61996a3acbc4fc0414e45964f0e2d9"
diff --git a/config/grub/xhci/patches/0001-mitigate-grub-s-missing-characters-for-borders-arrow.patch b/config/grub/xhci/patches/0001-mitigate-grub-s-missing-characters-for-borders-arrow.patch
index 0cc0cb34..757c8e03 100644
--- a/config/grub/xhci/patches/0001-mitigate-grub-s-missing-characters-for-borders-arrow.patch
+++ b/config/grub/xhci/patches/0001-mitigate-grub-s-missing-characters-for-borders-arrow.patch
@@ -1,4 +1,4 @@
-From 1ee64f2373af3ad992993f9cf103a29df0359c3c Mon Sep 17 00:00:00 2001
+From c94b9ea258feb53773bab06bc2a6c6e66a44f867 Mon Sep 17 00:00:00 2001
From: Leah Rowe <leah@libreboot.org>
Date: Sun, 31 Oct 2021 03:47:05 +0000
Subject: [PATCH 01/22] mitigate grub's missing characters for borders/arrow
@@ -86,5 +86,5 @@ index 9c383e64a..8ec1dd1e8 100644
grub_term_highlight_color = old_color_highlight;
geo->timeout_y = geo->first_entry_y + geo->num_entries
--
-2.39.2
+2.39.5
diff --git a/config/grub/xhci/patches/0002-say-the-name-libreboot-in-the-grub-menu.patch b/config/grub/xhci/patches/0002-say-the-name-libreboot-in-the-grub-menu.patch
index 26c7df43..c6da216d 100644
--- a/config/grub/xhci/patches/0002-say-the-name-libreboot-in-the-grub-menu.patch
+++ b/config/grub/xhci/patches/0002-say-the-name-libreboot-in-the-grub-menu.patch
@@ -1,4 +1,4 @@
-From 0e89a40423cdd6f8f20ad03d1c2f54ee7b5ea1b6 Mon Sep 17 00:00:00 2001
+From da775eafbe79e3100ca2262bde49e3e65978e83f Mon Sep 17 00:00:00 2001
From: Leah Rowe <leah@libreboot.org>
Date: Sat, 19 Nov 2022 16:30:24 +0000
Subject: [PATCH 02/22] say the name libreboot, in the grub menu
@@ -8,7 +8,7 @@ Subject: [PATCH 02/22] say the name libreboot, in the grub menu
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/grub-core/normal/main.c b/grub-core/normal/main.c
-index bd4431000..300f55fe1 100644
+index bd4431000..ff16e0f2e 100644
--- a/grub-core/normal/main.c
+++ b/grub-core/normal/main.c
@@ -209,7 +209,7 @@ grub_normal_init_page (struct grub_term_output *term,
@@ -21,5 +21,5 @@ index bd4431000..300f55fe1 100644
return;
--
-2.39.2
+2.39.5
diff --git a/config/grub/xhci/patches/0003-Add-CC0-license.patch b/config/grub/xhci/patches/0003-Add-CC0-license.patch
index cf35c343..44d27eb5 100644
--- a/config/grub/xhci/patches/0003-Add-CC0-license.patch
+++ b/config/grub/xhci/patches/0003-Add-CC0-license.patch
@@ -1,4 +1,4 @@
-From c9be46c903d4aabc88fe4d9394d7a8e024868c32 Mon Sep 17 00:00:00 2001
+From b91e5cafa7863b5a61e97d483f98dcece374721a Mon Sep 17 00:00:00 2001
From: Ax333l <main@axelen.xyz>
Date: Thu, 17 Aug 2023 00:00:00 +0000
Subject: [PATCH 03/22] Add CC0 license
@@ -10,10 +10,10 @@ Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch>
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/grub-core/kern/dl.c b/grub-core/kern/dl.c
-index 0bf40caa6..4011e2d15 100644
+index 8ad015b07..9980bae90 100644
--- a/grub-core/kern/dl.c
+++ b/grub-core/kern/dl.c
-@@ -470,7 +470,8 @@ grub_dl_check_license (grub_dl_t mod, Elf_Ehdr *e)
+@@ -494,7 +494,8 @@ grub_dl_check_license (grub_dl_t mod, Elf_Ehdr *e)
if (grub_strcmp ((char *) e + s->sh_offset, "LICENSE=GPLv3") == 0
|| grub_strcmp ((char *) e + s->sh_offset, "LICENSE=GPLv3+") == 0
@@ -38,5 +38,5 @@ index a42c20bd1..7157a30aa 100644
grub_util_error ("%s: incompatible license", filename);
}
--
-2.39.2
+2.39.5
diff --git a/config/grub/xhci/patches/0004-Define-GRUB_UINT32_MAX.patch b/config/grub/xhci/patches/0004-Define-GRUB_UINT32_MAX.patch
index 08566ba9..2d830d43 100644
--- a/config/grub/xhci/patches/0004-Define-GRUB_UINT32_MAX.patch
+++ b/config/grub/xhci/patches/0004-Define-GRUB_UINT32_MAX.patch
@@ -1,4 +1,4 @@
-From c988b6b3bb7567f9ed6bb0332b992577011970c2 Mon Sep 17 00:00:00 2001
+From 58e0d7b7bcec2392b81dda613d070804f7c68cf5 Mon Sep 17 00:00:00 2001
From: Ax333l <main@axelen.xyz>
Date: Thu, 17 Aug 2023 00:00:00 +0000
Subject: [PATCH 04/22] Define GRUB_UINT32_MAX
@@ -35,5 +35,5 @@ index 45079bf65..8c0b30395 100644
#define GRUB_PROPERLY_ALIGNED_ARRAY(name, size) grub_properly_aligned_t name[((size) + sizeof (grub_properly_aligned_t) - 1) / sizeof (grub_properly_aligned_t)]
--
-2.39.2
+2.39.5
diff --git a/config/grub/xhci/patches/0005-Add-Argon2-algorithm.patch b/config/grub/xhci/patches/0005-Add-Argon2-algorithm.patch
index 85a629c5..ff2dc74e 100644
--- a/config/grub/xhci/patches/0005-Add-Argon2-algorithm.patch
+++ b/config/grub/xhci/patches/0005-Add-Argon2-algorithm.patch
@@ -1,4 +1,4 @@
-From e2cfe7dcdb384ce5268a7c6e5cc8a6e8e01fc05f Mon Sep 17 00:00:00 2001
+From 65a9b252b79d5d1fa022e3da9ef91459ad8efb94 Mon Sep 17 00:00:00 2001
From: Ax333l <main@axelen.xyz>
Date: Thu, 17 Aug 2023 00:00:00 +0000
Subject: [PATCH 05/22] Add Argon2 algorithm
@@ -30,10 +30,10 @@ Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch>
create mode 100644 grub-core/lib/argon2/ref.c
diff --git a/docs/grub-dev.texi b/docs/grub-dev.texi
-index 1276c5930..cd6fb0e1e 100644
+index 3ad8e3efa..d7c6232af 100644
--- a/docs/grub-dev.texi
+++ b/docs/grub-dev.texi
-@@ -503,11 +503,75 @@ GRUB includes some code from other projects, and it is sometimes necessary
+@@ -503,12 +503,76 @@ GRUB includes some code from other projects, and it is sometimes necessary
to update it.
@menu
@@ -41,6 +41,7 @@ index 1276c5930..cd6fb0e1e 100644
* Gnulib::
* jsmn::
* minilzo::
+ * libtasn1::
@end menu
+@node Argon2
@@ -110,7 +111,7 @@ index 1276c5930..cd6fb0e1e 100644
@section Gnulib
diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
-index 705d73fab..452f11b20 100644
+index f70e02e69..f5f9b040c 100644
--- a/grub-core/Makefile.core.def
+++ b/grub-core/Makefile.core.def
@@ -1219,6 +1219,14 @@ module = {
@@ -2607,5 +2608,5 @@ index 000000000..c933df80d
+ }
+}
--
-2.39.2
+2.39.5
diff --git a/config/grub/xhci/patches/0006-Error-on-missing-Argon2id-parameters.patch b/config/grub/xhci/patches/0006-Error-on-missing-Argon2id-parameters.patch
index 30de08cc..22553006 100644
--- a/config/grub/xhci/patches/0006-Error-on-missing-Argon2id-parameters.patch
+++ b/config/grub/xhci/patches/0006-Error-on-missing-Argon2id-parameters.patch
@@ -1,4 +1,4 @@
-From 08a2fce70c6e988eb0112d5ad2787843910811bc Mon Sep 17 00:00:00 2001
+From 809908898f9d67979885a651b295ca1fa066039c Mon Sep 17 00:00:00 2001
From: Ax333l <main@axelen.xyz>
Date: Thu, 17 Aug 2023 00:00:00 +0000
Subject: [PATCH 06/22] Error on missing Argon2id parameters
@@ -54,5 +54,5 @@ index d5106402f..bc818ea69 100644
goto err;
case LUKS2_KDF_TYPE_PBKDF2:
--
-2.39.2
+2.39.5
diff --git a/config/grub/xhci/patches/0007-Compile-with-Argon2id-support.patch b/config/grub/xhci/patches/0007-Compile-with-Argon2id-support.patch
index 23f361dc..b77a5751 100644
--- a/config/grub/xhci/patches/0007-Compile-with-Argon2id-support.patch
+++ b/config/grub/xhci/patches/0007-Compile-with-Argon2id-support.patch
@@ -1,4 +1,4 @@
-From 268da8d0ccce822ffa4c2d9d35fe717245daa726 Mon Sep 17 00:00:00 2001
+From 26ae5da9ed8382869b699a653988e6c8f32bd3d1 Mon Sep 17 00:00:00 2001
From: Ax333l <main@axelen.xyz>
Date: Thu, 17 Aug 2023 00:00:00 +0000
Subject: [PATCH 07/22] Compile with Argon2id support
@@ -11,7 +11,7 @@ Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch>
3 files changed, 17 insertions(+), 4 deletions(-)
diff --git a/Makefile.util.def b/Makefile.util.def
-index 0f74a1680..5a15e5637 100644
+index 038253b37..2f19569c9 100644
--- a/Makefile.util.def
+++ b/Makefile.util.def
@@ -3,7 +3,7 @@ AutoGen definitions Makefile.tpl;
@@ -35,7 +35,7 @@ index 0f74a1680..5a15e5637 100644
common = grub-core/disk/luks.c;
common = grub-core/disk/luks2.c;
diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
-index 452f11b20..5c1af8682 100644
+index f5f9b040c..f1f38d8d3 100644
--- a/grub-core/Makefile.core.def
+++ b/grub-core/Makefile.core.def
@@ -1242,7 +1242,7 @@ module = {
@@ -79,5 +79,5 @@ index bc818ea69..5b9eaa599 100644
hash = grub_crypto_lookup_md_by_name (k->kdf.u.pbkdf2.hash);
if (!hash)
--
-2.39.2
+2.39.5
diff --git a/config/grub/xhci/patches/0008-Make-grub-install-work-with-Argon2.patch b/config/grub/xhci/patches/0008-Make-grub-install-work-with-Argon2.patch
index ffdb306c..00f94eef 100644
--- a/config/grub/xhci/patches/0008-Make-grub-install-work-with-Argon2.patch
+++ b/config/grub/xhci/patches/0008-Make-grub-install-work-with-Argon2.patch
@@ -1,4 +1,4 @@
-From 5e540d3e4c01940c66425c4475a1cb6a35b188e8 Mon Sep 17 00:00:00 2001
+From 6ce0b0629aa1377237c19290f33008ff81969962 Mon Sep 17 00:00:00 2001
From: Ax333l <main@axelen.xyz>
Date: Thu, 17 Aug 2023 00:00:00 +0000
Subject: [PATCH 08/22] Make grub-install work with Argon2
@@ -22,5 +22,5 @@ index 7dc5657bb..cf7315891 100644
have_cryptodisk = 1;
}
--
-2.39.2
+2.39.5
diff --git a/config/grub/xhci/patches/0009-at_keyboard-coreboot-force-scancodes2-translate.patch b/config/grub/xhci/patches/0009-at_keyboard-coreboot-force-scancodes2-translate.patch
index e4b26a38..31798205 100644
--- a/config/grub/xhci/patches/0009-at_keyboard-coreboot-force-scancodes2-translate.patch
+++ b/config/grub/xhci/patches/0009-at_keyboard-coreboot-force-scancodes2-translate.patch
@@ -1,4 +1,4 @@
-From 9e9c69a74e5c14fd87ae56c8b9171a808d89742e Mon Sep 17 00:00:00 2001
+From 3f69e2c35ccf2a37fd35f1821c7b85cc6df07ca7 Mon Sep 17 00:00:00 2001
From: Leah Rowe <leah@libreboot.org>
Date: Mon, 30 Oct 2023 22:19:21 +0000
Subject: [PATCH 09/22] at_keyboard coreboot: force scancodes2+translate
@@ -103,5 +103,5 @@ index f8a129eb7..8207225c2 100644
grub_dprintf ("atkeyb", "returned set %d\n", ps2_state.current_set);
if (ps2_state.current_set == 2)
--
-2.39.2
+2.39.5
diff --git a/config/grub/xhci/patches/0010-keylayouts-don-t-print-Unknown-key-message.patch b/config/grub/xhci/patches/0010-keylayouts-don-t-print-Unknown-key-message.patch
index e8a3ce14..742aae38 100644
--- a/config/grub/xhci/patches/0010-keylayouts-don-t-print-Unknown-key-message.patch
+++ b/config/grub/xhci/patches/0010-keylayouts-don-t-print-Unknown-key-message.patch
@@ -1,4 +1,4 @@
-From ccbcdb93af6747fe77094dfa9e114a034420bdd5 Mon Sep 17 00:00:00 2001
+From 44befdaa1ee588591f46c13d057fdef56b87218c Mon Sep 17 00:00:00 2001
From: Leah Rowe <leah@libreboot.org>
Date: Tue, 31 Oct 2023 10:33:28 +0000
Subject: [PATCH 10/22] keylayouts: don't print "Unknown key" message
@@ -34,5 +34,5 @@ index aa3ba34f2..445fa0601 100644
}
--
-2.39.2
+2.39.5
diff --git a/config/grub/xhci/patches/0011-don-t-print-missing-prefix-errors-on-the-screen.patch b/config/grub/xhci/patches/0011-don-t-print-missing-prefix-errors-on-the-screen.patch
index de68bb78..960c693d 100644
--- a/config/grub/xhci/patches/0011-don-t-print-missing-prefix-errors-on-the-screen.patch
+++ b/config/grub/xhci/patches/0011-don-t-print-missing-prefix-errors-on-the-screen.patch
@@ -1,4 +1,4 @@
-From 21a829a3a6f5e7d9028059df8057fdf8bce8fe06 Mon Sep 17 00:00:00 2001
+From bfecf6d86ccf82fb85af93600931cee589891089 Mon Sep 17 00:00:00 2001
From: Leah Rowe <leah@libreboot.org>
Date: Sun, 5 Nov 2023 16:14:58 +0000
Subject: [PATCH 11/22] don't print missing prefix errors on the screen
@@ -85,10 +85,10 @@ index 18de52562..2a0fea6c8 100644
}
file = try_open_from_prefix (prefix, filename);
diff --git a/grub-core/kern/dl.c b/grub-core/kern/dl.c
-index 4011e2d15..af3bd00d0 100644
+index 9980bae90..4457cad7c 100644
--- a/grub-core/kern/dl.c
+++ b/grub-core/kern/dl.c
-@@ -758,7 +758,7 @@ grub_dl_load (const char *name)
+@@ -871,7 +871,7 @@ grub_dl_load (const char *name)
return 0;
if (! grub_dl_dir) {
@@ -98,5 +98,5 @@ index 4011e2d15..af3bd00d0 100644
}
--
-2.39.2
+2.39.5
diff --git a/config/grub/xhci/patches/0012-don-t-print-error-if-module-not-found.patch b/config/grub/xhci/patches/0012-don-t-print-error-if-module-not-found.patch
index 37f52e03..c098f7e8 100644
--- a/config/grub/xhci/patches/0012-don-t-print-error-if-module-not-found.patch
+++ b/config/grub/xhci/patches/0012-don-t-print-error-if-module-not-found.patch
@@ -1,4 +1,4 @@
-From edb8208100c523b5776f2cb0712fdc0c9065e517 Mon Sep 17 00:00:00 2001
+From f44fc56f06559313841de2b53637020fbe139803 Mon Sep 17 00:00:00 2001
From: Leah Rowe <leah@libreboot.org>
Date: Sun, 5 Nov 2023 16:36:22 +0000
Subject: [PATCH 12/22] don't print error if module not found
@@ -17,10 +17,10 @@ Signed-off-by: Leah Rowe <leah@libreboot.org>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/grub-core/kern/dl.c b/grub-core/kern/dl.c
-index af3bd00d0..21d0cedb1 100644
+index 4457cad7c..ea9fe8019 100644
--- a/grub-core/kern/dl.c
+++ b/grub-core/kern/dl.c
-@@ -486,7 +486,7 @@ grub_dl_resolve_name (grub_dl_t mod, Elf_Ehdr *e)
+@@ -510,7 +510,7 @@ grub_dl_resolve_name (grub_dl_t mod, Elf_Ehdr *e)
s = grub_dl_find_section (e, ".modname");
if (!s)
@@ -30,5 +30,5 @@ index af3bd00d0..21d0cedb1 100644
mod->name = grub_strdup ((char *) e + s->sh_offset);
if (! mod->name)
--
-2.39.2
+2.39.5
diff --git a/config/grub/xhci/patches/0013-don-t-print-empty-error-messages.patch b/config/grub/xhci/patches/0013-don-t-print-empty-error-messages.patch
index 74d8bade..23672773 100644
--- a/config/grub/xhci/patches/0013-don-t-print-empty-error-messages.patch
+++ b/config/grub/xhci/patches/0013-don-t-print-empty-error-messages.patch
@@ -1,4 +1,4 @@
-From 65cb1871a3e125355df78a6d1d6f1bc7e356c4e8 Mon Sep 17 00:00:00 2001
+From e459ed55902003644e7bcd76361cc43247231a99 Mon Sep 17 00:00:00 2001
From: Leah Rowe <leah@libreboot.org>
Date: Sun, 5 Nov 2023 17:25:20 +0000
Subject: [PATCH 13/22] don't print empty error messages
@@ -27,5 +27,5 @@ index 53c734de7..7cac53983 100644
}
}
--
-2.39.2
+2.39.5
diff --git a/config/grub/xhci/patches/0014-grub-core-bus-usb-Parse-SuperSpeed-companion-descrip.patch b/config/grub/xhci/patches/0014-grub-core-bus-usb-Parse-SuperSpeed-companion-descrip.patch
index 4c84b8c3..bc18cb13 100644
--- a/config/grub/xhci/patches/0014-grub-core-bus-usb-Parse-SuperSpeed-companion-descrip.patch
+++ b/config/grub/xhci/patches/0014-grub-core-bus-usb-Parse-SuperSpeed-companion-descrip.patch
@@ -1,4 +1,4 @@
-From 3273128b6dc6df83ef6b1d54d009a1ae26844bff Mon Sep 17 00:00:00 2001
+From 85fdf29d37b58be96042d6df24f8bc08bba9906d Mon Sep 17 00:00:00 2001
From: Patrick Rudolph <patrick.rudolph@9elements.com>
Date: Sun, 15 Nov 2020 19:00:27 +0100
Subject: [PATCH 14/22] grub-core/bus/usb: Parse SuperSpeed companion
@@ -242,5 +242,5 @@ index aac5ab05a..bb2ab2e27 100644
{
grub_uint8_t length;
--
-2.39.2
+2.39.5
diff --git a/config/grub/xhci/patches/0015-usb-Add-enum-for-xHCI.patch b/config/grub/xhci/patches/0015-usb-Add-enum-for-xHCI.patch
index 937ff1af..d8330e59 100644
--- a/config/grub/xhci/patches/0015-usb-Add-enum-for-xHCI.patch
+++ b/config/grub/xhci/patches/0015-usb-Add-enum-for-xHCI.patch
@@ -1,4 +1,4 @@
-From 3b8f2defcda1a3b51ad0be8795a2338a0ed5ca59 Mon Sep 17 00:00:00 2001
+From 26a5ed135c94b295b9a0037f5e7201eb5d38fde4 Mon Sep 17 00:00:00 2001
From: Patrick Rudolph <patrick.rudolph@9elements.com>
Date: Sun, 15 Nov 2020 19:47:06 +0100
Subject: [PATCH 15/22] usb: Add enum for xHCI
@@ -25,5 +25,5 @@ index 688c11f6d..ea6ee8c2c 100644
typedef int (*grub_usb_iterate_hook_t) (grub_usb_device_t dev, void *data);
--
-2.39.2
+2.39.5
diff --git a/config/grub/xhci/patches/0016-usbtrans-Set-default-maximum-packet-size.patch b/config/grub/xhci/patches/0016-usbtrans-Set-default-maximum-packet-size.patch
index 8f6bb001..27402534 100644
--- a/config/grub/xhci/patches/0016-usbtrans-Set-default-maximum-packet-size.patch
+++ b/config/grub/xhci/patches/0016-usbtrans-Set-default-maximum-packet-size.patch
@@ -1,4 +1,4 @@
-From ba7ce6daec155bc3deac4e0c48d470afa024ab94 Mon Sep 17 00:00:00 2001
+From 13bc84d9f43328ba47273cbcf87c517398dcfc93 Mon Sep 17 00:00:00 2001
From: Patrick Rudolph <patrick.rudolph@9elements.com>
Date: Sun, 15 Nov 2020 19:48:03 +0100
Subject: [PATCH 16/22] usbtrans: Set default maximum packet size
@@ -29,5 +29,5 @@ index c5680b33a..c1080bb33 100644
max = 64;
--
-2.39.2
+2.39.5
diff --git a/config/grub/xhci/patches/0017-grub-core-bus-usb-Add-function-pointer-for-attach-de.patch b/config/grub/xhci/patches/0017-grub-core-bus-usb-Add-function-pointer-for-attach-de.patch
index 60680bd0..eede3791 100644
--- a/config/grub/xhci/patches/0017-grub-core-bus-usb-Add-function-pointer-for-attach-de.patch
+++ b/config/grub/xhci/patches/0017-grub-core-bus-usb-Add-function-pointer-for-attach-de.patch
@@ -1,4 +1,4 @@
-From c4cd7fbe3e2e8ff4cbe6d0db8c3356aeee614af5 Mon Sep 17 00:00:00 2001
+From 1518589ff286b54a27d4b11f017cb43c90cbf566 Mon Sep 17 00:00:00 2001
From: Patrick Rudolph <patrick.rudolph@9elements.com>
Date: Sun, 15 Nov 2020 19:51:42 +0100
Subject: [PATCH 17/22] grub-core/bus/usb: Add function pointer for
@@ -117,5 +117,5 @@ index ea6ee8c2c..4dd179db2 100644
grub_uint64_t pending_reset;
--
-2.39.2
+2.39.5
diff --git a/config/grub/xhci/patches/0018-grub-core-bus-usb-usbhub-Add-new-private-fields-for-.patch b/config/grub/xhci/patches/0018-grub-core-bus-usb-usbhub-Add-new-private-fields-for-.patch
index bc0f957f..099ef79d 100644
--- a/config/grub/xhci/patches/0018-grub-core-bus-usb-usbhub-Add-new-private-fields-for-.patch
+++ b/config/grub/xhci/patches/0018-grub-core-bus-usb-usbhub-Add-new-private-fields-for-.patch
@@ -1,4 +1,4 @@
-From 1ab23afbfa7ae436741947c0b9bdacc434ad6153 Mon Sep 17 00:00:00 2001
+From 8dd981a95cc7731b63b2d79ce6f98ce2d6b5a993 Mon Sep 17 00:00:00 2001
From: Patrick Rudolph <patrick.rudolph@9elements.com>
Date: Sun, 15 Nov 2020 19:54:40 +0100
Subject: [PATCH 18/22] grub-core/bus/usb/usbhub: Add new private fields for
@@ -73,5 +73,5 @@ index 4dd179db2..609faf7d0 100644
--
-2.39.2
+2.39.5
diff --git a/config/grub/xhci/patches/0019-grub-core-bus-usb-Add-xhci-support.patch b/config/grub/xhci/patches/0019-grub-core-bus-usb-Add-xhci-support.patch
index 02a24d5a..aaabb3da 100644
--- a/config/grub/xhci/patches/0019-grub-core-bus-usb-Add-xhci-support.patch
+++ b/config/grub/xhci/patches/0019-grub-core-bus-usb-Add-xhci-support.patch
@@ -1,4 +1,4 @@
-From 8c9e61e7b0f28a66d0f63c07b10fc6617a709010 Mon Sep 17 00:00:00 2001
+From dde187c07a8f2a1d3357aa362ffcc0fe8dab72d7 Mon Sep 17 00:00:00 2001
From: Patrick Rudolph <patrick.rudolph@9elements.com>
Date: Sun, 15 Nov 2020 19:59:25 +0100
Subject: [PATCH 19/22] grub-core/bus/usb: Add xhci support
@@ -74,7 +74,7 @@ index 43635d5ff..65016f856 100644
endif
diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
-index 5c1af8682..9d59acd1e 100644
+index f1f38d8d3..fda723f0c 100644
--- a/grub-core/Makefile.core.def
+++ b/grub-core/Makefile.core.def
@@ -667,6 +667,13 @@ module = {
@@ -2810,5 +2810,5 @@ index 609faf7d0..eb71fa1c7 100644
#endif /* GRUB_USB_H */
--
-2.39.2
+2.39.5
diff --git a/config/grub/xhci/patches/0020-grub-core-bus-usb-usbhub-Add-xHCI-non-root-hub-suppo.patch b/config/grub/xhci/patches/0020-grub-core-bus-usb-usbhub-Add-xHCI-non-root-hub-suppo.patch
index 735ef22d..6a3266b2 100644
--- a/config/grub/xhci/patches/0020-grub-core-bus-usb-usbhub-Add-xHCI-non-root-hub-suppo.patch
+++ b/config/grub/xhci/patches/0020-grub-core-bus-usb-usbhub-Add-xHCI-non-root-hub-suppo.patch
@@ -1,4 +1,4 @@
-From 127961742cf7992f6989c6e89a18ab6d8f0b297f Mon Sep 17 00:00:00 2001
+From 28856bd0646e0396b3d5249a99b731f2743aec5a Mon Sep 17 00:00:00 2001
From: Patrick Rudolph <patrick.rudolph@9elements.com>
Date: Thu, 3 Dec 2020 13:44:55 +0100
Subject: [PATCH 20/22] grub-core/bus/usb/usbhub: Add xHCI non root hub support
@@ -123,5 +123,5 @@ index 039ebed65..d6c3f71dc 100644
#define GRUB_USB_FEATURE_ENDP_HALT 0x00
#define GRUB_USB_FEATURE_DEV_REMOTE_WU 0x01
--
-2.39.2
+2.39.5
diff --git a/config/grub/xhci/patches/0021-Fix-compilation-on-x86_64.patch b/config/grub/xhci/patches/0021-Fix-compilation-on-x86_64.patch
index 6a5f0502..8f80664c 100644
--- a/config/grub/xhci/patches/0021-Fix-compilation-on-x86_64.patch
+++ b/config/grub/xhci/patches/0021-Fix-compilation-on-x86_64.patch
@@ -1,4 +1,4 @@
-From 8d46c537d4df8c785af4b85644d311ba53af5964 Mon Sep 17 00:00:00 2001
+From 040942842dc05c9b94c9be21f01b08da3e25fe6d Mon Sep 17 00:00:00 2001
From: Patrick Rudolph <patrick.rudolph@9elements.com>
Date: Wed, 24 Feb 2021 08:25:41 +0100
Subject: [PATCH 21/22] Fix compilation on x86_64
@@ -86,5 +86,5 @@ index f4591ffb5..3495bb919 100644
}
else
--
-2.39.2
+2.39.5
diff --git a/config/grub/xhci/patches/0022-Add-native-NVMe-driver-based-on-SeaBIOS.patch b/config/grub/xhci/patches/0022-Add-native-NVMe-driver-based-on-SeaBIOS.patch
index 82452f1c..c105dd19 100644
--- a/config/grub/xhci/patches/0022-Add-native-NVMe-driver-based-on-SeaBIOS.patch
+++ b/config/grub/xhci/patches/0022-Add-native-NVMe-driver-based-on-SeaBIOS.patch
@@ -1,4 +1,4 @@
-From 394102db8f4de6782b628b29c59d2634f2c72674 Mon Sep 17 00:00:00 2001
+From 2fb0de8881bd2fe637d05bec0ae887f380434b7d Mon Sep 17 00:00:00 2001
From: Mate Kukri <km@mkukri.xyz>
Date: Mon, 20 May 2024 11:43:35 +0100
Subject: [PATCH 22/22] Add native NVMe driver based on SeaBIOS
@@ -31,19 +31,20 @@ index 65016f856..7bc0866ba 100644
endif
diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
-index 9d59acd1e..56076728b 100644
+index fda723f0c..27a707fda 100644
--- a/grub-core/Makefile.core.def
+++ b/grub-core/Makefile.core.def
-@@ -2621,3 +2621,9 @@ module = {
- enable = efi;
- depends = part_gpt;
- };
+@@ -2683,4 +2683,10 @@ module = {
+ common = tests/asn1/asn1_test.c;
+ cflags = '-Wno-uninitialized';
+ cppflags = '-I$(srcdir)/lib/libtasn1-grub -I$(srcdir)/tests/asn1/';
++};
+
+module = {
+ name = nvme;
+ common = disk/nvme.c;
+ enable = pci;
-+};
+ };
diff --git a/grub-core/commands/nativedisk.c b/grub-core/commands/nativedisk.c
index 6806bff9c..fd68a513e 100644
--- a/grub-core/commands/nativedisk.c
@@ -1070,5 +1071,5 @@ index fbf23df7f..186e76f0b 100644
struct grub_disk;
--
-2.39.2
+2.39.5
diff --git a/config/grub/xhci/target.cfg b/config/grub/xhci/target.cfg
index f1ff519b..540f11f7 100644
--- a/config/grub/xhci/target.cfg
+++ b/config/grub/xhci/target.cfg
@@ -1,4 +1,4 @@
# SPDX-License-Identifier: GPL-3.0-or-later
tree="xhci"
-rev="b53ec06a1d6f22ffc1139cbfc0f292e4ca2da9cd"
+rev="6811f6f09d61996a3acbc4fc0414e45964f0e2d9"
diff --git a/config/seabios/default/target.cfg b/config/seabios/default/target.cfg
index 2ee6cf6f..9ff1db3e 100644
--- a/config/seabios/default/target.cfg
+++ b/config/seabios/default/target.cfg
@@ -1,4 +1,4 @@
# SPDX-License-Identifier: GPL-3.0-or-later
tree="default"
-rev="62a1429ec1ec67f14c039d97627a6a7ef70a983c"
+rev="1602647f1be24fe63d11138d802e735c8e674e63"
diff --git a/config/submodule/grub/default/gnulib/module.cfg b/config/submodule/grub/default/gnulib/module.cfg
index ca09e0ba..eaf40b24 100644
--- a/config/submodule/grub/default/gnulib/module.cfg
+++ b/config/submodule/grub/default/gnulib/module.cfg
@@ -1,5 +1,5 @@
# SPDX-License-Identifier: GPL-3.0-or-later
-subrepo="git://git.sv.gnu.org/gnulib"
-subrepo_bkup="https://codeberg.org/libreboot/gnulib"
+subrepo="https://codeberg.org/libreboot/gnulib"
+subrepo_bkup="git://git.sv.gnu.org/gnulib" # ALWAYS slow. only use as backup!
subhash="9f48fb992a3d7e96610c4ce8be969cff2d61a01b"
diff --git a/config/submodule/grub/nvme/gnulib/module.cfg b/config/submodule/grub/nvme/gnulib/module.cfg
index ca09e0ba..eaf40b24 100644
--- a/config/submodule/grub/nvme/gnulib/module.cfg
+++ b/config/submodule/grub/nvme/gnulib/module.cfg
@@ -1,5 +1,5 @@
# SPDX-License-Identifier: GPL-3.0-or-later
-subrepo="git://git.sv.gnu.org/gnulib"
-subrepo_bkup="https://codeberg.org/libreboot/gnulib"
+subrepo="https://codeberg.org/libreboot/gnulib"
+subrepo_bkup="git://git.sv.gnu.org/gnulib" # ALWAYS slow. only use as backup!
subhash="9f48fb992a3d7e96610c4ce8be969cff2d61a01b"
diff --git a/config/submodule/grub/xhci/gnulib/module.cfg b/config/submodule/grub/xhci/gnulib/module.cfg
index ca09e0ba..eaf40b24 100644
--- a/config/submodule/grub/xhci/gnulib/module.cfg
+++ b/config/submodule/grub/xhci/gnulib/module.cfg
@@ -1,5 +1,5 @@
# SPDX-License-Identifier: GPL-3.0-or-later
-subrepo="git://git.sv.gnu.org/gnulib"
-subrepo_bkup="https://codeberg.org/libreboot/gnulib"
+subrepo="https://codeberg.org/libreboot/gnulib"
+subrepo_bkup="git://git.sv.gnu.org/gnulib" # ALWAYS slow. only use as backup!
subhash="9f48fb992a3d7e96610c4ce8be969cff2d61a01b"
diff --git a/include/git.sh b/include/git.sh
index aaeabcd4..21a1f3b7 100644
--- a/include/git.sh
+++ b/include/git.sh
@@ -1,9 +1,9 @@
# SPDX-License-Identifier: GPL-3.0-or-later
-# Copyright (c) 2020-2021,2023-2024 Leah Rowe <leah@libreboot.org>
+# Copyright (c) 2020-2021,2023-2025 Leah Rowe <leah@libreboot.org>
# Copyright (c) 2022 Caleb La Grange <thonkpeasant@protonmail.com>
-eval `setvars "" loc url bkup_url subfile subhash subrepo subrepo_bkup \
- depend subfile_bkup repofail`
+eval "`setvars "" loc url bkup_url subfile subhash subrepo subrepo_bkup \
+ depend subfile_bkup repofail`"
fetch_targets()
{
@@ -18,8 +18,8 @@ fetch_targets()
fetch_project()
{
- eval `setvars "" xtree tree_depend`
- eval `setcfg "config/git/$project/pkg.cfg"`
+ eval "`setvars "" xtree tree_depend`"
+ eval "`setcfg "config/git/$project/pkg.cfg"`"
chkvars url
@@ -71,7 +71,8 @@ prep_submodules()
fetch_submodule()
{
mcfgdir="$mdir/${1##*/}"
- eval `setvars "" subhash subrepo subrepo_bkup subfile subfile_bkup st`
+ eval "`setvars "" subhash subrepo subrepo_bkup subfile subfile_bkup \
+ st`"
[ ! -f "$mcfgdir/module.cfg" ] || . "$mcfgdir/module.cfg" || \
$err "! . $mcfgdir/module.cfg"
@@ -103,7 +104,7 @@ tmpclone()
mkdir -p "$XBMK_CACHE/repo" || $err "!rmdir $XBMK_CACHE/repo"
if [ "$livepull" = "y" ] && [ ! -d "$repodir" ]; then
- git clone $1 "$repodir" || git clone $2 "$repodir" || \
+ git clone "$1" "$repodir" || git clone $2 "$repodir" || \
$err "!clone $1 $2 $repodir $4 $5" #
elif [ -d "$repodir" ] && [ $# -lt 6 ]; then
git -C "$repodir" pull || sleep 3 || git -C "$repodir" pull \
diff --git a/include/lib.sh b/include/lib.sh
index 4911c34f..a9a292c2 100644
--- a/include/lib.sh
+++ b/include/lib.sh
@@ -1,7 +1,7 @@
# SPDX-License-Identifier: GPL-3.0-only
# Copyright (c) 2022 Caleb La Grange <thonkpeasant@protonmail.com>
# Copyright (c) 2022 Ferass El Hafidi <vitali64pmemail@protonmail.com>
-# Copyright (c) 2020-2024 Leah Rowe <leah@libreboot.org>
+# Copyright (c) 2020-2025 Leah Rowe <leah@libreboot.org>
export LC_COLLATE=C
export LC_ALL=C
@@ -10,20 +10,11 @@ _ua="Mozilla/5.0 (Windows NT 10.0; rv:91.0) Gecko/20100101 Firefox/91.0"
ifdtool="elf/ifdtool/default/ifdtool"
cbfstool="elf/cbfstool/default/cbfstool"
+rmodtool="elf/cbfstool/default/rmodtool"
tmpgit="$PWD/tmp/gitclone"
grubdata="config/data/grub"
err="err_"
-pyver="2"
-python="python3"
-command -v python3 1>/dev/null || python="python"
-command -v $python 1>/dev/null || pyver=""
-[ -n "$pyver" ] && pyver="$($python --version | awk '{print $2}')"
-if [ "${pyver%%.*}" != "3" ]; then
- printf "Wrong python version, or python missing. Must be v 3.x.\n" 1>&2
- exit 1
-fi
-
err_()
{
printf "ERROR %s: %s\n" "$0" "$1" 1>&2; exit 1
@@ -32,23 +23,23 @@ err_()
setvars()
{
_setvars="" && [ $# -lt 2 ] && $err "setvars: too few arguments"
- val="$1" && shift 1 && for var in $@; do
+ val="$1" && shift 1 && for var in "$@"; do
_setvars="$var=\"$val\"; $_setvars"
done; printf "%s\n" "${_setvars% }"
}
chkvars()
{
- for var in $@; do
- eval "[ -n "\${$var+x}" ] || \$err \"$var unset\""
- eval "[ -n "\$$var" ] || \$err \"$var unset\""
+ for var in "$@"; do
+ eval "[ -n \"\${$var+x}\" ] || \$err \"$var unset\""
+ eval "[ -n \"\$$var\" ] || \$err \"$var unset\""
done; return 0
}
-eval `setvars "" _nogit board xbmk_parent versiondate projectsite projectname \
- aur_notice configdir datadir version relname reinstall`
+eval "`setvars "" _nogit board reinstall versiondate projectsite projectname \
+ aur_notice configdir datadir version relname xbmk_parent`"
for fv in projectname projectsite version versiondate; do
- eval "[ ! -f "$fv" ] || read -r $fv < \"$fv\" || :"
+ eval "[ ! -f \"$fv\" ] || read -r $fv < \"$fv\" || :"
done; chkvars projectname projectsite
setcfg()
@@ -74,18 +65,29 @@ install_packages()
[ $# -lt 2 ] && $err "fewer than two arguments"
[ $# -gt 2 ] && reinstall="$3"
- eval `setcfg "config/dependencies/$2"`
+ eval "`setcfg "config/dependencies/$2"`"
+ chkvars pkg_add pkglist
$pkg_add $pkglist || $err "Cannot install packages"
[ -n "$aur_notice" ] && \
- printf "You need AUR packages: %s\n" "$aur_notice" 1>&2; return 0
+ printf "You need AUR packages: %s\n" "$aur_notice" 1>&2; :
}
if [ $# -gt 0 ] && [ "$1" = "dependencies" ]; then
install_packages "$@" || exit 1
exit 0
fi
+pyver="2"
+python="python3"
+command -v python3 1>/dev/null || python="python"
+command -v $python 1>/dev/null || pyver=""
+[ -n "$pyver" ] && pyver="$($python --version | awk '{print $2}')"
+if [ "${pyver%%.*}" != "3" ]; then
+ printf "Wrong python version, or python missing. Must be v 3.x.\n" 1>&2
+ exit 1
+fi
+
id -u 1>/dev/null 2>/dev/null || $err "suid check failed (id -u)"
[ "$(id -u)" != "0" ] || $err "this command as root is not permitted"
@@ -168,11 +170,10 @@ mkrom_tarball()
mktarball()
{
- [ "${2%/*}" = "$2" ] || \
+ if [ "${2%/*}" != "$2" ]; then
mkdir -p "${2%/*}" || $err "mk, !mkdir -p \"${2%/*}\""
- printf "\nCreating archive: %s\n\n" "$2"
+ fi
tar -c "$1" | xz -T$XBMK_THREADS -9e > "$2" || $err "mktarball 2, $1"
- mksha512sum "$2" "${2##*/}.sha512"
}
mksha512sum()
@@ -267,7 +268,7 @@ cbfs()
mk()
{
mk_flag="$1" || $err "No argument given"
- shift 1 && for mk_arg in $@; do
+ shift 1 && for mk_arg in "$@"; do
./mk $mk_flag $mk_arg || $err "./mk $mk_flag $mk_arg"; :
done; :
}
diff --git a/include/mrc.sh b/include/mrc.sh
index 2e00d9f9..f5db2ff0 100644
--- a/include/mrc.sh
+++ b/include/mrc.sh
@@ -4,7 +4,7 @@
# Modifications in this version are Copyright 2021, 2023 and 2024 Leah Rowe.
# Original copyright detailed in repo: https://review.coreboot.org/coreboot/
-eval `setvars "" MRC_url MRC_url_bkup MRC_hash MRC_board SHELLBALL`
+eval "`setvars "" MRC_url MRC_url_bkup MRC_hash MRC_board SHELLBALL`"
extract_mrc()
{
diff --git a/include/rom.sh b/include/rom.sh
index 0ea791d2..2a7bc837 100644
--- a/include/rom.sh
+++ b/include/rom.sh
@@ -1,5 +1,5 @@
# SPDX-License-Identifier: GPL-3.0-or-later
-# Copyright (c) 2014-2016,2020-2021,2023-2024 Leah Rowe <leah@libreboot.org>
+# Copyright (c) 2014-2016,2020-2021,2023-2025 Leah Rowe <leah@libreboot.org>
# Copyright (c) 2021-2022 Ferass El Hafidi <vitali64pmemail@protonmail.com>
# Copyright (c) 2022 Caleb La Grange <thonkpeasant@protonmail.com>
# Copyright (c) 2022-2023 Alper Nebi Yasak <alpernebiyasak@gmail.com>
@@ -43,8 +43,8 @@ copyps1bios()
mkpayload_grub()
{
- eval `setvars "" grub_modules grub_install_modules`
- $dry eval `setcfg "$grubdata/module/$tree"`
+ eval "`setvars "" grub_modules grub_install_modules`"
+ $dry eval "`setcfg "$grubdata/module/$tree"`"
$dry x_ rm -f "$srcdir/grub.elf"; $dry \
"$srcdir/grub-mkstandalone" --grub-mkimage="$srcdir/grub-mkimage" \
-O i386-coreboot -o "$srcdir/grub.elf" -d "${srcdir}/grub-core/" \
@@ -62,7 +62,7 @@ mkvendorfiles()
printf "%s\n" "${version%%-*}" > "$srcdir/.coreboot-version" || \
$err "!mk $srcdir .coreboot-version"
[ -z "$mode" ] && [ "$target" != "$tree" ] && \
- x_ ./mk download $target; return 0
+ x_ ./mk download "$target"; return 0
}
cook_coreboot_config()
@@ -84,10 +84,14 @@ check_coreboot_utils()
utilmode="" && [ -n "$mode" ] && utilmode="clean"
x_ make -C "$utilsrcdir" $utilmode -j$XBMK_THREADS $makeargs
- [ -z "$mode" ] && [ ! -f "$utilelfdir/$util" ] && \
- x_ mkdir -p "$utilelfdir" && \
- x_ cp "$utilsrcdir/$util" "elf/$util/$1"
- [ -z "$mode" ] || x_ rm -Rf "$utilelfdir"; continue
+ if [ -z "$mode" ] && [ ! -f "$utilelfdir/$util" ]; then
+ x_ mkdir -p "$utilelfdir"
+ x_ cp "$utilsrcdir/$util" "$utilelfdir"
+ [ "$util" = "cbfstool" ] || continue
+ x_ cp "$utilsrcdir/rmodtool" "$utilelfdir"
+ elif [ -n "$mode" ]; then
+ x_ rm -Rf "$utilelfdir"
+ fi; continue
done; return 0
}
@@ -109,7 +113,8 @@ mkcorebootbin()
if [ "$payload_uboot_i386" = "y" ] || \
[ "$payload_uboot_amd64" = "y" ]; then
- printf "'$target' has x86 U-Boot; assuming SeaBIOS=y\n" 1>&2
+ printf "'%s' has x86 U-Boot; assuming SeaBIOS=y\n" \
+ "$target" 1>&2
payload_seabios="y"
fi
@@ -200,10 +205,12 @@ mkseagrub()
add_uboot()
{
if [ "$displaymode" = "txtmode" ]; then
- printf "cb/$target: Cannot use U-Boot in text mode\n" 1>&2
+ printf "cb/%s: Cannot use U-Boot in text mode\n" \
+ "$target" 1>&2
return 0
elif [ "$initmode" = "normal" ]; then
- printf "cb/$target: Cannot use U-Boot in normal initmode\n" 1>&2
+ printf "cb/%s: Cannot use U-Boot in normal initmode\n" \
+ "$target" 1>&2
return 0
fi
@@ -251,15 +258,16 @@ cprom()
x_ cp "$tmprom" "$newrom" && [ $# -gt 0 ] && [ "$1" != "seauboot" ] && \
cbfs "$newrom" "config/data/grub/keymap/$1" keymap.gkb raw
[ $# -gt 0 ] && [ "$1" = "seauboot" ] && \
- cbfs "$newrom" "config/data/grub/bootorder_uboot" "bootorder" raw
-
- [ "$XBMK_RELEASE" = "y" ] || return 0
- $dry mksha512sum "$newrom" "vendorhashes"; $dry ./mk inject \
- -r "$newrom" -b "$target" -n nuke || $err "!nuke $newrom"
+ cbfs "$newrom" "config/data/grub/bootorder_uboot" bootorder raw; :
}
mkcoreboottar()
{
- [ "$target" = "$tree" ] && return 0; [ "$XBMK_RELEASE" = "y" ] && \
- [ "$release" != "n" ] && $dry mkrom_tarball "bin/$target"; :
+ [ "$target" = "$tree" ] && return 0
+ [ "$XBMK_RELEASE" = "y" ] || return 0
+ [ "$release" != "n" ] || return 0
+ $dry mkrom_tarball "bin/$target"
+ $dry ./mk inject "bin/${relname}_${target}.tar.xz" nuke || \
+ $err "Can't delete vendorfiles in 'bin/${relname}_$target.tar.xz'"
+ return 0
}
diff --git a/include/vendor.sh b/include/vendor.sh
index 7d1356f2..f83bf290 100644
--- a/include/vendor.sh
+++ b/include/vendor.sh
@@ -1,7 +1,7 @@
# SPDX-License-Identifier: GPL-3.0-only
# Copyright (c) 2022 Caleb La Grange <thonkpeasant@protonmail.com>
# Copyright (c) 2022 Ferass El Hafidi <vitali64pmemail@protonmail.com>
-# Copyright (c) 2023-2024 Leah Rowe <leah@libreboot.org>
+# Copyright (c) 2023-2025 Leah Rowe <leah@libreboot.org>
e6400_unpack="$PWD/src/bios_extract/dell_inspiron_1100_unpacker.py"
me7updateparser="$PWD/util/me7_update_parser/me7_update_parser.py"
@@ -10,6 +10,11 @@ uefiextract="$PWD/elf/uefitool/uefiextract"
vendir="vendorfiles"
appdir="$vendir/app"
cbcfgsdir="config/coreboot"
+hashfiles="vendorhashes blobhashes" # blobhashes for backwards compatibility
+dontflash="!!! AN ERROR OCCURED! Please DO NOT flash if injection failed. !!!"
+vfix="DO_NOT_FLASH_YET._FIRST,_INJECT_BLOBS_VIA_INSTRUCTIONS_ON_LIBREBOOT.ORG_"
+vguide="https://libreboot.org/docs/install/ivy_has_common.html"
+tmpromdel="$PWD/tmp/DO_NOT_FLASH"
cv="CONFIG_HAVE_ME_BIN CONFIG_ME_BIN_PATH CONFIG_INCLUDE_SMSC_SCH5545_EC_FW \
CONFIG_SMSC_SCH5545_EC_FW_FILE CONFIG_KBC1126_FIRMWARE CONFIG_KBC1126_FW1 \
@@ -21,14 +26,15 @@ cv="CONFIG_HAVE_ME_BIN CONFIG_ME_BIN_PATH CONFIG_INCLUDE_SMSC_SCH5545_EC_FW \
CONFIG_FSP_S_FILE CONFIG_FSP_S_CBFS CONFIG_FSP_M_CBFS CONFIG_FSP_USE_REPO \
CONFIG_FSP_FULL_FD"
-eval `setvars "" EC_url_bkup EC_hash DL_hash DL_url_bkup MRC_refcode_gbe vcfg \
+eval "`setvars "" has_hashes EC_hash DL_hash DL_url_bkup MRC_refcode_gbe vcfg \
E6400_VGA_DL_hash E6400_VGA_DL_url E6400_VGA_DL_url_bkup E6400_VGA_offset \
E6400_VGA_romname SCH5545EC_DL_url_bkup SCH5545EC_DL_hash _dest tree \
mecleaner kbc1126_ec_dump MRC_refcode_cbtree new_mac _dl SCH5545EC_DL_url \
- archive EC_url boarddir rom cbdir DL_url nukemode cbfstoolref vrelease \
- verify _7ztest ME11bootguard ME11delta ME11version ME11sku ME11pch \
+ archive EC_url boarddir rom cbdir DL_url nukemode cbfstoolref FSPFD_hash \
+ _7ztest ME11bootguard ME11delta ME11version ME11sku ME11pch tmpromdir \
IFD_platform ifdprefix cdir sdir _me _metmp mfs TBFW_url_bkup TBFW_url \
- TBFW_hash TBFW_size FSPFD_hash $cv`
+ TBFW_hash TBFW_size hashfile xromsize xchanged EC_url_bkup need_files \
+ vfile $cv`"
vendor_download()
{
@@ -40,27 +46,27 @@ readkconfig()
{
check_defconfig "$boarddir" 1>"$TMPDIR/vendorcfg.list" && return 1
- rm -f "$TMPDIR/tmpcbcfg" || $err "!rm -f \"$TMPDIR/tmpcbcfg\""
+ rm -f "$TMPDIR/tmpcbcfg" || $err "!rm $TMPDIR/tmpcbcfg - $dontflash"
while read -r cbcfgfile; do
for cbc in $cv; do
rm -f "$TMPDIR/tmpcbcfg2" || \
- $err "!rm $TMPDIR/tmpcbcfg2"
+ $err "!rm $TMPDIR/tmpcbcfg2 - $dontflash"
grep "$cbc" "$cbcfgfile" 1>"$TMPDIR/tmpcbcfg2" \
2>/dev/null || :
[ -f "$TMPDIR/tmpcbcfg2" ] || continue
cat "$TMPDIR/tmpcbcfg2" >> "$TMPDIR/tmpcbcfg" || \
- $err "!cat $TMPDIR/tmpcbcfg2"
+ $err "!cat $TMPDIR/tmpcbcfg2 - $dontflash"
done
done < "$TMPDIR/vendorcfg.list"
- eval `setcfg "$TMPDIR/tmpcbcfg"`
+ eval "`setcfg "$TMPDIR/tmpcbcfg"`"
for c in CONFIG_HAVE_MRC CONFIG_HAVE_ME_BIN CONFIG_KBC1126_FIRMWARE \
CONFIG_VGA_BIOS_FILE CONFIG_INCLUDE_SMSC_SCH5545_EC_FW \
CONFIG_LENOVO_TBFW_BIN CONFIG_FSP_M_FILE CONFIG_FSP_S_FILE; do
eval "[ \"\${$c}\" = \"/dev/null\" ] && continue"
eval "[ -z \"\${$c}\" ] && continue"
- eval `setcfg "config/vendor/$vcfg/pkg.cfg"`; return 0
+ eval "`setcfg "$vfile"`"; return 0
done
printf "Vendor files not needed for: %s\n" "$board" 1>&2; return 1
}
@@ -72,7 +78,7 @@ bootstrap()
[ -d "${kbc1126_ec_dump%/*}" ] && x_ make -C "$cbdir/util/kbc1126"
[ -n "$MRC_refcode_cbtree" ] && \
cbfstoolref="elf/cbfstool/$MRC_refcode_cbtree/cbfstool" && \
- x_ ./mk -d coreboot $MRC_refcode_cbtree; return 0
+ x_ ./mk -d coreboot "$MRC_refcode_cbtree"; return 0
}
getfiles()
@@ -117,20 +123,22 @@ fetch()
dlop="curl" && [ $# -gt 5 ] && dlop="$6"
download "$dl" "$dl_bkup" "$_dl" "$dlsum" "$dlop"
- rm -Rf "${_dl}_extracted" || $err "!rm -Rf ${_ul}_extracted"
+ rm -Rf "${_dl}_extracted" || $err "!rm ${_ul}_extracted. $dontflash"
e "$_dest" f && return 0
- mkdir -p "${_dest%/*}" || $err "mkdirs: !mkdir -p ${_dest%/*}"
+ mkdir -p "${_dest%/*}" || \
+ $err "mkdirs: !mkdir -p ${_dest%/*} - $dontflash"
remkdir "$appdir"; extract_archive "$_dl" "$appdir" "$dl_type" || \
- [ "$dl_type" = "e6400vga" ] || $err "mkd $_dest $dl_type: !extract"
+ [ "$dl_type" = "e6400vga" ] || \
+ $err "mkd $_dest $dl_type: !extract. $dontflash"
eval "extract_$dl_type"; set -u -e
- e "$_dest" f missing && $err "!extract_$dl_type"; :
+ e "$_dest" f missing && $err "!extract_$dl_type. $dontflash"; :
}
extract_intel_me()
{
- e "$mecleaner" f not && $err "$cbdir: me_cleaner missing"
+ e "$mecleaner" f not && $err "$cbdir: me_cleaner missing. $dontflash"
cdir="$PWD/$appdir"
_me="$PWD/$_dest"
@@ -146,7 +154,7 @@ extract_intel_me()
if [ "$ME11bootguard" = "y" ]; then
apply_me11_deguard_mod
else
- mv "$_metmp" "$_me" || $err "!mv $_metmp" "$_me"
+ mv "$_metmp" "$_me" || $err "!mv $_metmp $_me - $dontflash"
fi
}
@@ -157,12 +165,13 @@ extract_intel_me_bruteforce()
e "$_metmp" f && return 0
[ -z "$sdir" ] && sdir="$(mktemp -d)"
- mkdir -p "$sdir" || $err "extract_intel_me: !mkdir -p \"$sdir\""
+ mkdir -p "$sdir" || \
+ $err "extract_intel_me: !mkdir -p \"$sdir\" - $dontflash"
set +u +e
(
[ "${cdir#/a}" != "$cdir" ] && cdir="${cdir#/}"
- cd "$cdir" || $err "extract_intel_me: !cd \"$cdir\""
+ cd "$cdir" || $err "extract_intel_me: !cd \"$cdir\" - $dontflash"
for i in *; do
[ -f "$_metmp" ] && break
[ -L "$i" ] && continue
@@ -184,7 +193,7 @@ extract_intel_me_bruteforce()
cd "$cdir" || :
done
)
- rm -Rf "$sdir" || $err "extract_intel_me: !rm -Rf $sdir"
+ rm -Rf "$sdir" || $err "extract_intel_me: !rm -Rf $sdir - $dontflash"
}
apply_me11_deguard_mod()
@@ -195,8 +204,8 @@ apply_me11_deguard_mod()
--version "$ME11version" \
--pch "$ME11pch" --sku "$ME11sku" --fake-fpfs data/fpfs/zero \
--input "$_metmp" --output "$_me" || \
- $err "Error running deguard for $_me"
- ) || $err "Error running deguard for $_me"
+ $err "Error running deguard for $_me - $dontflash"
+ ) || $err "Error running deguard for $_me - $dontflash"
}
extract_archive()
@@ -212,7 +221,7 @@ extract_archive()
"$1" -o"$2" || unar "$1" -o "$2" || unzip "$1" -d "$2" || return 1
[ ! -d "${_dl}_extracted" ] || cp -R "${_dl}_extracted" "$2" || \
- $err "!mv '${_dl}_extracted' '$2'"; :
+ $err "!mv '${_dl}_extracted' '$2' - $dontflash"; :
}
decat_fspfd()
@@ -222,27 +231,34 @@ decat_fspfd()
_fspsplit="$cbdir/3rdparty/fsp/Tools/SplitFspBin.py"
$python "$_fspsplit" split -f "$_fspfd" -o "$_fspdir" -n "Fsp.fd" || \
- $err "decat_fspfd '$1' '$2': Cannot de-concatenate"; :
+ $err "decat_fspfd '$1' '$2': Can't de-concatenate; $dontflash"; :
}
extract_kbc1126ec()
{
- e "$kbc1126_ec_dump" f missing && $err "$cbdir: kbc1126 util missing"
+ e "$kbc1126_ec_dump" f missing && \
+ $err "$cbdir: kbc1126 util missing - $dontflash"
(
x_ cd "$appdir/"; mv Rompaq/68*.BIN ec.bin || :
if [ ! -f "ec.bin" ]; then
unar -D ROM.CAB Rom.bin || unar -D Rom.CAB Rom.bin || \
- unar -D 68*.CAB Rom.bin || $err "can't extract Rom.bin"
+ unar -D 68*.CAB Rom.bin || \
+ $err "can't extract Rom.bin - $dontflash"
x_ mv Rom.bin ec.bin
fi
- [ -f ec.bin ] || $err "extract_kbc1126_ec $board: can't extract"
- "$kbc1126_ec_dump" ec.bin || $err "!1126ec $board extract ecfw"
- ) || $err "can't extract kbc1126 ec firmware"
-
- e "$appdir/ec.bin.fw1" f not && $err "$board: kbc1126ec fetch failed"
- e "$appdir/ec.bin.fw2" f not && $err "$board: kbc1126ec fetch failed"
-
- cp "$appdir/"ec.bin.fw* "${_dest%/*}/" || $err "!cp 1126ec $_dest"
+ [ -f ec.bin ] || \
+ $err "extract_kbc1126_ec $board: can't extract - $dontflash"
+ "$kbc1126_ec_dump" ec.bin || \
+ $err "!1126ec $board extract ecfw - $dontflash"
+ ) || $err "can't extract kbc1126 ec firmware - $dontflash"
+
+ e "$appdir/ec.bin.fw1" f not && \
+ $err "$board: kbc1126ec fetch failed - $dontflash"
+ e "$appdir/ec.bin.fw2" f not && \
+ $err "$board: kbc1126ec fetch failed - $dontflash"
+
+ cp "$appdir/"ec.bin.fw* "${_dest%/*}/" || \
+ $err "!cp 1126ec $_dest - $dontflash"; :
}
extract_e6400vga()
@@ -252,11 +268,12 @@ extract_e6400vga()
tail -c +$E6400_VGA_offset "$_dl" | gunzip > "$appdir/bios.bin" || :
(
x_ cd "$appdir"
- [ -f "bios.bin" ] || $err "extract_e6400vga: can't extract bios.bin"
+ [ -f "bios.bin" ] || \
+ $err "extract_e6400vga: can't extract bios.bin - $dontflash"
"$e6400_unpack" bios.bin || printf "TODO: fix dell extract util\n"
- ) || $err "can't extract e6400 vga rom"
+ ) || $err "can't extract e6400 vga rom - $dontflosh"
cp "$appdir/$E6400_VGA_romname" "$_dest" || \
- $err "extract_e6400vga $board: can't copy vga rom to $_dest"
+ $err "extract_e6400vga $board: can't cp $_dest - $dontflash"; :
}
extract_sch5545ec()
@@ -268,8 +285,9 @@ extract_sch5545ec()
_sch5545ec_fw="$_sch5545ec_fw/54 D386BEB8-4B54-4E69-94F5-06091F67E0D3"
_sch5545ec_fw="$_sch5545ec_fw/0 Raw section/body.bin" # <-- this!
- "$uefiextract" "$_bios" || $err "sch5545 !extract"
- cp "$_sch5545ec_fw" "$_dest" || $err "$_dest: !sch5545 copy"
+ "$uefiextract" "$_bios" || $err "sch5545 !extract - $dontflash"
+ cp "$_sch5545ec_fw" "$_dest" || \
+ $err "$_dest: !sch5545 copy - $dontflash"; :
}
# Lenovo ThunderBolt firmware updates:
@@ -280,17 +298,18 @@ extract_tbfw()
x_ mkdir -p tmp
x_ rm -f tmp/tb.bin
find "$appdir" -type f -name "TBT.bin" > "tmp/tb.txt" || \
- $err "extract_tbfw $_dest: Can't extract TBT.bin"
+ $err "extract_tbfw $_dest: Can't extract TBT.bin - $dontflash"
while read -r f; do
[ -f "$f" ] || continue
[ -L "$f" ] && continue
cp "$f" "tmp/tb.bin" || \
- $err "extract_tbfw $_dest: Can't copy TBT.bin"
+ $err "extract_tbfw $_dest: Can't copy TBT.bin - $dontflash"
break
done < "tmp/tb.txt"
dd if=/dev/null of=tmp/tb.bin bs=1 seek=$TBFW_size || \
- $err "extract_tbfw $_dest: Can't pad TBT.bin"
- cp "tmp/tb.bin" "$_dest" || $err "extract_tbfw $_dest: copy error"; :
+ $err "extract_tbfw $_dest: Can't pad TBT.bin - $dontflash"
+ cp "tmp/tb.bin" "$_dest" || \
+ $err "extract_tbfw $_dest: copy error - $dontflash "; :
}
extract_fspm()
@@ -307,69 +326,106 @@ extract_fsps()
copy_fsp()
{
cp "$appdir/Fsp_$1.fd" "$_dest" || \
- $err "copy_fsp: Can't copy $1 to $_dest"; :
+ $err "copy_fsp: Can't copy $1 to $_dest - $dontflash"; :
}
-vendor_inject()
+fail_inject()
{
- set +u +e; [ $# -lt 1 ] && $err "No options specified."
- [ "$1" = "listboards" ] && eval "ls -1 config/coreboot || :; return 0"
-
- archive="$1"; while getopts n:r:b:m: option; do
- case "$option" in
- n) nukemode="$OPTARG" ;;
- r) rom="$OPTARG" ;;
- b) board="$OPTARG" ;;
- m) new_mac="$OPTARG"; chkvars new_mac ;;
- *) : ;;
- esac
- done
-
- check_board || return 0
- [ "$nukemode" = "nuke" ] || x_ ./mk download $board
- if [ "$vrelease" = "y" ]; then
- patch_release_roms
- printf "\nPatched images saved to bin/release/%s/\n" \
- "$board"
- else
- patch_rom "$rom" || :
- fi; :
+ [ -L "$tmpromdel" ] || [ ! -d "$tmpromdel" ] || \
+ rm -Rf "$tmpromdel" || :
+ printf "\n\n%s\n\n" "$dontflash" 1>&2
+ printf "WARNING: File '%s' was NOT modified.\n\n" "$archive" 1>&2
+ printf "Please MAKE SURE vendor files are inserted before flashing\n\n"
+ fail "$1"
}
-check_board()
+vendor_inject()
{
- failcheck="y" && check_release "$archive" && failcheck="n"
- if [ "$failcheck" = "y" ]; then
- [ -f "$rom" ] || $err "check_board \"$rom\": invalid path"
- [ -z "${rom+x}" ] && $err "check_board: no rom specified"
- [ -n "${board+x}" ] || board="$(detect_board "$rom")"
- else
- vrelease="y"; board="$(detect_board "$archive")"
+ need_files="n" # will be set to "y" if vendorfiles needed
+ _olderr="$err"
+ err="fail_inject"
+ remkdir "$tmpromdel"
+
+ set +u +e; [ $# -lt 1 ] && $err "No options specified. - $dontflash"
+ eval "`setvars "" nukemode new_mac xchanged`"
+
+ archive="$1";
+ [ $# -gt 1 ] && case "$2" in
+ nuke) nukemode="nuke" ;;
+ setmac)
+ new_mac="??:??:??:??:??:??"
+ [ $# -gt 2 ] && new_mac="$3" ;;
+ *) $err "Unrecognised inject mode: '$2'"
+ esac
+
+ check_release "$archive" || \
+ $err "You must run this script on a release archive. - $dontflash"
+
+ readcfg && need_files="y"
+ if [ "$need_files" = "y" ] || [ -n "$new_mac" ]; then
+ [ "$nukemode" = "nuke" ] || x_ ./mk download "$board"
+ patch_release_roms
fi
- readcfg || return 1; return 0
+ [ "$need_files" != "y" ] && printf \
+ "\nTarball '%s' (board '%s) doesn't need vendorfiles.\n" \
+ "$archive" "$board" 1>&2
+
+ xtype="patched" && [ "$nukemode" = "nuke" ] && xtype="nuked"
+ [ "$xchanged" != "y" ] && \
+ printf "\nRelease archive '%s' was *NOT* modified.\n" \
+ "$archive" && [ "$has_hashes" = "y" ] && \
+ printf "WARNING: '%s' contains '%s'. DO NOT FLASH!\n" \
+ "$archive" "$hashfile" 1>&2 && \
+ printf "(vendorfiles may be needed and aren't there)\n" \
+ 1>&2
+ [ "$xchanged" = "y" ] && \
+ printf "\nRelease archive '%s' successfully %s.\n" \
+ "$archive" "$xtype" && [ "$nukemode" != "nuke" ] && \
+ printf "You may now extract '%s' and flash images from it.\n" \
+ "$archive"
+ [ "$xchanged" = "y" ] && [ "$nukemode" = "nuke" ] && \
+ printf "WARNING! Vendorfiles *removed*. DO NOT FLASH.\n" 1>&2 \
+ && printf "DO NOT flash images from '%s'\n" \
+ "$archive" 1>&2
+
+ #
+ # catch-all error handler, for libreboot release opsec:
+ #
+ # if vendor files defined, and a hash file was missing, that means
+ # a nuke must succeed, if specified. if no hashfile was present,
+ # that means vendorfiles had been injected, so a nuke must succeed.
+ # this check is here in case of future bugs in lbmk's handling
+ # of vendorfile deletions on release archives, which absolutely
+ # must always be 100% reliable, so paranoia is paramount:
+ #
+ if [ "$xchanged" != "y" ] && [ "$need_files" = "y" ] && \
+ [ "$nukemode" = "nuke" ] && [ "$has_hashes" != "y" ]; then
+ printf "FAILED NUKE: tarball '$archive', board '$board'\n" 1>&2
+ $err "Unhandled vendorfile deletion: DO NOT RELEASE TO RSYNC"
+ fi # of course, we assume that those variables are also set right
+
+ err="$_olderr"
+ return 0
}
check_release()
{
+ [ -L "$archive" ] && \
+ $err "'$archive' is a symlink, not a file - $dontflash"
[ -f "$archive" ] || return 1
- [ "${archive##*.}" = "xz" ] || return 1
- printf "%s\n" "Release archive $archive detected"
-}
-
-# This function tries to determine the board from the filename of the rom.
-# It will only succeed if the filename is not changed from the build/download
-detect_board()
-{
- path="$1"; filename="$(basename "$path")"
- case "$filename" in
- grub_*|seagrub_*|custom_*)
- board="$(echo "$filename" | cut -d '_' -f2-3)" ;;
- seabios_withgrub_*)
- board="$(echo "$filename" | cut -d '_' -f3-4)" ;;
- *.tar.xz) _stripped_prefix="${filename#*_}"
+ archivename="`basename "$archive"`"
+ [ -z "$archivename" ] && \
+ $err "Cannot determine archive file name - $dontflash"
+
+ case "$archivename" in
+ *_src.tar.xz)
+ $err "'$archive' is a src archive, silly!" ;;
+ grub_*|seagrub_*|custom_*|seauboot_*|seabios_withgrub_*)
+ return 1 ;;
+ *.tar.xz) _stripped_prefix="${archivename#*_}"
board="${_stripped_prefix%.tar.xz}" ;;
- *) $err "detect_board $filename: could not detect board type"
- esac; printf "%s\n" "$board"
+ *) $err "'$archive': could not detect board type - $dontflash"
+ esac; :
}
readcfg()
@@ -378,57 +434,181 @@ readcfg()
[ "$board" = "serprog_stm32" ] || \
[ "$board" = "serprog_pico" ]; then
return 1
- fi; boarddir="$cbcfgsdir/$board"
- eval `setcfg "$boarddir/target.cfg"`; chkvars vcfg tree
+ fi
+ boarddir="$cbcfgsdir/$board"
+
+ eval "`setcfg "$boarddir/target.cfg"`"
+ chkvars tree
+ x_ ./mk -d coreboot "$tree" # even if vendorfiles not used, see: setmac
+
+ [ -z "$vcfg" ] && return 1
+ vfile="config/vendor/$vcfg/pkg.cfg"
+ [ -L "$vfile" ] && $err "'$archive', '$board': $vfile is a symlink"
+ [ -f "$vfile" ] || $err "'$archive', '$board': $vfile doesn't exist"
cbdir="src/coreboot/$tree"
cbfstool="elf/cbfstool/$tree/cbfstool"
+ rmodtool="elf/cbfstool/$tree/rmodtool"
mecleaner="$PWD/$cbdir/util/me_cleaner/me_cleaner.py"
kbc1126_ec_dump="$PWD/$cbdir/util/kbc1126/kbc1126_ec_dump"
cbfstool="elf/cbfstool/$tree/cbfstool"
ifdtool="elf/ifdtool/$tree/ifdtool"
- [ -n "$IFD_platform" ] && ifdprefix="-p $IFD_platform"
-
- x_ ./mk -d coreboot $tree
+ [ -n "$IFD_platform" ] && ifdprefix="-p $IFD_platform"; :
}
patch_release_roms()
{
- remkdir "tmp/romdir"; tar -xf "$archive" -C "tmp/romdir" || \
- $err "patch_release_roms: !tar -xf \"$archive\" -C \"tmp/romdir\""
-
- for x in "tmp/romdir/bin/"*/*.rom ; do
- patch_rom "$x" || return 0
+ has_hashes="n"
+
+ tmpromdir="tmp/DO_NOT_FLASH/bin/$board"
+ remkdir "${tmpromdir%"/bin/$board"}"
+ tar -xf "$archive" -C "${tmpromdir%"/bin/$board"}" || \
+ $err "Can't extract '$archive'"
+
+ for _hashes in $hashfiles; do
+ [ -L "$tmpromdir/$_hashes" ] && \
+ $err "'$archive' -> the hashfile is a symlink. $dontflash"
+ [ -f "$tmpromdir/$_hashes" ] && has_hashes="y" && \
+ hashfile="$_hashes" && break; :
done
- (
- cd "tmp/romdir/bin/"* || $err "patch roms: !cd tmp/romdir/bin/*"
+ x_ mkdir -p "tmp"; [ -L "tmp/rom.list" ] && \
+ $err "'$archive' -> tmp/rom.list is a symlink - $dontflash"
+ x_ rm -f "tmp/rom.list" "tmp/zero.1b"
+ x_ dd if=/dev/zero of=tmp/zero.1b bs=1 count=1
+
+ find "$tmpromdir" -maxdepth 1 -type f -name "*.rom" > "tmp/rom.list" \
+ || $err "'$archive' -> Can't make tmp/rom.list - $dontflash"
+
+ if readkconfig; then
+ while read -r _xrom ; do
+ process_release_rom "$_xrom" || break
+ done < "tmp/rom.list"
+ rm -f "$tmpromdir/README.md" || :
+ [ "$nukemode" != "nuke" ] || \
+ printf "Make sure you inserted vendor files: %s\n" \
+ "$vguide" > "$tmpromdir/README.md" || :
+ else
+ printf "Skipping vendorfiles on '%s'\n" "$archive" 1>&2
+ fi
+ (
+ cd "$tmpromdir" || $err "patch '$archive': can't cd $tmpromdir"
# NOTE: For compatibility with older rom releases, defer to sha1
- [ "$verify" != "y" ] || [ "$nukemode" = "nuke" ] || \
- sha512sum --status -c vendorhashes || \
- sha1sum --status -c vendorhashes || sha512sum --status -c \
- blobhashes || sha1sum --status -c blobhashes || \
- $err "patch_release_roms: ROMs did not match expected hashes"
- ) || $err "can't verify vendor hashes"
-
- [ -n "$new_mac" ] && for x in "tmp/romdir/bin/"*/*.rom ; do
- [ -f "$x" ] && modify_gbe "$x"
- done
+ if [ "$has_hashes" = "y" ] && [ "$nukemode" != "nuke" ]; then
+ sha512sum --status -c "$hashfile" || \
+ sha1sum --status -c "$hashfile" || \
+ $err "'$archive' -> Can't verify vendor hashes. $dontflash"
+ rm -f "$hashfile" || \
+ $err "$archive: Can't rm hashfile. $dontflash"
+ fi
+ ) || $err "'$archive' -> Can't verify vendor hashes. $dontflash"
+
+ if [ -n "$new_mac" ]; then
+ if ! modify_mac_addresses; then
+ printf "\nNo GbE region defined for '%s'\n" "$board" \
+ 1>&2
+ printf "Therefore, changing the MAC is impossible.\n" \
+ 1>&2
+ printf "This board probably lacks Intel ethernet.\n" \
+ 1>&2
+ fi
+ fi
- x_ mkdir -p bin/release
- mv tmp/romdir/bin/* bin/release/ || $err "$board: !mv release roms"
+ [ "$xchanged" = "y" ] || rm -Rf "$tmpromdel" || :
+ [ "$xchanged" = "y" ] || return 0
+ (
+ cd "${tmpromdir%"/bin/$board"}" || \
+ $err "Can't cd '${tmpromdir%"/bin/$board"}'; $dontflash"
+ # ../../ is the root of lbmk
+ mkrom_tarball "bin/$board"
+ ) || $err "Cannot re-generate '$archive' - $dontflash"
+
+ mv "${tmpromdir%"/bin/$board"}/bin/${relname}_${board}.tar.xz" \
+ "$archive" || \
+ $err "'$archive' -> Cannot overwrite - $dontflash"; :
+}
+
+process_release_rom()
+{
+ _xrom="$1"; _xromname="${1##*/}"
+ [ -L "$_xrom" ] && \
+ $err "$archive -> '${_xrom#"tmp/DO_NOT_FLASH/"}' is a symlink"
+ [ -f "$_xrom" ] || return 0
+
+ [ -z "${_xromname#"$vfix"}" ] && \
+ $err "'$_xromname'->'"${_xromname#"$vfix"}"' empty. $dontflash"
+ # Remove the prefix and 1-byte pad
+ if [ "$nukemode" != "nuke" ] && \
+ [ "${_xromname#"$vfix"}" != "$_xromname" ]; then
+ _xromnew="${_xrom%/*}/${_xromname#"$vfix"}"
+
+ # Remove the 1-byte padding
+ stat -c '%s' "$_xrom" > "tmp/rom.size" || \
+ $err "$_xrom: Can't get rom size. $dontflash"
+ read -r xromsize < "tmp/rom.size" || \
+ $err "$_xrom: Can't read rom size. $dontflash"
+
+ expr "X$xromsize" : "X-\{0,1\}[0123456789][0123456789]*$" \
+ 1>/dev/null 2>/dev/null || $err "$_xrom size non-integer"
+ [ $xromsize -lt 2 ] && $err \
+ "$_xrom: Will not create empty file. $dontflash"
+
+ # TODO: check whether the size would be a multiple of 64KB
+ # the smallest rom images we do are 512kb
+ xromsize="`expr $xromsize - 1`"
+ [ $xromsize -lt 524288 ] && \
+ $err "$_xrom size too small; likely not a rom. $dontflash"
+
+ dd if="$_xrom" of="$_xromnew" bs=$xromsize count=1 || \
+ $err "$_xrom: Can't resize. $dontflash"
+ rm -f "$_xrom" || $err "Can't rm $_xrom - $dontflash"
+
+ _xrom="$_xromnew"
+ fi
+
+ [ "$nukemode" = "nuke" ] && \
+ mksha512sum "$_xrom" "vendorhashes"
+
+ patch_rom "$_xrom" || return 1 # if break return, can still change MAC
+ [ "$nukemode" != "nuke" ] && return 0
+
+ # Rename the file, prefixing a warning saying not to flash
+ # the target image, which now has vendor files removed. Also
+ # pad it so that flashprog returns an error if the user tries
+ # to flash it, due to mismatching ROM size vs chip size
+ cat "$_xrom" tmp/zero.1b > "${_xrom%/*}/$vfix${_xrom##*/}" || \
+ $err "'$archive' -> can't pad/rename '$_xrom'. $dontflash"
+ rm -f "$_xrom" || $err "'$archive' -> can't rm '$_xrom'. $dontflash"
}
patch_rom()
{
rom="$1"
- readkconfig || return 1
- [ "$CONFIG_HAVE_MRC" = "y" ] && inject "mrc.bin" "$CONFIG_MRC_FILE" \
- "mrc" "0xfffa0000"
+ # regarding ifs below:
+ # if a hash file exists, we only want to allow inject.
+ # if a hash file is missing, we only want to allow nuke.
+ # this logical rule prevents double-nuke and double-inject
+
+ # if injecting without a hash file i.e. inject what was injected
+ # (or inject where no vendor files are needed, covered previously)
+ if [ "$has_hashes" != "y" ] && [ "$nukemode" != "nuke" ]; then
+ printf "inject: '%s' has no hash file. Skipping.\n" \
+ "$archive" 1>&2
+ return 1
+ fi
+ # nuking *with* a hash file, i.e. nuking what was nuked before
+ if [ "$has_hashes" = "y" ] && [ "$nukemode" = "nuke" ]; then
+ printf "inject nuke: '%s' has a hash file. Skipping nuke.\n" \
+ "$archive" 1>&2
+ return 1
+ fi
+
[ -n "$CONFIG_HAVE_REFCODE_BLOB" ] && inject "fallback/refcode" \
"$CONFIG_REFCODE_BLOB_FILE" "stage"
+ [ "$CONFIG_HAVE_MRC" = "y" ] && inject "mrc.bin" "$CONFIG_MRC_FILE" \
+ "mrc" "0xfffa0000"
[ "$CONFIG_HAVE_ME_BIN" = "y" ] && inject IFD "$CONFIG_ME_BIN_PATH" me
[ "$CONFIG_KBC1126_FIRMWARE" = "y" ] && inject ecfw1.bin \
"$CONFIG_KBC1126_FW1" raw "$CONFIG_KBC1126_FW1_OFFSET" && inject \
@@ -455,24 +635,26 @@ patch_rom()
[ -z "$CONFIG_FSP_USE_REPO" ] && [ -z "$CONFIG_FSP_FULL_FD" ] && \
[ -n "$CONFIG_FSP_S_FILE" ] && \
inject "$CONFIG_FSP_S_CBFS" "$CONFIG_FSP_S_FILE" fsp
- [ -n "$new_mac" ] && [ "$vrelease" != "y" ] && modify_gbe "$rom"
+ # TODO: modify gbe *after checksum verification only*
+ # TODO: insert default gbe if doing -n nuke
printf "ROM image successfully patched: %s\n" "$rom"
+ xchanged="y"
}
inject()
{
- [ $# -lt 3 ] && $err "$@, $rom: usage: inject name path type (offset)"
- [ "$2" = "/dev/null" ] && return 0; verify="y"
+ [ $# -lt 3 ] && $err "$*, $rom: usage: inject name path type (offset)"
+ [ "$2" = "/dev/null" ] && return 0
- eval `setvars "" cbfsname _dest _t _offset`
+ eval "`setvars "" cbfsname _dest _t _offset`"
cbfsname="$1"; _dest="${2##*../}"; _t="$3"
if [ "$_t" = "fsp" ]; then
[ $# -gt 3 ] && _offset="$4"
else
[ $# -gt 3 ] && _offset="-b $4" && [ -z "$4" ] && \
- $err "inject $@, $rom: offset given but empty (undefined)"
+ $err "inject $*, $rom: offset given but empty (undefined)"
fi
e "$_dest" f n && [ "$nukemode" != "nuke" ] && $err "!inject $dl_type"
@@ -482,26 +664,57 @@ inject()
$_t:$_dest "$rom" -O "$rom" || \
$err "failed: inject '$_t' '$_dest' on '$rom'"
[ "$nukemode" != "nuke" ] || "$ifdtool" $ifdprefix --nuke $_t \
- "$rom" -O "$rom" || $err "$rom: !nuke IFD/$_t"; return 0
+ "$rom" -O "$rom" || $err "$rom: !nuke IFD/$_t"
+ xchanged="y"
+ return 0
elif [ "$nukemode" = "nuke" ]; then
"$cbfstool" "$rom" remove -n "$cbfsname" || \
- $err "inject $rom: can't remove $cbfsname"; return 0
+ $err "inject $rom: can't remove $cbfsname"
+ xchanged="y"
+ return 0
fi
- [ "$_t" != "stage" ] || "$cbfstool" "$rom" add-stage -f \
- "$_dest" -n "$cbfsname" -t stage -c lzma || $err "$rom: !add ref"
- [ "$_t" = "stage" ] || "$cbfstool" "$rom" add -f "$_dest" \
- -n "$cbfsname" -t $_t $_offset || $err "$rom !add $_t ($_dest)"; :
+ if [ "$_t" = "stage" ]; then # the only stage we handle is refcode
+ x_ mkdir -p tmp; x_ rm -f "tmp/refcode"
+ "$rmodtool" -i "$_dest" -o "tmp/refcode" || "!reloc refcode"
+ "$cbfstool" "$rom" add-stage -f "tmp/refcode" -n "$cbfsname" \
+ -t stage || $err "$rom: !add ref"
+ else
+ "$cbfstool" "$rom" add -f "$_dest" -n "$cbfsname" \
+ -t $_t $_offset || $err "$rom !add $_t ($_dest)"
+ fi; xchanged="y"; :
}
-modify_gbe()
+modify_mac_addresses()
{
- chkvars CONFIG_GBE_BIN_PATH
+ [ "$nukemode" = "nuke" ] && \
+ $err "Cannot modify MAC addresses while nuking vendor files"
+ # chkvars CONFIG_GBE_BIN_PATH
+ [ -n "$CONFIG_GBE_BIN_PATH" ] || return 1
e "${CONFIG_GBE_BIN_PATH##*../}" f n && $err "missing gbe file"
- x_ make -C util/nvmutil
- x_ cp "${CONFIG_GBE_BIN_PATH##*../}" "$TMPDIR/gbe"
- x_ "util/nvmutil/nvm" "$TMPDIR/gbe" setmac $new_mac
- "$ifdtool" $ifdprefix -i GbE:"$TMPDIR/gbe" "$1" -O "$1" || \
- $err "Cannot insert modified GbE region into target image."
+ x_ make -C util/nvmutil
+ x_ mkdir -p tmp
+ [ -L "tmp/gbe" ] && $err "tmp/gbe exists but is a symlink"
+ [ -d "tmp/gbe" ] && $err "tmp/gbe exists but is a directory"
+ if [ -e "tmp/gbe" ]; then
+ [ -f "tmp/gbe" ] || $err "tmp/gbe exists and is not a file"
+ fi
+ x_ cp "${CONFIG_GBE_BIN_PATH##*../}" "tmp/gbe"
+
+ x_ "util/nvmutil/nvm" "tmp/gbe" setmac "$new_mac"
+
+ find "$tmpromdir" -maxdepth 1 -type f -name "*.rom" > "tmp/rom.list" \
+ || $err "'$archive' -> Can't make tmp/rom.list - $dontflash"
+
+ while read -r _xrom; do
+ [ -L "$_xrom" ] && continue
+ [ -f "$_xrom" ] || continue
+ "$ifdtool" $ifdprefix -i GbE:"tmp/gbe" "$_xrom" -O \
+ "$_xrom" || $err "'$_xrom': Can't insert new GbE file"
+ xchanged="y"
+ done < "tmp/rom.list"
+ printf "\nThe following GbE NVM words were written in '%s':\n" \
+ "$archive"
+ x_ util/nvmutil/nvm tmp/gbe dump
}
diff --git a/script/trees b/script/trees
index a3ea1e6f..045a49f7 100755
--- a/script/trees
+++ b/script/trees
@@ -2,7 +2,7 @@
# SPDX-License-Identifier: GPL-3.0-or-later
# Copyright (c) 2022-2023 Alper Nebi Yasak <alpernebiyasak@gmail.com>
# Copyright (c) 2022 Ferass El Hafidi <vitali64pmemail@protonmail.com>
-# Copyright (c) 2023-2024 Leah Rowe <leah@libreboot.org>
+# Copyright (c) 2023-2025 Leah Rowe <leah@libreboot.org>
set -u -e
@@ -11,13 +11,13 @@ set -u -e
XBMKPATH="$PATH"
-eval `setvars "" xarch srcdir premake cmakedir xlang mode makeargs elfdir cmd \
+eval "`setvars "" xarch srcdir premake gnatdir xlang mode makeargs elfdir cmd \
project target target_dir targets xtree _f release bootstrapargs mkhelper \
autoconfargs listfile autogenargs btype tree rev tree_depend build_depend \
defconfig postmake mkhelpercfg dry dest_dir mdir cleanargs gccver gccfull \
- gnatver gnatfull gccdir gnatdir`; badhash="n"
+ gnatver gnatfull gccdir cmakedir`"; badhash="n"
-tree()
+main()
{
while getopts f:b:m:u:c:x:s:l:n:d: option; do
[ -n "$_f" ] && $err "only one flag is permitted"
@@ -53,7 +53,7 @@ tree()
e "$mkhelpercfg" f missing && mkhelpercfg="$TMPDIR/mkhelper.cfg" && \
x_ touch "$mkhelpercfg"
- targets="$@"; cmd="build_targets $targets"
+ targets="$*"; cmd="build_targets $targets"
singletree "$project" && cmd="build_project"
remkdir "${tmpgit%/*}"
@@ -115,14 +115,15 @@ handle_defconfig()
configure_project()
{
- eval `setvars "" xarch xlang build_depend autoconfargs xtree postmake \
+ eval "`setvars "" cleanargs build_depend autoconfargs xtree postmake \
tree_depend makeargs btype mkhelper bootstrapargs premake release \
- cleanargs`
+ xarch xlang`"
_tcfg="$1/target.cfg"; badhash="n"; [ -f "$_tcfg" ] || btype="auto"
- [ -f "$datadir/mkhelper.cfg" ] && eval `setcfg "$datadir/mkhelper.cfg"`
+ [ -f "$datadir/mkhelper.cfg" ] && \
+ eval "`setcfg "$datadir/mkhelper.cfg"`"
while [ -f "$_tcfg" ] || [ "$cmd" != "build_project" ]; do
- eval `setvars "" rev tree`; eval `setcfg "$_tcfg"`
+ eval "`setvars "" rev tree`"; eval "`setcfg "$_tcfg"`"
printf "Loading %s config: %s\n" "$project" "$_tcfg"
[ "$_f" = "-d" ] && build_depend="" # dry run
@@ -140,7 +141,7 @@ configure_project()
[ -n "$tree" ] && mdir="$mdir/$tree"
[ -f "CHANGELOG" ] || check_project_hashes
- [ "$mode" = "fetch" ] || x_ ./mk -f "$project" $target
+ [ "$mode" = "fetch" ] || x_ ./mk -f "$project" "$target"
[ "$mode" = "fetch" ] || return 0
[ -f "CHANGELOG" ] && return 1; fetch_${cmd#build_}; return 1
}
@@ -198,7 +199,7 @@ check_cross_compiler()
[ "$project" != "coreboot" ] && cbdir="src/coreboot/default"
[ -n "$xtree" ] && cbdir="src/coreboot/$xtree"
- x_ ./mk -f coreboot ${cbdir#src/coreboot/}
+ x_ ./mk -f coreboot "${cbdir#src/coreboot/}"
export PATH="$PWD/$cbdir/util/crossgcc/xgcc/bin:$PATH"
export CROSS_COMPILE="${xarch% *}-"
@@ -234,16 +235,16 @@ check_gnu_path()
eval "[ \"\$$_gnuarg\" = \"gnat\" ] && continue"
$err "check_gnu_path: Invalid argument \"$_gnuarg\""
done
- command -v $1 1>/dev/null || $err "Host '$1' unavailable"
+ command -v "$1" 1>/dev/null || $err "Host '$1' unavailable"
- eval `setvars "" gccver gccfull gnatver gnatfull gccdir gnatdir`
+ eval "`setvars "" gccver gccfull gnatver gnatfull gccdir gnatdir`"
gnu_setver "$1" "$1" || $err "Command '$1' unavailable."
gnu_setver "$2" "$2" || :
eval "[ -z \"\$$1ver\" ] && $err \"Cannot detect host '$1' version\""
[ "$gnatfull" = "$gccfull" ] && return 0
- eval "$1dir="$(dirname "$(command -v $1)")""
+ eval "$1dir=\"$(dirname "$(command -v "$1")")\""
eval "_gnudir=\"\$$1dir\"; _gnuver=\"\$$1ver\""
for _gnubin in "$_gnudir/$2-"*; do
[ -f "$_gnubin" ] || continue
@@ -266,7 +267,7 @@ check_gnu_path()
gnu_setver()
{
eval "$2 --version 1>/dev/null 2>/dev/null || return 1"
- eval "$1ver=\"`$2 --version 2>/dev/null | head -n1`\""
+ eval "$1ver=\"`"$2" --version 2>/dev/null | head -n1`\""
eval "$1ver=\"\${$1ver##* }\""
eval "$1full=\"\$$1ver\""
eval "$1ver=\"\${$1ver%%.*}\""; :
@@ -316,7 +317,7 @@ run_make_command()
$dry make -C "$srcdir" $mode -j$XBMK_THREADS $makeargs || $err "!$mode"
[ -z "$mkhelper" ] || [ -n "$mode" ] || $mkhelper || $err "!$mkhelper"
- [ "$mode" = "clean" ] && \
+ [ "$mode" != "clean" ] || \
$dry make -C "$srcdir" $cleanargs distclean || :; :
}
@@ -352,6 +353,6 @@ copy_elf()
done < "$listfile"; x_ make clean -C "$srcdir" $cleanargs
}
-tree "$@" || exit 0
+main "$@" || exit 0
. "$mkhelpercfg"
$cmd
diff --git a/util/nvmutil/AUTHORS b/util/nvmutil/AUTHORS
index f3c00385..f38ea210 100644
--- a/util/nvmutil/AUTHORS
+++ b/util/nvmutil/AUTHORS
@@ -1 +1,2 @@
Leah Rowe
+Riku Viitanen
diff --git a/util/nvmutil/COPYING b/util/nvmutil/COPYING
index 784581dd..a6ecf266 100644
--- a/util/nvmutil/COPYING
+++ b/util/nvmutil/COPYING
@@ -1,4 +1,5 @@
-Copyright (C) 2022, 2023 Leah Rowe <leah@libreboot.org>
+Copyright (C) 2022-2025 Leah Rowe <leah@libreboot.org>
+Copyright (c) 2023 Riku Viitanen <riku.viitanen@protonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the
diff --git a/util/nvmutil/Makefile b/util/nvmutil/Makefile
index f25f6dd5..b8ec2ad3 100644
--- a/util/nvmutil/Makefile
+++ b/util/nvmutil/Makefile
@@ -1,16 +1,24 @@
# SPDX-License-Identifier: MIT
-# SPDX-FileCopyrightText: 2022 Leah Rowe <leah@libreboot.org>
+# SPDX-FileCopyrightText: 2022,2025 Leah Rowe <leah@libreboot.org>
# SPDX-FileCopyrightText: 2023 Riku Viitanen <riku.viitanen@protonmail.com>
-CC=cc
-CFLAGS=-Os -Wall -Wextra -Werror -pedantic
-PREFIX?=/usr/bin
+CC?=cc
+CFLAGS?=-Os -Wall -Wextra -Werror -pedantic
+DESTDIR?=
+PREFIX?=/usr/local
+INSTALL?=install
nvm: nvmutil.c
$(CC) $(CFLAGS) nvmutil.c -o nvm
-install: nvm
- install nvm $(PREFIX)/nvm
+install:
+ $(INSTALL) nvm $(DESTDIR)$(PREFIX)/bin/nvm
+
+uninstall:
+ rm -f $(DESTDIR)$(PREFIX)/bin/nvm
+
+distclean:
+ rm -f nvm
clean:
rm -f nvm
diff --git a/util/nvmutil/nvmutil.c b/util/nvmutil/nvmutil.c
index 35abbfae..68bb95da 100644
--- a/util/nvmutil/nvmutil.c
+++ b/util/nvmutil/nvmutil.c
@@ -1,6 +1,6 @@
/* SPDX-License-Identifier: MIT */
-/* SPDX-FileCopyrightText: 2022, 2023 Leah Rowe <leah@libreboot.org> */
-/* SPDX-FileCopyrightText: 2023 Riku Viitanen <riku.viitanen@protonmail.com> */
+/* Copyright (c) 2022-2025 Leah Rowe <leah@libreboot.org> */
+/* Copyright (c) 2023 Riku Viitanen <riku.viitanen@protonmail.com> */
#include <sys/stat.h>
@@ -14,22 +14,23 @@
#include <string.h>
#include <unistd.h>
-void cmd_setchecksum(void), cmd_brick(void), cmd_copy(void), writeGbeFile(void),
- cmd_dump(void), cmd_setmac(void), readGbeFile(void), showmac(int partnum),
- hexdump(int partnum), handle_endianness(int partnum), openFiles(const char *path);
-int macAddress(const char *strMac, uint16_t *mac), validChecksum(int partnum);
+void cmd_setchecksum(void), cmd_brick(void), swap(int partnum), writeGbe(void),
+ cmd_dump(void), cmd_setmac(void), readGbe(void), cmd_copy(void),
+ macf(int partnum), hexdump(int partnum), openFiles(const char *path);
+int macAddress(const char *strMac, uint16_t *mac), goodChecksum(int partnum);
uint8_t hextonum(char chs), rhex(void);
#define COMMAND argv[2]
#define MAC_ADDRESS argv[3]
-#define PARTNUM argv[3]
+#define PARTN argv[3]
#define SIZE_4KB 0x1000
+#define NVM_CHECKSUM 0xBABA
uint16_t buf16[SIZE_4KB], mac[3] = {0, 0, 0};
uint8_t *buf = (uint8_t *) &buf16;
size_t nf = 128, gbe[2];
-uint8_t nvmPartModified[2] = {0, 0}, skipread[2] = {0, 0};
-int e = 1, flags = O_RDWR, rfd, fd, part, gbeFileModified = 0;
+uint8_t nvmPartChanged[2] = {0, 0}, skipread[2] = {0, 0};
+int e = 1, flags = O_RDWR, rfd, fd, part, gbeFileChanged = 0;
const char *strMac = NULL, *strRMac = "??:??:??:??:??:??", *filename = NULL;
@@ -41,7 +42,7 @@ typedef struct op {
op_t op[] = {
{ .str = "dump", .cmd = cmd_dump, .args = 3},
{ .str = "setmac", .cmd = cmd_setmac, .args = 3},
-{ .str = "swap", .cmd = writeGbeFile, .args = 3},
+{ .str = "swap", .cmd = writeGbe, .args = 3},
{ .str = "copy", .cmd = cmd_copy, .args = 4},
{ .str = "brick", .cmd = cmd_brick, .args = 4},
{ .str = "setchecksum", .cmd = cmd_setchecksum, .args = 4},
@@ -56,13 +57,14 @@ void (*cmd)(void) = NULL;
if (fstat(f, &st) == -1) err(ERR(), "%s", l)
#define word(pos16, partnum) buf16[pos16 + (partnum << 11)]
-#define setWord(pos16, p, val16) if ((gbeFileModified = 1) && \
- word(pos16, p) != val16) nvmPartModified[p] = 1 | (word(pos16, p) = val16)
+#define setWord(pos16, p, val16) if ((gbeFileChanged = 1) && \
+ word(pos16, p) != val16) nvmPartChanged[p] = 1 | (word(pos16, p) = val16)
int
main(int argc, char *argv[])
{
if (argc < 3) {
+ fprintf(stderr, "Modify Intel GbE NVM images e.g. set MAC\n");
fprintf(stderr, "USAGE:\n");
fprintf(stderr, " %s FILE dump\n", argv[0]);
fprintf(stderr, " %s FILE setmac [MAC]\n", argv[0]);
@@ -76,9 +78,13 @@ main(int argc, char *argv[])
filename = argv[1];
#ifdef __OpenBSD__
err_if(unveil("/dev/urandom", "r") == -1);
- err_if(unveil(filename, flags == O_RDONLY ? "r" : "rw") == -1);
- err_if(pledge(flags == O_RDONLY ? "stdio rpath" : "stdio rpath wpath",
- NULL) == -1);
+ if (flags == O_RDONLY) {
+ err_if(unveil(filename, "r") == -1);
+ err_if(pledge("stdio rpath", NULL) == -1);
+ } else {
+ err_if(unveil(filename, "rw") == -1);
+ err_if(pledge("stdio rpath wpath", NULL) == -1);
+ }
#endif
openFiles(filename);
#ifdef __OpenBSD__
@@ -92,15 +98,15 @@ main(int argc, char *argv[])
if (cmd == cmd_setmac)
strMac = (argc > 3) ? MAC_ADDRESS : strRMac;
else if ((cmd != NULL) && (argc > 3))
- err_if((errno = (!((part = PARTNUM[0] - '0') == 0 || part == 1))
- || PARTNUM[1] ? EINVAL : errno));
+ err_if((errno = (!((part = PARTN[0] - '0') == 0 || part == 1))
+ || PARTN[1] ? EINVAL : errno));
err_if((errno = (cmd == NULL) ? EINVAL : errno));
- readGbeFile();
+ readGbe();
(*cmd)();
- if ((gbeFileModified) && (flags != O_RDONLY) && (cmd != writeGbeFile))
- writeGbeFile();
+ if ((gbeFileChanged) && (flags != O_RDONLY) && (cmd != writeGbe))
+ writeGbe();
err_if((errno != 0) && (cmd != cmd_dump));
return errno;
}
@@ -117,9 +123,9 @@ openFiles(const char *path)
}
void
-readGbeFile(void)
+readGbe(void)
{
- nf = ((cmd == writeGbeFile) || (cmd == cmd_copy)) ? SIZE_4KB : nf;
+ nf = ((cmd == writeGbe) || (cmd == cmd_copy)) ? SIZE_4KB : nf;
skipread[part ^ 1] = (cmd == cmd_copy) | (cmd == cmd_setchecksum)
| (cmd == cmd_brick);
gbe[1] = (gbe[0] = (size_t) buf) + SIZE_4KB;
@@ -127,7 +133,7 @@ readGbeFile(void)
if (skipread[p])
continue;
err_if(pread(fd, (uint8_t *) gbe[p], nf, p << 12) == -1);
- handle_endianness(p);
+ swap(p);
}
}
@@ -137,7 +143,7 @@ cmd_setmac(void)
if (macAddress(strMac, mac))
err(errno = ECANCELED, "Bad MAC address");
for (int partnum = 0; partnum < 2; partnum++) {
- if (!validChecksum(part = partnum))
+ if (!goodChecksum(part = partnum))
continue;
for (int w = 0; w < 3; w++)
setWord(w, partnum, mac[w]);
@@ -193,16 +199,16 @@ void
cmd_dump(void)
{
for (int partnum = 0, numInvalid = 0; partnum < 2; partnum++) {
- if (!validChecksum(partnum))
+ if (!goodChecksum(partnum))
++numInvalid;
printf("MAC (part %d): ", partnum);
- showmac(partnum), hexdump(partnum);
+ macf(partnum), hexdump(partnum);
errno = ((numInvalid < 2) && (partnum)) ? 0 : errno;
}
}
void
-showmac(int partnum)
+macf(int partnum)
{
for (int c = 0; c < 3; c++) {
uint16_t val16 = word(c, partnum);
@@ -215,10 +221,12 @@ void
hexdump(int partnum)
{
for (int row = 0; row < 8; row++) {
- printf("%07x", row << 4);
+ printf("%08x ", row << 4);
for (int c = 0; c < 8; c++) {
uint16_t val16 = word((row << 3) + c, partnum);
- printf(" %02x%02x", val16 >> 8, val16 & 0xff);
+ if (c == 4)
+ printf(" ");
+ printf(" %02x %02x", val16 & 0xff, val16 >> 8);
} printf("\n");
}
}
@@ -229,43 +237,43 @@ cmd_setchecksum(void)
uint16_t val16 = 0;
for (int c = 0; c < 0x3F; c++)
val16 += word(c, part);
- setWord(0x3F, part, 0xBABA - val16);
+ setWord(0x3F, part, NVM_CHECKSUM - val16);
}
void
cmd_brick(void)
{
- if (validChecksum(part))
+ if (goodChecksum(part))
setWord(0x3F, part, ((word(0x3F, part)) ^ 0xFF));
}
void
cmd_copy(void)
{
- if ((gbeFileModified = nvmPartModified[part ^ 1] = validChecksum(part)))
+ if ((gbeFileChanged = nvmPartChanged[part ^ 1] = goodChecksum(part)))
gbe[part ^ 1] = gbe[part]; /* speedhack: copy ptr, not words */
}
int
-validChecksum(int partnum)
+goodChecksum(int partnum)
{
uint16_t total = 0;
for(int w = 0; w <= 0x3F; w++)
total += word(w, partnum);
- if (total == 0xBABA)
+ if (total == NVM_CHECKSUM)
return 1;
fprintf(stderr, "WARNING: BAD checksum in part %d\n", partnum);
return (errno = ECANCELED) & 0;
}
void
-writeGbeFile(void)
+writeGbe(void)
{
- err_if((cmd == writeGbeFile) && !(validChecksum(0) || validChecksum(1)));
- for (int p = 0, x = (cmd == writeGbeFile) ? 1 : 0; p < 2; p++) {
- if ((!nvmPartModified[p]) && (cmd != writeGbeFile))
+ err_if((cmd == writeGbe) && !(goodChecksum(0) || goodChecksum(1)));
+ for (int p = 0, x = (cmd == writeGbe) ? 1 : 0; p < 2; p++) {
+ if ((!nvmPartChanged[p]) && (cmd != writeGbe))
continue;
- handle_endianness(p^x);
+ swap(p^x);
err_if(pwrite(fd, (uint8_t *) gbe[p^x], nf, p << 12) == -1);
}
errno = 0;
@@ -273,9 +281,10 @@ writeGbeFile(void)
}
void
-handle_endianness(int partnum)
+swap(int partnum)
{
+ size_t w, x;
uint8_t *n = (uint8_t *) gbe[partnum];
- for (size_t w = nf * ((uint8_t *) &e)[0], x = 1; w < nf; w += 2, x += 2)
+ for (w = nf * ((uint8_t *) &e)[0], x = 1; w < nf; w += 2, x += 2)
n[w] ^= n[x], n[x] ^= n[w], n[w] ^= n[x];
}
diff --git a/util/spkmodem_recv/Makefile b/util/spkmodem_recv/Makefile
index 1bba727c..3c5dc51f 100644
--- a/util/spkmodem_recv/Makefile
+++ b/util/spkmodem_recv/Makefile
@@ -1,8 +1,9 @@
# SPDX-License-Identifier: GPL-2.0-or-later
-CC ?= cc
-PREFIX ?= /usr/local
-INSTALL ?= install
-CFLAGS ?= -Os -Wall -Wextra -Werror -pedantic
+CC?=cc
+CFLAGS?=-Os -Wall -Wextra -Werror -pedantic
+DESTDIR?=
+PREFIX?=/usr/local
+INSTALL?=install
spkmodem-recv:
$(CC) $(CFLAGS) -o $@ $@.c