Compare commits

..

21 Commits

Author SHA1 Message Date
Leah Rowe
0f960d6de4 board/qemu_x86: don't enable u-boot
it's a bit buggy when building. disable for now.

will re-visit later.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-07-16 09:14:26 +01:00
Leah Rowe
7f4cefdcd5 coreboot/cros: fix acpica downloads
same as the previous patch

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-07-16 02:56:58 +01:00
Leah Rowe
5d6a020db4 coreboot/fam15h: use new upstream for acpica
the upstream died, for links used by coreboot 4.11_branch
when downloading acpica (to run iasl).

other coreboot trees don't need this fix, because coreboot
upstream already fixed it. we only need to patch this
older coreboot revision. this fixes building for:

KFSN4-DRE, KGPE-D16 and KCMA-D8 boards

the c20230710 release itself did not include this fix,
but releases already include the tarballs and so the
broken acpica link does not matter (because it's included,
and the coreboot build system will skip downloading it
as a result)

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-07-16 00:52:49 +01:00
Leah Rowe
e1df640578 uboot: delete blobs, based on blobs.list file
and with that, censored-libreboot is now complete, ready
for a first release :)

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-07-10 01:52:45 +01:00
Leah Rowe
9202ffa85a uboot: add blobs.list file under resources/
(i'll actually add deblobbing logic in the next revision)

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-07-10 01:44:09 +01:00
Leah Rowe
b5afcdaa04 rename project to censored-libreboot
it was called c-libreboot

make it clear what c means

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-07-10 00:54:03 +01:00
Leah Rowe
fb30ec87ed coreboot/default: update blobs.list
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-07-10 00:53:24 +01:00
Leah Rowe
d3d0288bd0 coreboot/cros: update blobs.list
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-07-10 00:46:27 +01:00
Leah Rowe
f6a3190a4e coreboot/fam15h: update kfsn4-dre configs
i overlooked these in the previous revision

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-07-09 22:36:32 +01:00
Leah Rowe
3f8a243d84 coreboot/fam15h: update configs for 4.11_branch
The configs were made for 4.11, and several new changes
were required for 4.11_branch. Without these changes, the
builds are not automated because coreboot's build system
asks for user input on certain configuration.

This patch makes everything smooth as silk.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-07-09 22:27:49 +01:00
Leah Rowe
cb4a1ec4d1 coreboot/fam15h: use 4.11_branch (fixes build)
This fixes build errors on KGPE-D16.

I can now build them on the latest Debian Sid,
as of 9 July 2023.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-07-09 22:01:06 +01:00
Leah Rowe
1ab8514882 coreboot/fam15h: fix acpica build on newer hostcc
Changes made to acpica/iasl in crossgcc, for
coreboot trees fam15h_udimm and fam15h_rdimm:

remove superfluous YYSTYPE declaration

make LuxBuffer variables static, to avoid warnings
treated as errors about multiple definitions

AcpiGbl_DbOpt_NoRegionSupport - remove this definition
in source/tools/acpiexec/aemain.c because it's already
re-defined by acpiexec. otherwise the linker complains
about multiple definitions

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-07-09 19:42:42 +01:00
Leah Rowe
b55cc19f41 coreboot: AMD Fam10/15: don't build GCC-GNAT
do this with board.cfg option:

crossgcc_ada="n"

add this environmental variable when building
crossgcc, if crossgcc_ada="n":

BUILD_LANGUAGES=c

This avoids building the GNAT/Ada compiler in GCC.
Coreboot 4.11 is only used for some AGESA boards
that don't need Ada (their video init is the old
style, written in C, it's not libgfxinit)

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-07-09 11:20:56 +01:00
Leah Rowe
b7d22a9c36 coreboot/fam15h: patch binutils 2.32 for new gcc
tested on debian sid, as of 9 july 2023

implicit string declaration

easy stuff. now binutils 2.32 compiles. coreboot 4.11
uses this older binutils version.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-07-09 04:57:36 +01:00
Leah Rowe
41757a3b25 coreboot/fam15h: support distclean on cbfstool
lbmk uses distclean on cbfstool, which newer cbfstool
supports, but this old version (in coreboot 4.11) does
not. fix that.

it just runs make-clean

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-07-09 04:16:11 +01:00
Leah Rowe
77d9d94997 grub: flip the bootsplash background 180 degrees
c-libreboot, and GNU Boot, is a 180 U-turn versus
current libreboot policy, as seen here:

https://libreboot.org/news/policy.html

Therefore, rotate the bootsplash pic 180 degrees, for
comical effect.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-07-09 03:39:27 +01:00
Leah Rowe
947eb446f9 coreboot/fam15h: re-add kgpe-d16 and kcma-d8
also kfsn4-dre

this is still based on the old coreboot 4.11 version.

i have on todo to adapt dasharo coreboot for use in the master
branch of lbmk, for mainline libreboot releases.

since i'm doing c-libreboot for the GNU project, namely GNU Boot,
and since GNU Boot has dre/d8/d16 in their tree, re-add it here
for them.

i literally just copied this from them, who in turn copied it from
libreboot in an older revision anyway.

but there is one fix:

src/vendorcode/cavium/bdk/libbdk-hal/if/bdk-if-phy-vetesse.c

^ this blob wasn't being deleted by gnuboot, nor by libreboot
in the older revision that it forked from. an oversight. i decided
to audit the deblobbing and found this one was overlooked, out of
about 900 files picked up by deblob-check.

so this re-addition of dre/d8/d16 support is actually even better
deblobbed than gnuboot, or old-libreboot.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-07-09 03:18:43 +01:00
Leah Rowe
0f09c0d72b download/coreboot: re-add book-burning support
see:

https://en.wikipedia.org/wiki/Book_burning

i'll actually update blobs.list for each coreboot rev
in a subsequent commit. this logic was taken from an
old libreboot revision, which uses different coreboot
revisions. as i write this, i'm running deblob-check
from linux-libre deblob scripts.

my process is: i just check each file and decide whether
it's a blob, or like, test data. in some cases it flags
other false positives, like... a C source file that has
a bunch of magic numbers in it for things (not a blob)

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-07-08 23:45:57 +01:00
Leah Rowe
2bbb4c839a remove blobutil and boards/utils needing/for blobs
delete all blobs. TODO: actually deblob coreboot/uboot
when downloading. i'll that in a little while, in an
upcoming commit.

yes.

purge it all, in fsf style. censor what the fsf doesn't like.

so that they can feel good about having less, because
ideological purity is better than helping more people
use coreboot, yes?

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-07-08 22:09:58 +01:00
Leah Rowe
6bc619db90 rename project to c-libreboot (c = censored)
because that's what fsdg policy is: censorship

fsf will censor any existence of less-than-pure hardware
from coreboot, despite the fact that coreboot provides
more freedom for the user than fully proprietary firmware,
even in cases where blobs are needed. i criticise that here:

https://libreboot.org/news/policy.html

FSF's fork of libreboot, formerly libreboot.at and now
named GNU Boot*, is still based on old lbmk from october
2022, they haven't written *any* code since December 2022
when they supposedly first started working on the fork

i'm doing a gnuboot for them, purely for fun, called
c-libreboot. c-libreboot is essentially the same as old
libreboot, prior to the osboot merge, but i'm including
all the new things such as dell latitude e6400 or gru
chromebooks, all of which are suitable under the old
libreboot policy and, by extension, GNU Boot policy

*URL: https://savannah.gnu.org/projects/gnuboot/
(it actually is a GNU project, though the FSF has
not yet announced it officially, as I write this)

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-07-08 21:00:05 +01:00
Leah Rowe
cc30a1c6fa coreboot: never add microcode update to ROM image
this way, default psdg libreboot roms that enable microcode
can be used in fsdg libreboot, unmodified.

these configs enable microcode, but this change to the
coreboot build system avoids adding them regardless of
configuration

this saves hours of work that would otherwise be required,
to reconfigure all of the coreboot images, and will allow
gnuboot to use the same configs as libreboot

fsf makes such a fuss over this, when it's really quite
simple.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-07-08 20:47:40 +01:00
398 changed files with 70469 additions and 11598 deletions

82
.gitcheck Executable file
View File

@@ -0,0 +1,82 @@
#!/usr/bin/env sh
# SPDX-FileCopyrightText: 2022 Caleb La Grange <thonkpeasant@protonmail.com>
# SPDX-FileCopyrightText: 2023 Leah Rowe <leah@libreboot.org>
# SPDX-License-Identifier: GPL-3.0-only
git_name="lbmkplaceholder"
git_email="placeholder@lbmkplaceholder.com"
main()
{
if [ $# -gt 0 ]; then
if [ "${1}" = "clean" ]; then
clean > /dev/null 2> /dev/null
else
printf "%s: Unsupported argument\n" $0
exit 1
fi
else
set_placeholders > /dev/null 2> /dev/null
fi
}
set_placeholders()
{
set_git_credentials
# Check coreboot as well to prevent errors during building
if [ ! -d coreboot ]; then
return
fi
for x in coreboot/*; do
if [ ! -d "${x}" ]; then
continue
fi
(
cd "${x}"
set_git_credentials
)
done
}
set_git_credentials()
{
# Check if username and or email is set.
if ! git config user.name || git config user.email ; then
git config user.name \
|| git config user.name "${git_name}"
git config user.email \
|| git config user.email "${git_email}"
fi
}
clean()
{
unset_placeholders
if [ ! -d coreboot ]; then
return
fi
for x in coreboot/*; do
if [ ! -d "${x}" ]; then
continue
fi
(
cd "${x}"
unset_placeholders
)
done
}
unset_placeholders()
{
if [ "$(git config user.name)" = "${git_name}" ]; then
git config --unset user.name
fi
if [ "$(git config user.email)" = "${git_email}" ]; then
git config --unset user.email
fi
}
main $@

31
.gitignore vendored
View File

@@ -1,14 +1,19 @@
*~
*.o
/lbmk.err.log
/docs/
/cbutils/
/pciroms/
/util/dell-flash-unlock/dell_flash_unlock
/util/e6400-flash-unlock/e6400_flash_unlock
/util/ich9utils/*.bin
/util/ich9utils/demefactory
/util/ich9utils/ich9deblob
/util/ich9utils/ich9show
/util/ich9utils/ich9gen
/TODO
/ec/
/bios_extract/
/tmp/
/elf/
/payload/
/me_cleaner/
*.s[a-w]?
*.vim
/*.elf
@@ -16,16 +21,22 @@
/*.rom
/build_error
/TODO/
/config/*/*/seen
/docs/version
/bucts/
/coreboot/
/crossgcc/
/depthcharge/
/flashrom/
/resources/coreboot/*/seen
/grub/
/memtest86plus/
/seabios/
/u-boot/
/bin/
/release/
/descriptors/
/*.bin
/push
/version
/versiondate
/vendorfiles/
*me.bin
*sch5545ec.bin
/mrc/
/util/nvmutil/nvm
/src/

86
Makefile Normal file
View File

@@ -0,0 +1,86 @@
#
# Makefile for meme purposes
# You can use this, but it just runs lbmk commands.
#
# See docs/maintain/ and docs/git/ for information about the build system:
# https://libreboot.org/docs/maintain/
# https://libreboot.org/docs/build/
#
# Copyright (C) 2020, 2021, 2023 Leah Rowe <info@minifree.org>
# Copyright (C) 2022 Ferass El Hafidi <vitali64pmemail@protonmail.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
.POSIX:
#.PHONY: all check download modules ich9m-descriptors payloads roms release \
# clean crossgcc-clean install-dependencies-ubuntu \
# install-dependencies-debian install-dependencies-arch \
# install-dependencies-void install-dependencies-fedora38 \
# install-dependencies-parabola
all: roms
download:
./download all
modules:
./build module all
ich9m-descriptors:
./build descriptors ich9m
payloads:
./build payload all
roms:
./build boot roms all
release:
./build release src
./build release roms
clean:
./build clean cbutils
./build clean flashrom
./build clean ich9utils
./build clean payloads
./build clean seabios
./build clean grub
./build clean memtest86plus
./build clean rom_images
./build clean u-boot
./build clean bios_extract
crossgcc-clean:
./build clean crossgcc
install-dependencies-ubuntu:
./build dependencies ubuntu2004
install-dependencies-debian:
./build dependencies debian
install-dependencies-arch:
./build dependencies arch
install-dependencies-void:
./build dependencies void
install-dependencies-fedora38:
./build dependencies fedora38
install-dependencies-parabola:
./build dependencies parabola

View File

@@ -28,7 +28,7 @@ Your freedom matters.
Many people use proprietary (non-libre)
boot firmware, even if they use [a libre OS](https://www.openbsd.org/).
Proprietary firmware often contains backdoors (more info on the FAQ), and it
and can be buggy. The libreboot project was founded in December 2013,
and can be buggy. The libreboot project was founded in in December 2013,
with the express purpose of making coreboot firmware accessible for
non-technical users.
@@ -111,7 +111,7 @@ written in Markdown and hosted in a [separate
repository](https://codeberg.org/libreboot/lbwww) where you can send patches.
Any and all development discussion and user support are all done on the IRC
channel. More information is on https://libreboot.org/contact.html.
channel. More information is on the contact page of libreboot.org.
LICENSE FOR THIS README
=======================

165
build
View File

@@ -1,165 +0,0 @@
#!/usr/bin/env sh
# SPDX-License-Identifier: GPL-3.0-or-later
# SPDX-FileCopyrightText: 2014,2015,2020,2021,2023 Leah Rowe <leah@libreboot.org>
# SPDX-FileCopyrightText: 2015 Patrick "P. J." McDermott <pj@pehjota.net>
# SPDX-FileCopyrightText: 2015, 2016 Klemens Nanni <contact@autoboot.org>
# SPDX-FileCopyrightText: 2022, Caleb La Grange <thonkpeasant@protonmail.com>
[ "x${DEBUG+set}" = 'xset' ] && set -v
set -u -e
export LC_COLLATE=C
export LC_ALL=C
. "include/err.sh"
. "include/option.sh"
eval "$(setvars "" option aur_notice tmpdir)"
tmpdir_was_set="y"
set | grep TMPDIR 1>/dev/null 2>/dev/null || tmpdir_was_set="n"
if [ "${tmpdir_was_set}" = "y" ]; then
tmpdir="${TMPDIR##*/}"
tmpdir="${TMPDIR%_*}"
if [ "${tmpdir}" = "lbmk" ]; then
tmpdir=""
tmpdir_was_set="n"
fi
fi
if [ "${tmpdir_was_set}" = "n" ]; then
export TMPDIR="/tmp"
tmpdir="$(mktemp -d -t lbmk_XXXXXXXX)"
export TMPDIR="${tmpdir}"
else
export TMPDIR="${TMPDIR}"
fi
tmpdir="${TMPDIR}"
linkpath="${0}"
linkname="${linkpath##*/}"
buildpath="./script/${linkname}"
main()
{
xx_ id -u 1>/dev/null 2>/dev/null
[ $# -lt 1 ] && fail "Too few arguments. Try: ${0} help"
if [ "${1}" = "dependencies" ]; then
xx_ install_packages $@
lbmk_exit 0
fi
initialise_command $@ && shift 1
check_git
check_project "fail"
git_init
execute_command $@
lbmk_exit 0
}
initialise_command()
{
[ "$(id -u)" != "0" ] || fail "this command as root is not permitted"
check_project
case "${1}" in
help)
usage ${0}
lbmk_exit 0 ;;
list)
items "${buildpath}"
lbmk_exit 0 ;;
version)
mkversion
lbmk_exit 0 ;;
esac
option="${1}"
}
install_packages()
{
if [ $# -lt 2 ]; then
printf "You must specify a distro, namely:\n" 1>&2
printf "Look at files under config/dependencies/\n" 1>&2
printf "Example: ./build dependencies debian\n" 1>&2
fail "install_packages: target not specified"
fi
[ -f "config/dependencies/${2}" ] || fail "Unsupported target"
. "config/dependencies/${2}"
xx_ ${pkg_add} ${pkglist}
[ -z "${aur_notice}" ] && return 0
printf "You must install AUR packages: %s\n" "${aur_notice}" 1>&2
}
# release archives contain .gitignore, but not .git.
# lbmk can be run from lbmk.git, or an archive.
git_init()
{
[ -L ".git" ] && fail "Reference .git is a symlink"
[ -e ".git" ] && return 0
eval "$(setvars "$(date -Rd @${versiondate})" cdate _nogit)"
git init || fail "${PWD}: cannot initialise Git repository"
git add -A . || fail "${PWD}: cannot add files to Git repository"
git commit -m "${projectname} ${version}" --date "${cdate}" \
--author="lbmk <lbmk@libreboot.org>" || \
fail "${PWD}: can't commit ${projectname}/${version}, date ${cdate}"
git tag -a "${version}" -m "${projectname} ${version}" || \
fail "${PWD}: cannot git-tag ${projectname}/${version}"
}
execute_command()
{
lbmkcmd="${buildpath}/${option}"
[ -f "${lbmkcmd}" ] || fail "Invalid command. Run: ${linkpath} help"
"${lbmkcmd}" $@ || fail "execute_command: ${lbmkcmd} ${@}"
}
usage()
{
progname=${0}
cat <<- EOF
$(mkversion)
USAGE: ${progname} <OPTION>
possible values for 'OPTION':
$(items "${buildpath}")
To know what ${projectname} version you're on, type:
${progname} version
Refer to ${projectname} documentation for more info.
EOF
}
mkversion()
{
printf "revision: %s %s\n" "${projectname}" "${version}"
printf "revision date: %s\n" "$(date -Rud @${versiondate})"
}
lbmk_exit()
{
tmp_cleanup || err "lbmk_exit: can't rm tmpdir upon exit $1: ${tmpdir}"
exit $1
}
fail()
{
tmp_cleanup || printf "WARNING: can't rm tmpdir: %s\n" "${tmpdir}" 1>&2
err "${1}"
}
tmp_cleanup()
{
[ "${tmpdir_was_set}" = "n" ] || return 0
rm -Rf "${tmpdir}" || return 1
}
main $@

1
build Symbolic link
View File

@@ -0,0 +1 @@
lbmk

View File

@@ -1,8 +0,0 @@
tree="default"
romtype="normal"
arch="x86_64"
payload_seabios="y"
payload_seabios_withgrub="y"
payload_seabios_grubonly="y"
payload_memtest="y"
grub_scan_disk="ahci"

View File

@@ -1 +0,0 @@
build/coreboot.rom

View File

@@ -1,4 +0,0 @@
tree="default"
romtype="normal"
rev="54d0cc9a3cf31963ebf0ca85a87a7e464ef678a7" # 4.18_branch
arch="x86_64"

View File

@@ -1,11 +0,0 @@
pkg_add="pacman -S --needed --noconfirm"
pkglist=" \
acpica arm-none-eabi-binutils arm-none-eabi-gcc arm-none-eabi-newlib \
autogen base-devel bison cmake curl device-mapper doxygen \
dtc e2fsprogs flex freetype2 fuse2 gawk gcc-ada gdb gettext git \
help2man innoextract libftdi libpciaccess libusb nasm ncurses openssl p7zip \
parted pciutils perl perl-libwww python python-setuptools rsync sharutils \
subversion swig texinfo ttf-dejavu unarchiver unzip wget xz zlib \
"
aur_notice="bdf-unifont unifont"

View File

@@ -1,15 +0,0 @@
pkg_add="apt-get -y install"
pkglist=" \
acpica-tools autoconf autogen automake autopoint autotools-dev bc \
binutils-arm-none-eabi bison build-essential cmake curl device-tree-compiler \
doxygen e2fsprogs efitools flex fonts-unifont gawk gcc-arm-linux-gnueabi \
gcc-arm-none-eabi gdb gettext git gnat help2man innoextract libdevmapper-dev \
libfdt-dev libfont-freetype-perl libfreetype6-dev libftdi-dev libfuse-dev \
libgnutls28-dev liblz4-tool liblzma-dev libncurses5-dev libncurses-dev \
libnewlib-arm-none-eabi libopts25 libopts25-dev libpci-dev libpython3-dev \
libsdl2-dev libselinux1-dev libssl-dev libtool libusb-1.0 libusb-1.0-0-dev \
libusb-dev lz4 lzma lzma-alone m4 nasm openssl p7zip p7zip-full parted pciutils \
perl pkg-config python3 python3-distutils python3-pkg-resources python3-pycryptodome \
python3-pyelftools python3-setuptools python-is-python3 sharutils swig unar \
unifont unzip uuid-dev wget zlib1g-dev \
"

View File

@@ -1,12 +0,0 @@
pkg_add="dnf -y install"
pkglist=" \
acpica-tools arm-none-eabi-binutils arm-none-eabi-gcc \
arm-none-eabi-gcc arm-none-eabi-newlib autogen bison bzip2 cmake curl \
dejavu-fonts-all device-mapper doxygen e2fsprogs flex freetype-devel fuse \
gawk gcc gcc-gnat gdb gettext gettext-devel git gprbuild help2man \
innoextract intltool libftdi-devel libselinux-devel libusb1 libusb1-devel \
nasm ncurses-devel openssl-devel p7zip p7zip-plugins pandoc parted \
pciutils-devel perl perl-libwww-perl python-unversioned-command python3 \
python3-setuptools rsync sharutils subversion texinfo unar unifont \
unifont-fonts unifont-ttf-fonts unzip wget xz zlib-devel \
"

View File

@@ -1 +0,0 @@
debian

View File

@@ -1,10 +0,0 @@
pkg_add="pacman -S --needed --noconfirm"
pkglist=" \
acpica arm-none-eabi-binutils arm-none-eabi-gcc arm-none-eabi-newlib \
autogen base-devel bdf-unifont bison cmake curl device-mapper doxygen \
dtc e2fsprogs flex freetype2 fuse2 gawk gcc-ada gdb gettext git \
help2man innoextract libftdi libpciaccess libusb nasm ncurses openssl p7zip \
parted pciutils perl perl-libwww python python-setuptools rsync sharutils \
subversion swig texinfo ttf-dejavu unarchiver unifont-utils unzip wget xz \
zlib \
"

View File

@@ -1 +0,0 @@
debian

View File

@@ -1 +0,0 @@
ubuntu2004

View File

@@ -1 +0,0 @@
debian

View File

@@ -1,14 +0,0 @@
pkg_add="apt-get -y install"
pkglist=" \
autoconf autogen automake autopoint autotools-dev bc binutils-arm-none-eabi \
bison build-essential cmake curl device-tree-compiler doxygen e2fsprogs efitools \
flex gawk gcc-arm-linux-gnueabi gcc-arm-none-eabi gdb gettext git gnat help2man \
innoextract libdevmapper-dev libfdt-dev libfont-freetype-perl libfreetype6-dev \
libftdi-dev libfuse-dev libgnutls28-dev liblz4-tool liblzma-dev libncurses5-dev \
libncurses-dev libnewlib-arm-none-eabi libopts25 libopts25-dev libpci-dev \
libpython3-dev libsdl2-dev libselinux1-dev libssl-dev libtool libusb-1.0-0 \
libusb-1.0-0-dev lz4 lzma lzma-alone m4 nasm openssl p7zip p7zip-full parted \
pciutils perl pkg-config python3 python3-distutils python3-pkg-resources \
python3-pycryptodome python3-pyelftools python3-setuptools python-is-python3 \
sharutils swig ttf-unifont unar unifont unzip uuid-dev wget zlib1g-dev \
"

View File

@@ -1,11 +0,0 @@
pkg_add="xbps-install -y"
pkglist=" \
acpica-utils autogen base-devel bison cmake \
cross-arm-none-eabi-binutils cross-arm-none-eabi-gcc \
cross-arm-none-eabi-libstdc++ cross-arm-none-eabi-newlib curl \
dejavu-fonts-ttf device-mapper doxygen e2fsprogs flexflex font-unifont-bdf \
freetype fuse gawk gcc-ada gdb gettext gettext-devel git help2man \
innoextract libftdi1 libpciaccess libusb nasm ncurses ncurses-devel openssl
p7zip parted pciutils perl perl-LWP python python3 python3-setuptools rsync \
sharutils subversion texinfo unar unzip wget xz zlib \
"

View File

@@ -1,6 +0,0 @@
{bios_extract}{
rev: 0a7bc1d71735ef97b00dfec0fd54a02fcc5d1bb0
loc: bios_extract
url: https://review.coreboot.org/bios_extract
bkup_url: https://github.com/coreboot/bios_extract/
}

View File

@@ -1,6 +0,0 @@
{biosutilities}{
rev: 03ae0cf0706ede5a2a15da0986c19c776d0e6b26
loc: biosutilities
url: https://codeberg.org/libreboot/BIOSUtilities
bkup_url: https://github.com/platomav/BIOSUtilities
}

View File

@@ -1,6 +0,0 @@
{coreboot}{
rev: HEAD
loc: coreboot/coreboot
url: https://review.coreboot.org/coreboot
bkup_url: https://github.com/coreboot/coreboot.git
}

View File

@@ -1,30 +0,0 @@
{docs}{
rev: 06ac864b9a738b5daec3736ddb0fb2f94f127ee0
loc: docs
url: https://codeberg.org/vimuser/untitled
bkup_url: https://notabug.org/untitled/untitled
depend: mdfiles
depend: untitledwww
}
{mdfiles}{
rev: 6ebb88528e342cae48ee75a6f1bfa1b71002e1c3
loc: docs/www/html
url: https://codeberg.org/libreboot/lbwww
bkup_url: https://git.disroot.org/libreboot/lbwww
depend: imgfiles
}
{imgfiles}{
rev: 918c0ba07cf45f07836fa8c312fc51b48db32e0a
loc: docs/www/html/site/img
url: https://codeberg.org/libreboot/lbwww-img
bkup_url: https://git.disroot.org/libreboot/lbwww-img
}
{untitledwww}{
rev: 78cdadea40143a7e55b8eae48f4239d31ebb5c16
loc: docs/www/untitled
url: https://codeberg.org/vimuser/untitled-website
bkup_url: https://notabug.org/untitled/untitled-website
}

View File

@@ -1,6 +0,0 @@
{flashrom}{
rev: fba29da188b4a3aa8a3cf6f5a3d13c37a5d9e1d7
loc: flashrom
url: https://review.coreboot.org/flashrom.git
bkup_url: https://github.com/flashrom/flashrom
}

View File

@@ -1,14 +0,0 @@
{grub}{
rev: 64e3cee72ab8f5876abfebb263b5e6cf7c4a9a4e
loc: grub
url: git://git.savannah.gnu.org/grub.git
bkup_url: https://codeberg.org/libreboot/grub
depend: gnulib
}
{gnulib}{
rev: 9f48fb992a3d7e96610c4ce8be969cff2d61a01b
loc: grub/gnulib
url: git://git.sv.gnu.org/gnulib
bkup_url: https://codeberg.org/libreboot/gnulib
}

View File

@@ -1,6 +0,0 @@
{memtest86plus}{
rev: 5dcd424ea7afb857c1171e747ef064d98d26afeb
loc: memtest86plus
url: https://codeberg.org/libreboot/memtest86plus
bkup_url: https://github.com/memtest86plus/memtest86plus.git
}

View File

@@ -1,6 +0,0 @@
{pico-sdk}{
rev: 6a7db34ff63345a7badec79ebea3aaef1712f374
loc: pico-sdk
url: https://codeberg.org/libreboot/pico-sdk
bkup_url: https://github.com/raspberrypi/pico-sdk
}

View File

@@ -1,7 +0,0 @@
{pico-serprog}{
rev: c8c16e9c11fe9e5b7230ff358f79de3f1951e1d9
loc: pico-serprog
url: https://codeberg.org/libreboot/pico-serprog
bkup_url: https://git.disroot.org/libreboot/pico-serprog
depend: pico-sdk
}

View File

@@ -1,6 +0,0 @@
{seabios}{
rev: HEAD
loc: seabios/seabios
url: https://review.coreboot.org/seabios
bkup_url: https://github.com/coreboot/seabios
}

View File

@@ -1,6 +0,0 @@
{stm32-vserprog}{
rev: 8fcf0a4d41800631b571fa7bbd1d8b251f0a2111
loc: stm32-vserprog
url: https://codeberg.org/libreboot/stm32-vserprog
bkup_url: https://git.disroot.org/libreboot/stm32-vserprog
}

View File

@@ -1,6 +0,0 @@
{u-boot}{
rev: HEAD
loc: u-boot/u-boot
url: https://source.denx.de/u-boot/u-boot.git
bkup_url: https://github.com/u-boot/u-boot.git
}

View File

@@ -1,6 +0,0 @@
{uefitool}{
rev: 4a41c33596e9bc3ae812e763965d91ac57553e02
loc: uefitool
url: https://codeberg.org/libreboot/UEFITool
bkup_url: https://github.com/LongSoft/UEFITool
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

View File

@@ -1,2 +0,0 @@
Copyright (C) 2014, 2015, 2016, 2020, 2021, 2023 Leah Rowe <leah@libreboot.org>
Copyright (C) 2015 Klemens Nanni <contact@autoboot.org>

View File

@@ -1,7 +0,0 @@
set prefix=(memdisk)/boot/grub
if [ -f (cbfsdisk)/grub.cfg ]; then
source (cbfsdisk)/grub.cfg
else
source (memdisk)/boot/grub/grub_default.cfg
fi

View File

@@ -1,42 +0,0 @@
From de6e7cc62522ce1be21bd2f06e7c15cd234b5426 Mon Sep 17 00:00:00 2001
From: Ax333l <main@axelen.xyz>
Date: Thu, 17 Aug 2023 00:00:00 +0000
Subject: [PATCH 1/6] Add CC0 license
Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch>
---
grub-core/kern/dl.c | 3 ++-
util/grub-module-verifierXX.c | 3 ++-
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
--- 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)
if (grub_strcmp ((char *) e + s->sh_offset, "LICENSE=GPLv3") == 0
|| grub_strcmp ((char *) e + s->sh_offset, "LICENSE=GPLv3+") == 0
- || grub_strcmp ((char *) e + s->sh_offset, "LICENSE=GPLv2+") == 0)
+ || grub_strcmp ((char *) e + s->sh_offset, "LICENSE=GPLv2+") == 0
+ || grub_strcmp ((char *) e + s->sh_offset, "LICENSE=CC0") == 0)
return GRUB_ERR_NONE;
return grub_error (GRUB_ERR_BAD_MODULE,
diff --git a/util/grub-module-verifierXX.c b/util/grub-module-verifierXX.c
index a42c20bd1..7157a30aa 100644
--- a/util/grub-module-verifierXX.c
+++ b/util/grub-module-verifierXX.c
@@ -236,7 +236,8 @@ check_license (const char * const filename,
Elf_Shdr *s = find_section (arch, e, ".module_license", module_size);
if (s && (strcmp ((char *) e + grub_target_to_host(s->sh_offset), "LICENSE=GPLv3") == 0
|| strcmp ((char *) e + grub_target_to_host(s->sh_offset), "LICENSE=GPLv3+") == 0
- || strcmp ((char *) e + grub_target_to_host(s->sh_offset), "LICENSE=GPLv2+") == 0))
+ || strcmp ((char *) e + grub_target_to_host(s->sh_offset), "LICENSE=GPLv2+") == 0
+ || strcmp ((char *) e + grub_target_to_host(s->sh_offset), "LICENSE=CC0") == 0))
return;
grub_util_error ("%s: incompatible license", filename);
}
--
2.39.2

View File

@@ -1,39 +0,0 @@
From 9edaaffac91d593a439e44bac3b6f5558f5a8245 Mon Sep 17 00:00:00 2001
From: Ax333l <main@axelen.xyz>
Date: Thu, 17 Aug 2023 00:00:00 +0000
Subject: [PATCH 2/6] Define GRUB_UINT32_MAX
Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch>
---
include/grub/types.h | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/include/grub/types.h b/include/grub/types.h
index 0d96006fe..a13f3a60b 100644
--- a/include/grub/types.h
+++ b/include/grub/types.h
@@ -156,6 +156,7 @@ typedef grub_int32_t grub_ssize_t;
#define GRUB_SHRT_MAX 0x7fff
#define GRUB_SHRT_MIN (-GRUB_SHRT_MAX - 1)
#define GRUB_UINT_MAX 4294967295U
+#define GRUB_UINT32_MAX 4294967295U
#define GRUB_INT_MAX 0x7fffffff
#define GRUB_INT_MIN (-GRUB_INT_MAX - 1)
#define GRUB_INT32_MAX 2147483647
@@ -177,6 +178,13 @@ typedef grub_int32_t grub_ssize_t;
#define GRUB_TYPE_U_MAX(type) ((unsigned long long)((typeof (type))(~0)))
#define GRUB_TYPE_U_MIN(type) 0ULL
+# define GRUB_UINT32_C(x) x ## U
+# if GRUB_ULONG_MAX >> 31 >> 31 >> 1 == 1
+# define GRUB_UINT64_C(x) x##UL
+# elif 1
+# define GRUB_UINT64_C(x) x##ULL
+# endif
+
typedef grub_uint64_t grub_properly_aligned_t;
#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

File diff suppressed because it is too large Load Diff

View File

@@ -1,58 +0,0 @@
From 0044d32121bf52c4547c6b3c78f12d7305f57e6b Mon Sep 17 00:00:00 2001
From: Ax333l <main@axelen.xyz>
Date: Thu, 17 Aug 2023 00:00:00 +0000
Subject: [PATCH 4/6] Error on missing Argon2id parameters
Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch>
---
grub-core/disk/luks2.c | 13 ++++++++-----
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
--- a/grub-core/disk/luks2.c
+++ b/grub-core/disk/luks2.c
@@ -38,6 +38,7 @@ GRUB_MOD_LICENSE ("GPLv3+");
enum grub_luks2_kdf_type
{
LUKS2_KDF_TYPE_ARGON2I,
+ LUKS2_KDF_TYPE_ARGON2ID,
LUKS2_KDF_TYPE_PBKDF2
};
typedef enum grub_luks2_kdf_type grub_luks2_kdf_type_t;
@@ -90,7 +91,7 @@ struct grub_luks2_keyslot
grub_int64_t time;
grub_int64_t memory;
grub_int64_t cpus;
- } argon2i;
+ } argon2;
struct
{
const char *hash;
@@ -160,10 +161,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"))
{
- out->kdf.type = LUKS2_KDF_TYPE_ARGON2I;
- if (grub_json_getint64 (&out->kdf.u.argon2i.time, &kdf, "time") ||
- grub_json_getint64 (&out->kdf.u.argon2i.memory, &kdf, "memory") ||
- grub_json_getint64 (&out->kdf.u.argon2i.cpus, &kdf, "cpus"))
+ out->kdf.type = !grub_strcmp (type, "argon2i")
+ ? LUKS2_KDF_TYPE_ARGON2I : LUKS2_KDF_TYPE_ARGON2ID;
+ if (grub_json_getint64 (&out->kdf.u.argon2.time, &kdf, "time") ||
+ grub_json_getint64 (&out->kdf.u.argon2.memory, &kdf, "memory") ||
+ grub_json_getint64 (&out->kdf.u.argon2.cpus, &kdf, "cpus"))
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,
switch (k->kdf.type)
{
case LUKS2_KDF_TYPE_ARGON2I:
+ case LUKS2_KDF_TYPE_ARGON2ID:
ret = grub_error (GRUB_ERR_BAD_ARGUMENT, "Argon2 not supported");
goto err;
case LUKS2_KDF_TYPE_PBKDF2:
--
2.39.2

View File

@@ -1,83 +0,0 @@
From 0a21695c55f76f1c958bb633481d55b3168562f7 Mon Sep 17 00:00:00 2001
From: Ax333l <main@axelen.xyz>
Date: Thu, 17 Aug 2023 00:00:00 +0000
Subject: [PATCH 5/6] Compile with Argon2id support
Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch>
---
Makefile.util.def | 6 +++++-
grub-core/Makefile.core.def | 2 +-
grub-core/disk/luks2.c | 13 +++++++++++--
3 files changed, 17 insertions(+), 4 deletions(-)
diff --git a/Makefile.util.def b/Makefile.util.def
index 1e9a13d3e..a167825c3 100644
--- a/Makefile.util.def
+++ b/Makefile.util.def
@@ -3,7 +3,7 @@ AutoGen definitions Makefile.tpl;
library = {
name = libgrubkern.a;
cflags = '$(CFLAGS_GNULIB)';
- cppflags = '$(CPPFLAGS_GNULIB) -I$(srcdir)/grub-core/lib/json';
+ cppflags = '$(CPPFLAGS_GNULIB) -I$(srcdir)/grub-core/lib/json -I$(srcdir)/grub-core/lib/argon2';
common = util/misc.c;
common = grub-core/kern/command.c;
@@ -36,6 +36,10 @@ library = {
common = grub-core/kern/misc.c;
common = grub-core/kern/partition.c;
common = grub-core/lib/crypto.c;
+ common = grub-core/lib/argon2/argon2.c;
+ common = grub-core/lib/argon2/core.c;
+ common = grub-core/lib/argon2/ref.c;
+ common = grub-core/lib/argon2/blake2/blake2b.c;
common = grub-core/lib/json/json.c;
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 4a06789e5..e939dcc99 100644
--- a/grub-core/Makefile.core.def
+++ b/grub-core/Makefile.core.def
@@ -1238,7 +1238,7 @@ module = {
common = disk/luks2.c;
common = lib/gnulib/base64.c;
cflags = '$(CFLAGS_POSIX) $(CFLAGS_GNULIB)';
- cppflags = '$(CPPFLAGS_POSIX) $(CPPFLAGS_GNULIB) -I$(srcdir)/lib/json';
+ cppflags = '$(CPPFLAGS_POSIX) $(CPPFLAGS_GNULIB) -I$(srcdir)/lib/json -I$(srcdir)/lib/argon2';
};
module = {
diff --git a/grub-core/disk/luks2.c b/grub-core/disk/luks2.c
index bc818ea69..5b9eaa599 100644
--- a/grub-core/disk/luks2.c
+++ b/grub-core/disk/luks2.c
@@ -27,6 +27,7 @@
#include <grub/partition.h>
#include <grub/i18n.h>
+#include <argon2.h>
#include <base64.h>
#include <json.h>
@@ -462,8 +463,16 @@ luks2_decrypt_key (grub_uint8_t *out_key,
{
case LUKS2_KDF_TYPE_ARGON2I:
case LUKS2_KDF_TYPE_ARGON2ID:
- ret = grub_error (GRUB_ERR_BAD_ARGUMENT, "Argon2 not supported");
- goto err;
+ ret = argon2_hash (k->kdf.u.argon2.time, k->kdf.u.argon2.memory, k->kdf.u.argon2.cpus,
+ passphrase, passphraselen, salt, saltlen, area_key, k->area.key_size,
+ k->kdf.type == LUKS2_KDF_TYPE_ARGON2I ? Argon2_i : Argon2_id,
+ ARGON2_VERSION_NUMBER);
+ if (ret)
+ {
+ grub_dprintf ("luks2", "Argon2 failed: %s\n", argon2_error_message (ret));
+ goto err;
+ }
+ break;
case LUKS2_KDF_TYPE_PBKDF2:
hash = grub_crypto_lookup_md_by_name (k->kdf.u.pbkdf2.hash);
if (!hash)
--
2.39.2

View File

@@ -1,26 +0,0 @@
From 6c9a6625c0dc038d1bdbdc13665f40e269e86496 Mon Sep 17 00:00:00 2001
From: Ax333l <main@axelen.xyz>
Date: Thu, 17 Aug 2023 00:00:00 +0000
Subject: [PATCH 6/6] Make grub-install work with Argon2
Signed-off-by: Nicholas Johnson <nick@nicholasjohnson.ch>
---
util/grub-install.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/util/grub-install.c b/util/grub-install.c
index 1ad04db36..a8a3330b8 100644
--- a/util/grub-install.c
+++ b/util/grub-install.c
@@ -448,6 +448,8 @@ probe_mods (grub_disk_t disk)
{
grub_util_cryptodisk_get_abstraction (disk,
push_cryptodisk_module, NULL);
+ /* HACK: always push argon2 */
+ grub_install_push_module ("argon2");
have_abstractions = 1;
have_cryptodisk = 1;
}
--
2.39.2

View File

@@ -1,107 +0,0 @@
From 96c0bbe5d406b616360a7fce7cee67d7692c0d6d Mon Sep 17 00:00:00 2001
From: Leah Rowe <leah@libreboot.org>
Date: Mon, 30 Oct 2023 22:19:21 +0000
Subject: [PATCH 1/1] at_keyboard coreboot: force scancodes2+translate
Scan code set 2 with translation should be assumed in
every case, as the default starting position.
However, GRUB is trying to detect and use other modes
such as set 2 without translation, or set 1 without
translation from set 2; it also detects no-mode and
assumes mode 1, on really old keyboards.
The current behaviour has been retained, for everything
except GRUB_MACHINE_COREBOOT; for the latter, scan code
set 2 with translation is hardcoded, and forced in code.
This is required to make keyboard initialisation work on
the MEC5035 EC used by the Dell Latitude E6400, when
running GRUB as a coreboot payload on that laptop. The
EC reports scancode set 2 with translation when probed,
but actually only outputs scancode set 1.
Since GRUB is attempting to use it without translation,
and since the machine reports set 2 with translation,
but only ever outputs set 1 scancodes, this results in
wrong keypresses for every key.
This fix fixed that, by forcing set 2 with translation,
treating it as set 1, but only on coreboot. This is the
same behaviour used in GNU+Linux systems and SeaBIOS.
With this change, GRUB keyboard initialisation now works
just fine on those machines.
This has *also* been tested on other coreboot machines
running GRUB; several HP EliteBooks, ThinkPads and
Dell Precision T1650. All seems to work just fine.
Signed-off-by: Leah Rowe <leah@libreboot.org>
---
grub-core/term/at_keyboard.c | 20 ++++++++++++++++++--
1 file changed, 18 insertions(+), 2 deletions(-)
diff --git a/grub-core/term/at_keyboard.c b/grub-core/term/at_keyboard.c
index f8a129eb7..8207225c2 100644
--- a/grub-core/term/at_keyboard.c
+++ b/grub-core/term/at_keyboard.c
@@ -138,6 +138,7 @@ write_mode (int mode)
return (i != GRUB_AT_TRIES);
}
+#if !defined (GRUB_MACHINE_COREBOOT)
static int
query_mode (void)
{
@@ -161,10 +162,12 @@ query_mode (void)
return 3;
return 0;
}
+#endif
static void
set_scancodes (void)
{
+#if !defined (GRUB_MACHINE_COREBOOT)
/* You must have visited computer museum. Keyboard without scancode set
knowledge. Assume XT. */
if (!grub_keyboard_orig_set)
@@ -173,20 +176,33 @@ set_scancodes (void)
ps2_state.current_set = 1;
return;
}
+#endif
#if !USE_SCANCODE_SET
ps2_state.current_set = 1;
return;
-#else
+#endif
+#if defined (GRUB_MACHINE_COREBOOT)
+ /* enable translation */
+ grub_keyboard_controller_write (grub_keyboard_controller_orig
+ & ~KEYBOARD_AT_DISABLE);
+#else
+ /* if not coreboot, disable translation and try mode 2 first, before 1 */
grub_keyboard_controller_write (grub_keyboard_controller_orig
& ~KEYBOARD_AT_TRANSLATE
& ~KEYBOARD_AT_DISABLE);
+#endif
keyboard_controller_wait_until_ready ();
grub_outb (KEYBOARD_COMMAND_ENABLE, KEYBOARD_REG_DATA);
-
write_mode (2);
+
+#if defined (GRUB_MACHINE_COREBOOT)
+ /* mode 2 with translation, so make grub treat as set 1 */
+ ps2_state.current_set = 1;
+#else
+ /* if not coreboot, translation isn't set; test 2 and fall back to 1 */
ps2_state.current_set = query_mode ();
grub_dprintf ("atkeyb", "returned set %d\n", ps2_state.current_set);
if (ps2_state.current_set == 2)
--
2.39.2

View File

@@ -1,38 +0,0 @@
From 0a6abeb40ac4284fbff6ef5958989d561b6290a7 Mon Sep 17 00:00:00 2001
From: Leah Rowe <leah@libreboot.org>
Date: Tue, 31 Oct 2023 10:33:28 +0000
Subject: [PATCH 1/1] keylayouts: don't print "Unknown key" message
on keyboards with stuck keys, this results in GRUB just
spewing it repeatedly, preventing use of GRUB.
in such cases, it's still possible to use the keyboard,
and we should let the user at least boot.
it often appears when people plug in faulty usb keyboards,
but can appear for laptop keyboards too; one of my e6400
has stuck keys.
with this patch, grub should be a bit more reliable in
terms of user experience, when the keyboard is faulty.
Signed-off-by: Leah Rowe <leah@libreboot.org>
---
grub-core/commands/keylayouts.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/grub-core/commands/keylayouts.c b/grub-core/commands/keylayouts.c
index aa3ba34f2..445fa0601 100644
--- a/grub-core/commands/keylayouts.c
+++ b/grub-core/commands/keylayouts.c
@@ -174,7 +174,6 @@ grub_term_map_key (grub_keyboard_key_t code, int status)
key = map_key_core (code, status, &alt_gr_consumed);
if (key == 0 || key == GRUB_TERM_SHIFT) {
- grub_printf ("Unknown key 0x%x detected\n", code);
return GRUB_TERM_NO_KEY;
}
--
2.39.2

View File

@@ -1,102 +0,0 @@
From 9e7a651a0f15f2e9dec65a77765c3c4fd97b4165 Mon Sep 17 00:00:00 2001
From: Leah Rowe <leah@libreboot.org>
Date: Sun, 5 Nov 2023 16:14:58 +0000
Subject: [PATCH 1/1] 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,
so the behaviour is otherwise identical, but it will
no longer print a warning message on the screen.
Signed-off-by: Leah Rowe <leah@libreboot.org>
---
grub-core/commands/keylayouts.c | 2 +-
grub-core/commands/loadenv.c | 2 +-
grub-core/commands/nativedisk.c | 2 +-
grub-core/efiemu/main.c | 3 +--
grub-core/font/font.c | 2 +-
grub-core/kern/dl.c | 2 +-
6 files changed, 6 insertions(+), 7 deletions(-)
diff --git a/grub-core/commands/keylayouts.c b/grub-core/commands/keylayouts.c
index 445fa0601..00bcf7025 100644
--- a/grub-core/commands/keylayouts.c
+++ b/grub-core/commands/keylayouts.c
@@ -211,7 +211,7 @@ grub_cmd_keymap (struct grub_command *cmd __attribute__ ((unused)),
{
const char *prefix = grub_env_get ("prefix");
if (!prefix)
- return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("variable `%s' isn't set"), "prefix");
+ return (grub_errno = GRUB_ERR_BAD_ARGUMENT);
filename = grub_xasprintf ("%s/layouts/%s.gkb", prefix, argv[0]);
if (!filename)
return grub_errno;
diff --git a/grub-core/commands/loadenv.c b/grub-core/commands/loadenv.c
index 166445849..699b39bfa 100644
--- a/grub-core/commands/loadenv.c
+++ b/grub-core/commands/loadenv.c
@@ -58,7 +58,7 @@ open_envblk_file (char *filename,
prefix = grub_env_get ("prefix");
if (! prefix)
{
- grub_error (GRUB_ERR_FILE_NOT_FOUND, N_("variable `%s' isn't set"), "prefix");
+ grub_errno = GRUB_ERR_FILE_NOT_FOUND;
return 0;
}
diff --git a/grub-core/commands/nativedisk.c b/grub-core/commands/nativedisk.c
index 580c8d3b0..6806bff9c 100644
--- a/grub-core/commands/nativedisk.c
+++ b/grub-core/commands/nativedisk.c
@@ -186,7 +186,7 @@ grub_cmd_nativedisk (grub_command_t cmd __attribute__ ((unused)),
prefix = grub_env_get ("prefix");
if (! prefix)
- return grub_error (GRUB_ERR_FILE_NOT_FOUND, N_("variable `%s' isn't set"), "prefix");
+ return (grub_errno = GRUB_ERR_FILE_NOT_FOUND);
if (prefix)
path_prefix = (prefix[0] == '(') ? grub_strchr (prefix, ')') : NULL;
diff --git a/grub-core/efiemu/main.c b/grub-core/efiemu/main.c
index e7037f4ed..e5d4dbff1 100644
--- a/grub-core/efiemu/main.c
+++ b/grub-core/efiemu/main.c
@@ -231,8 +231,7 @@ grub_efiemu_autocore (void)
prefix = grub_env_get ("prefix");
if (! prefix)
- return grub_error (GRUB_ERR_FILE_NOT_FOUND,
- N_("variable `%s' isn't set"), "prefix");
+ return (grub_errno = GRUB_ERR_FILE_NOT_FOUND);
suffix = grub_efiemu_get_default_core_name ();
diff --git a/grub-core/font/font.c b/grub-core/font/font.c
index 18de52562..2a0fea6c8 100644
--- a/grub-core/font/font.c
+++ b/grub-core/font/font.c
@@ -461,7 +461,7 @@ grub_font_load (const char *filename)
if (!prefix)
{
- grub_error (GRUB_ERR_FILE_NOT_FOUND, N_("variable `%s' isn't set"), "prefix");
+ grub_errno = GRUB_ERR_FILE_NOT_FOUND;
goto fail;
}
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
--- a/grub-core/kern/dl.c
+++ b/grub-core/kern/dl.c
@@ -758,7 +758,7 @@ grub_dl_load (const char *name)
return 0;
if (! grub_dl_dir) {
- grub_error (GRUB_ERR_FILE_NOT_FOUND, N_("variable `%s' isn't set"), "prefix");
+ grub_errno = GRUB_ERR_FILE_NOT_FOUND;
return 0;
}
--
2.39.2

View File

@@ -1,34 +0,0 @@
From 6237c5762edccc1e1fa4746b1d4aa5e8d81e4883 Mon Sep 17 00:00:00 2001
From: Leah Rowe <leah@libreboot.org>
Date: Sun, 5 Nov 2023 16:36:22 +0000
Subject: [PATCH 1/1] 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
modules but then rely on loading a grub.cfg
provided by a distro; in almost all cases that works,
but also in almost all cases, that will try to load
a module we don't actually need, but then it prints
a message. this can annoy some users, so silence it.
Signed-off-by: Leah Rowe <leah@libreboot.org>
---
grub-core/kern/dl.c | 2 +-
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
--- 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)
s = grub_dl_find_section (e, ".modname");
if (!s)
- return grub_error (GRUB_ERR_BAD_MODULE, "no module name found");
+ return (grub_errno = GRUB_ERR_BAD_MODULE);
mod->name = grub_strdup ((char *) e + s->sh_offset);
if (! mod->name)
--
2.39.2

View File

@@ -1,31 +0,0 @@
From e5b7ec81421487e71bcaf8b6b5a27f3649a62753 Mon Sep 17 00:00:00 2001
From: Leah Rowe <leah@libreboot.org>
Date: Sun, 5 Nov 2023 17:25:20 +0000
Subject: [PATCH 1/1] don't print empty error messages
this is part two of the quest to kill the prefix
error message. after i disabled prefix-related
messages, it still printed "error: ." on screen.
Signed-off-by: Leah Rowe <leah@libreboot.org>
---
grub-core/kern/err.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/grub-core/kern/err.c b/grub-core/kern/err.c
index 53c734de7..7cac53983 100644
--- a/grub-core/kern/err.c
+++ b/grub-core/kern/err.c
@@ -107,7 +107,8 @@ grub_print_error (void)
{
if (grub_errno != GRUB_ERR_NONE)
{
- grub_err_printf (_("error: %s.\n"), grub_errmsg);
+ if (grub_strlen(grub_errmsg) > 0)
+ grub_err_printf (_("error: %s.\n"), grub_errmsg);
grub_err_printed_errors++;
}
}
--
2.39.2

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,41 +0,0 @@
From 81d850494c3cde1da33cc2df44837c839c1f2c60 Mon Sep 17 00:00:00 2001
From: Leah Rowe <leah@libreboot.org>
Date: Fri, 6 Oct 2023 23:17:06 +0100
Subject: [PATCH 1/1] add central Makefile in main directory
it only does build64. i'm disabling use of 32-bit memtest in lbmk,
until i can figure out a more consistent cross-compile method,
rather than relying on hostcc.
a user on irc reported build issues on pop os
it's not pop's fault. lbmk needs to start handling cross
compilers properly. (alternatively, i could rig memtest86+
to use crossgcc. i'll explore that later)
Signed-off-by: Leah Rowe <leah@libreboot.org>
---
Makefile | 11 +++++++++++
1 file changed, 11 insertions(+)
create mode 100644 Makefile
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..59fcbef
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,11 @@
+# SPDX-License-Identifier: MIT
+# SPDX-FileCopyrightText: 2023 Leah Rowe <leah@libreboot.org>
+
+all:
+ make -C build64
+
+clean:
+ make -C build64 clean
+
+distclean:
+ make -C build64 clean
--
2.39.2

View File

@@ -1,2 +0,0 @@
out/bios.bin.elf
out/vgabios.bin

View File

@@ -1,3 +0,0 @@
arch="x86_32"
tree="default"
rev="1e1da7a963007d03a4e0e9a9e0ff17990bb1608d"

View File

@@ -1,6 +0,0 @@
u-boot
u-boot.bin
u-boot.dtb
u-boot.img
u-boot.itb
u-boot.elf

View File

@@ -1,513 +0,0 @@
From ac31b6bc4bcfc328342ec1677db5b80548d43b35 Mon Sep 17 00:00:00 2001
From: Andre Przywara <andre.przywara@arm.com>
Date: Mon, 10 Jan 2022 00:56:31 +0000
Subject: [PATCH 1/4] video: Add cursor support for video consoles
So far the video console is completely lacking any cursor, which makes
typing and correcting quite irritating.
Add a simple cursor display by writing a SPACE glyph in the background
colour to the next character position on the screen. Any typed character
will naturally overwrite it, so we need to only explicitly clear it if
the next character will appear somewhere else (newline, backspace).
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Tested-by: Simon Glass <sjg@chromium.org>
Link: https://lore.kernel.org/r/20220110005638.21599-2-andre.przywara@arm.com
[Alper: Rebase for console_set_font(), reword for CONFIG_VIDEO]
Signed-off-by: Alper Nebi Yasak <alpernebiyasak@gmail.com>
---
drivers/video/console_core.c | 1 +
drivers/video/vidconsole-uclass.c | 42 +++++++++++++++++++++++++++++++
include/video_console.h | 1 +
3 files changed, 44 insertions(+)
diff --git a/drivers/video/console_core.c b/drivers/video/console_core.c
index b5d0e3dceca3..60de5fcacb82 100644
--- a/drivers/video/console_core.c
+++ b/drivers/video/console_core.c
@@ -30,6 +30,7 @@ static int console_set_font(struct udevice *dev, struct video_fontdata *fontdata
debug("height: %d\n", fontdata->height);
priv->fontdata = fontdata;
+ vc_priv->cursor_visible = true;
vc_priv->x_charsize = fontdata->width;
vc_priv->y_charsize = fontdata->height;
if (vid_priv->rot % 2) {
diff --git a/drivers/video/vidconsole-uclass.c b/drivers/video/vidconsole-uclass.c
index b5b3b6625902..a6d994bd637c 100644
--- a/drivers/video/vidconsole-uclass.c
+++ b/drivers/video/vidconsole-uclass.c
@@ -56,6 +56,26 @@ static int vidconsole_entry_start(struct udevice *dev)
return ops->entry_start(dev);
}
+static void draw_cursor(struct udevice *dev, bool state)
+{
+ struct vidconsole_priv *priv = dev_get_uclass_priv(dev);
+ struct video_priv *vid_priv = dev_get_uclass_priv(dev->parent);
+ u32 tmp;
+
+ if (!priv->cursor_visible)
+ return;
+
+ if (state) {
+ tmp = vid_priv->colour_bg;
+ vid_priv->colour_bg = vid_priv->colour_fg;
+ }
+
+ vidconsole_putc_xy(dev, priv->xcur_frac, priv->ycur, ' ');
+
+ if (state)
+ vid_priv->colour_bg = tmp;
+}
+
/* Move backwards one space */
static int vidconsole_back(struct udevice *dev)
{
@@ -63,6 +83,8 @@ static int vidconsole_back(struct udevice *dev)
struct vidconsole_ops *ops = vidconsole_get_ops(dev);
int ret;
+ draw_cursor(dev, false);
+
if (ops->backspace) {
ret = ops->backspace(dev);
if (ret != -ENOSYS)
@@ -89,6 +111,8 @@ static void vidconsole_newline(struct udevice *dev)
const int rows = CONFIG_VAL(CONSOLE_SCROLL_LINES);
int i, ret;
+ draw_cursor(dev, false);
+
priv->xcur_frac = priv->xstart_frac;
priv->ycur += priv->y_charsize;
@@ -282,6 +306,14 @@ static void vidconsole_escape_char(struct udevice *dev, char ch)
break;
}
+ case 'l':
+ draw_cursor(dev, false);
+ priv->cursor_visible = 0;
+ break;
+ case 'h':
+ priv->cursor_visible = 1;
+ draw_cursor(dev, true);
+ break;
case 'J': {
int mode;
@@ -456,6 +488,11 @@ int vidconsole_put_char(struct udevice *dev, char ch)
struct vidconsole_priv *priv = dev_get_uclass_priv(dev);
int ret;
+ /*
+ * We don't need to clear the cursor since we are going to overwrite
+ * that character anyway.
+ */
+
if (priv->escape) {
vidconsole_escape_char(dev, ch);
return 0;
@@ -470,6 +507,7 @@ int vidconsole_put_char(struct udevice *dev, char ch)
/* beep */
break;
case '\r':
+ draw_cursor(dev, false);
priv->xcur_frac = priv->xstart_frac;
break;
case '\n':
@@ -477,6 +515,7 @@ int vidconsole_put_char(struct udevice *dev, char ch)
vidconsole_entry_start(dev);
break;
case '\t': /* Tab (8 chars alignment) */
+ draw_cursor(dev, false);
priv->xcur_frac = ((priv->xcur_frac / priv->tab_width_frac)
+ 1) * priv->tab_width_frac;
@@ -494,6 +533,8 @@ int vidconsole_put_char(struct udevice *dev, char ch)
break;
}
+ draw_cursor(dev, true);
+
return 0;
}
@@ -646,6 +687,7 @@ static int vidconsole_pre_probe(struct udevice *dev)
struct video_priv *vid_priv = dev_get_uclass_priv(vid);
priv->xsize_frac = VID_TO_POS(vid_priv->xsize);
+ priv->cursor_visible = false;
return 0;
}
diff --git a/include/video_console.h b/include/video_console.h
index 2694e44f6ecf..949abb3861e7 100644
--- a/include/video_console.h
+++ b/include/video_console.h
@@ -59,6 +59,7 @@ struct vidconsole_priv {
int escape_len;
int row_saved;
int col_saved;
+ bool cursor_visible;
char escape_buf[32];
};
--
2.42.0
From ab8ddf81c1442717f6ffddc3460d4e4adbd5b570 Mon Sep 17 00:00:00 2001
From: Andre Przywara <andre.przywara@arm.com>
Date: Mon, 10 Jan 2022 00:56:36 +0000
Subject: [PATCH 2/4] efi-selftest: Add international characters test
UEFI relies entirely on unicode output, which actual fonts displayed on
the screen might not be ready for.
Add a test displaying some international characters, to reveal missing
glyphs, especially in our builtin fonts.
This would be needed to be manually checked on the screen for
correctness.
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Link: https://lore.kernel.org/r/20220110005638.21599-7-andre.przywara@arm.com
---
lib/efi_selftest/efi_selftest_textoutput.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/lib/efi_selftest/efi_selftest_textoutput.c b/lib/efi_selftest/efi_selftest_textoutput.c
index cc44b38bc23a..175731ae96b6 100644
--- a/lib/efi_selftest/efi_selftest_textoutput.c
+++ b/lib/efi_selftest/efi_selftest_textoutput.c
@@ -118,6 +118,11 @@ static int execute(void)
efi_st_printf("Unicode not handled properly\n");
return EFI_ST_FAILURE;
}
+ ret = con_out->output_string(con_out, L"Österreich Edelweiß Smørrebrød Smörgås Niño René >Ἑλλάς<\n");
+ if (ret != EFI_ST_SUCCESS) {
+ efi_st_error("OutputString failed for international chars\n");
+ return EFI_ST_FAILURE;
+ }
efi_st_printf("\n");
return EFI_ST_SUCCESS;
--
2.42.0
From 48e918c31a46815325ffd7a77eb7a3ffedf8e59c Mon Sep 17 00:00:00 2001
From: Andre Przywara <andre.przywara@arm.com>
Date: Mon, 10 Jan 2022 00:56:37 +0000
Subject: [PATCH 3/4] efi_selftest: Add box drawing character selftest
UEFI applications rely on Unicode output capability, and might use that
for drawing pseudo-graphical interfaces using Unicode defined box
drawing characters.
Add a simple test to display the most basic box characters, which would
need to be checked manually on the screen for correctness.
To facilitate this, add a three second delay after the output at this
point.
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Link: https://lore.kernel.org/r/20220110005638.21599-8-andre.przywara@arm.com
---
lib/efi_selftest/efi_selftest_textoutput.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/lib/efi_selftest/efi_selftest_textoutput.c b/lib/efi_selftest/efi_selftest_textoutput.c
index 175731ae96b6..3c6870f74241 100644
--- a/lib/efi_selftest/efi_selftest_textoutput.c
+++ b/lib/efi_selftest/efi_selftest_textoutput.c
@@ -123,6 +123,17 @@ static int execute(void)
efi_st_error("OutputString failed for international chars\n");
return EFI_ST_FAILURE;
}
+ ret = con_out->output_string(con_out, L"┌─┬─┐\n");
+ ret |= con_out->output_string(con_out, L"│ │ │\n");
+ ret |= con_out->output_string(con_out, L"├─┼─┤\n");
+ ret |= con_out->output_string(con_out, L"│ │ │\n");
+ ret |= con_out->output_string(con_out, L"└─┴─┘\n");
+ if (ret != EFI_ST_SUCCESS) {
+ efi_st_error("OutputString failed for box drawing chars\n");
+ return EFI_ST_FAILURE;
+ }
+ con_out->output_string(con_out, L"waiting for admiration...\n");
+ EFI_CALL(systab.boottime->stall(3000000));
efi_st_printf("\n");
return EFI_ST_SUCCESS;
--
2.42.0
From 407ca7e821aabf240c2602dd0db56d6398a0c03b Mon Sep 17 00:00:00 2001
From: Andre Przywara <andre.przywara@arm.com>
Date: Mon, 10 Jan 2022 00:56:38 +0000
Subject: [PATCH 4/4] video: Convert UTF-8 input stream to the 437 code page
The bitmap fonts (VGA 8x16 and friends) we import from Linux use the
437 code page to map their glyphs. For U-Boot's own purposes this is
probably fine, but UEFI applications output Unicode, which only matches
in the very basic first 127 characters.
Add a function that converts UTF-8 character sequences into the
respective CP437 code point, as far as the characters defined in there
allow this. This includes quite some international and box drawing
characters, which are used by UEFI applications.
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Link: https://lore.kernel.org/r/20220110005638.21599-9-andre.przywara@arm.com
[Alper: Rebase for makefile changes, use $(SPL_TPL_)VIDEO]
Signed-off-by: Alper Nebi Yasak <alpernebiyasak@gmail.com>
---
drivers/video/Makefile | 1 +
drivers/video/utf8_cp437.c | 169 ++++++++++++++++++++++++++++++
drivers/video/vidconsole-uclass.c | 6 +-
include/video_console.h | 9 ++
4 files changed, 184 insertions(+), 1 deletion(-)
create mode 100644 drivers/video/utf8_cp437.c
diff --git a/drivers/video/Makefile b/drivers/video/Makefile
index d13af9f3b19b..4b1983990aba 100644
--- a/drivers/video/Makefile
+++ b/drivers/video/Makefile
@@ -20,6 +20,7 @@ obj-$(CONFIG_DISPLAY) += display-uclass.o
obj-$(CONFIG_VIDEO_MIPI_DSI) += dsi-host-uclass.o
obj-$(CONFIG_$(SPL_TPL_)VIDEO) += video-uclass.o vidconsole-uclass.o
obj-$(CONFIG_$(SPL_TPL_)VIDEO) += video_bmp.o
+obj-$(CONFIG_$(SPL_TPL_)VIDEO) += utf8_cp437.o
obj-$(CONFIG_$(SPL_TPL_)PANEL) += panel-uclass.o
obj-$(CONFIG_PANEL_HX8238D) += hx8238d.o
obj-$(CONFIG_$(SPL_TPL_)SIMPLE_PANEL) += simple_panel.o
diff --git a/drivers/video/utf8_cp437.c b/drivers/video/utf8_cp437.c
new file mode 100644
index 000000000000..cab68b92b6e3
--- /dev/null
+++ b/drivers/video/utf8_cp437.c
@@ -0,0 +1,169 @@
+/*
+ * Convert UTF-8 bytes into a code page 437 character.
+ * Based on the table in the Code_page_437 Wikipedia page.
+ */
+
+#include <linux/types.h>
+
+uint8_t code_points_00a0[] = {
+ 255, 173, 155, 156, 7, 157, 7, 21,
+ 7, 7, 166, 174, 170, 7, 7, 7,
+ 248, 241, 253, 7, 7, 230, 20, 250,
+ 7, 7, 167, 175, 172, 171, 7, 168,
+ 7, 7, 7, 7, 142, 143, 146, 128,
+ 7, 144, 7, 7, 7, 7, 7, 7,
+ 7, 165, 7, 7, 7, 7, 153, 7,
+ 7, 7, 7, 7, 154, 7, 7, 225,
+ 133, 160, 131, 7, 132, 134, 145, 135,
+ 138, 130, 136, 137, 141, 161, 140, 139,
+ 7, 164, 149, 162, 147, 7, 148, 246,
+ 7, 151, 163, 150, 129, 7, 7, 152,
+};
+
+uint8_t code_points_2550[] = {
+ 205, 186, 213, 214, 201, 184, 183, 187,
+ 212, 211, 200, 190, 189, 188, 198, 199,
+ 204, 181, 182, 185, 209, 210, 203, 207,
+ 208, 202, 216, 215, 206
+};
+
+static uint8_t utf8_convert_11bit(uint16_t code)
+{
+ switch (code) {
+ case 0x0192: return 159;
+ case 0x0393: return 226;
+ case 0x0398: return 233;
+ case 0x03A3: return 228;
+ case 0x03A6: return 232;
+ case 0x03A9: return 234;
+ case 0x03B1: return 224;
+ case 0x03B4: return 235;
+ case 0x03B5: return 238;
+ case 0x03C0: return 227;
+ case 0x03C3: return 229;
+ case 0x03C4: return 231;
+ case 0x03C6: return 237;
+ }
+
+ return 0;
+};
+
+static uint8_t utf8_convert_2xxx(uint16_t code)
+{
+ switch (code) {
+ case 0x2022: return 7;
+ case 0x203C: return 19;
+ case 0x207F: return 252;
+ case 0x20A7: return 158;
+ case 0x2190: return 27;
+ case 0x2191: return 24;
+ case 0x2192: return 26;
+ case 0x2193: return 25;
+ case 0x2194: return 29;
+ case 0x2195: return 18;
+ case 0x21A8: return 23;
+ case 0x2219: return 249;
+ case 0x221A: return 251;
+ case 0x221E: return 236;
+ case 0x221F: return 28;
+ case 0x2229: return 239;
+ case 0x2248: return 247;
+ case 0x2261: return 240;
+ case 0x2264: return 243;
+ case 0x2265: return 242;
+ case 0x2310: return 169;
+ case 0x2320: return 244;
+ case 0x2321: return 245;
+ case 0x2500: return 196;
+ case 0x2502: return 179;
+ case 0x250C: return 218;
+ case 0x2510: return 191;
+ case 0x2514: return 192;
+ case 0x2518: return 217;
+ case 0x251C: return 195;
+ case 0x2524: return 180;
+ case 0x252C: return 194;
+ case 0x2534: return 193;
+ case 0x253C: return 197;
+ case 0x2580: return 223;
+ case 0x2584: return 220;
+ case 0x2588: return 219;
+ case 0x258C: return 221;
+ case 0x2590: return 222;
+ case 0x2591: return 176;
+ case 0x2592: return 177;
+ case 0x2593: return 178;
+ case 0x25A0: return 254;
+ case 0x25AC: return 22;
+ case 0x25B2: return 30;
+ case 0x25BA: return 16;
+ case 0x25BC: return 31;
+ case 0x25C4: return 17;
+ case 0x25CB: return 9;
+ case 0x25D8: return 8;
+ case 0x25D9: return 10;
+ case 0x263A: return 1;
+ case 0x263B: return 2;
+ case 0x263C: return 15;
+ case 0x2640: return 12;
+ case 0x2642: return 11;
+ case 0x2660: return 6;
+ case 0x2663: return 5;
+ case 0x2665: return 3;
+ case 0x2666: return 4;
+ case 0x266A: return 13;
+ case 0x266B: return 14;
+ }
+
+ return 0;
+}
+
+uint8_t convert_uc16_to_cp437(uint16_t code)
+{
+ if (code < 0x7f) // ASCII
+ return code;
+ if (code < 0xa0) // high control characters
+ return code;
+ if (code < 0x100) // international characters
+ return code_points_00a0[code - 0xa0];
+ if (code < 0x800)
+ return utf8_convert_11bit(code);
+ if (code >= 0x2550 && code < 0x256d) // block graphics
+ return code_points_2550[code - 0x2550];
+
+ return utf8_convert_2xxx(code);
+}
+
+uint8_t convert_utf8_to_cp437(uint8_t c, uint32_t *esc)
+{
+ int shift;
+ uint16_t ucs;
+
+ if (c < 127) // ASCII
+ return c;
+ if (c == 127)
+ return 8; // DEL (?)
+
+ switch (c & 0xf0) {
+ case 0xc0: case 0xd0: // two bytes sequence
+ *esc = (1U << 24) | ((c & 0x1f) << 6);
+ return 0;
+ case 0xe0: // three bytes sequence
+ *esc = (2U << 24) | ((c & 0x0f) << 12);
+ return 0;
+ case 0xf0: // four bytes sequence
+ *esc = (3U << 24) | ((c & 0x07) << 18);
+ return 0;
+ case 0x80: case 0x90: case 0xa0: case 0xb0: // continuation
+ shift = (*esc >> 24) - 1;
+ ucs = *esc & 0xffffff;
+ if (shift) {
+ *esc = (shift << 24) | ucs | (c & 0x3f) << (shift * 6);
+ return 0;
+ }
+ *esc = 0;
+ return convert_uc16_to_cp437(ucs | (c & 0x3f));
+ }
+
+ return 0;
+}
diff --git a/drivers/video/vidconsole-uclass.c b/drivers/video/vidconsole-uclass.c
index a6d994bd637c..a4029a58660b 100644
--- a/drivers/video/vidconsole-uclass.c
+++ b/drivers/video/vidconsole-uclass.c
@@ -486,6 +486,7 @@ static int vidconsole_output_glyph(struct udevice *dev, char ch)
int vidconsole_put_char(struct udevice *dev, char ch)
{
struct vidconsole_priv *priv = dev_get_uclass_priv(dev);
+ uint8_t cp437;
int ret;
/*
@@ -527,7 +528,10 @@ int vidconsole_put_char(struct udevice *dev, char ch)
priv->last_ch = 0;
break;
default:
- ret = vidconsole_output_glyph(dev, ch);
+ cp437 = convert_utf8_to_cp437(ch, &priv->ucs);
+ if (cp437 == 0)
+ return 0;
+ ret = vidconsole_output_glyph(dev, cp437);
if (ret < 0)
return ret;
break;
diff --git a/include/video_console.h b/include/video_console.h
index 949abb3861e7..dbfb389f324f 100644
--- a/include/video_console.h
+++ b/include/video_console.h
@@ -59,6 +59,7 @@ struct vidconsole_priv {
int escape_len;
int row_saved;
int col_saved;
+ u32 ucs;
bool cursor_visible;
char escape_buf[32];
};
@@ -457,4 +458,12 @@ static inline int vidconsole_memmove(struct udevice *dev, void *dst,
#endif
+/*
+ * Convert an UTF-8 byte into the corresponding character in the CP437
+ * code page. Returns 0 if that character is part of a multi-byte sequence.
+ * for which *esc holds the state of. Repeatedly feed in more bytes until
+ * the return value returns a non-0 character.
+ */
+uint8_t convert_utf8_to_cp437(uint8_t c, uint32_t *esc);
+
#endif
--
2.42.0

View File

@@ -1,42 +0,0 @@
From 2ab104621dc97a89bc8f75e3b5903b83e793baf8 Mon Sep 17 00:00:00 2001
From: Alper Nebi Yasak <alpernebiyasak@gmail.com>
Date: Sat, 19 Aug 2023 16:43:58 +0300
Subject: [PATCH] HACK: regulator: Don't error on reentrant regulator actions
Commit 4fcba5d556b42 ("regulator: implement basic reference counter")
implements reference counting for regulator enable/disable actions, but
does not update its callers to handle the error cases it adds. This
breaks gru-kevin, report enabling the regulator as a success as a
workaround. It would be better to fix the callers but that needs more
debugging.
Signed-off-by: Alper Nebi Yasak <alpernebiyasak@gmail.com>
---
drivers/power/regulator/regulator_common.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/power/regulator/regulator_common.c b/drivers/power/regulator/regulator_common.c
index e26f5ebec347..1c2dfdf9b19d 100644
--- a/drivers/power/regulator/regulator_common.c
+++ b/drivers/power/regulator/regulator_common.c
@@ -75,7 +75,7 @@ int regulator_common_set_enable(const struct udevice *dev,
/* If previously enabled, increase count */
if (enable && plat->enable_count > 0) {
plat->enable_count++;
- return -EALREADY;
+ return 0;
}
if (!enable) {
@@ -85,7 +85,7 @@ int regulator_common_set_enable(const struct udevice *dev,
return -EBUSY;
} else if (!plat->enable_count) {
/* If already disabled, do nothing */
- return -EALREADY;
+ return 0;
}
}
--
2.42.0

View File

@@ -1,307 +0,0 @@
From b14bc4a5d8dc31294dde4ee9ce8008d763c695de Mon Sep 17 00:00:00 2001
From: Alper Nebi Yasak <alpernebiyasak@gmail.com>
Date: Fri, 13 Oct 2023 14:06:26 +0300
Subject: [PATCH] HACK: rockchip: Remove binman image descriptions
For Rockchip boards binman tries to build SPI and MMC images that
require an externally built BL31 file to be provided, and the build
fails otherwise. This is not really as configurable as it should be.
Some downstreams only care about build outputs for U-Boot proper. As a
hack to make sure they can do so without building BL31, remove the
binman image descriptions from the device-tree sources. However,
BINMAN_FDT expects these to be present and has to be disabled as well.
Signed-off-by: Alper Nebi Yasak <alpernebiyasak@gmail.com>
---
arch/arm/dts/rk3288-u-boot.dtsi | 24 ----
arch/arm/dts/rk3399-gru-u-boot.dtsi | 6 -
arch/arm/dts/rk3399-u-boot.dtsi | 25 ----
arch/arm/dts/rockchip-u-boot.dtsi | 186 ----------------------------
4 files changed, 241 deletions(-)
diff --git a/arch/arm/dts/rk3288-u-boot.dtsi b/arch/arm/dts/rk3288-u-boot.dtsi
index c4c5a2d225c4..432ab92d97c9 100644
--- a/arch/arm/dts/rk3288-u-boot.dtsi
+++ b/arch/arm/dts/rk3288-u-boot.dtsi
@@ -55,30 +55,6 @@ noc: syscon@ffac0000 {
};
};
-#if defined(CONFIG_ROCKCHIP_SPI_IMAGE) && defined(CONFIG_HAS_ROM)
-&binman {
- rom {
- filename = "u-boot.rom";
- size = <0x400000>;
- pad-byte = <0xff>;
-
- mkimage {
- args = "-n rk3288 -T rkspi";
- u-boot-spl {
- };
- };
- u-boot-img {
- offset = <0x20000>;
- };
- u-boot {
- offset = <0x300000>;
- };
- fdtmap {
- };
- };
-};
-#endif
-
&bus_intmem {
ddr_sram: ddr-sram@1000 {
compatible = "rockchip,rk3288-ddr-sram";
diff --git a/arch/arm/dts/rk3399-gru-u-boot.dtsi b/arch/arm/dts/rk3399-gru-u-boot.dtsi
index b1604a6872c0..54296b4d7a1c 100644
--- a/arch/arm/dts/rk3399-gru-u-boot.dtsi
+++ b/arch/arm/dts/rk3399-gru-u-boot.dtsi
@@ -15,12 +15,6 @@ config {
};
};
-&binman {
- rom {
- size = <0x800000>;
- };
-};
-
&cros_ec {
ec-interrupt = <&gpio0 RK_PA1 GPIO_ACTIVE_LOW>;
};
diff --git a/arch/arm/dts/rk3399-u-boot.dtsi b/arch/arm/dts/rk3399-u-boot.dtsi
index 3423b882c437..0bf4c481b39a 100644
--- a/arch/arm/dts/rk3399-u-boot.dtsi
+++ b/arch/arm/dts/rk3399-u-boot.dtsi
@@ -60,31 +60,6 @@ pmusgrf: syscon@ff330000 {
};
-#if defined(CONFIG_ROCKCHIP_SPI_IMAGE) && defined(CONFIG_HAS_ROM)
-&binman {
- multiple-images;
- rom {
- filename = "u-boot.rom";
- size = <0x400000>;
- pad-byte = <0xff>;
-
- mkimage {
- args = "-n rk3399 -T rkspi";
- u-boot-spl {
- };
- };
- u-boot-img {
- offset = <0x40000>;
- };
- u-boot {
- offset = <0x300000>;
- };
- fdtmap {
- };
- };
-};
-#endif /* CONFIG_ROCKCHIP_SPI_IMAGE && CONFIG_HAS_ROM */
-
&cru {
bootph-all;
};
diff --git a/arch/arm/dts/rockchip-u-boot.dtsi b/arch/arm/dts/rockchip-u-boot.dtsi
index be2658e8ef18..3d55553e4401 100644
--- a/arch/arm/dts/rockchip-u-boot.dtsi
+++ b/arch/arm/dts/rockchip-u-boot.dtsi
@@ -10,189 +10,3 @@ binman: binman {
multiple-images;
};
};
-
-#ifdef CONFIG_SPL
-&binman {
- simple-bin {
- filename = "u-boot-rockchip.bin";
- pad-byte = <0xff>;
-
- mkimage {
- filename = "idbloader.img";
- args = "-n", CONFIG_SYS_SOC, "-T", "rksd";
- multiple-data-files;
-
-#ifdef CONFIG_ROCKCHIP_EXTERNAL_TPL
- rockchip-tpl {
- };
-#elif defined(CONFIG_TPL)
- u-boot-tpl {
- };
-#endif
- u-boot-spl {
- };
- };
-
-#if defined(CONFIG_SPL_FIT) && (defined(CONFIG_ARM64) || defined(CONFIG_SPL_OPTEE_IMAGE))
- fit: fit {
-#ifdef CONFIG_ARM64
- description = "FIT image for U-Boot with bl31 (TF-A)";
-#else
- description = "FIT image with OP-TEE";
-#endif
- #address-cells = <1>;
- fit,fdt-list = "of-list";
- filename = "u-boot.itb";
- fit,external-offset = <CONFIG_FIT_EXTERNAL_OFFSET>;
- fit,align = <512>;
- offset = <CONFIG_SPL_PAD_TO>;
- images {
- u-boot {
- description = "U-Boot";
- type = "standalone";
- os = "U-Boot";
-#ifdef CONFIG_ARM64
- arch = "arm64";
-#else
- arch = "arm";
-#endif
- compression = "none";
- load = <CONFIG_TEXT_BASE>;
- entry = <CONFIG_TEXT_BASE>;
- u-boot-nodtb {
- };
-#ifdef CONFIG_SPL_FIT_SIGNATURE
- hash {
- algo = "sha256";
- };
-#endif
- };
-
-#ifdef CONFIG_ARM64
- @atf-SEQ {
- fit,operation = "split-elf";
- description = "ARM Trusted Firmware";
- type = "firmware";
- arch = "arm64";
- os = "arm-trusted-firmware";
- compression = "none";
- fit,load;
- fit,entry;
- fit,data;
-
- atf-bl31 {
- };
-#ifdef CONFIG_SPL_FIT_SIGNATURE
- hash {
- algo = "sha256";
- };
-#endif
- };
- @tee-SEQ {
- fit,operation = "split-elf";
- description = "TEE";
- type = "tee";
- arch = "arm64";
- os = "tee";
- compression = "none";
- fit,load;
- fit,entry;
- fit,data;
-
- tee-os {
- optional;
- };
-#ifdef CONFIG_SPL_FIT_SIGNATURE
- hash {
- algo = "sha256";
- };
-#endif
- };
-#else
- op-tee {
- description = "OP-TEE";
- type = "tee";
- arch = "arm";
- os = "tee";
- compression = "none";
- load = <(CFG_SYS_SDRAM_BASE + 0x8400000)>;
- entry = <(CFG_SYS_SDRAM_BASE + 0x8400000)>;
-
- tee-os {
- };
-#ifdef CONFIG_SPL_FIT_SIGNATURE
- hash {
- algo = "sha256";
- };
-#endif
- };
-#endif
-
- @fdt-SEQ {
- description = "fdt-NAME";
- compression = "none";
- type = "flat_dt";
-#ifdef CONFIG_SPL_FIT_SIGNATURE
- hash {
- algo = "sha256";
- };
-#endif
- };
- };
-
- configurations {
- default = "@config-DEFAULT-SEQ";
- @config-SEQ {
- description = "NAME.dtb";
- fdt = "fdt-SEQ";
-#ifdef CONFIG_ARM64
- fit,firmware = "atf-1", "u-boot";
-#else
- fit,firmware = "op-tee", "u-boot";
-#endif
- fit,loadables;
- };
- };
- };
-#else
- u-boot-img {
- offset = <CONFIG_SPL_PAD_TO>;
- };
-#endif
- };
-
-#ifdef CONFIG_ROCKCHIP_SPI_IMAGE
- simple-bin-spi {
- filename = "u-boot-rockchip-spi.bin";
- pad-byte = <0xff>;
-
- mkimage {
- filename = "idbloader-spi.img";
- args = "-n", CONFIG_SYS_SOC, "-T", "rkspi";
- multiple-data-files;
-
-#ifdef CONFIG_ROCKCHIP_EXTERNAL_TPL
- rockchip-tpl {
- };
-#elif defined(CONFIG_TPL)
- u-boot-tpl {
- };
-#endif
- u-boot-spl {
- };
- };
-
-#if defined(CONFIG_ARM64) || defined(CONFIG_SPL_OPTEE_IMAGE)
- fit {
- type = "blob";
- filename = "u-boot.itb";
-#else
- u-boot-img {
-#endif
- /* Sync with u-boot,spl-payload-offset if present */
- offset = <CONFIG_SYS_SPI_U_BOOT_OFFS>;
- };
- };
-#endif /* CONFIG_ROCKCHIP_SPI_IMAGE */
-};
-#endif /* CONFIG_SPL */
--
2.42.0

View File

@@ -1,348 +0,0 @@
From 2957e8bf43edf8de6e579ce1ed7f95e5bb4a1437 Mon Sep 17 00:00:00 2001
From: Alper Nebi Yasak <alpernebiyasak@gmail.com>
Date: Mon, 14 Aug 2023 20:39:41 +0300
Subject: [PATCH 1/4] arm: qemu: Enable Bochs video support
Commit 716161663ec49 ("riscv: qemu: Enable Bochs video support") enables
a video console for QEMU RISC-V virtual machines using an emulated Bochs
VGA card. Similarly, enable it for ARM virtual machines as well.
Signed-off-by: Alper Nebi Yasak <alpernebiyasak@gmail.com>
Reviewed-by: Bin Meng <bmeng@tinylab.org>
Link: https://lore.kernel.org/u-boot/20230814173944.288356-2-alpernebiyasak@gmail.com/
---
arch/arm/Kconfig | 4 ++++
board/emulation/qemu-arm/qemu-arm.env | 3 +++
doc/board/emulation/qemu-arm.rst | 4 ++++
3 files changed, 11 insertions(+)
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 328e2ddc33af..d96e230e9ee8 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -1036,6 +1036,10 @@ config ARCH_QEMU
imply DM_RTC
imply RTC_PL031
imply OF_HAS_PRIOR_STAGE
+ imply VIDEO
+ imply VIDEO_BOCHS
+ imply SYS_WHITE_ON_BLACK
+ imply SYS_CONSOLE_IS_IN_ENV
config ARCH_RMOBILE
bool "Renesas ARM SoCs"
diff --git a/board/emulation/qemu-arm/qemu-arm.env b/board/emulation/qemu-arm/qemu-arm.env
index e658d5ee7d63..86a99a2e8713 100644
--- a/board/emulation/qemu-arm/qemu-arm.env
+++ b/board/emulation/qemu-arm/qemu-arm.env
@@ -2,6 +2,9 @@
/* environment for qemu-arm and qemu-arm64 */
+stdin=serial
+stdout=serial,vidconsole
+stderr=serial,vidconsole
fdt_high=0xffffffff
initrd_high=0xffffffff
fdt_addr=0x40000000
diff --git a/doc/board/emulation/qemu-arm.rst b/doc/board/emulation/qemu-arm.rst
index 7291fa4a3150..c423fce76edd 100644
--- a/doc/board/emulation/qemu-arm.rst
+++ b/doc/board/emulation/qemu-arm.rst
@@ -67,6 +67,10 @@ Additional persistent U-Boot environment support can be added as follows:
Additional peripherals that have been tested to work in both U-Boot and Linux
can be enabled with the following command line parameters:
+- To add a video console, remove "-nographic" and add e.g.::
+
+ -serial stdio -device VGA
+
- To add a Serial ATA disk via an Intel ICH9 AHCI controller, pass e.g.::
-drive if=none,file=disk.img,format=raw,id=mydisk \
--
2.42.0
From 5330bc1c2ad84ba9ecc473f8c24d6e15b366adf9 Mon Sep 17 00:00:00 2001
From: Alper Nebi Yasak <alpernebiyasak@gmail.com>
Date: Mon, 14 Aug 2023 20:39:42 +0300
Subject: [PATCH 2/4] arm: qemu: Enable PRE_CONSOLE_BUFFER
Commit 608b80b5b855 ("riscv: qemu: Enable PRE_CONSOLE_BUFFER") enables
buffering console messages for QEMU RISC-V virtual machines so those
printed before the video console is available will still show up on the
display. Similarly, enable it for ARM virtual machines as well.
Signed-off-by: Alper Nebi Yasak <alpernebiyasak@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng@tinylab.org>
Link: https://lore.kernel.org/u-boot/20230814173944.288356-3-alpernebiyasak@gmail.com/
---
arch/arm/Kconfig | 1 +
board/emulation/qemu-arm/Kconfig | 4 ++++
2 files changed, 5 insertions(+)
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index d96e230e9ee8..1cc2be55140a 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -1040,6 +1040,7 @@ config ARCH_QEMU
imply VIDEO_BOCHS
imply SYS_WHITE_ON_BLACK
imply SYS_CONSOLE_IS_IN_ENV
+ imply PRE_CONSOLE_BUFFER
config ARCH_RMOBILE
bool "Renesas ARM SoCs"
diff --git a/board/emulation/qemu-arm/Kconfig b/board/emulation/qemu-arm/Kconfig
index ed9949651c4b..09c95413a541 100644
--- a/board/emulation/qemu-arm/Kconfig
+++ b/board/emulation/qemu-arm/Kconfig
@@ -12,6 +12,10 @@ config BOARD_SPECIFIC_OPTIONS # dummy
imply VIRTIO_NET
imply VIRTIO_BLK
+config PRE_CON_BUF_ADDR
+ hex
+ default 0x40100000
+
endif
if TARGET_QEMU_ARM_64BIT && !TFABOOT
--
2.42.0
From 7f666214855d062dc939ff54a0fa52fbde9f0391 Mon Sep 17 00:00:00 2001
From: Alper Nebi Yasak <alpernebiyasak@gmail.com>
Date: Mon, 14 Aug 2023 20:39:43 +0300
Subject: [PATCH 3/4] arm: qemu: Enable usb keyboard as an input device
Commit 02be57caf730 ("riscv: qemu: Enable usb keyboard as an input
device") adds PCI xHCI support to QEMU RISC-V virtual machines and
enables using a USB keyboard as one of the input devices. Similarly,
enable those for ARM virtual machines as well.
Signed-off-by: Alper Nebi Yasak <alpernebiyasak@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng@tinylab.org>
Link: https://lore.kernel.org/u-boot/20230814173944.288356-4-alpernebiyasak@gmail.com/
---
arch/arm/Kconfig | 5 +++++
board/emulation/qemu-arm/qemu-arm.c | 5 +++++
board/emulation/qemu-arm/qemu-arm.env | 2 +-
configs/qemu_arm64_defconfig | 2 --
configs/qemu_arm_defconfig | 2 --
doc/board/emulation/qemu-arm.rst | 4 ++++
6 files changed, 15 insertions(+), 5 deletions(-)
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 1cc2be55140a..4c739bd9bc82 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -1041,6 +1041,11 @@ config ARCH_QEMU
imply SYS_WHITE_ON_BLACK
imply SYS_CONSOLE_IS_IN_ENV
imply PRE_CONSOLE_BUFFER
+ imply USB
+ imply USB_XHCI_HCD
+ imply USB_XHCI_PCI
+ imply USB_KEYBOARD
+ imply CMD_USB
config ARCH_RMOBILE
bool "Renesas ARM SoCs"
diff --git a/board/emulation/qemu-arm/qemu-arm.c b/board/emulation/qemu-arm/qemu-arm.c
index dfea0d92a3c8..942f1fff5717 100644
--- a/board/emulation/qemu-arm/qemu-arm.c
+++ b/board/emulation/qemu-arm/qemu-arm.c
@@ -11,6 +11,7 @@
#include <fdtdec.h>
#include <init.h>
#include <log.h>
+#include <usb.h>
#include <virtio_types.h>
#include <virtio.h>
@@ -114,6 +115,10 @@ int board_late_init(void)
*/
virtio_init();
+ /* start usb so that usb keyboard can be used as input device */
+ if (CONFIG_IS_ENABLED(USB_KEYBOARD))
+ usb_init();
+
return 0;
}
diff --git a/board/emulation/qemu-arm/qemu-arm.env b/board/emulation/qemu-arm/qemu-arm.env
index 86a99a2e8713..fb4adef281ed 100644
--- a/board/emulation/qemu-arm/qemu-arm.env
+++ b/board/emulation/qemu-arm/qemu-arm.env
@@ -2,7 +2,7 @@
/* environment for qemu-arm and qemu-arm64 */
-stdin=serial
+stdin=serial,usbkbd
stdout=serial,vidconsole
stderr=serial,vidconsole
fdt_high=0xffffffff
diff --git a/configs/qemu_arm64_defconfig b/configs/qemu_arm64_defconfig
index 94bd96678443..f6b8ae530a4a 100644
--- a/configs/qemu_arm64_defconfig
+++ b/configs/qemu_arm64_defconfig
@@ -35,7 +35,6 @@ CONFIG_CMD_NVEDIT_EFI=y
CONFIG_CMD_DFU=y
CONFIG_CMD_MTD=y
CONFIG_CMD_PCI=y
-CONFIG_CMD_USB=y
CONFIG_CMD_TPM=y
CONFIG_CMD_MTDPARTS=y
CONFIG_ENV_IS_IN_FLASH=y
@@ -68,7 +67,6 @@ CONFIG_SYSRESET=y
CONFIG_SYSRESET_CMD_POWEROFF=y
CONFIG_SYSRESET_PSCI=y
CONFIG_TPM2_MMIO=y
-CONFIG_USB=y
CONFIG_USB_EHCI_HCD=y
CONFIG_USB_EHCI_PCI=y
CONFIG_TPM=y
diff --git a/configs/qemu_arm_defconfig b/configs/qemu_arm_defconfig
index 7cb1e9f037ff..1347b86f34b1 100644
--- a/configs/qemu_arm_defconfig
+++ b/configs/qemu_arm_defconfig
@@ -36,7 +36,6 @@ CONFIG_CMD_NVEDIT_EFI=y
CONFIG_CMD_DFU=y
CONFIG_CMD_MTD=y
CONFIG_CMD_PCI=y
-CONFIG_CMD_USB=y
CONFIG_CMD_TPM=y
CONFIG_CMD_MTDPARTS=y
CONFIG_ENV_IS_IN_FLASH=y
@@ -69,7 +68,6 @@ CONFIG_SYSRESET=y
CONFIG_SYSRESET_CMD_POWEROFF=y
CONFIG_SYSRESET_PSCI=y
CONFIG_TPM2_MMIO=y
-CONFIG_USB=y
CONFIG_USB_EHCI_HCD=y
CONFIG_USB_EHCI_PCI=y
CONFIG_TPM=y
diff --git a/doc/board/emulation/qemu-arm.rst b/doc/board/emulation/qemu-arm.rst
index c423fce76edd..5481ef6da328 100644
--- a/doc/board/emulation/qemu-arm.rst
+++ b/doc/board/emulation/qemu-arm.rst
@@ -84,6 +84,10 @@ can be enabled with the following command line parameters:
-device usb-ehci,id=ehci
+- To add a USB keyboard attached to an emulated xHCI controller, pass e.g.::
+
+ -device qemu-xhci,id=xhci -device usb-kbd,bus=xhci.0
+
- To add an NVMe disk, pass e.g.::
-drive if=none,file=disk.img,id=mydisk -device nvme,drive=mydisk,serial=foo
--
2.42.0
From fcc1b6cb56beaaf90bf80928627a606f33a42c3c Mon Sep 17 00:00:00 2001
From: Alper Nebi Yasak <alpernebiyasak@gmail.com>
Date: Mon, 14 Aug 2023 20:39:44 +0300
Subject: [PATCH 4/4] doc: qemu: arm: Add a section on booting Linux distros
Add an example qemu-system-aarch64 command that can make U-Boot on QEMU
boot into the Debian Installer, along with resulting console messages
from U-Boot, based on the existing documentation section for the x86
version.
Signed-off-by: Alper Nebi Yasak <alpernebiyasak@gmail.com>
Link: https://lore.kernel.org/u-boot/20230814173944.288356-5-alpernebiyasak@gmail.com/
---
doc/board/emulation/qemu-arm.rst | 68 ++++++++++++++++++++++++++++++++
1 file changed, 68 insertions(+)
diff --git a/doc/board/emulation/qemu-arm.rst b/doc/board/emulation/qemu-arm.rst
index 5481ef6da328..1c91c7f3ac67 100644
--- a/doc/board/emulation/qemu-arm.rst
+++ b/doc/board/emulation/qemu-arm.rst
@@ -98,6 +98,74 @@ can be enabled with the following command line parameters:
These have been tested in QEMU 2.9.0 but should work in at least 2.5.0 as well.
+Booting distros
+---------------
+
+It is possible to install and boot a standard Linux distribution using
+qemu_arm64 by setting up a root disk::
+
+ qemu-img create root.img 20G
+
+then using the installer to install. For example, with Debian 12::
+
+ qemu-system-aarch64 \
+ -machine virt -cpu cortex-a53 -m 4G -smp 4 \
+ -bios u-boot.bin \
+ -serial stdio -device VGA \
+ -nic user,model=virtio-net-pci \
+ -device virtio-rng-pci \
+ -device qemu-xhci,id=xhci \
+ -device usb-kbd -device usb-tablet \
+ -drive if=virtio,file=debian-12.0.0-arm64-netinst.iso,format=raw,readonly=on,media=cdrom \
+ -drive if=virtio,file=root.img,format=raw,media=disk
+
+The output will be something like this::
+
+ U-Boot 2023.10-rc2-00075-gbe8fbe718e35 (Aug 11 2023 - 08:38:49 +0000)
+
+ DRAM: 4 GiB
+ Core: 51 devices, 14 uclasses, devicetree: board
+ Flash: 64 MiB
+ Loading Environment from Flash... *** Warning - bad CRC, using default environment
+
+ In: serial,usbkbd
+ Out: serial,vidconsole
+ Err: serial,vidconsole
+ Bus xhci_pci: Register 8001040 NbrPorts 8
+ Starting the controller
+ USB XHCI 1.00
+ scanning bus xhci_pci for devices... 3 USB Device(s) found
+ Net: eth0: virtio-net#32
+ Hit any key to stop autoboot: 0
+ Scanning for bootflows in all bootdevs
+ Seq Method State Uclass Part Name Filename
+ --- ----------- ------ -------- ---- ------------------------ ----------------
+ Scanning global bootmeth 'efi_mgr':
+ Scanning bootdev 'fw-cfg@9020000.bootdev':
+ fatal: no kernel available
+ scanning bus for devices...
+ Scanning bootdev 'virtio-blk#34.bootdev':
+ 0 efi ready virtio 2 virtio-blk#34.bootdev.par efi/boot/bootaa64.efi
+ ** Booting bootflow 'virtio-blk#34.bootdev.part_2' with efi
+ Using prior-stage device tree
+ Failed to load EFI variables
+ Error: writing contents
+ ** Unable to write file ubootefi.var **
+ Failed to persist EFI variables
+ Missing TPMv2 device for EFI_TCG_PROTOCOL
+ Booting /efi\boot\bootaa64.efi
+ Error: writing contents
+ ** Unable to write file ubootefi.var **
+ Failed to persist EFI variables
+ Welcome to GRUB!
+
+Standard boot looks through various available devices and finds the virtio
+disks, then boots from the first one. After a second or so the grub menu appears
+and you can work through the installer flow normally.
+
+After the installation, you can boot into the installed system by running QEMU
+again without the drive argument corresponding to the installer CD image.
+
Enabling TPMv2 support
----------------------
--
2.42.0

View File

@@ -1,3 +0,0 @@
tree="default"
rev="4459ed60cb1e0562bc5b40405e2b4b9bbf766d57" # v2023.10
arch="AArch64"

View File

@@ -1,2 +0,0 @@
tree="default"
arch="AArch64"

View File

@@ -1,2 +0,0 @@
tree="default"
arch="AArch64"

View File

@@ -1,2 +0,0 @@
tree="default"
arch="AArch64"

View File

@@ -1,2 +0,0 @@
tree="default"
arch="x86_64"

128
config/vendor/sources vendored
View File

@@ -1,128 +0,0 @@
# This file holds the download sources for various intel blobs
# board shortnames are listed and enclosed by '{}' followed by an opening
# and closing '{}' for all blobs available for the board.
# The board shortname must be the name of the board minus the trailing rom size.
# If you want to make additions, try to add a backup url for download links and
# list hashes as sha1 sums.
# NOTE: this file now defines checksums as sha512 (of the sha-2 family),
# where previously we used 160-bit SHA-1 algorithm; SHA-1 is not secure,
# having demonstrated collisions, so we have switched to using sha512sum
{x230 x230t x230i x230edp t430 t530 w530}{
DL_hash 4dc908050c91c1227645c900ddee88652937540af4ba222b0239b7f459f260cdf6e5e8113ac14e5543d00cf53abdd6c7bd23e61f690de1ce45a3709a30cbb91c
DL_url https://download.lenovo.com/pccbbs/mobiles/g1rg24ww.exe
DL_url_bkup https://web.archive.org/web/20210706183911/https://download.lenovo.com/pccbbs/mobiles/g1rg24ww.exe
}
{x220 x220t t420 t520 t420s}{
DL_hash 81c9917938c4a2a4f128c976250451931efd0f25b51ff34f058ddacb8eec27272691371864a683ec7abcb924fea32592d061584c7b2571a5d3e84eb870281cc3
DL_url https://download.lenovo.com/ibmdl/pub/pc/pccbbs/mobiles/83rf46ww.exe
DL_url_bkup https://web.archive.org/web/20220202201637/https://download.lenovo.com/ibmdl/pub/pc/pccbbs/mobiles/83rf46ww.exe
}
# NOTE: google's manifest for archives containing mrc.bin, used here:
# https://web.archive.org/web/20210211071412/https://dl.google.com/dl/edgedl/chromeos/recovery/recovery.conf
{t440pmrc w541mrc t440plibremrc w541}{
DL_hash f3d79aec805c8b0094a4081be76b3a22d329c479ad18210449b7acc3236ccfc4a2103eaa7c5b79a4872bfd699eede047efd46dfb06dc8f47e3216fc254612998
DL_url https://download.lenovo.com/pccbbs/mobiles/glrg22ww.exe
DL_url_bkup https://web.archive.org/web/20211120031520/https://download.lenovo.com/pccbbs/mobiles/glrg22ww.exe
MRC_url https://dl.google.com/dl/edgedl/chromeos/recovery/chromeos_12239.92.0_peppy_recovery_stable-channel_mp-v3.bin.zip
MRC_url_bkup https://web.archive.org/web/20200516070928/https://dl.google.com/dl/edgedl/chromeos/recovery/chromeos_12239.92.0_peppy_recovery_stable-channel_mp-v3.bin.zip
MRC_hash 340a1cd41136a3ba0de9d306db0e65f51640a2efe63aee9934f326b276adc1af0a2df80c0731c5a749161ec32546909eedfa8ba95801faeb5dcfe1aa4e0840c7
MRC_board peppy
}
{hp8200sff}{
DL_hash 8fcb691bf84dc1feefc3c84f7cc59eadaabb200477bb3ecba1b050f23f133b0a8c2539015a523f676544c2dff64599bcba7e844e8c31757b90d70bb4485b5664
DL_url https://ftp.ext.hp.com/pub/softpaq/sp96001-96500/sp96026.exe
DL_url_bkup https://web.archive.org/web/20220708171920/https://ftp.ext.hp.com/pub/softpaq/sp96001-96500/sp96026.exe
}
{hp8300usdt}{
DL_hash 4dc908050c91c1227645c900ddee88652937540af4ba222b0239b7f459f260cdf6e5e8113ac14e5543d00cf53abdd6c7bd23e61f690de1ce45a3709a30cbb91c
DL_url https://download.lenovo.com/pccbbs/mobiles/g1rg24ww.exe
DL_url_bkup https://web.archive.org/web/20210706183911/https://download.lenovo.com/pccbbs/mobiles/g1rg24ww.exe
}
{hp2560p}{
DL_hash 81c9917938c4a2a4f128c976250451931efd0f25b51ff34f058ddacb8eec27272691371864a683ec7abcb924fea32592d061584c7b2571a5d3e84eb870281cc3
DL_url https://download.lenovo.com/ibmdl/pub/pc/pccbbs/mobiles/83rf46ww.exe
DL_url_bkup https://web.archive.org/web/20220202201637/https://download.lenovo.com/ibmdl/pub/pc/pccbbs/mobiles/83rf46ww.exe
EC_hash a602cc7627c569bc423a5857cf506fbc3bcd68cb6b43a7c1b99d12a569b4107c412748cf49605ef4d5b930eb14b6815c4d1b1dc20145fe9d707e445fc201cea2
EC_url https://ftp.hp.com/pub/softpaq/sp85501-86000/sp85526.exe
EC_url_bkup https://web.archive.org/web/20230416125725/https://ftp.hp.com/pub/softpaq/sp85501-86000/sp85526.exe
}
{hp2570p}{
DL_hash 4dc908050c91c1227645c900ddee88652937540af4ba222b0239b7f459f260cdf6e5e8113ac14e5543d00cf53abdd6c7bd23e61f690de1ce45a3709a30cbb91c
DL_url https://download.lenovo.com/pccbbs/mobiles/g1rg24ww.exe
DL_url_bkup https://web.archive.org/web/20210706183911/https://download.lenovo.com/pccbbs/mobiles/g1rg24ww.exe
EC_hash 61ed284bdf938c5f36ad3267263fb3963a6608339425bc41aaef3ab0cd98f07c998d816b0233735ca35dc6cb771257da3f09a40d5cfc96bb6388b4366348275e
EC_url https://ftp.hp.com/pub/softpaq/sp96001-96500/sp96085.exe
EC_url_bkup https://web.archive.org/web/20230610174558/https://ftp.hp.com/pub/softpaq/sp96001-96500/sp96085.exe
}
{hp9470m}{
DL_hash 4dc908050c91c1227645c900ddee88652937540af4ba222b0239b7f459f260cdf6e5e8113ac14e5543d00cf53abdd6c7bd23e61f690de1ce45a3709a30cbb91c
DL_url https://download.lenovo.com/pccbbs/mobiles/g1rg24ww.exe
DL_url_bkup https://web.archive.org/web/20210706183911/https://download.lenovo.com/pccbbs/mobiles/g1rg24ww.exe
EC_hash 563422bf5420da18b89439f28a38ea28a175f0ad3588f0f5ea39b08dfdd14c8d513cbf11c2125ec3869fc3b7222c7dc3d111415185ea9b73f41410b1b57f13bd
EC_url https://ftp.hp.com/pub/softpaq/sp96001-96500/sp96090.exe
EC_url_bkup http://web.archive.org/web/20220504072602/https://ftp.ext.hp.com/pub/softpaq/sp96001-96500/sp96090.exe
}
{hp2170p}{
DL_hash 4dc908050c91c1227645c900ddee88652937540af4ba222b0239b7f459f260cdf6e5e8113ac14e5543d00cf53abdd6c7bd23e61f690de1ce45a3709a30cbb91c
DL_url https://download.lenovo.com/pccbbs/mobiles/g1rg24ww.exe
DL_url_bkup https://web.archive.org/web/20210706183911/https://download.lenovo.com/pccbbs/mobiles/g1rg24ww.exe
EC_hash 940e533b6a276c13a6e46a93795ca84b19877b05e82c0c1795b7fea9cbea63c28e606ef994352fc77c4fdfb2e0c31c5edeefa98b989e1990364dfc6417b25460
EC_url https://ftp.hp.com/pub/softpaq/sp96001-96500/sp96088.exe
EC_url_bkup https://web.archive.org/web/20230909164345/https://ftp.hp.com/pub/softpaq/sp96001-96500/sp96088.exe
}
{t1650}{
DL_hash 4dc908050c91c1227645c900ddee88652937540af4ba222b0239b7f459f260cdf6e5e8113ac14e5543d00cf53abdd6c7bd23e61f690de1ce45a3709a30cbb91c
DL_url https://download.lenovo.com/pccbbs/mobiles/g1rg24ww.exe
DL_url_bkup https://web.archive.org/web/20210706183911/https://download.lenovo.com/pccbbs/mobiles/g1rg24ww.exe
SCH5545EC_DL_url https://dl.dell.com/FOLDER05065992M/1/T1650A28.exe
SCH5545EC_DL_url_bkup https://web.archive.org/web/20230811151654/https://dl.dell.com/FOLDER05065992M/1/T1650A28.exe
SCH5545EC_DL_hash 18261d0f7f27e9de3b0b5a25019b9a934ef1a61cd3f0140e34f38553695e91e671e227a8fa962774edceab5c7804d13ed9fe1c518c5643c7c8f15632f903a6c4
}
{hp8470pintel}{
DL_hash 4dc908050c91c1227645c900ddee88652937540af4ba222b0239b7f459f260cdf6e5e8113ac14e5543d00cf53abdd6c7bd23e61f690de1ce45a3709a30cbb91c
DL_url https://download.lenovo.com/pccbbs/mobiles/g1rg24ww.exe
DL_url_bkup https://web.archive.org/web/20210706183911/https://download.lenovo.com/pccbbs/mobiles/g1rg24ww.exe
EC_hash b95c9cf909ed537fb448e2be69eddcb57459efbaf0a979a73cd2bce90a7014b110f4dbbeecfd596c072636396b8f20c229c59ffe34e45500ce9edb000c6ccaf9
EC_url https://ftp.hp.com/pub/softpaq/sp77501-78000/sp77818.exe
EC_url_bkup https://web.archive.org/web/20230909173821/https://ftp.hp.com/pub/softpaq/sp77501-78000/sp77818.exe
}
# nvidia vga option rom for dgpu models of Dell Latitude E6400
# for downloading the nvidia rom to pciroms/pci10de,06eb.rom
{e6400}{
E6400_VGA_DL_hash 6217d5fce2291d15bb0649fd2faaeb78e4c48962b07a2bea6af60466bfdc5f233af0d077c2c6e71dd96047bdbb1f612324cef0a5e728ba9a9ec5c69a4022cd8d
E6400_VGA_DL_url https://dl.dell.com/FOLDER01530530M/1/E6400A34.exe
E6400_VGA_DL_url_bkup https://web.archive.org/web/20230506014903/https://dl.dell.com/FOLDER01530530M/1/E6400A34.exe
E6400_VGA_offset 274451
E6400_VGA_romname mod_21.bin
}
{e6430 e6530}{
DL_hash 4dc908050c91c1227645c900ddee88652937540af4ba222b0239b7f459f260cdf6e5e8113ac14e5543d00cf53abdd6c7bd23e61f690de1ce45a3709a30cbb91c
DL_url https://download.lenovo.com/pccbbs/mobiles/g1rg24ww.exe
DL_url_bkup https://web.archive.org/web/20210706183911/https://download.lenovo.com/pccbbs/mobiles/g1rg24ww.exe
}
{x201}{
DL_hash x201_factory.rom
DL_url rom
DL_url_bkup rom
}

1
download Symbolic link
View File

@@ -0,0 +1 @@
lbmk

122
gitclone Executable file
View File

@@ -0,0 +1,122 @@
#!/usr/bin/env sh
# SPDX-FileCopyrightText: 2022 Caleb La Grange <thonkpeasant@protonmail.com>
# SPDX-FileCopyrightText: 2022 Ferass El Hafidi <vitali64pmemail@protonmail.com>
# SPDX-FileCopyrightText: 2023 Leah Rowe <leah@libreboot.org>
# SPDX-License-Identifier: GPL-3.0-only
name=""
revision=""
location=""
url=""
bkup_url=""
tmp_dir=""
main()
{
if [ -z "${1+x}" ]; then
err 'Error: name not set'
fi
name=${1}
read_config
verify_config
clone_project
# clean in case of failure
rm -rf ${tmp_dir} >/dev/null 2>&1 || exit 1
}
read_config()
{
awkstr=" /\{.*${name}.*}{/ {flag=1;next} /\}/{flag=0} flag { print }"
while read -r line ; do
set ${line} >/dev/null 2>&1
case ${line} in
rev:*)
revision=${2}
;;
loc:*)
location=${2}
;;
url:*)
url=${2}
;;
bkup_url:*)
bkup_url=${2}
;;
esac
done << EOF
$(eval "awk '${awkstr}' resources/git/revisions")
EOF
}
verify_config()
{
if [ -z "${revision+x}" ]; then
err 'Error: revision not set'
elif [ -z "${location+x}" ]; then
err 'Error: location not set'
elif [ -z "${url+x}" ]; then
err 'Error: url not set'
fi
}
clone_project()
{
tmp_dir=$(mktemp -dt "${name}_XXXXX")
git clone ${url} ${tmp_dir} || git clone ${bkup_url} ${tmp_dir} \
|| err "ERROR: could not download ${name}"
(
cd ${tmp_dir} || exit 1
git reset --hard ${revision} || err "Cannot reset revision"
)
patch_project
if [ -d "${location}" ]; then
rm -Rf ${location} || exit 1
fi
mv ${tmp_dir} ${location} && return 0
printf "ERROR: Could not copy temp file to destination.\n"
err " ${tmp_dir} > ${location} check permissions"
}
patch_project()
{
patchdir="resources/${name}/patches"
for patchfile in ${PWD}/${patchdir}/*.patch ; do
if [ ! -f "${patchfile}" ]; then
continue
fi
(
cd ${tmp_dir} || exit 1
git am ${patchfile} || err "Cannot patch project: $name"
)
done
}
usage()
{
cat <<- EOF
Usage: ./gitclone [name]
Options:
name: Module name as specified in resources/git/revisions
EOF
}
err()
{
printf "${@}\n"
usage
exit 1
}
main $@

View File

@@ -1,80 +0,0 @@
# SPDX-License-Identifier: MIT
# SPDX-FileCopyrightText: 2022, 2023 Leah Rowe <leah@libreboot.org>
version=""; versiondate=""; projectname=""; _nogit=""
x_() {
[ $# -lt 1 ] || ${@} || err_exit err ${@}
}
xx_() {
[ $# -lt 1 ] || ${@} || err_exit fail ${@}
}
err_exit()
{
_fail="${1}" && shift 1
echo "Non-zero exit: $@"
$_fail "Unhandled error"
}
check_git()
{
which git 1>/dev/null 2>/dev/null || \
git_err "git not installed. please install git-scm."
git config --global user.name 1>/dev/null 2>/dev/null || \
git_err "git config --global user.name \"John Doe\""
git config --global user.email 1>/dev/null 2>/dev/null || \
git_err "git config --global user.email \"john.doe@example.com\""
}
git_err()
{
printf "You need to set git name/email, like so:\n%s\n\n" "${1}" 1>&2
fail "Git name/email not configured" || \
err "Git name/email not configured"
}
check_project()
{
read projectname < projectname || :
[ ! -f version ] || read version < version || :
version_="${version}"
[ ! -e ".git" ] || version="$(git describe --tags HEAD 2>&1)" || \
version="git-$(git rev-parse HEAD 2>&1)" || version="${version_}"
[ ! -f versiondate ] || read versiondate < versiondate || :
versiondate_="${versiondate}"
[ ! -e ".git" ] || versiondate="$(git show --no-patch --no-notes \
--pretty='%ct' HEAD)" || versiondate="${versiondate_}"
[ ! -z ${versiondate} ] || fail "Unknown version date" || \
err "Unknown version date"
[ ! -z ${version} ] || fail "Unknown version" || \
err "Unknown version"
[ ! -z ${projectname} ] || fail "Unknown project" || \
err "Unknown project"
xx_ printf "%s\n" "${version}" > version || \
x_ printf "%s\n" "${version}" > version
xx_ printf "%s\n" "${versiondate}" > versiondate || \
x_ printf "%s\n" "${versiondate}" > versiondate
}
setvars()
{
_setvars=""
[ $# -lt 2 ] && err "setvars: too few arguments"
val="${1}"
shift 1
for var in $@; do
_setvars="${var}=\"${val}\"; ${_setvars}"
done
printf "%s\n" "${_setvars% }"
}
err()
{
printf "ERROR %s: %s\n" "${0}" "${1}" 1>&2
exit 1
}

View File

@@ -1,153 +0,0 @@
# SPDX-License-Identifier: GPL-3.0-or-later
# SPDX-FileCopyrightText: 2020,2021,2023 Leah Rowe <leah@libreboot.org>
# SPDX-FileCopyrightText: 2022 Caleb La Grange <thonkpeasant@protonmail.com>
# This file is only used by update/project/trees
eval "$(setvars "" _target rev _xm loc url bkup_url depend)"
tmp_git_dir="${PWD}/tmp/gitclone"
fetch_project_trees()
{
_target="${target}"
[ -d "src/${project}/${project}" ] || fetch_from_upstream
fetch_config
[ -z "${rev}" ] && err "fetch_project_trees $target: undefined rev"
if [ -d "src/${project}/${tree}" ]; then
printf "download/%s %s (%s): exists\n" \
"${project}" "${tree}" "${_target}" 1>&2
return 0
fi
prepare_new_tree
}
fetch_from_upstream()
{
[ -d "src/${project}/${project}" ] && return 0
x_ mkdir -p "src/${project}"
fetch_project_repo "${project}"
}
fetch_config()
{
rm -f "${cfgsdir}/"*/seen || err "fetch_config ${cfgsdir}: !rm seen"
while true; do
eval "$(setvars "" rev tree)"
_xm="fetch_config ${project}/${_target}"
load_target_config "${_target}"
[ "${_target}" != "${tree}" ] && _target="${tree}" && continue
break
done
}
load_target_config()
{
[ -f "${cfgsdir}/${1}/target.cfg" ] || \
err "${_xm} check: target.cfg does not exist"
[ -f "${cfgsdir}/${1}/seen" ] && \
err "${_xm} check: infinite loop in tree definitions"
. "${cfgsdir}/${1}/target.cfg" || \
err "load_target_config ${cfgsdir}/${1}: cannot load config"
touch "${cfgsdir}/${1}/seen" || err "load_config $cfgsdir/$1: !mk seen"
}
prepare_new_tree()
{
printf "Creating %s tree %s (%s)\n" "${project}" "${tree}" "${_target}"
x_ cp -R "src/${project}/${project}" "src/${project}/${tree}"
git_reset_rev "src/${project}/${tree}" "${rev}"
(
x_ cd "src/${project}/${tree}"
if [ -f ".gitmodules" ]; then
git submodule update --init --checkout || \
err "prepare_new_tree ${project}/${tree}: !submodules"
fi
)
git_am_patches "$PWD/src/$project/$tree" "$PWD/$cfgsdir/$tree/patches"
}
fetch_project_repo()
{
scan_config "${project}" "config/git" "err"
verify_config
clone_project
[ -z "${depend}" ] || for d in ${depend} ; do
x_ ./update trees -f ${d}
done
rm -Rf "${tmp_git_dir}" || err "fetch_repo: !rm -Rf ${tmp_git_dir}"
}
verify_config()
{
[ -z "${rev+x}" ] && err 'verify_config: rev not set'
[ -z "${loc+x}" ] && err 'verify_config: loc not set'
[ -z "${url+x}" ] && err 'verify_config: url not set'
return 0
}
clone_project()
{
rm -Rf "${tmp_git_dir}" || err "clone_project: !rm -Rf ${tmp_git_dir}"
mkdir -p "${tmp_git_dir%/*}" || \
err "clone_project: !mkdir -p ${tmp_git_dir%/*}"
loc="${loc#src/}"
loc="src/${loc}"
if [ -d "${loc}" ]; then
printf "%s already exists, so skipping download\n" "$loc" 1>&2
return 0
fi
git clone ${url} "${tmp_git_dir}" || \
git clone ${bkup_url} "${tmp_git_dir}" || \
err "clone_project: could not download ${project}"
git_reset_rev "${tmp_git_dir}" "${rev}"
git_am_patches "${tmp_git_dir}" "${PWD}/config/${project}/patches"
x_ rm -Rf "${loc}"
[ "${loc}" = "${loc%/*}" ] || x_ mkdir -p ${loc%/*}
mv "${tmp_git_dir}" "${loc}" || \
err "clone_project: !mv ${tmp_git_dir} ${loc}"
}
git_reset_rev()
{
(
cd "${1}" || err "git_reset_rev: !cd ${1}"
git reset --hard ${2} || err "!git reset ${1} <- ${2}"
if [ "${project}" != "coreboot" ] && [ "${project}" != "u-boot" ] && \
[ -f ".gitmodules" ]; then
git submodule update --init --checkout || \
err "git_reset_rev ${1}: can't download submodules"
fi
)
}
git_am_patches()
{
sdir="${1}" # assumed to be absolute path
patchdir="${2}" # ditto
(
cd "${sdir}" || err "git_am_patches: !cd ${sdir}"
for patch in "${patchdir}/"*; do
[ -L "${patch}" ] && continue
[ -f "${patch}" ] || continue
patchfail="n"
git am "${patch}" || patchfail="y"
if [ "${patchfail}" = "y" ]; then
git am --abort || err "${sdir}: !git am --abort"
err "!git am ${patch} -> ${sdir}"
fi
done
)
for patches in "${patchdir}/"*; do
[ -L "${patches}" ] && continue
[ ! -d "${patches}" ] && continue
git_am_patches "${sdir}" "${patches}"
done
}

View File

@@ -1,76 +0,0 @@
# SPDX-License-Identifier: GPL-2.0-only
# Logic based on util/chromeos/crosfirmware.sh in coreboot cfc26ce278.
# Modifications in this version are Copyright 2021 and 2023 Leah Rowe.
# Original copyright detailed in repo: https://review.coreboot.org/coreboot/
eval "$(setvars "" MRC_url MRC_url_bkup MRC_hash MRC_board ROOTFS SHELLBALL)"
extract_mrc()
{
[ -z "${MRC_board}" ] && err "extract_mrc $MRC_hash: MRC_board not set"
[ -z "${CONFIG_MRC_FILE}" ] && \
err "extract_mrc $MRC_hash: CONFIG_MRC_FILE not set"
ROOTFS="root-a.ext2"
SHELLBALL="chromeos-firmwareupdate-${MRC_board}"
(
x_ cd "${appdir}"
extract_partition
extract_shellball
extract_coreboot
)
"${cbfstool}" "${appdir}/"coreboot-*.bin extract -n mrc.bin \
-f "${_dest}" -r RO_SECTION || err "extract_mrc: cbfstool ${_dest}"
}
extract_partition()
{
NAME="ROOT-A"
FILE="${MRC_url##*/}"
FILE="${FILE%.zip}"
_bs=1024
printf "Extracting ROOT-A partition\n"
ROOTP=$( printf "unit\nB\nprint\nquit\n" | \
parted "${FILE}" 2>/dev/null | grep "${NAME}" )
START=$(( $( echo ${ROOTP} | cut -f2 -d\ | tr -d "B" ) ))
SIZE=$(( $( echo ${ROOTP} | cut -f4 -d\ | tr -d "B" ) ))
dd if="${FILE}" of="${ROOTFS}" bs=${_bs} \
skip=$(( ${START} / ${_bs} )) count=$(( ${SIZE} / ${_bs} )) || \
err "extract_partition, dd ${FILE}, ${ROOTFS}"
}
extract_shellball()
{
printf "Extracting chromeos-firmwareupdate\n"
printf "cd /usr/sbin\ndump chromeos-firmwareupdate ${SHELLBALL}\nquit" \
| debugfs "${ROOTFS}" || err "extract_shellball: debugfs"
}
extract_coreboot()
{
_unpacked=$( mktemp -d )
printf "Extracting coreboot image\n"
[ -f "${SHELLBALL}" ] || \
err "extract_coreboot: shellball missing in google cros image"
sh "${SHELLBALL}" --unpack "${_unpacked}" || err "shellball, ${SHELLBALL}"
# TODO: audit the f* out of that shellball, for each mrc version.
# it has to be updated for each mrc update. we should ideally
# implement the functionality ourselves.
[ -f "${_unpacked}/VERSION" ] || \
err "extract_coreboot: VERSION file missing on google coreboot rom"
_version=$( cat "${_unpacked}/VERSION" | grep BIOS\ version: | \
cut -f2 -d: | tr -d \ )
cp "${_unpacked}/bios.bin" "coreboot-${_version}.bin" || \
err "!cp unpacked, ${_unpacked}/bios.bin, coreboot-${_version}.rom"
}

View File

@@ -1,72 +0,0 @@
# SPDX-License-Identifier: GPL-3.0-only
# SPDX-FileCopyrightText: 2022 Caleb La Grange <thonkpeasant@protonmail.com>
# SPDX-FileCopyrightText: 2022 Ferass El Hafidi <vitali64pmemail@protonmail.com>
# SPDX-FileCopyrightText: 2023 Leah Rowe <leah@libreboot.org>
vendir="vendorfiles"
appdir="${vendir}/app"
cbdir="src/coreboot/default"
cbcfgsdir="config/coreboot"
ifdtool="cbutils/default/ifdtool"
cbfstool="cbutils/default/cbfstool"
eval "$(setvars "" CONFIG_BOARD_DELL_E6400 CONFIG_HAVE_MRC CONFIG_HAVE_ME_BIN \
CONFIG_ME_BIN_PATH CONFIG_KBC1126_FIRMWARE CONFIG_KBC1126_FW1 \
CONFIG_KBC1126_FW1_OFFSET CONFIG_KBC1126_FW2 CONFIG_KBC1126_FW2_OFFSET \
CONFIG_VGA_BIOS_FILE CONFIG_VGA_BIOS_ID CONFIG_GBE_BIN_PATH \
CONFIG_INCLUDE_SMSC_SCH5545_EC_FW CONFIG_SMSC_SCH5545_EC_FW_FILE \
CONFIG_IFD_BIN_PATH CONFIG_MRC_FILE _dest board boarddir)"
items()
{
rval=1
[ ! -d "${1}" ] && \
printf "items: directory '%s' doesn't exist" "${1}" && \
return 1
for x in "${1}/"*; do
# -e used because this is for files *or* directories
[ -e "${x}" ] || continue
[ "${x##*/}" = "build.list" ] && continue
printf "%s\n" "${x##*/}" 2>/dev/null
rval=0
done
return ${rval}
}
scan_config()
{
awkstr=" /\{.*${1}.*}{/ {flag=1;next} /\}/{flag=0} flag { print }"
confdir="${2}"
_fail="${3}"
revfile="$(mktemp -t sources.XXXXXXXXXX)"
cat "${confdir}/"* > "${revfile}" || \
"${_fail}" "scan_config ${confdir}: Cannot concatenate files"
while read -r line ; do
set ${line} 1>/dev/null 2>/dev/null || :
[ "${1%:}" = "depend" ] && depend="${depend} ${2}" && continue
eval "${1%:}=\"${2}\""
done << EOF
$(eval "awk '${awkstr}' \"${revfile}\"")
EOF
rm -f "${revfile}" || "${_fail}" "scan_config: Cannot remove tmpfile"
}
check_defconfig()
{
for x in "${1}"/config/*; do
[ -f "${x}" ] && return 0
done
return 1
}
handle_coreboot_utils()
{
for util in cbfstool ifdtool; do
x_ ./update trees ${_f} "src/coreboot/${1}/util/${util}"
[ -z "${mode}" ] && [ ! -f "cbutils/${1}/${util}" ] && \
x_ mkdir -p "cbutils/${1}" && \
x_ cp "src/coreboot/${1}/util/${util}/${util}" \
"cbutils/${1}"
[ -z "${mode}" ] || x_ rm -Rf "cbutils/${1}"
done
}

126
lbmk Executable file
View File

@@ -0,0 +1,126 @@
#!/usr/bin/env sh
# generic script for calling other scripts in lbmk
#
# Copyright (C) 2014,2015,2020,2021,2023 Leah Rowe <info@minifree.org>
# Copyright (C) 2015 Patrick "P. J." McDermott <pj@pehjota.net>
# Copyright (C) 2015, 2016 Klemens Nanni <contact@autoboot.org>
# Copyright (C) 2022, Caleb La Grange <thonkpeasant@protonmail.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
[ "x${DEBUG+set}" = 'xset' ] && set -v
set -u -e
projectname="$(cat projectname)"
buildpath=""
mode=""
option=""
main()
{
if [ "${0##*/}" = "lbmk" ]; then
die "Do not run the lbmk script directly!"
elif [ "${0##*/}" = "download" ]; then
./update module $@ || exit 1
exit 0
elif [ $# -lt 1 ]; then
die "Too few arguments. Try: ${0} help"
fi
buildpath="./resources/scripts/${0##*/}"
mode="${1}"
./.gitcheck
if [ "${mode}" != "dependencies" ]; then
./resources/scripts/misc/versioncheck
fi
if [ "${mode}" = help ]; then
usage $0
exit 0
elif [ $# -lt 2 ]; then
usage $0
exit 0
fi
option="${2}"
shift 2
case "${option}" in
list)
printf "Options for mode '%s':\n\n" ${mode}
listoptions "${mode}"
;;
all)
for option in $(listoptions "${mode}"); do
"${buildpath}/${mode}/${option}" $@
done
;;
*)
if [ ! -d "${buildpath}/${mode}" ]; then
usage $0
die "Invalid mode '${mode}'. Run: ${0} help"
elif [ ! -f "${buildpath}/${mode}/${option}" ]; then
usage $0
printf "Invalid option for '%s'." ${mode}
die "Run: ${0} ${mode} list'."
fi
"${buildpath}/${mode}/${option}" $@ || die "lbmk error"
esac
./.gitcheck clean
}
# Takes exactly one mode as parameter
listoptions()
{
for option in "${buildpath}/${1}/"*; do
printf '%s\n' ${option##*/}
done
}
usage()
{
progname=${0}
cat <<- EOF
USAGE: ${progname} <MODE> <OPTION>
possible values for 'mode':
$(listmodes)
Example: ${progname} module all
Example: ${progname} module flashrom [static]
Example: ${progname} roms withgrub
Example: ${progname} clean all
Refer to ${projectname} documentation for more info.
EOF
}
listmodes()
{
for mode in "${buildpath}"/*; do
printf '%s\n' ${mode##*/}
done
}
die()
{
./.gitcheck clean
printf "Error: %s\n" "${@}" 1>&2
exit 1
}
main $@

1
modify Symbolic link
View File

@@ -0,0 +1 @@
lbmk

View File

@@ -1 +1 @@
libreboot
censored-libreboot

View File

@@ -0,0 +1,42 @@
src/vendorcode/amd/agesa/f14/Proc/CPU/Family/0x14/F14MicrocodePatch05000119.c
3rdparty/arm-trusted-firmware/plat/mediatek/mt8173/drivers/spm/spm_hotplug.c
3rdparty/arm-trusted-firmware/plat/mediatek/mt8173/drivers/spm/spm_mcdi.c
3rdparty/arm-trusted-firmware/plat/mediatek/mt8173/drivers/spm/spm_suspend.c
3rdparty/arm-trusted-firmware/plat/rockchip/rk3368/drivers/ddr/rk3368_ddr_reg_resume_V1.05.bin
3rdparty/chromeec/test/legacy_nvmem_dump.h
3rdparty/vboot/tests/futility/data/bios_link_mp.bin
3rdparty/vboot/tests/futility/data/bios_peppy_mp.bin
src/vendorcode/amd/agesa/f14/Proc/CPU/Family/0x14/F14MicrocodePatch0500000B.c
src/vendorcode/amd/agesa/f14/Proc/CPU/Family/0x14/F14MicrocodePatch0500001A.c
src/vendorcode/amd/agesa/f14/Proc/CPU/Family/0x14/F14MicrocodePatch05000029.c
src/vendorcode/amd/agesa/f14/Proc/GNB/Nb/Family/0x14/F14NbSmuFirmware.h
src/vendorcode/amd/agesa/f14/Proc/GNB/PCIe/Family/0x14/F14PcieAlibSsdt.h
src/vendorcode/amd/agesa/f15tn/Proc/CPU/Family/0x15/TN/F15TnMicrocodePatch0600111F_Enc.c
src/vendorcode/amd/agesa/f15tn/Proc/GNB/Modules/GnbInitTN/GnbSmuFirmwareTN.h
src/vendorcode/amd/agesa/f15tn/Proc/GNB/Modules/GnbInitTN/PcieAlibSsdtTNFM2.h
src/vendorcode/amd/agesa/f15tn/Proc/GNB/Modules/GnbInitTN/PcieAlibSsdtTNFS1.h
src/vendorcode/amd/agesa/f16kb/Proc/CPU/Family/0x16/KB/F16KbId7001MicrocodePatch.c
src/vendorcode/amd/agesa/f16kb/Proc/GNB/Modules/GnbInitKB/AlibSsdtKB.h
src/vendorcode/amd/agesa/f16kb/Proc/GNB/Modules/GnbInitKB/GnbSamuPatchKB.h
src/vendorcode/amd/agesa/f16kb/Proc/GNB/Modules/GnbInitKB/GnbSmuFirmwareKB.h
3rdparty/chromeec/third_party/bmi260/accelgyro_bmi260_config_tbin.h
3rdparty/arm-trusted-firmware/plat/mediatek/mt8173/drivers/spm/spm_hotplug.c
3rdparty/arm-trusted-firmware/plat/mediatek/mt8173/drivers/spm/spm_mcdi.c
3rdparty/arm-trusted-firmware/plat/mediatek/mt8173/drivers/spm/spm_suspend.c
3rdparty/arm-trusted-firmware/plat/rockchip/rk3368/drivers/ddr/rk3368_ddr_reg_resume_V1.05.bin
3rdparty/vboot/tests/futility/data/bios_link_mp.bin
3rdparty/vboot/tests/futility/data/bios_peppy_mp.bin
src/vendorcode/amd/agesa/f14/Proc/CPU/Family/0x14/F14MicrocodePatch0500000B.c
src/vendorcode/amd/agesa/f14/Proc/CPU/Family/0x14/F14MicrocodePatch0500001A.c
src/vendorcode/amd/agesa/f14/Proc/CPU/Family/0x14/F14MicrocodePatch05000029.c
src/vendorcode/amd/agesa/f14/Proc/CPU/Family/0x14/F14MicrocodePatch05000119.c
src/vendorcode/amd/agesa/f14/Proc/GNB/Nb/Family/0x14/F14NbSmuFirmware.h
src/vendorcode/amd/agesa/f14/Proc/GNB/PCIe/Family/0x14/F14PcieAlibSsdt.h
src/vendorcode/amd/agesa/f15tn/Proc/CPU/Family/0x15/TN/F15TnMicrocodePatch0600111F_Enc.c
src/vendorcode/amd/agesa/f15tn/Proc/GNB/Modules/GnbInitTN/GnbSmuFirmwareTN.h
src/vendorcode/amd/agesa/f15tn/Proc/GNB/Modules/GnbInitTN/PcieAlibSsdtTNFM2.h
src/vendorcode/amd/agesa/f15tn/Proc/GNB/Modules/GnbInitTN/PcieAlibSsdtTNFS1.h
src/vendorcode/amd/agesa/f16kb/Proc/CPU/Family/0x16/KB/F16KbId7001MicrocodePatch.c
src/vendorcode/amd/agesa/f16kb/Proc/GNB/Modules/GnbInitKB/AlibSsdtKB.h
src/vendorcode/amd/agesa/f16kb/Proc/GNB/Modules/GnbInitKB/GnbSamuPatchKB.h
src/vendorcode/amd/agesa/f16kb/Proc/GNB/Modules/GnbInitKB/GnbSmuFirmwareKB.h

View File

@@ -0,0 +1,4 @@
cbtree="cros"
arch="spaghettimonster"
cbrevision="8da4bfe5b573f395057fbfb5a9d99b376e25c2a4" # 4.17
romtype="normal"

Some files were not shown because too many files have changed in this diff Show More