Comments
Patch
===================================================================
@@ -18,7 +18,14 @@
##
mainmenu "Coreboot Configuration"
+config PRE_PAYLOAD
+ bool
+ default n
+config COMPRESSED_PAYLOAD_NRV2B
+ bool
+ default n
+
menu "General setup"
config EXPERT
@@ -346,7 +353,7 @@
endmenu
menu "Payload"
-
+depends on !PRE_PAYLOAD
choice
prompt "Add a payload"
default PAYLOAD_NONE
@@ -389,9 +396,6 @@
In order to reduce the size payloads take up in the ROM chip
coreboot can compress them using the LZMA algorithm.
-config COMPRESSED_PAYLOAD_NRV2B
- bool
- default n
endmenu
===================================================================
@@ -13,22 +13,150 @@
Kconfig := src/Kconfig
xconfig: $(objk)/qconf
+ifeq ($(PAYLOAD),filo)
+ $(Q)make -C $(FILO_DIR) xconfig
+ $(Q)sed -i '/config PRE_PAYLOAD/{n;n;s/default n/default y/}' $(Kconfig)
$(objk)/qconf $(Kconfig)
+ $(Q)echo "CONFIG_PAYLOAD=filo" >> .config
+ $(Q)echo "CONFIG_PAYLOAD_ELF=y" >> .config
+ $(Q)echo "CONFIG_FALLBACK_PAYLOAD_FILE=\"$(FILO_DIR)/build/filo.elf\"" >> .config
+ $(Q)echo "CONFIG_COMPRESSED_PAYLOAD_LZMA=y" >> .config
+else
+ifeq ($(PAYLOAD),coreinfo)
+ $(Q)make -C $(COREINFO_DIR) xconfig
+ $(Q)sed -i '/config PRE_PAYLOAD/{n;n;s/default n/default y/}' $(Kconfig)
+ $(objk)/qconf $(Kconfig)
+ $(Q)echo "CONFIG_PAYLOAD=filo" >> .config
+ $(Q)echo "CONFIG_PAYLOAD_ELF=y" >> .config
+ $(Q)echo "CONFIG_FALLBACK_PAYLOAD_FILE=\"$(COREINFO_DIR)/build/filo.elf\"" >> .config
+ $(Q)echo "CONFIG_COMPRESSED_PAYLOAD_LZMA=y" >> .config
+else
+ $(Q)sed -i '/config PRE_PAYLOAD/{n;n;s/default y/default n/}' $(Kconfig)
+ $(objk)/qconf $(Kconfig)
+endif
+endif
gconfig: $(objk)/gconf
+ifeq ($(PAYLOAD),filo)
+ $(Q)make -C $(FILO_DIR) gconfig
+ $(Q)sed -i '/config PRE_PAYLOAD/{n;n;s/default n/default y/}' $(Kconfig)
$(objk)/gconf $(Kconfig)
+ $(Q)echo "CONFIG_PAYLOAD=filo" >> .config
+ $(Q)echo "CONFIG_PAYLOAD_ELF=y" >> .config
+ $(Q)echo "CONFIG_FALLBACK_PAYLOAD_FILE=\"$(FILO_DIR)/build/filo.elf\"" >> .config
+ $(Q)echo "CONFIG_COMPRESSED_PAYLOAD_LZMA=y" >> .config
+else
+ifeq ($(PAYLOAD),coreinfo)
+ $(Q)make -C $(COREINFO_DIR) gconfig
+ $(Q)sed -i '/config PRE_PAYLOAD/{n;n;s/default n/default y/}' $(Kconfig)
+ $(objk)/gconf $(Kconfig)
+ $(Q)echo "CONFIG_PAYLOAD=coreinfo" >> .config
+ $(Q)echo "CONFIG_PAYLOAD_ELF=y" >> .config
+ $(Q)echo "CONFIG_FALLBACK_PAYLOAD_FILE=\"$(COREINFO_DIR)/build/filo.elf\"" >> .config
+ $(Q)echo "CONFIG_COMPRESSED_PAYLOAD_LZMA=y" >> .config
+else
+ $(Q)sed -i '/config PRE_PAYLOAD/{n;n;s/default y/default n/}' $(Kconfig)
+ $(objk)/gconf $(Kconfig)
+endif
+endif
menuconfig: $(objk)/mconf
+ifeq ($(PAYLOAD),filo)
+ $(Q)make -C $(FILO_DIR) menuconfig
+ $(Q)sed -i '/config PRE_PAYLOAD/{n;n;s/default n/default y/}' $(Kconfig)
$(objk)/mconf $(Kconfig)
+ $(Q)echo "CONFIG_PAYLOAD=filo" >> .config
+ $(Q)echo "CONFIG_PAYLOAD_ELF=y" >> .config
+ $(Q)echo "CONFIG_FALLBACK_PAYLOAD_FILE=\"$(FILO_DIR)/build/filo.elf\"" >> .config
+ $(Q)echo "CONFIG_COMPRESSED_PAYLOAD_LZMA=y" >> .config
+else
+ifeq ($(PAYLOAD),coreinfo)
+ $(Q)make -C $(COREINFO_DIR) menuconfig
+ $(Q)sed -i '/config PRE_PAYLOAD/{n;n;s/default n/default y/}' $(Kconfig)
+ $(objk)/mconf $(Kconfig)
+ $(Q)echo "CONFIG_PAYLOAD=coreinfo" >> .config
+ $(Q)echo "CONFIG_PAYLOAD_ELF=y" >> .config
+ $(Q)echo "CONFIG_FALLBACK_PAYLOAD_FILE=$(COREINFO_DIR)/build/coreinfo.elf" >> .config
+ $(Q)echo "CONFIG_COMPRESSED_PAYLOAD_LZMA=y" >> .config
+else
+ $(Q)sed -i '/config PRE_PAYLOAD/{n;n;s/default y/default n/}' $(Kconfig)
+ $(objk)/mconf $(Kconfig)
+endif
+endif
+
+
config: $(objk)/conf
+ifeq ($(PAYLOAD),filo)
+ $(Q)make -C $(FILO_DIR) config
+ $(Q)sed -i '/config PRE_PAYLOAD/{n;n;s/default n/default y/}' $(Kconfig)
$(objk)/conf $(Kconfig)
+ $(Q)echo "CONFIG_PAYLOAD=filo" >> .config
+ $(Q)echo "CONFIG_PAYLOAD_ELF=y" >> .config
+ $(Q)echo "CONFIG_FALLBACK_PAYLOAD_FILE=\"$(FILO_DIR)/build/filo.elf\"" >> .config
+ $(Q)echo "CONFIG_COMPRESSED_PAYLOAD_LZMA=y" >> .config
+else
+ifeq ($(PAYLOAD),coreinfo)
+ $(Q)make -C $(COREINFO_DIR) config
+ $(Q)sed -i '/config PRE_PAYLOAD/{n;n;s/default n/default y/}' $(Kconfig)
+ $(objk)/conf $(Kconfig)
+ $(Q)echo "CONFIG_PAYLOAD=coreinfo" >> .config
+ $(Q)echo "CONFIG_PAYLOAD_ELF=y" >> .config
+ $(Q)echo "CONFIG_FALLBACK_PAYLOAD_FILE=$(COREINFO_DIR)/build/coreinfo.elf" >> .config
+ $(Q)echo "CONFIG_COMPRESSED_PAYLOAD_LZMA=y" >> .config
+else
+ $(Q)sed -i '/config PRE_PAYLOAD/{n;n;s/default y/default n/}' $(Kconfig)
+ $(objk)/conf $(Kconfig)
+endif
+endif
oldconfig: $(objk)/conf
+ifeq ($(PAYLOAD),filo)
+ $(Q)make -C $(FILO_DIR) oldconfig
+ $(Q)sed -i '/config PRE_PAYLOAD/{n;n;s/default n/default y/}' $(Kconfig)
$(objk)/conf -o $(Kconfig)
+ $(Q)echo "CONFIG_PAYLOAD=filo" >> .config
+ $(Q)echo "CONFIG_PAYLOAD_ELF=y" >> .config
+ $(Q)echo "CONFIG_FALLBACK_PAYLOAD_FILE=\"$(FILO_DIR)/build/filo.elf\"" >> .config
+ $(Q)echo "CONFIG_COMPRESSED_PAYLOAD_LZMA=y" >> .config
+else
+ifeq ($(PAYLOAD),coreinfo)
+ $(Q)make -C $(COREINFO_DIR) oldconfig
+ $(Q)sed -i '/config PRE_PAYLOAD/{n;n;s/default n/default y/}' $(Kconfig)
+ $(objk)/conf -o $(Kconfig)
+ $(Q)echo "CONFIG_PAYLOAD=coreinfo" >> .config
+ $(Q)echo "CONFIG_PAYLOAD_ELF=y" >> .config
+ $(Q)echo "CONFIG_FALLBACK_PAYLOAD_FILE=$(COREINFO_DIR)/build/coreinfo.elf" >> .config
+ $(Q)echo "CONFIG_COMPRESSED_PAYLOAD_LZMA=y" >> .config
+else
+ $(Q)sed -i '/config PRE_PAYLOAD/{n;n;s/default y/default n/}' $(Kconfig)
+ $(objk)/conf -o $(Kconfig)
+endif
+endif
silentoldconfig: $(objk)/conf
+ifeq ($(PAYLOAD),filo)
+ $(Q)make -C $(FILO_DIR) silentoldconfig
+ $(Q)sed -i '/config PRE_PAYLOAD/{n;n;s/default n/default y/}' $(Kconfig)
$(objk)/conf -s $(Kconfig)
+ $(Q)echo "CONFIG_PAYLOAD=filo" >> .config
+ $(Q)echo "CONFIG_PAYLOAD_ELF=y" >> .config
+ $(Q)echo "CONFIG_FALLBACK_PAYLOAD_FILE=\"$(FILO_DIR)/build/filo.elf\"" >> .config
+ $(Q)echo "CONFIG_COMPRESSED_PAYLOAD_LZMA=y" >> .config
+else
+ifeq ($(PAYLOAD),coreinfo)
+ $(Q)make -C $(COREINFO_DIR) silentoldconfig
+ $(Q)sed -i '/config PRE_PAYLOAD/{n;n;s/default n/default y/}' $(Kconfig)
+ $(objk)/conf -s $(Kconfig)
+ $(Q)echo "CONFIG_PAYLOAD=coreinfo" >> .config
+ $(Q)echo "CONFIG_PAYLOAD_ELF=y" >> .config
+ $(Q)echo "CONFIG_FALLBACK_PAYLOAD_FILE=$(COREINFO_DIR)/build/coreinfo.elf" >> .config
+ $(Q)echo "CONFIG_COMPRESSED_PAYLOAD_LZMA=y" >> .config
+else
+ $(Q)sed -i '/config PRE_PAYLOAD/{n;n;s/default y/default n/}' $(Kconfig)
+ $(objk)/conf -s $(Kconfig)
+endif
+endif
# --- UNUSED, ignore ----------------------------------------------------------
# Create new linux.pot file
===================================================================
@@ -38,12 +38,14 @@
export obj ?= build
export objutil ?= $(obj)/util
export objk := $(objutil)/kconfig
-
-
export KERNELVERSION := 4.0
export KCONFIG_AUTOHEADER := $(obj)/config.h
export KCONFIG_AUTOCONFIG := $(obj)/auto.conf
+export PAYLOAD ?=
+
+export FILO_DIR = $(top)/payloads/filo
+export COREINFO_DIR = $(top)/payloads/coreinfo
CONFIG_SHELL := sh
KBUILD_DEFCONFIG := configs/defconfig
UNAME_RELEASE := $(shell uname -r)
@@ -304,7 +306,7 @@
CBFS_PAYLOAD_COMPRESS_NAME:=LZMA
endif
-coreboot: $(obj)/coreboot.rom
+coreboot: payload $(obj)/coreboot.rom
endif
@@ -361,6 +363,16 @@
update:
dongle.py -c /dev/term/1 $(obj)/coreboot.rom EOF
+payload:
+ifeq ($(CONFIG_PAYLOAD),filo)
+ make -C $(top)/payloads/filo
+else
+ifeq ($(CONFIG_PAYLOAD),coreinfo)
+ make -C $(top)/payloads/coreinfo
+else
+ printf "No buildin payload\n"
+endif
+endif
# This include must come _before_ the pattern rules below!
# Order _does_ matter for pattern rules.
include util/kconfig/Makefile
hi all, Since the deadline of GSOC has passed, I would like to post my patch about coreboot kconfig. Thanks to Marc who help me lots of things. He told me lots of linux programming and coreboot building things. Also thanks to QingPei, who helps me a lot about the detailed things. Like the kconfig language learning, linux makefile rules etc. The patch which i send is trying to make coreboot kconfig building can load the payload configs and building payload like filo or coreinfo by one interface. The patch support two payload: Filo and coreinfo. If devs want to use coreboot as before, it's fine, the patch support the old method by use "make config/menuconfig/xconfig etc" and "make". Anyone who want to try the new feature can use "make config/menuconfig/xconfig PAYLOAD=filo/coreinfo" to config the coreboot+payload at one time. then use "make" to build the whole things. I know there may have any improper methods. But the method used is the way i can find. Any new method will be welcome. I will keep following these things, even GSOC is end. More consideration will be posted to the coreboot blogs later. Signed-off-by: Cai Bai Yin < caibaiyin.pku@gmail.com>