summaryrefslogtreecommitdiffstats
path: root/source/a/elilo
diff options
context:
space:
mode:
Diffstat (limited to 'source/a/elilo')
-rwxr-xr-xsource/a/elilo/elilo.SlackBuild11
-rw-r--r--source/a/elilo/elilo.zeroes.cc_blob_address.diff40
2 files changed, 49 insertions, 2 deletions
diff --git a/source/a/elilo/elilo.SlackBuild b/source/a/elilo/elilo.SlackBuild
index 33809d721..4f88c2f0e 100755
--- a/source/a/elilo/elilo.SlackBuild
+++ b/source/a/elilo/elilo.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/bash
-# Copyright 2013, 2014, 2016, 2017, 2018, 2019 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2013, 2014, 2016, 2017, 2018, 2019, 2022 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -24,7 +24,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=elilo
VERSION=${VERSION:-$(echo $PKGNAM*.tar.?z* | rev | cut -f 2 -d - | rev)}
-BUILD=${BUILD:-12}
+BUILD=${BUILD:-13}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -75,6 +75,9 @@ tar xvf elilo-${VERSION}-source.tar.gz || exit 1
# things, as the loaders themselves seldom need to be rebuilt. Besides,
# elilo can be rather fragile, so we don't want to rebuild it without a
# good reason and risk breaking it.
+#
+# These EFI binaries were built with Slackware 14.2. Newer compilers might
+# cause bloat, or other issues.
tar xvf $CWD/elilo.loader.binaries.tar.xz || exit 1
chown -R root:root .
@@ -91,6 +94,10 @@ grep -r -l StrnCpy * | xargs sed -i "s/StrnCpy/elilo_StrnCpy/g"
# Increase kernel size limit from 8MB to 16MB (nobody will ever need more than 640K ;-):
zcat $CWD/elilo.double.kernel.size.limit.diff.gz | patch -p1 --verbose || exit 1
+# Disable the Confidential Computing blob which was leading to boot failures
+# with the 5.19.0 kernel and the EFI stub enabled:
+zcat $CWD/elilo.zeroes.cc_blob_address.diff.gz | patch -p1 --verbose || exit 1
+
# We will build the tools from source.
# However, we will package the pre-built EFI binaries, since we would
# like to include both 32-bit and 64-bit x86 EFI loaders in the
diff --git a/source/a/elilo/elilo.zeroes.cc_blob_address.diff b/source/a/elilo/elilo.zeroes.cc_blob_address.diff
new file mode 100644
index 000000000..5c98d7561
--- /dev/null
+++ b/source/a/elilo/elilo.zeroes.cc_blob_address.diff
@@ -0,0 +1,40 @@
+diff -Naur elilo-3.16-source.orig/x86_64/sysdeps.h elilo-3.16-source/x86_64/sysdeps.h
+--- elilo-3.16-source.orig/x86_64/sysdeps.h 2012-11-19 19:01:04.000000000 -0200
++++ elilo-3.16-source/x86_64/sysdeps.h 2022-08-05 15:51:02.700147207 -0300
+@@ -184,7 +184,12 @@
+ /* 0xA0 */ UINT16 mca_info_len; /* LDR */
+ /* 0xA2 */ UINT8 mca_info_buf[0x10]; /* LDR */
+
+-/* 0xB2 */ UINT8 pad_4[0x10E]; /* unused */
++/* 0xB2 */ UINT8 pad_41[0x8A]; /* unused */
++
++/* Confidential Computing Blob */
++/* 0x13C */ UINT32 cc_blob_address; /* LDR */
++
++/* 0x140 */ UINT8 pad_42[0x80]; /* unused */
+
+ /* EFI boot loader signature. */
+ /* 0x1C0 */ UINT8 efi_loader_sig[4]; /* LDR */
+diff -Naur elilo-3.16-source.orig/x86_64/system.c elilo-3.16-source/x86_64/system.c
+--- elilo-3.16-source.orig/x86_64/system.c 2013-03-29 16:03:15.000000000 -0300
++++ elilo-3.16-source/x86_64/system.c 2022-08-05 15:50:45.772968102 -0300
+@@ -684,6 +684,11 @@
+ ZeroMem(bp->s.hd1_info, sizeof bp->s.hd1_info);
+
+ /*
++ * Disable Confidential Computing blob
++ */
++ bp->s.cc_blob_address = 0;
++
++ /*
+ * Memory info.
+ */
+
+@@ -826,6 +831,7 @@
+ CHECK_OFFSET(hd1_info, 0x90, L"");
+ CHECK_OFFSET(mca_info_len, 0xA0, L"%xh");
+ CHECK_OFFSET(mca_info_buf, 0xA2, L"");
++ CHECK_OFFSET(cc_blob_address, 0x13C, L"%xh");
+ CHECK_OFFSET(efi_loader_sig, 0x1C0, L"'%-4.4a'");
+ CHECK_OFFSET(efi_sys_tbl, 0x1C4, L"%xh");
+ CHECK_OFFSET(efi_mem_desc_size, 0x1C8, L"%xh");