diff options
83 files changed, 807 insertions, 442 deletions
@@ -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 |