[coreboot-gerrit] Change in coreboot[master]: [WIP] payloads/external/GRUB2: Add ARM support

Marty Plummer (Code Review) gerrit at coreboot.org
Sat Jan 20 14:47:10 CET 2018


Hello Marty E. Plummer,

I'd like you to do a code review. Please visit

    https://review.coreboot.org/23336

to review the following change.


Change subject: [WIP] payloads/external/GRUB2: Add ARM support
......................................................................

[WIP] payloads/external/GRUB2: Add ARM support

Change-Id: Iff0f1ee8dbaf815a60981835d4acb2b7f9769351
Signed-off-by: Marty E. Plummer <hanetzer at startmail.com>
---
M payloads/external/GRUB2/Kconfig
M payloads/external/GRUB2/Kconfig.name
M payloads/external/GRUB2/Makefile
M payloads/external/Makefile.inc
4 files changed, 48 insertions(+), 9 deletions(-)



  git pull ssh://review.coreboot.org:29418/coreboot refs/changes/36/23336/1

diff --git a/payloads/external/GRUB2/Kconfig b/payloads/external/GRUB2/Kconfig
index c4edab9..c16118d 100644
--- a/payloads/external/GRUB2/Kconfig
+++ b/payloads/external/GRUB2/Kconfig
@@ -32,6 +32,16 @@
 	help
 	   The commit's SHA-1 or branch name of the revision to use.
 
+menuconfig GRUB2_EXPERT_OPTIONS
+	bool "Advanced GRUB configuration options (for devices with small flash)"
+	default n
+
+	config GRUB2_DEFAULT_MODULES
+		string "Default modules to include in GRUB image" if GRUB2_EXPERT_OPTIONS
+		default "ahci pata ehci uhci ohci usb_keyboard usbms part_msdos ext2 fat at_keyboard part_gpt usbserial_usbdebug cbfs"
+		help
+		  Space-separated list of modules to pre-load
+
 config GRUB2_EXTRA_MODULES
 	string "Extra modules to include in GRUB image"
 	help
@@ -71,4 +81,10 @@
 	help
 	  The path of the GRUB2 runtime configuration file to be added to CBFS.
 
+config GRUB2_ARM_DTB_FILE
+	string "Path of dtb file to embed in GRUB image"
+	depends on ARCH_ARM || ARCH_ARM64
+	help
+	  The path of the DTB file to pass to grub-mkimage
+
 endif
diff --git a/payloads/external/GRUB2/Kconfig.name b/payloads/external/GRUB2/Kconfig.name
index cf94bb4..fe60d76 100644
--- a/payloads/external/GRUB2/Kconfig.name
+++ b/payloads/external/GRUB2/Kconfig.name
@@ -1,6 +1,6 @@
 config PAYLOAD_GRUB2
 	bool "GRUB2"
-	depends on ARCH_X86
+	depends on ARCH_X86 || ARCH_ARM
 	help
 	  Select this option if you want to build a coreboot image
 	  with a GRUB2 payload. If you don't know what this is
diff --git a/payloads/external/GRUB2/Makefile b/payloads/external/GRUB2/Makefile
index e2d8293..fe53f15 100644
--- a/payloads/external/GRUB2/Makefile
+++ b/payloads/external/GRUB2/Makefile
@@ -24,10 +24,21 @@
 			git branch -f $(NAME-y) $(TAG-y) && \
 			git checkout $(NAME-y) || true
 
+ARCH_TRIPLE=unsupported
+DTB=
 ifeq ($(CONFIG_ARCH_X86),y)
 ARCH_TRIPLE=i386-linux-gnu
-else
-ARCH_TRIPLE=unsupported
+IMAGE_FORMAT=i386-coreboot
+endif
+ifeq ($(CONFIG_ARCH_ARM),y)
+DTB=--dtb=
+ARCH_TRIPLE=arm-eabi
+ifeq ($(CONFIG_VENDOR_EMULATION),y)
+IMAGE_FORMAT=arm-coreboot-vexpress
+endif
+ifeq ($(CONFIG_SOC_ROCKCHIP_RK3288),y)
+IMAGE_FORMAT=arm-coreboot-veyron
+endif
 endif
 
 grub2/build/config.h: $(CONFIG_DEP) | checkout
@@ -37,7 +48,8 @@
 	cd grub2 && ./autogen.sh
 	cd grub2/build && ../configure CC="$(HOSTCC)" LD="$(LD)" \
 	TARGET_CC="$(CC)" TARGET_OBJCOPY="$(OBJCOPY)" TARGET_STRIP="$(STRIP)" \
