payloads/external: add skiboot (for QEMU/Power9)
Add an option to build skiboot as a payload. This makes QEMU Power9 board simpler to use as skiboot is necessary anyway. Change-Id: I0b49ea7464c97cc2ff0d5030629deed549851372 Signed-off-by: Igor Bagnucki <igor.bagnucki@3mdeb.com> Signed-off-by: Krystian Hebel <krystian.hebel@3mdeb.com> Signed-off-by: Sergii Dmytruk <sergii.dmytruk@3mdeb.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/58656 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Michał Żygowski <michal.zygowski@3mdeb.com>
This commit is contained in:
parent
8d436cfc1a
commit
a816c29882
|
@ -1,7 +1,19 @@
|
|||
# QEMU PPC64 emulator
|
||||
This page describes how to build and run coreboot for QEMU/PPC64.
|
||||
You can configure ELF payload via `make menuconfig` (make sure "ROM chip size"
|
||||
is large enough).
|
||||
|
||||
## Building coreboot
|
||||
```bash
|
||||
make defconfig KBUILD_DEFCONFIG=configs/config.emulation_qemu_power9
|
||||
make
|
||||
```
|
||||
|
||||
This builds coreboot with no payload.
|
||||
|
||||
## Payloads
|
||||
You can configure ELF or `skiboot` payload via `make menuconfig`. In either case
|
||||
you might need to adjust "ROM chip size" and make it large enough to accommodate
|
||||
the payload (see how much space it needs in the error you get if it doesn't
|
||||
fit).
|
||||
|
||||
## Running coreboot in QEMU
|
||||
```bash
|
||||
|
@ -15,16 +27,26 @@ qemu-system-ppc64 -M powernv,hb-mode=on \
|
|||
|
||||
- The default CPU in QEMU for AArch64 is a 604. You specify a suitable
|
||||
PowerPC CPU via `-cpu power9`.
|
||||
- By default Hostboot mode is off and it needs to be turned on to run coreboot
|
||||
- By default Hostboot mode is off and needs to be turned on to run coreboot
|
||||
as a firmware rather than like an OS.
|
||||
- `-bios` specifies initial program (bootloader should suffice, but whole image
|
||||
works fine too).
|
||||
- `-drive` specifies image for emulated flash device.
|
||||
|
||||
## Building coreboot
|
||||
## Running with a kernel
|
||||
Loading `skiboot` (built automatically by coreboot or otherwise) allows
|
||||
specifying kernel and root file system to be run.
|
||||
|
||||
```bash
|
||||
make defconfig KBUILD_DEFCONFIG=configs/config.emulation_qemu_power9
|
||||
make
|
||||
qemu-system-ppc64 -M powernv,hb-mode=on \
|
||||
-cpu power9 \
|
||||
-bios build/coreboot.rom \
|
||||
-drive file=build/coreboot.rom,if=mtd \
|
||||
-serial stdio \
|
||||
-display none \
|
||||
-kernel zImage \
|
||||
-initrd initrd.cpio.xz
|
||||
```
|
||||
|
||||
This builds coreboot with no payload.
|
||||
- Specify path to your kernel via `-kernel`.
|
||||
- Specify path to your rootfs via `-initrd`.
|
||||
|
|
|
@ -28,6 +28,7 @@ payloads/external/tianocore \
|
|||
payloads/external/GRUB2 \
|
||||
payloads/external/LinuxBoot \
|
||||
payloads/external/Yabits \
|
||||
payloads/external/skiboot \
|
||||
|
||||
force-payload:
|
||||
|
||||
|
|
|
@ -8,3 +8,5 @@ tint/tint/
|
|||
U-Boot/u-boot/
|
||||
Memtest86Plus/memtest86plus/
|
||||
iPXE/ipxe/
|
||||
skiboot/skiboot
|
||||
skiboot/build
|
||||
|
|
|
@ -332,3 +332,10 @@ payloads/external/Yabits/uefi/build/uefi.elf yabits:
|
|||
|
||||
payloads/external/BOOTBOOT/bootboot/dist/bootbootcb.elf:
|
||||
$(MAKE) -C payloads/external/BOOTBOOT all
|
||||
|
||||
# skiboot
|
||||
|
||||
payloads/external/skiboot/build/skiboot.elf:
|
||||
$(MAKE) -C payloads/external/skiboot all \
|
||||
CONFIG_SKIBOOT_GIT_REPO=$(CONFIG_SKIBOOT_GIT_REPO) \
|
||||
CONFIG_SKIBOOT_REVISION=$(CONFIG_SKIBOOT_REVISION)
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
## SPDX-License-Identifier: GPL-2.0-only
|
||||
|
||||
if PAYLOAD_SKIBOOT
|
||||
|
||||
config PAYLOAD_FILE
|
||||
default "payloads/external/skiboot/build/skiboot.elf"
|
||||
|
||||
config SKIBOOT_GIT_REPO
|
||||
string "Git repository of skiboot payload"
|
||||
default "https://github.com/open-power/skiboot"
|
||||
help
|
||||
Git repository which will be used to clone skiboot.
|
||||
|
||||
config SKIBOOT_REVISION
|
||||
string "Revision of skiboot payload"
|
||||
default "d93ddbd39b4eeac0bc11dacbdadea76df2996c13" if BOARD_EMULATION_QEMU_POWER9
|
||||
help
|
||||
Revision, that skiboot repository will be checked out to, before building
|
||||
an image.
|
||||
|
||||
endif # PAYLOAD_SKIBOOT
|
|
@ -0,0 +1,8 @@
|
|||
## SPDX-License-Identifier: GPL-2.0-only
|
||||
|
||||
config PAYLOAD_SKIBOOT
|
||||
bool "skiboot"
|
||||
depends on ARCH_PPC64
|
||||
help
|
||||
Select this option if you want to build a coreboot image
|
||||
with a skiboot payload.
|
|
@ -0,0 +1,36 @@
|
|||
## SPDX-License-Identifier: GPL-2.0-only
|
||||
|
||||
build_dir=$(CURDIR)/build
|
||||
skiboot_dir=$(CURDIR)/skiboot
|
||||
skiboot_git_repo=$(CONFIG_SKIBOOT_GIT_REPO)
|
||||
skiboot_revision=$(CONFIG_SKIBOOT_REVISION)
|
||||
skiboot_elf=$(build_dir)/skiboot.elf
|
||||
skiboot_cross=$(or $(CROSS),powerpc64-linux-gnu-)
|
||||
|
||||
unexport $(COREBOOT_EXPORTS)
|
||||
|
||||
.PHONY: all clean distclean
|
||||
|
||||
all: $(skiboot_elf)
|
||||
|
||||
$(skiboot_elf): | $(skiboot_dir) $(build_dir)
|
||||
+$(MAKE) -C $(skiboot_dir) CROSS="$(skiboot_cross)"
|
||||
cp $(skiboot_dir)/skiboot.elf $@
|
||||
# skiboot is always built with debug information due to unconditional -ggdb
|
||||
$(skiboot_cross)strip $@
|
||||
|
||||
$(skiboot_dir):
|
||||
git clone $(skiboot_git_repo) $(skiboot_dir)
|
||||
git -C $(skiboot_dir) checkout $(skiboot_revision)
|
||||
|
||||
$(build_dir):
|
||||
mkdir -p $(build_dir)
|
||||
|
||||
distclean: clean
|
||||
rm -rf $(skiboot_dir)
|
||||
|
||||
clean:
|
||||
# Redefine RM because it's used like `$(RM) non-existent-file`
|
||||
# Also ignore useless messages about removing test files
|
||||
[ ! -d $(skiboot_dir) ] || $(MAKE) -C $(skiboot_dir) RM="rm -rf" clean > /dev/null
|
||||
rm -rf $(build_dir)
|
|
@ -8,7 +8,7 @@ if BOARD_EMULATION_QEMU_POWER9
|
|||
config BOARD_SPECIFIC_OPTIONS
|
||||
def_bool y
|
||||
select CPU_POWER9
|
||||
select BOARD_ROMSIZE_KB_512
|
||||
select BOARD_ROMSIZE_KB_1024
|
||||
select ARCH_BOOTBLOCK_PPC64
|
||||
select ARCH_VERSTAGE_PPC64
|
||||
select ARCH_ROMSTAGE_PPC64
|
||||
|
|
Loading…
Reference in New Issue