summaryrefslogtreecommitdiff
path: root/payloads
diff options
context:
space:
mode:
authorMartin Roth <gaumless@gmail.com>2022-11-07 11:33:58 -0700
committerFelix Singer <service+coreboot-gerrit@felixsinger.de>2023-08-21 20:16:05 +0000
commit8fc6d18fc0ae1c47718ee51c86d38193b12e6e5d (patch)
treec3021de06dbbe443f54439a2a1096ed32ca19ba1 /payloads
parent08f97328158fa9b444e66a40acbfc2894ffea82a (diff)
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>
Diffstat (limited to 'payloads')
-rw-r--r--payloads/external/Makefile.inc12
-rw-r--r--payloads/external/Memtest86Plus/Kconfig.secondary31
-rw-r--r--payloads/external/Memtest86Plus/Makefile35
3 files changed, 66 insertions, 12 deletions
diff --git a/payloads/external/Makefile.inc b/payloads/external/Makefile.inc
index 8222dc8918..779b3f4260 100644
--- a/payloads/external/Makefile.inc
+++ b/payloads/external/Makefile.inc
@@ -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=
diff --git a/payloads/external/Memtest86Plus/Kconfig.secondary b/payloads/external/Memtest86Plus/Kconfig.secondary
index 98a0d06cb9..d357399f09 100644
--- a/payloads/external/Memtest86Plus/Kconfig.secondary
+++ b/payloads/external/Memtest86Plus/Kconfig.secondary
@@ -1,8 +1,32 @@
if MEMTEST_SECONDARY_PAYLOAD
+comment "Memtest86+"
+
+choice
+ prompt "Memtest86+ 5/6"
+
+config MEMTEST86PLUS_V6
+ bool "Memtest86+ V6"
+
+config MEMTEST86PLUS_V5
+ bool "Memtest86+ V5"
+
+endchoice
+
choice
- prompt "Memtest86+ version"
- default MEMTEST_STABLE
+ 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
diff --git a/payloads/external/Memtest86Plus/Makefile b/payloads/external/Memtest86Plus/Makefile
index fe24e2c780..8f3205831c 100644
--- a/payloads/external/Memtest86Plus/Makefile
+++ b/payloads/external/Memtest86Plus/Makefile
@@ -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)=0bd34c22604660e4283316331f3e7bf8a3863753
+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
-project_name=Memtest86+
-project_dir=$(CURDIR)/memtest86plus
+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)
+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