-	CFLAGS=-O2 TARGET_CFLAGS=-Os --host=$(ARCH_TRIPLE) \
+	TARGET_AS="$(CC)-as" TARGET_RANLIB="$(CC)-ranlib" \
+	CFLAGS=-O2 TARGET_CFLAGS=-Os --target=$(ARCH_TRIPLE) \
 	--with-platform=coreboot --enable-boot-time --disable-werror
 
 config: grub2/build/config.h checkout
@@ -45,8 +57,15 @@
 grub2: config
 	echo "    MAKE       GRUB2 $(NAME-y)"
 	$(MAKE) -C grub2/build
-	$(MAKE) -C grub2/build default_payload.elf \
-		EXTRA_PAYLOAD_MODULES="$(CONFIG_GRUB2_EXTRA_MODULES)"
+	pkgdatadir=grub2/build ./grub2/build/grub-mkstandalone \
+		--grub-mkimage=./grub2/build/grub-mkimage -O \
+		$(IMAGE_FORMAT) -o grub2/build/default_payload.elf \
+		--modules="$(CONFIG_GRUB2_PRELOAD_MODULES) $(cat build/grub2/grub-core/fs.lst)" \
+		--install-modules="$(CONFIG_GRUB2_DEFAULT_MODULES) $(CONFIG_GRUB2_EXTRA_MODULES)" \
+		--fonts= --themes= --locales --directory=./grub2/build/grub-core/ \
+		/boot/grub/grub.cfg=./grub2/coreboot.cfg $(DTB)$(GRUB2_ARM_DTB_FILE)
+	# $(MAKE) -C grub2/build default_payload.elf \
+	# 	EXTRA_PAYLOAD_MODULES="$(CONFIG_GRUB2_EXTRA_MODULES)"
 
 clean:
 	test -f grub2/build/Makefile && $(MAKE) -C grub2/build clean || exit 0
diff --git a/payloads/external/Makefile.inc b/payloads/external/Makefile.inc
index 62d8a44..bb07aad 100644
--- a/payloads/external/Makefile.inc
+++ b/payloads/external/Makefile.inc
@@ -159,14 +159,18 @@
 grub2: $(obj)/config.h
 	$(MAKE) -C payloads/external/GRUB2 \
 			HOSTCC="$(HOSTCC)" \
-			CC="$(CC_x86_32)" LD="$(LD_x86_32)" \
-			OBJCOPY="$(OBJCOPY_x86_32)" STRIP="$(STRIP_x86_32)" \
+			CC="$(CC_$(ARCH-ramstage-y))" LD="$(LD_$(ARCH-ramstage-y))" \
+			OBJCOPY="$(OBJCOPY_$(ARCH-ramstage-y))" STRIP="$(STRIP_$(ARCH-ramstage-y))" \
+			CONFIG_ARCH_ARM=$(CONFIG_ARCH_ARM) \
+			CONFIG_ARCH_X86=$(CONFIG_ARCH_X86) \
 			CONFIG_DEP="$(abspath $(obj)/config.h)" \
 			CONFIG_GRUB2_STABLE=$(CONFIG_GRUB2_STABLE) \
 			CONFIG_GRUB2_MASTER=$(CONFIG_GRUB2_MASTER) \
 			CONFIG_GRUB2_REVISION=$(CONFIG_GRUB2_REVISION) \
 			CONFIG_GRUB2_REVISION_ID=$(CONFIG_GRUB2_REVISION_ID) \
-			CONFIG_GRUB2_EXTRA_MODULES=$(CONFIG_GRUB2_EXTRA_MODULES)
+			CONFIG_GRUB2_EXTRA_MODULES=$(CONFIG_GRUB2_EXTRA_MODULES) \
+			CONFIG_SOC_ROCKCHIP_RK3288=$(CONFIG_SOC_ROCKCHIP_RK3288) \
+			CONFIG_VENDOR_EMULATION=$(CONFIG_VENDOR_EMULATION)
 
 payloads/external/GRUB2/grub2/build/default_payload.elf: grub2
 

-- 
To view, visit https://review.coreboot.org/23336
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings

Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: Iff0f1ee8dbaf815a60981835d4acb2b7f9769351
Gerrit-Change-Number: 23336
Gerrit-PatchSet: 1
Gerrit-Owner: Marty Plummer <hanetzer at protonmail.com>
Gerrit-Reviewer: Marty E. Plummer <hanetzer at startmail.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.coreboot.org/pipermail/coreboot-gerrit/attachments/20180120/a0ddc9de/attachment-0001.html>


More information about the coreboot-gerrit mailing list