diff options
Diffstat (limited to 'config/grub')
61 files changed, 572 insertions, 259 deletions
diff --git a/config/grub/default/config/payload b/config/grub/default/config/payload index 05e64bbd..3d84413e 100644 --- a/config/grub/default/config/payload +++ b/config/grub/default/config/payload @@ -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) 2015 Klemens Nanni <contact@autoboot.org> set prefix=(memdisk)/boot/grub @@ -143,16 +143,12 @@ menuentry 'Load Operating System (incl. fully encrypted disks) [o]' --hotkey='o # grub device enumeration is very slow, so checks are hardcoded - # TODO: add more strings, based on what distros set up when - # the user select auto-partitioning on those installers - lvmvol="lvm/grubcrypt-bootvol lvm/grubcrypt-rootvol" - raidvol="md/0 md/1 md/2 md/3 md/4 md/5 md/6 md/7 md/8 md/9" - # in practise, doing multiple redundant checks is perfectly fast and + # in practise, doing multiple redundant checks is perfectly fast # TODO: optimize grub itself, and use */? here for everything - for vol in ${lvmvol} ${raidvol} ; do + for vol in ${raidvol} ; do try_bootcfg "${vol}" done @@ -164,6 +160,9 @@ menuentry 'Load Operating System (incl. fully encrypted disks) [o]' --hotkey='o bootdev="${bootdev} (ahci${i},${part})" elif [ "${grub_disk}" = "ata" ]; then bootdev="${bootdev} (ata${i},${part})" + elif [ "${grub_disk}" = "nvme" ]; then + # TODO: do we care about other namesapces + bootdev="${bootdev} (nvme${i}n1,${part})" fi done done @@ -171,23 +170,37 @@ menuentry 'Load Operating System (incl. fully encrypted disks) [o]' --hotkey='o set pager=0 echo -n "Attempting to unlock encrypted volumes" - for dev in ${bootdev} ${lvmvol} ${raidvol}; do + for dev in ${bootdev} ${raidvol}; do if cryptomount "${dev}" ; then break ; fi done set pager=1 echo + search_bootcfg crypto + + lvmvol="" + # after cryptomount, lvm volumes might be available + # using * is slow on some machines, but we use it here, + # just once. in so doing, we find every lvm volume + for vol in (*); do + if regexp ^\\(lvm/ $vol; then + lvmvol="${lvmvol} ${vol}" + try_bootcfg "${vol}" + fi + done + + # user might have put luks inside lvm + set pager=0 + echo "Attempting to unlock encrypted LVMs" for vol in ${lvmvol}; do - try_bootcfg "${vol}" + cryptomount "$vol" done + set pager=1 + echo search_bootcfg crypto - for vol in lvm/* ; do - try_bootcfg "${vol}" - done - true # Prevent pager requiring to accept each line instead of whole screen } 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..ffd2c537 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 8ccafb60665bba3759248b13d2d1683818aaf4ee 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..2e7e3fa1 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 3fb09986e62a9945862456d5f1d63a6ccba2c861 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 04d058f55..b1cc8f236 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, @@ -16,10 +16,10 @@ index bd4431000..300f55fe1 100644 grub_term_cls (term); - msg_formatted = grub_xasprintf (_("GNU GRUB version %s"), PACKAGE_VERSION); -+ msg_formatted = grub_xasprintf (_("Libreboot 20241206 release, based on coreboot. https://libreboot.org/")); ++ msg_formatted = grub_xasprintf (_("Libreboot 25.06 Luminous Lemon (GRUB menu): https://libreboot.org/")); if (!msg_formatted) 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..c074099a 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 dc790ff2ba2702ee863c9d16e05cf843a152f3d4 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 de8c3aa8d..4a3be8568 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) +@@ -495,7 +495,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..af617683 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 298eaaca770545e19dfacd47511c2081c1fece08 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..dacd83ee 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 378aa081ac1211d0bf4043eeb0bb7d4aa534043f 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 f4367f895..9d96cedf9 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..f1ea10c2 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 febaf431d235f07b97f07f935611dc168b0b35bb 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 @@ -9,10 +9,10 @@ Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch> 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/grub-core/disk/luks2.c b/grub-core/disk/luks2.c -index d5106402f..bc818ea69 100644 +index 8036d76ff..efae8ac65 100644 --- a/grub-core/disk/luks2.c +++ b/grub-core/disk/luks2.c -@@ -38,6 +38,7 @@ GRUB_MOD_LICENSE ("GPLv3+"); +@@ -39,6 +39,7 @@ GRUB_MOD_LICENSE ("GPLv3+"); enum grub_luks2_kdf_type { LUKS2_KDF_TYPE_ARGON2I, @@ -20,7 +20,7 @@ index d5106402f..bc818ea69 100644 LUKS2_KDF_TYPE_PBKDF2 }; typedef enum grub_luks2_kdf_type grub_luks2_kdf_type_t; -@@ -90,7 +91,7 @@ struct grub_luks2_keyslot +@@ -91,7 +92,7 @@ struct grub_luks2_keyslot grub_int64_t time; grub_int64_t memory; grub_int64_t cpus; @@ -29,7 +29,7 @@ index d5106402f..bc818ea69 100644 struct { const char *hash; -@@ -160,10 +161,11 @@ luks2_parse_keyslot (grub_luks2_keyslot_t *out, const grub_json_t *keyslot) +@@ -161,10 +162,11 @@ luks2_parse_keyslot (grub_luks2_keyslot_t *out, const grub_json_t *keyslot) return grub_error (GRUB_ERR_BAD_ARGUMENT, "Missing or invalid KDF"); else if (!grub_strcmp (type, "argon2i") || !grub_strcmp (type, "argon2id")) { @@ -45,7 +45,7 @@ index d5106402f..bc818ea69 100644 return grub_error (GRUB_ERR_BAD_ARGUMENT, "Missing Argon2i parameters"); } else if (!grub_strcmp (type, "pbkdf2")) -@@ -459,6 +461,7 @@ luks2_decrypt_key (grub_uint8_t *out_key, +@@ -460,6 +462,7 @@ luks2_decrypt_key (grub_uint8_t *out_key, switch (k->kdf.type) { case LUKS2_KDF_TYPE_ARGON2I: @@ -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..c0a8fffb 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 12d3e4dfff3f92daf2f3f73cc0797425f7bb9df6 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 = { @@ -48,18 +48,18 @@ index 452f11b20..5c1af8682 100644 module = { diff --git a/grub-core/disk/luks2.c b/grub-core/disk/luks2.c -index bc818ea69..5b9eaa599 100644 +index efae8ac65..2e742f5be 100644 --- a/grub-core/disk/luks2.c +++ b/grub-core/disk/luks2.c -@@ -27,6 +27,7 @@ - #include <grub/partition.h> +@@ -28,6 +28,7 @@ #include <grub/i18n.h> + #include <grub/safemath.h> +#include <argon2.h> #include <base64.h> #include <json.h> -@@ -462,8 +463,16 @@ luks2_decrypt_key (grub_uint8_t *out_key, +@@ -463,8 +464,16 @@ luks2_decrypt_key (grub_uint8_t *out_key, { case LUKS2_KDF_TYPE_ARGON2I: case LUKS2_KDF_TYPE_ARGON2ID: @@ -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..12e78752 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 8e639e9558c98019566743cc5723e641b1726d15 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 @@ -9,7 +9,7 @@ Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch> 1 file changed, 2 insertions(+) diff --git a/util/grub-install.c b/util/grub-install.c -index 7dc5657bb..cf7315891 100644 +index 060246589..059036d3c 100644 --- a/util/grub-install.c +++ b/util/grub-install.c @@ -448,6 +448,8 @@ probe_mods (grub_disk_t disk) @@ -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..50195201 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 8a098ee241040ccfdf03636f558ef6a3b431bb90 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..685e21c4 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 d86b69fa2c0d73440e5b990d8ab4b66c5c23fa46 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..f15d78e1 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 3726c1e12b8896e4a77cc7a2b490e933dc2c08da 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 4a3be8568..6ae3d73f8 100644 --- a/grub-core/kern/dl.c +++ b/grub-core/kern/dl.c -@@ -758,7 +758,7 @@ grub_dl_load (const char *name) +@@ -881,7 +881,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..713f1244 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 c86a635609a4623baa9312f5c1bebfd51f5883a1 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 6ae3d73f8..4c15027fe 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) +@@ -511,7 +511,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..d23ea109 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 715ba566042aa140cbeb06836c558460ef6f446f 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/patches/0014-kern-coreboot-mmap-Map-to-reserved.patch b/config/grub/default/patches/0014-kern-coreboot-mmap-Map-to-reserved.patch new file mode 100644 index 00000000..5d93ac1d --- /dev/null +++ b/config/grub/default/patches/0014-kern-coreboot-mmap-Map-to-reserved.patch @@ -0,0 +1,37 @@ +From d675307bfcac2f9e05ed119c5b5af3de48e56fb9 Mon Sep 17 00:00:00 2001 +From: Paul Menzel <pmenzel@molgen.mpg.de> +Date: Mon, 17 May 2021 10:24:36 +0200 +Subject: [PATCH] kern/coreboot/mmap: Map to reserved + +https://git.savannah.gnu.org/cgit/grub.git/commit/?id=6de9ee86bf9ae50967413e6a73b5dfd13e5ffb50 + +Signed-off-by: Paul Menzel <pmenzel@molgen.mpg.de> +--- + grub-core/kern/coreboot/mmap.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/grub-core/kern/coreboot/mmap.c b/grub-core/kern/coreboot/mmap.c +index caf8f7cef..2fc316e8d 100644 +--- a/grub-core/kern/coreboot/mmap.c ++++ b/grub-core/kern/coreboot/mmap.c +@@ -59,7 +59,7 @@ iterate_linuxbios_table (grub_linuxbios_table_item_t table_item, void *data) + /* Multiboot mmaps match with the coreboot mmap + definition. Therefore, we can just pass type + through. */ +- mem_region->type, ++ (mem_region->type >= 13) ? 2 : mem_region->type, + ctx->hook_data)) + return 1; + if (start < 0xa0000) +@@ -81,7 +81,7 @@ iterate_linuxbios_table (grub_linuxbios_table_item_t table_item, void *data) + /* Multiboot mmaps match with the coreboot mmap + definition. Therefore, we can just pass type + through. */ +- mem_region->type, ++ (mem_region->type >= 13) ? 2 : mem_region->type, + ctx->hook_data)) + return 1; + } +-- +2.31.1 + diff --git a/config/grub/default/target.cfg b/config/grub/default/target.cfg index c546b1f9..f5cc85f1 100644 --- a/config/grub/default/target.cfg +++ b/config/grub/default/target.cfg @@ -1,2 +1,4 @@ +# SPDX-License-Identifier: GPL-3.0-or-later + tree="default" -rev="b53ec06a1d6f22ffc1139cbfc0f292e4ca2da9cd" +rev="73d1c959ea3417e9309ba8c6102d7d6dc7c94259" diff --git a/config/grub/nvme/config/payload b/config/grub/nvme/config/payload index 52b8dfd9..4f3de36e 100644 --- a/config/grub/nvme/config/payload +++ b/config/grub/nvme/config/payload @@ -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) 2015 Klemens Nanni <contact@autoboot.org> set prefix=(memdisk)/boot/grub @@ -155,16 +155,12 @@ menuentry 'Load Operating System (incl. fully encrypted disks) [o]' --hotkey='o # grub device enumeration is very slow, so checks are hardcoded - # TODO: add more strings, based on what distros set up when - # the user select auto-partitioning on those installers - lvmvol="lvm/grubcrypt-bootvol lvm/grubcrypt-rootvol" - raidvol="md/0 md/1 md/2 md/3 md/4 md/5 md/6 md/7 md/8 md/9" - # in practise, doing multiple redundant checks is perfectly fast and + # in practise, doing multiple redundant checks is perfectly fast # TODO: optimize grub itself, and use */? here for everything - for vol in ${lvmvol} ${raidvol} ; do + for vol in ${raidvol} ; do try_bootcfg "${vol}" done @@ -186,23 +182,37 @@ menuentry 'Load Operating System (incl. fully encrypted disks) [o]' --hotkey='o set pager=0 echo -n "Attempting to unlock encrypted volumes" - for dev in ${bootdev} ${lvmvol} ${raidvol}; do + for dev in ${bootdev} ${raidvol}; do if cryptomount "${dev}" ; then break ; fi done set pager=1 echo + search_bootcfg crypto + + lvmvol="" + # after cryptomount, lvm volumes might be available + # using * is slow on some machines, but we use it here, + # just once. in so doing, we find every lvm volume + for vol in (*); do + if regexp ^\\(lvm/ $vol; then + lvmvol="${lvmvol} ${vol}" + try_bootcfg "${vol}" + fi + done + + # user might have put luks inside lvm + set pager=0 + echo "Attempting to unlock encrypted LVMs" for vol in ${lvmvol}; do - try_bootcfg "${vol}" + cryptomount "$vol" done + set pager=1 + echo search_bootcfg crypto - for vol in lvm/* ; do - try_bootcfg "${vol}" - done - true # Prevent pager requiring to accept each line instead of whole screen } 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..dff2503c 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 5f8189d928309146675a56279458d8bb7534ec0c 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..6afb2002 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 fce8730b8c20b7de0394976861b3d2ebcc21f425 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 04d058f55..b1cc8f236 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, @@ -16,10 +16,10 @@ index bd4431000..300f55fe1 100644 grub_term_cls (term); - msg_formatted = grub_xasprintf (_("GNU GRUB version %s"), PACKAGE_VERSION); -+ msg_formatted = grub_xasprintf (_("Libreboot 20241206 release, based on coreboot. https://libreboot.org/")); ++ msg_formatted = grub_xasprintf (_("Libreboot 25.06 Luminous Lemon (GRUB menu): https://libreboot.org/")); if (!msg_formatted) 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..5a664f32 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 088901d1a7577b52d110803d3c6a0e198130e524 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 de8c3aa8d..4a3be8568 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) +@@ -495,7 +495,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..9e7b2b99 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 1a3fdb4075f32eab6ebda0c813720f0336f1bde7 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..df088e63 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 490fb23a8bd4d669a3dc48f0581321f08f6f2020 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 f4367f895..9d96cedf9 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..ef109bd3 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 c8fac788716d0c8723149eee205f1f0bdc92efbe 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 @@ -9,10 +9,10 @@ Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch> 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/grub-core/disk/luks2.c b/grub-core/disk/luks2.c -index d5106402f..bc818ea69 100644 +index 8036d76ff..efae8ac65 100644 --- a/grub-core/disk/luks2.c +++ b/grub-core/disk/luks2.c -@@ -38,6 +38,7 @@ GRUB_MOD_LICENSE ("GPLv3+"); +@@ -39,6 +39,7 @@ GRUB_MOD_LICENSE ("GPLv3+"); enum grub_luks2_kdf_type { LUKS2_KDF_TYPE_ARGON2I, @@ -20,7 +20,7 @@ index d5106402f..bc818ea69 100644 LUKS2_KDF_TYPE_PBKDF2 }; typedef enum grub_luks2_kdf_type grub_luks2_kdf_type_t; -@@ -90,7 +91,7 @@ struct grub_luks2_keyslot +@@ -91,7 +92,7 @@ struct grub_luks2_keyslot grub_int64_t time; grub_int64_t memory; grub_int64_t cpus; @@ -29,7 +29,7 @@ index d5106402f..bc818ea69 100644 struct { const char *hash; -@@ -160,10 +161,11 @@ luks2_parse_keyslot (grub_luks2_keyslot_t *out, const grub_json_t *keyslot) +@@ -161,10 +162,11 @@ luks2_parse_keyslot (grub_luks2_keyslot_t *out, const grub_json_t *keyslot) return grub_error (GRUB_ERR_BAD_ARGUMENT, "Missing or invalid KDF"); else if (!grub_strcmp (type, "argon2i") || !grub_strcmp (type, "argon2id")) { @@ -45,7 +45,7 @@ index d5106402f..bc818ea69 100644 return grub_error (GRUB_ERR_BAD_ARGUMENT, "Missing Argon2i parameters"); } else if (!grub_strcmp (type, "pbkdf2")) -@@ -459,6 +461,7 @@ luks2_decrypt_key (grub_uint8_t *out_key, +@@ -460,6 +462,7 @@ luks2_decrypt_key (grub_uint8_t *out_key, switch (k->kdf.type) { case LUKS2_KDF_TYPE_ARGON2I: @@ -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..517752ee 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 c9046b0a40ddc43d97e93127538bec0fde62d04e 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 = { @@ -48,18 +48,18 @@ index 452f11b20..5c1af8682 100644 module = { diff --git a/grub-core/disk/luks2.c b/grub-core/disk/luks2.c -index bc818ea69..5b9eaa599 100644 +index efae8ac65..2e742f5be 100644 --- a/grub-core/disk/luks2.c +++ b/grub-core/disk/luks2.c -@@ -27,6 +27,7 @@ - #include <grub/partition.h> +@@ -28,6 +28,7 @@ #include <grub/i18n.h> + #include <grub/safemath.h> +#include <argon2.h> #include <base64.h> #include <json.h> -@@ -462,8 +463,16 @@ luks2_decrypt_key (grub_uint8_t *out_key, +@@ -463,8 +464,16 @@ luks2_decrypt_key (grub_uint8_t *out_key, { case LUKS2_KDF_TYPE_ARGON2I: case LUKS2_KDF_TYPE_ARGON2ID: @@ -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..1cf06602 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 bc99124fb0de2e4b0407f5b8591306241ffc7dc1 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 @@ -9,7 +9,7 @@ Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch> 1 file changed, 2 insertions(+) diff --git a/util/grub-install.c b/util/grub-install.c -index 7dc5657bb..cf7315891 100644 +index 060246589..059036d3c 100644 --- a/util/grub-install.c +++ b/util/grub-install.c @@ -448,6 +448,8 @@ probe_mods (grub_disk_t disk) @@ -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..9a1d866b 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 47ee3e0a5635e99d04fb1248a4896c24ff5bc746 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..d11d424f 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 1934b92519503bfbb8c2f331afab6a34255250ad 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..3315f731 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 6f48f88cd472729f0274f36cef87e76a31b6db35 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 4a3be8568..6ae3d73f8 100644 --- a/grub-core/kern/dl.c +++ b/grub-core/kern/dl.c -@@ -758,7 +758,7 @@ grub_dl_load (const char *name) +@@ -881,7 +881,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..26e08383 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 aab095ed496aec3be4428b48a36a502426e0d275 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 6ae3d73f8..4c15027fe 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) +@@ -511,7 +511,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..2519d1cc 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 703903ca50b9a5705db0cf5dad1ed2561b28d886 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..9f2ee88f 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 e2d0d0695ded985463aac53f6fec5ce945bd4893 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,12 +31,12 @@ 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..6f45989f8 100644 --- a/grub-core/Makefile.core.def +++ b/grub-core/Makefile.core.def -@@ -2614,3 +2614,9 @@ module = { - enable = efi; - depends = part_gpt; +@@ -2677,3 +2677,9 @@ module = { + cflags = '-Wno-uninitialized'; + cppflags = '-I$(srcdir)/lib/libtasn1-grub -I$(srcdir)/tests/asn1/'; }; + +module = { @@ -1070,5 +1070,5 @@ index fbf23df7f..186e76f0b 100644 struct grub_disk; -- -2.39.2 +2.39.5 diff --git a/config/grub/nvme/patches/0015-kern-coreboot-mmap-Map-to-reserved.patch b/config/grub/nvme/patches/0015-kern-coreboot-mmap-Map-to-reserved.patch new file mode 100644 index 00000000..5d93ac1d --- /dev/null +++ b/config/grub/nvme/patches/0015-kern-coreboot-mmap-Map-to-reserved.patch @@ -0,0 +1,37 @@ +From d675307bfcac2f9e05ed119c5b5af3de48e56fb9 Mon Sep 17 00:00:00 2001 +From: Paul Menzel <pmenzel@molgen.mpg.de> +Date: Mon, 17 May 2021 10:24:36 +0200 +Subject: [PATCH] kern/coreboot/mmap: Map to reserved + +https://git.savannah.gnu.org/cgit/grub.git/commit/?id=6de9ee86bf9ae50967413e6a73b5dfd13e5ffb50 + +Signed-off-by: Paul Menzel <pmenzel@molgen.mpg.de> +--- + grub-core/kern/coreboot/mmap.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/grub-core/kern/coreboot/mmap.c b/grub-core/kern/coreboot/mmap.c +index caf8f7cef..2fc316e8d 100644 +--- a/grub-core/kern/coreboot/mmap.c ++++ b/grub-core/kern/coreboot/mmap.c +@@ -59,7 +59,7 @@ iterate_linuxbios_table (grub_linuxbios_table_item_t table_item, void *data) + /* Multiboot mmaps match with the coreboot mmap + definition. Therefore, we can just pass type + through. */ +- mem_region->type, ++ (mem_region->type >= 13) ? 2 : mem_region->type, + ctx->hook_data)) + return 1; + if (start < 0xa0000) +@@ -81,7 +81,7 @@ iterate_linuxbios_table (grub_linuxbios_table_item_t table_item, void *data) + /* Multiboot mmaps match with the coreboot mmap + definition. Therefore, we can just pass type + through. */ +- mem_region->type, ++ (mem_region->type >= 13) ? 2 : mem_region->type, + ctx->hook_data)) + return 1; + } +-- +2.31.1 + diff --git a/config/grub/nvme/target.cfg b/config/grub/nvme/target.cfg index 9177dbd7..7e473f19 100644 --- a/config/grub/nvme/target.cfg +++ b/config/grub/nvme/target.cfg @@ -1,2 +1,4 @@ +# SPDX-License-Identifier: GPL-3.0-or-later + tree="nvme" -rev="b53ec06a1d6f22ffc1139cbfc0f292e4ca2da9cd" +rev="73d1c959ea3417e9309ba8c6102d7d6dc7c94259" diff --git a/config/grub/xhci/config/payload b/config/grub/xhci/config/payload index 6a0fc250..9db22fe2 100644 --- a/config/grub/xhci/config/payload +++ b/config/grub/xhci/config/payload @@ -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) 2015 Klemens Nanni <contact@autoboot.org> set prefix=(memdisk)/boot/grub @@ -156,16 +156,12 @@ menuentry 'Load Operating System (incl. fully encrypted disks) [o]' --hotkey='o # grub device enumeration is very slow, so checks are hardcoded - # TODO: add more strings, based on what distros set up when - # the user select auto-partitioning on those installers - lvmvol="lvm/grubcrypt-bootvol lvm/grubcrypt-rootvol" - raidvol="md/0 md/1 md/2 md/3 md/4 md/5 md/6 md/7 md/8 md/9" - # in practise, doing multiple redundant checks is perfectly fast and + # in practise, doing multiple redundant checks is perfectly fast # TODO: optimize grub itself, and use */? here for everything - for vol in ${lvmvol} ${raidvol} ; do + for vol in ${raidvol} ; do try_bootcfg "${vol}" done @@ -187,23 +183,37 @@ menuentry 'Load Operating System (incl. fully encrypted disks) [o]' --hotkey='o set pager=0 echo -n "Attempting to unlock encrypted volumes" - for dev in ${bootdev} ${lvmvol} ${raidvol}; do + for dev in ${bootdev} ${raidvol}; do if cryptomount "${dev}" ; then break ; fi done set pager=1 echo + search_bootcfg crypto + + lvmvol="" + # after cryptomount, lvm volumes might be available + # using * is slow on some machines, but we use it here, + # just once. in so doing, we find every lvm volume + for vol in (*); do + if regexp ^\\(lvm/ $vol; then + lvmvol="${lvmvol} ${vol}" + try_bootcfg "${vol}" + fi + done + + # user might have put luks inside lvm + set pager=0 + echo "Attempting to unlock encrypted LVMs" for vol in ${lvmvol}; do - try_bootcfg "${vol}" + cryptomount "$vol" done + set pager=1 + echo search_bootcfg crypto - for vol in lvm/* ; do - try_bootcfg "${vol}" - done - true # Prevent pager requiring to accept each line instead of whole screen } 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..5ce90533 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,7 +1,7 @@ -From 1ee64f2373af3ad992993f9cf103a29df0359c3c Mon Sep 17 00:00:00 2001 +From 836f5ba3fe25ef53b4cfcd8a0a1f7a6fb9bcb21c 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 +Subject: [PATCH 01/25] mitigate grub's missing characters for borders/arrow characters This cleans up the display on the main screen in GRUB. @@ -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..608eef01 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,14 +1,14 @@ -From 0e89a40423cdd6f8f20ad03d1c2f54ee7b5ea1b6 Mon Sep 17 00:00:00 2001 +From cb5fe4b9cae34e6ebb12953f62328c883a89a9f2 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 +Subject: [PATCH 02/25] say the name libreboot, in the grub menu --- grub-core/normal/main.c | 2 +- 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 04d058f55..b1cc8f236 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, @@ -16,10 +16,10 @@ index bd4431000..300f55fe1 100644 grub_term_cls (term); - msg_formatted = grub_xasprintf (_("GNU GRUB version %s"), PACKAGE_VERSION); -+ msg_formatted = grub_xasprintf (_("Libreboot 20241206 release, based on coreboot. https://libreboot.org/")); ++ msg_formatted = grub_xasprintf (_("Libreboot 25.06 Luminous Lemon (GRUB menu): https://libreboot.org/")); if (!msg_formatted) 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..19e195fa 100644 --- a/config/grub/xhci/patches/0003-Add-CC0-license.patch +++ b/config/grub/xhci/patches/0003-Add-CC0-license.patch @@ -1,7 +1,7 @@ -From c9be46c903d4aabc88fe4d9394d7a8e024868c32 Mon Sep 17 00:00:00 2001 +From ef94d2c0a9dab9cb1a6888b07893fa341c463649 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 +Subject: [PATCH 03/25] Add CC0 license Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch> --- @@ -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 de8c3aa8d..4a3be8568 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) +@@ -495,7 +495,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..cc309abd 100644 --- a/config/grub/xhci/patches/0004-Define-GRUB_UINT32_MAX.patch +++ b/config/grub/xhci/patches/0004-Define-GRUB_UINT32_MAX.patch @@ -1,7 +1,7 @@ -From c988b6b3bb7567f9ed6bb0332b992577011970c2 Mon Sep 17 00:00:00 2001 +From aebfb4ee87203cc0dbe53ae1e951061efb73452f 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 +Subject: [PATCH 04/25] Define GRUB_UINT32_MAX Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch> --- @@ -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..35b96718 100644 --- a/config/grub/xhci/patches/0005-Add-Argon2-algorithm.patch +++ b/config/grub/xhci/patches/0005-Add-Argon2-algorithm.patch @@ -1,7 +1,7 @@ -From e2cfe7dcdb384ce5268a7c6e5cc8a6e8e01fc05f Mon Sep 17 00:00:00 2001 +From 22a609e508350e2606f90f96d9d0569b2294cfcf 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 +Subject: [PATCH 05/25] Add Argon2 algorithm Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch> --- @@ -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 f4367f895..9d96cedf9 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..5f487314 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,7 +1,7 @@ -From 08a2fce70c6e988eb0112d5ad2787843910811bc Mon Sep 17 00:00:00 2001 +From 0c0da88e7619e5424ef062ea6867dfe32f032164 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 +Subject: [PATCH 06/25] Error on missing Argon2id parameters Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch> --- @@ -9,10 +9,10 @@ Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch> 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/grub-core/disk/luks2.c b/grub-core/disk/luks2.c -index d5106402f..bc818ea69 100644 +index 8036d76ff..efae8ac65 100644 --- a/grub-core/disk/luks2.c +++ b/grub-core/disk/luks2.c -@@ -38,6 +38,7 @@ GRUB_MOD_LICENSE ("GPLv3+"); +@@ -39,6 +39,7 @@ GRUB_MOD_LICENSE ("GPLv3+"); enum grub_luks2_kdf_type { LUKS2_KDF_TYPE_ARGON2I, @@ -20,7 +20,7 @@ index d5106402f..bc818ea69 100644 LUKS2_KDF_TYPE_PBKDF2 }; typedef enum grub_luks2_kdf_type grub_luks2_kdf_type_t; -@@ -90,7 +91,7 @@ struct grub_luks2_keyslot +@@ -91,7 +92,7 @@ struct grub_luks2_keyslot grub_int64_t time; grub_int64_t memory; grub_int64_t cpus; @@ -29,7 +29,7 @@ index d5106402f..bc818ea69 100644 struct { const char *hash; -@@ -160,10 +161,11 @@ luks2_parse_keyslot (grub_luks2_keyslot_t *out, const grub_json_t *keyslot) +@@ -161,10 +162,11 @@ luks2_parse_keyslot (grub_luks2_keyslot_t *out, const grub_json_t *keyslot) return grub_error (GRUB_ERR_BAD_ARGUMENT, "Missing or invalid KDF"); else if (!grub_strcmp (type, "argon2i") || !grub_strcmp (type, "argon2id")) { @@ -45,7 +45,7 @@ index d5106402f..bc818ea69 100644 return grub_error (GRUB_ERR_BAD_ARGUMENT, "Missing Argon2i parameters"); } else if (!grub_strcmp (type, "pbkdf2")) -@@ -459,6 +461,7 @@ luks2_decrypt_key (grub_uint8_t *out_key, +@@ -460,6 +462,7 @@ luks2_decrypt_key (grub_uint8_t *out_key, switch (k->kdf.type) { case LUKS2_KDF_TYPE_ARGON2I: @@ -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..a809e2e4 100644 --- a/config/grub/xhci/patches/0007-Compile-with-Argon2id-support.patch +++ b/config/grub/xhci/patches/0007-Compile-with-Argon2id-support.patch @@ -1,7 +1,7 @@ -From 268da8d0ccce822ffa4c2d9d35fe717245daa726 Mon Sep 17 00:00:00 2001 +From 2a52c5c4f481469667c7c00e43befac28645d57f 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 +Subject: [PATCH 07/25] Compile with Argon2id support Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch> --- @@ -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 = { @@ -48,18 +48,18 @@ index 452f11b20..5c1af8682 100644 module = { diff --git a/grub-core/disk/luks2.c b/grub-core/disk/luks2.c -index bc818ea69..5b9eaa599 100644 +index efae8ac65..2e742f5be 100644 --- a/grub-core/disk/luks2.c +++ b/grub-core/disk/luks2.c -@@ -27,6 +27,7 @@ - #include <grub/partition.h> +@@ -28,6 +28,7 @@ #include <grub/i18n.h> + #include <grub/safemath.h> +#include <argon2.h> #include <base64.h> #include <json.h> -@@ -462,8 +463,16 @@ luks2_decrypt_key (grub_uint8_t *out_key, +@@ -463,8 +464,16 @@ luks2_decrypt_key (grub_uint8_t *out_key, { case LUKS2_KDF_TYPE_ARGON2I: case LUKS2_KDF_TYPE_ARGON2ID: @@ -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..7948ec91 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,7 +1,7 @@ -From 5e540d3e4c01940c66425c4475a1cb6a35b188e8 Mon Sep 17 00:00:00 2001 +From 15076c6c38f4b7bc8e684974a908295478fbae9d 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 +Subject: [PATCH 08/25] Make grub-install work with Argon2 Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch> --- @@ -9,7 +9,7 @@ Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch> 1 file changed, 2 insertions(+) diff --git a/util/grub-install.c b/util/grub-install.c -index 7dc5657bb..cf7315891 100644 +index 060246589..059036d3c 100644 --- a/util/grub-install.c +++ b/util/grub-install.c @@ -448,6 +448,8 @@ probe_mods (grub_disk_t disk) @@ -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..c18061ba 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,7 +1,7 @@ -From 9e9c69a74e5c14fd87ae56c8b9171a808d89742e Mon Sep 17 00:00:00 2001 +From 696f0d54d306472ad00b46e5a702080ae16d0101 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 +Subject: [PATCH 09/25] at_keyboard coreboot: force scancodes2+translate Scan code set 2 with translation should be assumed in every case, as the default starting position. @@ -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..80f04547 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,7 +1,7 @@ -From ccbcdb93af6747fe77094dfa9e114a034420bdd5 Mon Sep 17 00:00:00 2001 +From 907e8f373bac0c618c491a3a5cb4137d4446de05 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 +Subject: [PATCH 10/25] keylayouts: don't print "Unknown key" message on keyboards with stuck keys, this results in GRUB just spewing it repeatedly, preventing use of GRUB. @@ -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..a89f9e29 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,7 +1,7 @@ -From 21a829a3a6f5e7d9028059df8057fdf8bce8fe06 Mon Sep 17 00:00:00 2001 +From b5693f53db4d337b4345192da08130b0f2f9bd08 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 +Subject: [PATCH 11/25] don't print missing prefix errors on the screen we do actually set the prefix. this patch modifies grub to still set grub_errno and return accordingly, @@ -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 4a3be8568..6ae3d73f8 100644 --- a/grub-core/kern/dl.c +++ b/grub-core/kern/dl.c -@@ -758,7 +758,7 @@ grub_dl_load (const char *name) +@@ -881,7 +881,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..913e148c 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,7 +1,7 @@ -From edb8208100c523b5776f2cb0712fdc0c9065e517 Mon Sep 17 00:00:00 2001 +From 55c2e4b1d413fa03d9597007b16d136b3a6fa713 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 +Subject: [PATCH 12/25] don't print error if module not found still set grub_errno accordingly, and otherwise behave the same. in libreboot, we remove a lot of @@ -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 6ae3d73f8..4c15027fe 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) +@@ -511,7 +511,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..381bca8b 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,7 +1,7 @@ -From 65cb1871a3e125355df78a6d1d6f1bc7e356c4e8 Mon Sep 17 00:00:00 2001 +From 93210cf7c046c0c9c8c77ffde4397a25d391c64d 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 +Subject: [PATCH 13/25] don't print empty error messages this is part two of the quest to kill the prefix error message. after i disabled prefix-related @@ -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..a2df041f 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,7 +1,7 @@ -From 3273128b6dc6df83ef6b1d54d009a1ae26844bff Mon Sep 17 00:00:00 2001 +From a216d09bffcb2f2bff96445cca412c9328b4a6bf 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 +Subject: [PATCH 14/25] grub-core/bus/usb: Parse SuperSpeed companion descriptors Parse the SS_ENDPOINT_COMPANION descriptor, which is only present on USB 3.0 @@ -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..1e45acc8 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,7 +1,7 @@ -From 3b8f2defcda1a3b51ad0be8795a2338a0ed5ca59 Mon Sep 17 00:00:00 2001 +From cb56fbac65869f04fcf9b0b4b360f4ccc6deabed 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 +Date: Mon, 7 Dec 2020 08:41:22 +0100 +Subject: [PATCH 15/25] usb: Add enum for xHCI Will be used in future patches. @@ -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..537ed958 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,7 +1,7 @@ -From ba7ce6daec155bc3deac4e0c48d470afa024ab94 Mon Sep 17 00:00:00 2001 +From 3c735bf84a74e5a5612ca9b59868e050da8a46fe 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 +Date: Mon, 7 Dec 2020 08:41:23 +0100 +Subject: [PATCH 16/25] usbtrans: Set default maximum packet size Set the maximum packet size to 512 for SuperSpeed devices. @@ -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..d61f2a8a 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,7 +1,7 @@ -From c4cd7fbe3e2e8ff4cbe6d0db8c3356aeee614af5 Mon Sep 17 00:00:00 2001 +From c01366a852d40e060fc060dda6cf2891c9c50bd0 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 +Subject: [PATCH 17/25] grub-core/bus/usb: Add function pointer for attach/detach events The xHCI code needs to be called for attaching or detaching a device. @@ -19,7 +19,7 @@ Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com> 5 files changed, 29 insertions(+) diff --git a/grub-core/bus/usb/ehci.c b/grub-core/bus/usb/ehci.c -index 9abebc6bd..953b851c0 100644 +index 2db07c7c0..1ee056015 100644 --- a/grub-core/bus/usb/ehci.c +++ b/grub-core/bus/usb/ehci.c @@ -1812,6 +1812,8 @@ static struct grub_usb_controller_dev usb_controller = { @@ -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..75314780 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,7 +1,7 @@ -From 1ab23afbfa7ae436741947c0b9bdacc434ad6153 Mon Sep 17 00:00:00 2001 +From 1ec77a83178e5c1c005b6b27139287f1463f1b49 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 +Date: Mon, 7 Dec 2020 08:41:25 +0100 +Subject: [PATCH 18/25] grub-core/bus/usb/usbhub: Add new private fields for xHCI controller Store the root port number, the route, consisting out of the port ID @@ -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..043320b9 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,7 +1,7 @@ -From 8c9e61e7b0f28a66d0f63c07b10fc6617a709010 Mon Sep 17 00:00:00 2001 +From 03998bc9b74366ecf64d5f76fe4b398ec7fc5d31 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 +Date: Mon, 7 Dec 2020 08:41:26 +0100 +Subject: [PATCH 19/25] grub-core/bus/usb: Add xhci support Add support for xHCI USB controllers. The code is based on seabios implementation, but has been heavily @@ -41,13 +41,6 @@ TODO: * Test on USB3 hubs * Support for USB 3.1 and USB 3.2 controllers -Tested on qemu using coreboot and grub as payload: - -qemu-system-x86_64 -M q35 -bios $firmware -device qemu-xhci,id=xhci -accel kvm -m 1024M \ - -device usb-storage,drive=thumbdrive,bus=xhci.0,port=3 \ - -drive if=none,format=raw,id=thumbdrive,file=ubuntu-20.04.1-desktop-amd64.iso \ - -device usb-kbd,bus=xhci.0 - Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com> Signed-off-by: sylv <sylv@sylv.io> --- @@ -74,7 +67,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 +2803,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..6c5c1731 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,7 +1,7 @@ -From 127961742cf7992f6989c6e89a18ab6d8f0b297f Mon Sep 17 00:00:00 2001 +From 7571efed2cdd949a203401630a19f42c74095797 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 +Date: Mon, 7 Dec 2020 08:41:27 +0100 +Subject: [PATCH 20/25] grub-core/bus/usb/usbhub: Add xHCI non root hub support Tested on Intel PCH C246, the USB3 hub can be configured by grub. @@ -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-xHCI-also-accept-SBRN-0x31-and-0x32.patch b/config/grub/xhci/patches/0021-xHCI-also-accept-SBRN-0x31-and-0x32.patch new file mode 100644 index 00000000..587782c2 --- /dev/null +++ b/config/grub/xhci/patches/0021-xHCI-also-accept-SBRN-0x31-and-0x32.patch @@ -0,0 +1,26 @@ +From 0c58853bd1e4ca63cdeb5b5ef949d78cbd9028d0 Mon Sep 17 00:00:00 2001 +From: Sven Anderson <sven@anderson.de> +Date: Sat, 28 May 2022 21:39:23 +0200 +Subject: [PATCH 21/25] xHCI: also accept SBRN 0x31 and 0x32 + +Signed-off-by: Sven Anderson <sven@anderson.de> +--- + grub-core/bus/usb/xhci-pci.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/grub-core/bus/usb/xhci-pci.c b/grub-core/bus/usb/xhci-pci.c +index a5bd3c97d..cde21f57a 100644 +--- a/grub-core/bus/usb/xhci-pci.c ++++ b/grub-core/bus/usb/xhci-pci.c +@@ -76,7 +76,7 @@ grub_xhci_pci_iter (grub_pci_device_t dev, grub_pci_id_t pciid, + /* Check Serial Bus Release Number */ + addr = grub_pci_make_address (dev, GRUB_XHCI_PCI_SBRN_REG); + release = grub_pci_read_byte (addr); +- if (release != 0x30) ++ if (release != 0x30 && release != 0x31 &&release != 0x32) + { + grub_dprintf ("xhci", "XHCI grub_xhci_pci_iter: Wrong SBRN: %0x\n", + release); +-- +2.39.5 + diff --git a/config/grub/xhci/patches/0022-xhci-fix-port-indexing.patch b/config/grub/xhci/patches/0022-xhci-fix-port-indexing.patch new file mode 100644 index 00000000..64872650 --- /dev/null +++ b/config/grub/xhci/patches/0022-xhci-fix-port-indexing.patch @@ -0,0 +1,43 @@ +From 0da64bd7a144361198ee3dbcd4921fbbdf5c08fa Mon Sep 17 00:00:00 2001 +From: Sven Anderson <sven@anderson.de> +Date: Mon, 13 Jan 2025 19:51:41 +0100 +Subject: [PATCH 22/25] xhci: fix port indexing + +--- + grub-core/bus/usb/xhci.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/grub-core/bus/usb/xhci.c b/grub-core/bus/usb/xhci.c +index f4591ffb5..dc89b9619 100644 +--- a/grub-core/bus/usb/xhci.c ++++ b/grub-core/bus/usb/xhci.c +@@ -2250,7 +2250,7 @@ grub_xhci_detect_dev (grub_usb_controller_t dev, int port, int *changed) + + *changed = 0; + grub_dprintf("xhci", "%s: dev=%p USB%d_%d port %d\n", __func__, dev, +- x->psids[port-1].major, x->psids[port-1].minor, port); ++ x->psids[port].major, x->psids[port].minor, port); + + /* On shutdown advertise all ports as disconnected. This will trigger + * a gracefull detatch. */ +@@ -2285,13 +2285,13 @@ grub_xhci_detect_dev (grub_usb_controller_t dev, int port, int *changed) + if (!(portsc & GRUB_XHCI_PORTSC_CCS)) + return GRUB_USB_SPEED_NONE; + +- for (grub_uint8_t i = 0; i < 16 && x->psids[port-1].psids[i].id > 0; i++) ++ for (grub_uint8_t i = 0; i < 16 && x->psids[port].psids[i].id > 0; i++) + { +- if (x->psids[port-1].psids[i].id == speed) ++ if (x->psids[port].psids[i].id == speed) + { + grub_dprintf("xhci", "%s: grub_usb_speed = %d\n", __func__, +- x->psids[port-1].psids[i].grub_usb_speed ); +- return x->psids[port-1].psids[i].grub_usb_speed; ++ x->psids[port].psids[i].grub_usb_speed ); ++ return x->psids[port].psids[i].grub_usb_speed; + } + } + +-- +2.39.5 + diff --git a/config/grub/xhci/patches/0023-xhci-configure-TT-for-non-root-hubs.patch b/config/grub/xhci/patches/0023-xhci-configure-TT-for-non-root-hubs.patch new file mode 100644 index 00000000..c63850d6 --- /dev/null +++ b/config/grub/xhci/patches/0023-xhci-configure-TT-for-non-root-hubs.patch @@ -0,0 +1,98 @@ +From fa9c2124b1ca476f8b2ce168d56527100757ef90 Mon Sep 17 00:00:00 2001 +From: Sven Anderson <sven@anderson.de> +Date: Mon, 13 Jan 2025 20:26:32 +0100 +Subject: [PATCH 23/25] xhci: configure TT for non-root-hubs + +--- + grub-core/bus/usb/usbhub.c | 6 +++++ + grub-core/bus/usb/xhci.c | 45 +++++++++++++++++++++++++++++++++----- + include/grub/usb.h | 2 ++ + 3 files changed, 47 insertions(+), 6 deletions(-) + +diff --git a/grub-core/bus/usb/usbhub.c b/grub-core/bus/usb/usbhub.c +index e96505aa9..629b3ed53 100644 +--- a/grub-core/bus/usb/usbhub.c ++++ b/grub-core/bus/usb/usbhub.c +@@ -818,3 +818,9 @@ grub_usb_iterate (grub_usb_iterate_hook_t hook, void *hook_data) + + return 0; + } ++ ++grub_usb_device_t ++grub_usb_get_dev (int addr) ++{ ++ return grub_usb_devs[addr]; ++} +diff --git a/grub-core/bus/usb/xhci.c b/grub-core/bus/usb/xhci.c +index dc89b9619..88c9ac57f 100644 +--- a/grub-core/bus/usb/xhci.c ++++ b/grub-core/bus/usb/xhci.c +@@ -623,13 +623,46 @@ grub_xhci_alloc_inctx(struct grub_xhci *x, int maxepid, + break; + } + +- /* Route is greater zero on devices that are connected to a non root hub */ +- if (dev->route) +- { +- /* FIXME: Implement this code for non SuperSpeed hub devices */ ++ /* Set routing string */ ++ slot->ctx[0] |= dev->route; ++ ++ /* Set root hub port number */ ++ slot->ctx[1] |= (dev->root_port + 1) << 16; ++ ++ if (dev->split_hubaddr && (dev->speed == GRUB_USB_SPEED_LOW || ++ dev->speed == GRUB_USB_SPEED_FULL)) { ++ ++ grub_usb_device_t hubdev = grub_usb_get_dev(dev->split_hubaddr); ++ ++ if (!hubdev || hubdev->descdev.class != GRUB_USB_CLASS_HUB) { ++ grub_dprintf("xhci", "Invalid hub device at addr %d!\n", dev->split_hubaddr); ++ return NULL; ++ } ++ ++ struct grub_xhci_priv *hub_priv = hubdev->xhci_priv; ++ if (!hub_priv) { ++ grub_dprintf("xhci", "Hub has no xhci_priv!\n"); ++ return NULL; ++ } ++ ++ if (hubdev->speed == GRUB_USB_SPEED_HIGH) { ++ /* Direct connection to high-speed hub - set up TT */ ++ grub_dprintf("xhci", "Direct high-speed hub connection - configuring TT with " ++ "hub slot %d port %d\n", hub_priv->slotid, dev->split_hubport); ++ slot->ctx[2] |= hub_priv->slotid; ++ slot->ctx[2] |= dev->split_hubport << 8; + } +- slot->ctx[0] |= dev->route; +- slot->ctx[1] |= (dev->root_port+1) << 16; ++ else { ++ /* Hub is not high-speed, inherit TT settings from parent */ ++ volatile struct grub_xhci_slotctx *hubslot; ++ grub_dprintf("xhci", "Non high-speed hub - inheriting TT settings from parent\n"); ++ hubslot = grub_dma_phys2virt(x->devs[hub_priv->slotid].ptr_low, x->devs_dma); ++ slot->ctx[2] = hubslot->ctx[2]; ++ } ++ } ++ ++ grub_dprintf("xhci", "Slot context: ctx[0]=0x%08x ctx[1]=0x%08x ctx[2]=0x%08x\n", ++ slot->ctx[0], slot->ctx[1], slot->ctx[2]); + + grub_arch_sync_dma_caches(in, size); + +diff --git a/include/grub/usb.h b/include/grub/usb.h +index eb71fa1c7..df97a60cc 100644 +--- a/include/grub/usb.h ++++ b/include/grub/usb.h +@@ -62,6 +62,8 @@ typedef int (*grub_usb_controller_iterate_hook_t) (grub_usb_controller_t dev, + /* Call HOOK with each device, until HOOK returns non-zero. */ + int grub_usb_iterate (grub_usb_iterate_hook_t hook, void *hook_data); + ++grub_usb_device_t grub_usb_get_dev (int addr); ++ + grub_usb_err_t grub_usb_device_initialize (grub_usb_device_t dev); + + grub_usb_err_t grub_usb_get_descriptor (grub_usb_device_t dev, +-- +2.39.5 + diff --git a/config/grub/xhci/patches/0021-Fix-compilation-on-x86_64.patch b/config/grub/xhci/patches/0024-Fix-compilation-on-x86_64.patch index 6a5f0502..d03db740 100644 --- a/config/grub/xhci/patches/0021-Fix-compilation-on-x86_64.patch +++ b/config/grub/xhci/patches/0024-Fix-compilation-on-x86_64.patch @@ -1,7 +1,7 @@ -From 8d46c537d4df8c785af4b85644d311ba53af5964 Mon Sep 17 00:00:00 2001 +From b049a11e2cf54e51b3a9fd4d3435089999e61702 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 +Subject: [PATCH 24/25] Fix compilation on x86_64 Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com> --- @@ -9,7 +9,7 @@ Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com> 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/grub-core/bus/usb/xhci.c b/grub-core/bus/usb/xhci.c -index f4591ffb5..3495bb919 100644 +index 88c9ac57f..9b9bae6e5 100644 --- a/grub-core/bus/usb/xhci.c +++ b/grub-core/bus/usb/xhci.c @@ -184,7 +184,7 @@ enum @@ -36,7 +36,7 @@ index f4591ffb5..3495bb919 100644 static inline grub_uint32_t grub_xhci_port_read (struct grub_xhci *x, grub_uint32_t port) { -@@ -664,7 +672,7 @@ static void xhci_process_events(struct grub_xhci *x) +@@ -697,7 +705,7 @@ static void xhci_process_events(struct grub_xhci *x) case ER_TRANSFER: case ER_COMMAND_COMPLETE: { @@ -45,7 +45,7 @@ index f4591ffb5..3495bb919 100644 struct grub_xhci_ring *ring = XHCI_RING(rtrb); volatile struct grub_xhci_trb *evt = &ring->evt; grub_uint32_t eidx = rtrb - ring->ring + 1; -@@ -697,9 +705,9 @@ static void xhci_process_events(struct grub_xhci *x) +@@ -730,9 +738,9 @@ static void xhci_process_events(struct grub_xhci *x) } grub_xhci_write32(&evts->nidx, nidx); volatile struct grub_xhci_ir *ir = x->ir; @@ -58,7 +58,7 @@ index f4591ffb5..3495bb919 100644 } } -@@ -800,7 +808,7 @@ static void xhci_trb_queue(volatile struct grub_xhci_ring *ring, +@@ -833,7 +841,7 @@ static void xhci_trb_queue(volatile struct grub_xhci_ring *ring, grub_uint32_t xferlen, grub_uint32_t flags) { grub_dprintf("xhci", "%s: ring %p data %llx len %d flags 0x%x remain 0x%x\n", __func__, @@ -67,7 +67,7 @@ index f4591ffb5..3495bb919 100644 if (xhci_ring_full(ring)) { -@@ -1907,7 +1915,7 @@ grub_xhci_setup_transfer (grub_usb_controller_t dev, +@@ -1940,7 +1948,7 @@ grub_xhci_setup_transfer (grub_usb_controller_t dev, if (transfer->type == GRUB_USB_TRANSACTION_TYPE_CONTROL) { volatile struct grub_usb_packet_setup *setupdata; @@ -76,7 +76,7 @@ index f4591ffb5..3495bb919 100644 grub_dprintf("xhci", "%s: CONTROLL TRANS req %d\n", __func__, setupdata->request); grub_dprintf("xhci", "%s: CONTROLL TRANS length %d\n", __func__, setupdata->length); -@@ -1974,7 +1982,7 @@ grub_xhci_setup_transfer (grub_usb_controller_t dev, +@@ -2007,7 +2015,7 @@ grub_xhci_setup_transfer (grub_usb_controller_t dev, /* Assume the ring has enough free space for all TRBs */ if (flags & TRB_TR_IDT && tr->size <= (int)sizeof(inline_data)) { @@ -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/0025-Add-native-NVMe-driver-based-on-SeaBIOS.patch index 82452f1c..96ecbaaf 100644 --- a/config/grub/xhci/patches/0022-Add-native-NVMe-driver-based-on-SeaBIOS.patch +++ b/config/grub/xhci/patches/0025-Add-native-NVMe-driver-based-on-SeaBIOS.patch @@ -1,7 +1,7 @@ -From 394102db8f4de6782b628b29c59d2634f2c72674 Mon Sep 17 00:00:00 2001 +From 7bb8bb98b86fc97e1ce04e6169d517acbd476e1e 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 +Subject: [PATCH 25/25] Add native NVMe driver based on SeaBIOS Tested to successfully boot Debian on QEMU and OptiPlex 3050. @@ -31,12 +31,12 @@ 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..367e4b5e6 100644 --- a/grub-core/Makefile.core.def +++ b/grub-core/Makefile.core.def -@@ -2621,3 +2621,9 @@ module = { - enable = efi; - depends = part_gpt; +@@ -2684,3 +2684,9 @@ module = { + cflags = '-Wno-uninitialized'; + cppflags = '-I$(srcdir)/lib/libtasn1-grub -I$(srcdir)/tests/asn1/'; }; + +module = { @@ -1070,5 +1070,5 @@ index fbf23df7f..186e76f0b 100644 struct grub_disk; -- -2.39.2 +2.39.5 diff --git a/config/grub/xhci/patches/0026-kern-coreboot-mmap-Map-to-reserved.patch b/config/grub/xhci/patches/0026-kern-coreboot-mmap-Map-to-reserved.patch new file mode 100644 index 00000000..5d93ac1d --- /dev/null +++ b/config/grub/xhci/patches/0026-kern-coreboot-mmap-Map-to-reserved.patch @@ -0,0 +1,37 @@ +From d675307bfcac2f9e05ed119c5b5af3de48e56fb9 Mon Sep 17 00:00:00 2001 +From: Paul Menzel <pmenzel@molgen.mpg.de> +Date: Mon, 17 May 2021 10:24:36 +0200 +Subject: [PATCH] kern/coreboot/mmap: Map to reserved + +https://git.savannah.gnu.org/cgit/grub.git/commit/?id=6de9ee86bf9ae50967413e6a73b5dfd13e5ffb50 + +Signed-off-by: Paul Menzel <pmenzel@molgen.mpg.de> +--- + grub-core/kern/coreboot/mmap.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/grub-core/kern/coreboot/mmap.c b/grub-core/kern/coreboot/mmap.c +index caf8f7cef..2fc316e8d 100644 +--- a/grub-core/kern/coreboot/mmap.c ++++ b/grub-core/kern/coreboot/mmap.c +@@ -59,7 +59,7 @@ iterate_linuxbios_table (grub_linuxbios_table_item_t table_item, void *data) + /* Multiboot mmaps match with the coreboot mmap + definition. Therefore, we can just pass type + through. */ +- mem_region->type, ++ (mem_region->type >= 13) ? 2 : mem_region->type, + ctx->hook_data)) + return 1; + if (start < 0xa0000) +@@ -81,7 +81,7 @@ iterate_linuxbios_table (grub_linuxbios_table_item_t table_item, void *data) + /* Multiboot mmaps match with the coreboot mmap + definition. Therefore, we can just pass type + through. */ +- mem_region->type, ++ (mem_region->type >= 13) ? 2 : mem_region->type, + ctx->hook_data)) + return 1; + } +-- +2.31.1 + diff --git a/config/grub/xhci/target.cfg b/config/grub/xhci/target.cfg index af33f65d..0b90065b 100644 --- a/config/grub/xhci/target.cfg +++ b/config/grub/xhci/target.cfg @@ -1,2 +1,4 @@ +# SPDX-License-Identifier: GPL-3.0-or-later + tree="xhci" -rev="b53ec06a1d6f22ffc1139cbfc0f292e4ca2da9cd" +rev="73d1c959ea3417e9309ba8c6102d7d6dc7c94259" |