[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