mirror of
https://codeberg.org/libreboot/lbmk.git
synced 2025-07-06 17:01:29 +00:00
Compare commits
3 commits
master
...
20241206re
Author | SHA1 | Date | |
---|---|---|---|
|
68ebde2f03 | ||
|
697afdea43 | ||
|
9196ceb1f9 |
64 changed files with 423 additions and 204 deletions
|
@ -1,6 +1,6 @@
|
|||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
rev="e75e3a20e63269a5e3189bc2e49a6a81d45a636a"
|
||||
rev="3ea792664ed29ca1ff3e2e78d1d16099684781bd"
|
||||
url="https://codeberg.org/libreboot/pico-serprog"
|
||||
bkup_url="https://git.disroot.org/libreboot/pico-serprog"
|
||||
depend="pico-sdk picotool"
|
||||
|
|
|
@ -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
|
||||
|
||||
# after cryptomount, lvm volumes might be available
|
||||
for vol in ${lvmvol}; do
|
||||
try_bootcfg "${vol}"
|
||||
done
|
||||
|
||||
search_bootcfg crypto
|
||||
|
||||
for vol in lvm/* ; do
|
||||
try_bootcfg "${vol}"
|
||||
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
|
||||
cryptomount "$vol"
|
||||
done
|
||||
set pager=1
|
||||
echo
|
||||
|
||||
search_bootcfg crypto
|
||||
|
||||
true # Prevent pager requiring to accept each line instead of whole screen
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From 26b89e90c8d6d89f2e52b00ad15ba58fd2e1fbfb Mon Sep 17 00:00:00 2001
|
||||
From 016f8655f5bed2b65c19e0e127b72ba3cfbcfb7d 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
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From 10d264bdfde24fcf78da6f641898eb267f83066f Mon Sep 17 00:00:00 2001
|
||||
From d7f6f258ea14ec47d586eccbd0f5d96784e8bd15 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..ff16e0f2e 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,7 +16,7 @@ index bd4431000..ff16e0f2e 100644
|
|||
grub_term_cls (term);
|
||||
|
||||
- msg_formatted = grub_xasprintf (_("GNU GRUB version %s"), PACKAGE_VERSION);
|
||||
+ msg_formatted = grub_xasprintf (_("Libreboot 20241206, 8th revision (GRUB menu): https://libreboot.org/"));
|
||||
+ msg_formatted = grub_xasprintf (_("Libreboot 20241206, 10th revision (GRUB menu): https://libreboot.org/"));
|
||||
if (!msg_formatted)
|
||||
return;
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From 689c09a6b675ba52318cd879b289ac3d67073cd4 Mon Sep 17 00:00:00 2001
|
||||
From 85a88ecf10e1dd5cef7244aedaf7db76e845045f 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 8ad015b07..9980bae90 100644
|
||||
index de8c3aa8d..4a3be8568 100644
|
||||
--- a/grub-core/kern/dl.c
|
||||
+++ b/grub-core/kern/dl.c
|
||||
@@ -494,7 +494,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
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From 63dc3c9ca6e5635b5c7e7ba24c996b23e79a92e3 Mon Sep 17 00:00:00 2001
|
||||
From bb12d671182c455c894979a8a5890f5f4baa02dc 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
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From be6452a88ff3cbe033d37b739829e41798682510 Mon Sep 17 00:00:00 2001
|
||||
From 216e1351e5957e0589d488427a6dfee246705d0d 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
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From 39f620fbe7c4a791062b59d4a8d26c35408aca45 Mon Sep 17 00:00:00 2001
|
||||
From a2687cc594714ff33a4c50d40222c113768ed826 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:
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From c192948ea0329d06cf4706667305b473b48c15f5 Mon Sep 17 00:00:00 2001
|
||||
From 2d1af8f5dfd1492ac95bcf7db4e6c789aa83018e 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
|
||||
|
@ -48,18 +48,18 @@ index f5f9b040c..f1f38d8d3 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:
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From 2887e35e882a86e474052112a23608570b3f41b2 Mon Sep 17 00:00:00 2001
|
||||
From 67900e39bd45018b5611862b9438081c618b916f 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
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From 548c5b227718783776b81d1e074b1982e76f2327 Mon Sep 17 00:00:00 2001
|
||||
From e8ae938700e715194e47d346c43aa4be23f1b4bf 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
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From 89764949b2bcfaad122800f336aa205fea4a1fed Mon Sep 17 00:00:00 2001
|
||||
From dfd1639bb999e3dbbd346cc97f4bbaf32d129cd6 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
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From c6de75a3369aebb51df1659d89a6d7024c84d85e Mon Sep 17 00:00:00 2001
|
||||
From 8421c59fa62ce954dcba05ad04591c651d6dcf43 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 9980bae90..4457cad7c 100644
|
||||
index 4a3be8568..6ae3d73f8 100644
|
||||
--- a/grub-core/kern/dl.c
|
||||
+++ b/grub-core/kern/dl.c
|
||||
@@ -871,7 +871,7 @@ grub_dl_load (const char *name)
|
||||
@@ -881,7 +881,7 @@ grub_dl_load (const char *name)
|
||||
return 0;
|
||||
|
||||
if (! grub_dl_dir) {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From e8e419fe16843e7b7d8c614531df9447db689d28 Mon Sep 17 00:00:00 2001
|
||||
From c377f3c025101da17252a43449cc58fdd44c44af 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 4457cad7c..ea9fe8019 100644
|
||||
index 6ae3d73f8..4c15027fe 100644
|
||||
--- a/grub-core/kern/dl.c
|
||||
+++ b/grub-core/kern/dl.c
|
||||
@@ -510,7 +510,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)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From 6eb22aa4110b99245fd31dcaad979d5049d398d6 Mon Sep 17 00:00:00 2001
|
||||
From 664ce75106049547d7595fc021a0a1f9a69e585a 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
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
tree="default"
|
||||
rev="6811f6f09d61996a3acbc4fc0414e45964f0e2d9"
|
||||
rev="4dc6166571645780c459dde2cdc1b001a5ec844c"
|
||||
|
|
|
@ -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
|
||||
|
||||
# after cryptomount, lvm volumes might be available
|
||||
for vol in ${lvmvol}; do
|
||||
try_bootcfg "${vol}"
|
||||
done
|
||||
|
||||
search_bootcfg crypto
|
||||
|
||||
for vol in lvm/* ; do
|
||||
try_bootcfg "${vol}"
|
||||
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
|
||||
cryptomount "$vol"
|
||||
done
|
||||
set pager=1
|
||||
echo
|
||||
|
||||
search_bootcfg crypto
|
||||
|
||||
true # Prevent pager requiring to accept each line instead of whole screen
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From 985e87b15e60edb31d8b70f765b97cc8d436d10e Mon Sep 17 00:00:00 2001
|
||||
From 07cd05c1756cdb18cf5e55d72e4002e271e8af12 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
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From f9ae737976ff52fc656459942dd0bdbd763e66df Mon Sep 17 00:00:00 2001
|
||||
From c1617d04ac24544d578643863c545bb885444030 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..ff16e0f2e 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,7 +16,7 @@ index bd4431000..ff16e0f2e 100644
|
|||
grub_term_cls (term);
|
||||
|
||||
- msg_formatted = grub_xasprintf (_("GNU GRUB version %s"), PACKAGE_VERSION);
|
||||
+ msg_formatted = grub_xasprintf (_("Libreboot 20241206, 8th revision (GRUB menu): https://libreboot.org/"));
|
||||
+ msg_formatted = grub_xasprintf (_("Libreboot 20241206, 10th revision (GRUB menu): https://libreboot.org/"));
|
||||
if (!msg_formatted)
|
||||
return;
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From 40c559b7f1e402520a9044b4d3e22b7afd1bb981 Mon Sep 17 00:00:00 2001
|
||||
From 4987b1725277f0e16895b7a67b8b2af9de3183ed 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 8ad015b07..9980bae90 100644
|
||||
index de8c3aa8d..4a3be8568 100644
|
||||
--- a/grub-core/kern/dl.c
|
||||
+++ b/grub-core/kern/dl.c
|
||||
@@ -494,7 +494,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
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From 2d5493a02da107e7f3673b0ff5f0920ad557df78 Mon Sep 17 00:00:00 2001
|
||||
From 6e3672bcba5075908f2a3b2ec235168bf2a4b1ed 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
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From 520573cfa2b370a7d72102321bb0735a86e2999c Mon Sep 17 00:00:00 2001
|
||||
From ec94eb604358bd87236fc3cce9d14770c3595461 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
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From d3b500914ce84be6bcae0f4f5fefff21e4e0ca63 Mon Sep 17 00:00:00 2001
|
||||
From e02e392863dd30f40c538770c31268a8337433c5 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:
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From 5774fd23a381d7d96e65ede9dd300b7e83fa1f06 Mon Sep 17 00:00:00 2001
|
||||
From 67a96fa1d99ebf28dbdaefbce57e6f3cba2f6bf3 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
|
||||
|
@ -48,18 +48,18 @@ index f5f9b040c..f1f38d8d3 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:
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From b8b9be1749d4802dde57f3547a1ee91c8fec1c3e Mon Sep 17 00:00:00 2001
|
||||
From de000f70873b61d62b0d561e0af5302e178c4e42 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
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From 93790c5686ea2ac4da8d2c67377fe84fd37df953 Mon Sep 17 00:00:00 2001
|
||||
From 5b239742565ed20fce545aa32952a37bbb45beb8 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
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From a18f0ddb9a396828bd11f540ed134047efe4b2bd Mon Sep 17 00:00:00 2001
|
||||
From f8c3f597daf62a13f1c1169fddd78c833dd05cf1 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
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From 233c4f1a1182fd10ef60da98dd00b687c9edbee4 Mon Sep 17 00:00:00 2001
|
||||
From 27c79cf561fd5eef0c8eb5dda9f536cee3926b57 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 9980bae90..4457cad7c 100644
|
||||
index 4a3be8568..6ae3d73f8 100644
|
||||
--- a/grub-core/kern/dl.c
|
||||
+++ b/grub-core/kern/dl.c
|
||||
@@ -871,7 +871,7 @@ grub_dl_load (const char *name)
|
||||
@@ -881,7 +881,7 @@ grub_dl_load (const char *name)
|
||||
return 0;
|
||||
|
||||
if (! grub_dl_dir) {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From c5ef7185f0e32a1a33aca181427cbee8f22af8d2 Mon Sep 17 00:00:00 2001
|
||||
From 752ac0c09c7ac3f1ecc5d3d4d8410d424b433da2 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 4457cad7c..ea9fe8019 100644
|
||||
index 6ae3d73f8..4c15027fe 100644
|
||||
--- a/grub-core/kern/dl.c
|
||||
+++ b/grub-core/kern/dl.c
|
||||
@@ -510,7 +510,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)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From 8e8d7a4f391538e4c0d42226ac48f5a1325deeb5 Mon Sep 17 00:00:00 2001
|
||||
From ac7a47b0a80a0f398c1250384fd5bc8c228c5d09 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
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From 0e358c800b58f8122e8d333541eba08cf1b4dbef Mon Sep 17 00:00:00 2001
|
||||
From 421a826c41882baafb2c5710959810657f24a52e 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,20 +31,19 @@ index 43635d5ff..2c86dbbf6 100644
|
|||
|
||||
endif
|
||||
diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
|
||||
index f1f38d8d3..d09f9ffbc 100644
|
||||
index f1f38d8d3..6f45989f8 100644
|
||||
--- a/grub-core/Makefile.core.def
|
||||
+++ b/grub-core/Makefile.core.def
|
||||
@@ -2676,4 +2676,10 @@ module = {
|
||||
common = tests/asn1/asn1_test.c;
|
||||
@@ -2677,3 +2677,9 @@ module = {
|
||||
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
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
tree="nvme"
|
||||
rev="6811f6f09d61996a3acbc4fc0414e45964f0e2d9"
|
||||
rev="4dc6166571645780c459dde2cdc1b001a5ec844c"
|
||||
|
|
|
@ -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
|
||||
|
||||
# after cryptomount, lvm volumes might be available
|
||||
for vol in ${lvmvol}; do
|
||||
try_bootcfg "${vol}"
|
||||
done
|
||||
|
||||
search_bootcfg crypto
|
||||
|
||||
for vol in lvm/* ; do
|
||||
try_bootcfg "${vol}"
|
||||
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
|
||||
cryptomount "$vol"
|
||||
done
|
||||
set pager=1
|
||||
echo
|
||||
|
||||
search_bootcfg crypto
|
||||
|
||||
true # Prevent pager requiring to accept each line instead of whole screen
|
||||
}
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From c94b9ea258feb53773bab06bc2a6c6e66a44f867 Mon Sep 17 00:00:00 2001
|
||||
From 96e8baf58dcae1dbc016420ea1972d50f09f8f9b 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/26] mitigate grub's missing characters for borders/arrow
|
||||
characters
|
||||
|
||||
This cleans up the display on the main screen in GRUB.
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
From da775eafbe79e3100ca2262bde49e3e65978e83f Mon Sep 17 00:00:00 2001
|
||||
From f23a77c22e61e466c081d2b81b968bac4812e6b6 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/26] 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..ff16e0f2e 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,7 +16,7 @@ index bd4431000..ff16e0f2e 100644
|
|||
grub_term_cls (term);
|
||||
|
||||
- msg_formatted = grub_xasprintf (_("GNU GRUB version %s"), PACKAGE_VERSION);
|
||||
+ msg_formatted = grub_xasprintf (_("Libreboot 20241206, 8th revision (GRUB menu): https://libreboot.org/"));
|
||||
+ msg_formatted = grub_xasprintf (_("Libreboot 20241206, 10th revision (GRUB menu): https://libreboot.org/"));
|
||||
if (!msg_formatted)
|
||||
return;
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From b91e5cafa7863b5a61e97d483f98dcece374721a Mon Sep 17 00:00:00 2001
|
||||
From 4e2ba04266f006369dc10b981803ba3a237f2ad8 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/26] 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 8ad015b07..9980bae90 100644
|
||||
index de8c3aa8d..4a3be8568 100644
|
||||
--- a/grub-core/kern/dl.c
|
||||
+++ b/grub-core/kern/dl.c
|
||||
@@ -494,7 +494,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
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 58e0d7b7bcec2392b81dda613d070804f7c68cf5 Mon Sep 17 00:00:00 2001
|
||||
From c0b5c14042ee44e0e3ed814ebba3190b47514d82 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/26] Define GRUB_UINT32_MAX
|
||||
|
||||
Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch>
|
||||
---
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 65a9b252b79d5d1fa022e3da9ef91459ad8efb94 Mon Sep 17 00:00:00 2001
|
||||
From 46aa2f307de53b305045f7706b38a4e0d198875e 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/26] Add Argon2 algorithm
|
||||
|
||||
Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch>
|
||||
---
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 809908898f9d67979885a651b295ca1fa066039c Mon Sep 17 00:00:00 2001
|
||||
From c3a68f158725a858206c1fc91407b4993142a4a5 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/26] 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:
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 26ae5da9ed8382869b699a653988e6c8f32bd3d1 Mon Sep 17 00:00:00 2001
|
||||
From 13f149fa5fe4e2ae0e95b3055584335beb9bdee8 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/26] Compile with Argon2id support
|
||||
|
||||
Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch>
|
||||
---
|
||||
|
@ -48,18 +48,18 @@ index f5f9b040c..f1f38d8d3 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:
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 6ce0b0629aa1377237c19290f33008ff81969962 Mon Sep 17 00:00:00 2001
|
||||
From 068442a692ab28298eab6bfd89a286c1d2ab91e0 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/26] Make grub-install work with Argon2
|
||||
|
||||
Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch>
|
||||
---
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 3f69e2c35ccf2a37fd35f1821c7b85cc6df07ca7 Mon Sep 17 00:00:00 2001
|
||||
From 063d8d5fe39d2addca7806ca0a7c6f0544affa8f 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/26] at_keyboard coreboot: force scancodes2+translate
|
||||
|
||||
Scan code set 2 with translation should be assumed in
|
||||
every case, as the default starting position.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 44befdaa1ee588591f46c13d057fdef56b87218c Mon Sep 17 00:00:00 2001
|
||||
From cb7d93059959eb921328bd285f18e363f0f44aec 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/26] keylayouts: don't print "Unknown key" message
|
||||
|
||||
on keyboards with stuck keys, this results in GRUB just
|
||||
spewing it repeatedly, preventing use of GRUB.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From bfecf6d86ccf82fb85af93600931cee589891089 Mon Sep 17 00:00:00 2001
|
||||
From 2ca7390361d1ff8ea18399b41e38436c8d506d60 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/26] 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 9980bae90..4457cad7c 100644
|
||||
index 4a3be8568..6ae3d73f8 100644
|
||||
--- a/grub-core/kern/dl.c
|
||||
+++ b/grub-core/kern/dl.c
|
||||
@@ -871,7 +871,7 @@ grub_dl_load (const char *name)
|
||||
@@ -881,7 +881,7 @@ grub_dl_load (const char *name)
|
||||
return 0;
|
||||
|
||||
if (! grub_dl_dir) {
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From f44fc56f06559313841de2b53637020fbe139803 Mon Sep 17 00:00:00 2001
|
||||
From 51b439fc0aea4ef2c52c80fa765d9bda992a8ac2 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/26] 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 4457cad7c..ea9fe8019 100644
|
||||
index 6ae3d73f8..4c15027fe 100644
|
||||
--- a/grub-core/kern/dl.c
|
||||
+++ b/grub-core/kern/dl.c
|
||||
@@ -510,7 +510,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)
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From e459ed55902003644e7bcd76361cc43247231a99 Mon Sep 17 00:00:00 2001
|
||||
From 88c2d1618283c7f1c3b4adbce532789b0ca2447d 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/26] don't print empty error messages
|
||||
|
||||
this is part two of the quest to kill the prefix
|
||||
error message. after i disabled prefix-related
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 85fdf29d37b58be96042d6df24f8bc08bba9906d Mon Sep 17 00:00:00 2001
|
||||
From 2472f3c2e465863c51a3cacf96ab910c015cfa8e 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/26] grub-core/bus/usb: Parse SuperSpeed companion
|
||||
descriptors
|
||||
|
||||
Parse the SS_ENDPOINT_COMPANION descriptor, which is only present on USB 3.0
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 26a5ed135c94b295b9a0037f5e7201eb5d38fde4 Mon Sep 17 00:00:00 2001
|
||||
From 681a247209c83451cdebf6fc02cee6737a1921b6 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/26] usb: Add enum for xHCI
|
||||
|
||||
Will be used in future patches.
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 13bc84d9f43328ba47273cbcf87c517398dcfc93 Mon Sep 17 00:00:00 2001
|
||||
From 8af01b2548f61a9197b9f931831ca397a7e7c9b3 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/26] usbtrans: Set default maximum packet size
|
||||
|
||||
Set the maximum packet size to 512 for SuperSpeed devices.
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 1518589ff286b54a27d4b11f017cb43c90cbf566 Mon Sep 17 00:00:00 2001
|
||||
From 7a977001a1574c884c4f711686c2de01386b9230 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/26] 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 = {
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 8dd981a95cc7731b63b2d79ce6f98ce2d6b5a993 Mon Sep 17 00:00:00 2001
|
||||
From e8a237ffb5bd3ba5258ce5c173b31424f3a39392 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/26] 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
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From dde187c07a8f2a1d3357aa362ffcc0fe8dab72d7 Mon Sep 17 00:00:00 2001
|
||||
From badcc0d5ff1d4b194c93a530344788c4231d8789 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/26] 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>
|
||||
---
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From 28856bd0646e0396b3d5249a99b731f2743aec5a Mon Sep 17 00:00:00 2001
|
||||
From e4416b166e501777e53de387ac4329150483a160 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/26] grub-core/bus/usb/usbhub: Add xHCI non root hub support
|
||||
|
||||
Tested on Intel PCH C246, the USB3 hub can be configured by grub.
|
||||
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
From 8e6d5b598b3e21c905023b438110d71f487a2289 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/26] 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
|
||||
|
43
config/grub/xhci/patches/0022-xhci-fix-port-indexing.patch
Normal file
43
config/grub/xhci/patches/0022-xhci-fix-port-indexing.patch
Normal file
|
@ -0,0 +1,43 @@
|
|||
From 32c6d97e2a80c2e74dd9daf74281a89d1a05faaa 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/26] 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
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
From 70731c46da05311edb639ce1349bb6dd3279031e Mon Sep 17 00:00:00 2001
|
||||
From: Sven Anderson <sven@anderson.de>
|
||||
Date: Mon, 13 Jan 2025 19:55:15 +0100
|
||||
Subject: [PATCH 23/26] xhci: workaround z790 non-root-hub speed detection
|
||||
|
||||
---
|
||||
grub-core/bus/usb/xhci.c | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/grub-core/bus/usb/xhci.c b/grub-core/bus/usb/xhci.c
|
||||
index dc89b9619..d13a7c39d 100644
|
||||
--- a/grub-core/bus/usb/xhci.c
|
||||
+++ b/grub-core/bus/usb/xhci.c
|
||||
@@ -2285,6 +2285,11 @@ grub_xhci_detect_dev (grub_usb_controller_t dev, int port, int *changed)
|
||||
if (!(portsc & GRUB_XHCI_PORTSC_CCS))
|
||||
return GRUB_USB_SPEED_NONE;
|
||||
|
||||
+ if (port == 4 || port == 12 && speed < XHCI_USB_HIGHSPEED) { // inital hub speed detection on Z790 is too low
|
||||
+ grub_dprintf("xhci", "%s: setting internal hub speed to high\n", __func__);
|
||||
+ return GRUB_USB_SPEED_HIGH;
|
||||
+ }
|
||||
+
|
||||
for (grub_uint8_t i = 0; i < 16 && x->psids[port].psids[i].id > 0; i++)
|
||||
{
|
||||
if (x->psids[port].psids[i].id == speed)
|
||||
--
|
||||
2.39.5
|
||||
|
|
@ -0,0 +1,98 @@
|
|||
From 233f7dd274ef2ccac7b1fc0f5cfdeb7c01aef58b Mon Sep 17 00:00:00 2001
|
||||
From: Sven Anderson <sven@anderson.de>
|
||||
Date: Mon, 13 Jan 2025 20:26:32 +0100
|
||||
Subject: [PATCH 24/26] 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 d13a7c39d..8ad2a10f9 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
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
From 040942842dc05c9b94c9be21f01b08da3e25fe6d Mon Sep 17 00:00:00 2001
|
||||
From 0441e7eff7950bfd47fc2f5533ce2c64b785dc1d 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 25/26] 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 8ad2a10f9..ceb57c9b3 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))
|
||||
{
|
|
@ -1,7 +1,7 @@
|
|||
From 2fb0de8881bd2fe637d05bec0ae887f380434b7d Mon Sep 17 00:00:00 2001
|
||||
From 4440b01a702368c81520f630aa16852de55bb808 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 26/26] Add native NVMe driver based on SeaBIOS
|
||||
|
||||
Tested to successfully boot Debian on QEMU and OptiPlex 3050.
|
||||
|
||||
|
@ -31,20 +31,19 @@ index 65016f856..7bc0866ba 100644
|
|||
|
||||
endif
|
||||
diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
|
||||
index fda723f0c..27a707fda 100644
|
||||
index fda723f0c..367e4b5e6 100644
|
||||
--- a/grub-core/Makefile.core.def
|
||||
+++ b/grub-core/Makefile.core.def
|
||||
@@ -2683,4 +2683,10 @@ module = {
|
||||
common = tests/asn1/asn1_test.c;
|
||||
@@ -2684,3 +2684,9 @@ module = {
|
||||
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
|
|
@ -1,4 +1,4 @@
|
|||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
tree="xhci"
|
||||
rev="6811f6f09d61996a3acbc4fc0414e45964f0e2d9"
|
||||
rev="4dc6166571645780c459dde2cdc1b001a5ec844c"
|
||||
|
|
|
@ -17,7 +17,7 @@ index 538b316d..8746098c 100644
|
|||
|
||||
// Write to screen.
|
||||
- printf("SeaBIOS (version %s)\n", VERSION);
|
||||
+ printf("Libreboot 20241206, 8th revision (SeaBIOS menu): https://libreboot.org/\n");
|
||||
+ printf("Libreboot 20241206, 10th revision (SeaBIOS menu): https://libreboot.org/\n");
|
||||
display_uuid();
|
||||
}
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@ index 84831915a2..8e26ec2aef 100644
|
|||
ret |= scene_obj_set_pos(scn, OBJ_MENU, MARGIN_LEFT, 100);
|
||||
ret |= scene_txt_str(scn, "title", OBJ_MENU_TITLE, STR_MENU_TITLE,
|
||||
- "U-Boot - Boot Menu", NULL);
|
||||
+ "Libreboot 20241206, 8th revision (U-Boot menu): https://libreboot.org/", NULL);
|
||||
+ "Libreboot 20241206, 10th revision (U-Boot menu): https://libreboot.org/", NULL);
|
||||
ret |= scene_menu_set_title(scn, OBJ_MENU, OBJ_PROMPT);
|
||||
|
||||
logo = video_get_u_boot_logo();
|
||||
|
|
|
@ -18,7 +18,7 @@ index 84831915a2..8e26ec2aef 100644
|
|||
ret |= scene_obj_set_pos(scn, OBJ_MENU, MARGIN_LEFT, 100);
|
||||
ret |= scene_txt_str(scn, "title", OBJ_MENU_TITLE, STR_MENU_TITLE,
|
||||
- "U-Boot - Boot Menu", NULL);
|
||||
+ "Libreboot 20241206, 8th revision (U-Boot menu): https://libreboot.org/", NULL);
|
||||
+ "Libreboot 20241206, 10th revision (U-Boot menu): https://libreboot.org/", NULL);
|
||||
ret |= scene_menu_set_title(scn, OBJ_MENU, OBJ_PROMPT);
|
||||
|
||||
logo = video_get_u_boot_logo();
|
||||
|
|
|
@ -18,7 +18,7 @@ index 84831915a2..8e26ec2aef 100644
|
|||
ret |= scene_obj_set_pos(scn, OBJ_MENU, MARGIN_LEFT, 100);
|
||||
ret |= scene_txt_str(scn, "title", OBJ_MENU_TITLE, STR_MENU_TITLE,
|
||||
- "U-Boot - Boot Menu", NULL);
|
||||
+ "Libreboot 20241206, 8th revision (U-Boot menu): https://libreboot.org/", NULL);
|
||||
+ "Libreboot 20241206, 10th revision (U-Boot menu): https://libreboot.org/", NULL);
|
||||
ret |= scene_menu_set_title(scn, OBJ_MENU, OBJ_PROMPT);
|
||||
|
||||
logo = video_get_u_boot_logo();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue