payloads/external: Add memtest86+ v6 as secondary payload

This adds a Kconfig option to select memtest86+ version 6 as a secondary
payload and sets that as the default.  The coreboot version 5 code may
still be selected and used if desired.

Compiling for 32 bit requires glibc from multilib installed, if the host
system is running on 64 bit, as header files, e.g. gnu/stubs-32.h, are
required from there. So introduce a new choice menu which allows to
choose between 32 and 64 bit.

By default, the stable 6.20 version is selected instead of the top of
the main branch.

TEST=Build both V5 and V6, boot them in QEMU

Signed-off-by: Martin Roth <gaumless@gmail.com>
Signed-off-by: Felix Singer <felixsinger@posteo.net>
Change-Id: Ie0eedc25fcf37b925b072ca809c019a599a20392
Reviewed-on: https://review.coreboot.org/c/coreboot/+/69277
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Felix Singer <service+coreboot-gerrit@felixsinger.de>
This commit is contained in:
Martin Roth 2022-11-07 11:33:58 -07:00 committed by Felix Singer
parent 08f9732815
commit 8fc6d18fc0
3 changed files with 67 additions and 13 deletions

View File

@ -304,8 +304,14 @@ img/tint-compression := $(CBFS_SECONDARY_PAYLOAD_COMPRESS_FLAG)
# Memtest86+
ifeq ($(CONFIG_MEMTEST86PLUS_V6),y)
memtest_dir:=memtest86plus_v6
else
memtest_dir:=memtest86plus_v5
endif
cbfs-files-$(CONFIG_MEMTEST_SECONDARY_PAYLOAD) += img/memtest
img/memtest-file := payloads/external/Memtest86Plus/memtest86plus/memtest
img/memtest-file := payloads/external/Memtest86Plus/$(memtest_dir)/memtest
img/memtest-type := payload
img/memtest-compression := $(CBFS_SECONDARY_PAYLOAD_COMPRESS_FLAG)
@ -315,7 +321,7 @@ ifeq ($(CONFIG_CONSOLE_SERIAL)$(CONFIG_DRIVERS_UART_8250IO),yy)
SERIAL_BAUD_RATE=$(CONFIG_TTYS0_BAUD)
endif
payloads/external/Memtest86Plus/memtest86plus/memtest: $(DOTCONFIG)
payloads/external/Memtest86Plus/$(memtest_dir)/memtest: $(DOTCONFIG)
$(MAKE) -C payloads/external/Memtest86Plus all \
CC="$(CC_x86_32)" \
LD="$(LD_x86_32)" \
@ -325,6 +331,8 @@ payloads/external/Memtest86Plus/memtest86plus/memtest: $(DOTCONFIG)
CONFIG_MEMTEST_REVISION_ID=$(CONFIG_MEMTEST_REVISION_ID) \
CONFIG_MEMTEST_MAIN=$(CONFIG_MEMTEST_MAIN) \
CONFIG_MEMTEST_STABLE=$(CONFIG_MEMTEST_STABLE) \
CONFIG_MEMTEST86PLUS_V5=$(CONFIG_MEMTEST86PLUS_V5) \
CONFIG_MEMTEST86PLUS_V6=$(CONFIG_MEMTEST86PLUS_V6) \
$(MEMTEST_SERIAL_OPTIONS) \
MFLAGS= MAKEFLAGS=

View File

@ -1,8 +1,32 @@
if MEMTEST_SECONDARY_PAYLOAD
comment "Memtest86+"
choice
prompt "Memtest86+ version"
default MEMTEST_STABLE
prompt "Memtest86+ 5/6"
config MEMTEST86PLUS_V6
bool "Memtest86+ V6"
config MEMTEST86PLUS_V5
bool "Memtest86+ V5"
endchoice
choice
prompt "Target architecture"
depends on MEMTEST86PLUS_V6
config MEMTEST86PLUS_ARCH_64
bool "64 bit"
config MEMTEST86PLUS_ARCH_32
bool "32 bit"
endchoice
choice
prompt "Memtest86+ revision"
depends on MEMTEST_SECONDARY_PAYLOAD
config MEMTEST_STABLE
@ -19,12 +43,13 @@ config MEMTEST_MAIN
This option will fetch the newest version of the Memtest86+ code,
updating as new changes are committed. This makes the build
non-reproducible, as it can fetch different code each time.
config MEMTEST_REVISION
bool "git revision"
help
Select this option if you have a specific commit or branch
that you want to use as the revision from which to
build Memtest86+. This makes the build
build Memtest86+. Using a branch version makes the build
non-reproducible, as it can fetch different code each time.
You will be able to specify the name of a branch or a commit id

View File

@ -1,14 +1,32 @@
## SPDX-License-Identifier: GPL-2.0-only
project_name=Memtest86+
ifeq ($(CONFIG_MEMTEST86PLUS_V6),y)
project_dir=$(CURDIR)/memtest86plus_v6
ifeq ($(MEMTEST86PLUS_ARCH_64),y)
build_dir=$(project_dir)/build64
else
build_dir=$(project_dir)/build32
endif
project_git_repo=https://github.com/memtest86plus/memtest86plus.git
TAG-$(CONFIG_MEMTEST_MAIN)=origin/main
NAME-$(CONFIG_MEMTEST_MAIN)=Main
TAG-$(CONFIG_MEMTEST_STABLE)=v6.20
NAME-$(CONFIG_MEMTEST_STABLE)=Stable
TAG-$(CONFIG_MEMTEST_REVISION)=$(CONFIG_MEMTEST_REVISION_ID)
else
project_dir=$(CURDIR)/memtest86plus_v5
build_dir=$(project_dir)
project_git_repo=https://review.coreboot.org/memtest86plus.git
TAG-$(CONFIG_MEMTEST_MAIN)=origin/main
NAME-$(CONFIG_MEMTEST_MAIN)=Main
TAG-$(CONFIG_MEMTEST_STABLE)=0bd34c22604660e4283316331f3e7bf8a3863753
NAME-$(CONFIG_MEMTEST_STABLE)=Stable
TAG-$(CONFIG_MEMTEST_REVISION)=$(CONFIG_MEMTEST_REVISION_ID)
project_name=Memtest86+
project_dir=$(CURDIR)/memtest86plus
project_git_repo=https://review.coreboot.org/memtest86plus.git
endif
all: build
@ -25,7 +43,7 @@ ifeq ($(CONFIG_MEMTEST_REVISION),y)
endif
false
endif
-cd $(project_dir); git show $(TAG-y) >/dev/null 2>&1 ; \
-cd $(project_dir) 2>/dev/null; git show $(TAG-y) >/dev/null 2>&1 ; \
if [ $$? -ne 0 ] || [ "$(TAG-y)" = "origin/main" ]; then \
echo " Fetching new commits from the $(project_name) git repo"; \
git fetch; fi
@ -39,10 +57,13 @@ checkout: fetch
build: checkout
echo " MAKE $(project_name) $(NAME-y)"
$(MAKE) -C $(project_dir) all
$(MAKE) -C $(build_dir) all
ifeq ($(CONFIG_MEMTEST86PLUS_V6),y)
cp $(build_dir)/memtest.bin $(project_dir)/memtest
endif
clean:
test -d $(project_dir) && $(MAKE) -C $(project_dir) clean || exit 0
test -d $(build_dir) && $(MAKE) -C $(build_dir) clean || exit 0
distclean:
rm -rf $(project_dir)
@ -50,4 +71,4 @@ distclean:
print-repo-info:
echo "$(project_git_repo) $(project_dir)"
.PHONY: all build checkout clean distclean fetch print-repo-info
.PHONY: all build checkout check_version clean distclean fetch print-repo-info