summaryrefslogtreecommitdiff
path: root/payloads
diff options
context:
space:
mode:
authorMartin Roth <martinroth@google.com>2016-02-28 15:56:27 -0800
committerMartin Roth <martinroth@google.com>2016-03-05 22:57:53 +0100
commitbe63a24c4ce29e7e9f096b9ebd94e6d5a65f24a9 (patch)
tree8ffdd441bcfd8d05d92f77259ed57397833b535b /payloads
parentf7fd63066fe3b74a1ae10fa6eabf2605d5730449 (diff)
downloadcoreboot-be63a24c4ce29e7e9f096b9ebd94e6d5a65f24a9.tar.gz
BuildSystem: Add Memtest86+ as a secondary payload
This allows memtest86+ to be added to CBFS as a 'secondary' payload on x86 systems, to be loaded by the main payload if desired. Selecting this option, which defaults to no, builds the memtest86+ payload and adds it to CBFS as `img/memtest` which can then be loaded by for example SeaBIOS or GRUB. Change-Id: Iecf876aaf588ba1df7abdf6668cb26f089bf5f42 Signed-off-by: Martin Roth <martinroth@google.com> Reviewed-on: https://review.coreboot.org/13858 Reviewed-by: Patrick Georgi <pgeorgi@google.com> Tested-by: build bot (Jenkins) Reviewed-by: Ben Gardner <gardner.ben@gmail.com>
Diffstat (limited to 'payloads')
-rw-r--r--payloads/Kconfig8
-rw-r--r--payloads/external/Makefile.inc19
-rw-r--r--payloads/external/Memtest86Plus/Makefile.inc42
3 files changed, 69 insertions, 0 deletions
diff --git a/payloads/Kconfig b/payloads/Kconfig
index 01bd216d23..6ae2ecd4e2 100644
--- a/payloads/Kconfig
+++ b/payloads/Kconfig
@@ -67,4 +67,12 @@ config COREINFO_SECONDARY_PAYLOAD
coreinfo can be loaded as a secondary payload under SeaBIOS, GRUB,
or any other payload that can load additional payloads.
+config MEMTEST_SECONDARY_PAYLOAD
+ bool "Load Memtest86+ as a secondary payload"
+ default n
+ depends on ARCH_X86 && !PAYLOAD_NONE
+ help
+ Memtest86+ can be loaded as a secondary payload under SeaBIOS, GRUB,
+ or any other payload that can load additional payloads.
+
endmenu
diff --git a/payloads/external/Makefile.inc b/payloads/external/Makefile.inc
index 6a76020ffe..557de2ad83 100644
--- a/payloads/external/Makefile.inc
+++ b/payloads/external/Makefile.inc
@@ -82,3 +82,22 @@ payloads/external/U-Boot/u-boot/u-boot-dtb.bin u-boot: $(top)/$(DOTCONFIG)
$(MAKE) -C payloads/external/U-Boot -f Makefile.inc \
CONFIG_UBOOT_MASTER=$(CONFIG_UBOOT_MASTER) \
CONFIG_UBOOT_STABLE=$(CONFIG_UBOOT_STABLE)
+
+cbfs-files-$(CONFIG_MEMTEST_SECONDARY_PAYLOAD) += img/memtest
+img/memtest-file := payloads/external/Memtest86Plus/memtest86plus/memtest
+img/memtest-type := payload
+
+ifeq ($(CONFIG_CONSOLE_SERIAL)$(CONFIG_DRIVERS_UART_8250IO),yy)
+ MEMTEST_SERIAL_OPTIONS=SERIAL_CONSOLE_DEFAULT=1 \
+ SERIAL_TTY=$(CONFIG_UART_FOR_CONSOLE) \
+ SERIAL_BAUD_RATE=$(CONFIG_TTYS0_BAUD)
+endif
+
+payloads/external/Memtest86Plus/memtest86plus/memtest: $(top)/$(DOTCONFIG)
+ $(MAKE) -C payloads/external/Memtest86Plus -f Makefile.inc all \
+ CC="$(CC_x86_32)" \
+ LD="$(LD_x86_32)" \
+ OBJCOPY="$(OBJCOPY_x86_32)" \
+ AS="$(AS_x86_32)" \
+ $(MEMTEST_SERIAL_OPTIONS) \
+ MFLAGS= MAKEFLAGS=
diff --git a/payloads/external/Memtest86Plus/Makefile.inc b/payloads/external/Memtest86Plus/Makefile.inc
new file mode 100644
index 0000000000..ceb1f5ceae
--- /dev/null
+++ b/payloads/external/Memtest86Plus/Makefile.inc
@@ -0,0 +1,42 @@
+##
+## This file is part of the coreboot project.
+##
+## Copyright (C) 2016 Google Inc.
+##
+## 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; version 2 of the License.
+##
+## 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.
+##
+
+project_name=Memtest86+
+project_dir=$(shell pwd)/memtest86plus
+project_git_repo=https://review.coreboot.org/memtest86plus
+
+all: build
+
+$(project_dir):
+ echo " Cloning $(project_name) from Git"
+ git clone $(project_git_repo) $(project_dir)
+
+fetch: $(project_dir)
+ cd $(project_dir); \
+ test -e '.git' && \
+ git fetch && \
+ git checkout origin/master
+
+build: fetch
+ echo " MAKE $(project_name)"
+ $(MAKE) -C $(project_dir) all
+
+clean:
+ test -d $(project_dir) && $(MAKE) -C $(project_dir) clean || exit 0
+
+distclean:
+ rm -rf $(project_dir)
+
+.PHONY: all build fetch clean distclean