From 91f3a2f0ce59cb621630bd224f634955222fc3e0 Mon Sep 17 00:00:00 2001 From: Alistair Francis Date: Tue, 16 Jul 2019 11:47:22 -0700 Subject: [PATCH] roms: Add OpenSBI version 0.4 Add OpenSBI version 0.4 as a git submodule and as a prebult binary. OpenSBI (https://github.com/riscv/opensbi) aims to provide an open-source reference implementation of the RISC-V Supervisor Binary Interface (SBI) specifications for platform-specific firmwares executing in M-mode. For all supported platforms, OpenSBI provides several runtime firmware examples. These example firmwares can be used to replace the legacy riscv-pk bootloader and enable the use of well-known bootloaders such as U-Boot. OpenSBI is distributed under the terms of the BSD 2-clause license ("Simplified BSD License" or "FreeBSD License", SPDX: BSD-2-Clause). OpenSBI source code also contains code reused from other projects desribed here: https://github.com/riscv/opensbi/blob/master/ThirdPartyNotices.md. In this case all of the code we are using from OpenSBI is BSD 2-clause as we aren't using the Kendryte code (Apache-2.0) with QEMU and libfdt is dual licensed as BSD 2-clause (and GPL-2.0+). OpenSBI isn't being linked with QEMU either it is just being included with QEMU. Signed-off-by: Alistair Francis Reviewed-by: Bin Meng Reviewed-by: Guenter Roeck Tested-by: Guenter Roeck Signed-off-by: Palmer Dabbelt --- .gitmodules | 3 ++ LICENSE | 21 ++++---- Makefile | 5 +- pc-bios/README | 11 +++++ pc-bios/opensbi-riscv32-virt-fw_jump.bin | Bin 0 -> 36888 bytes pc-bios/opensbi-riscv64-sifive_u-fw_jump.bin | Bin 0 -> 40968 bytes pc-bios/opensbi-riscv64-virt-fw_jump.bin | Bin 0 -> 40968 bytes roms/Makefile | 48 ++++++++++++++----- roms/opensbi | 1 + 9 files changed, 68 insertions(+), 21 deletions(-) create mode 100755 pc-bios/opensbi-riscv32-virt-fw_jump.bin create mode 100755 pc-bios/opensbi-riscv64-sifive_u-fw_jump.bin create mode 100755 pc-bios/opensbi-riscv64-virt-fw_jump.bin create mode 160000 roms/opensbi diff --git a/.gitmodules b/.gitmodules index 2857eec763..c5c474169d 100644 --- a/.gitmodules +++ b/.gitmodules @@ -55,3 +55,6 @@ [submodule "slirp"] path = slirp url = https://git.qemu.org/git/libslirp.git +[submodule "roms/opensbi"] + path = roms/opensbi + url = https://git.qemu.org/git/opensbi.git diff --git a/LICENSE b/LICENSE index 0e0b4b9553..9389ba614f 100644 --- a/LICENSE +++ b/LICENSE @@ -1,13 +1,18 @@ -The following points clarify the QEMU license: +The QEMU distribution includes both the QEMU emulator and +various firmware files. These are separate programs that are +distributed together for our users' convenience, and they have +separate licenses. -1) QEMU as a whole is released under the GNU General Public License, -version 2. +The following points clarify the license of the QEMU emulator: -2) Parts of QEMU have specific licenses which are compatible with the -GNU General Public License, version 2. Hence each source file contains -its own licensing information. Source files with no licensing information -are released under the GNU General Public License, version 2 or (at your -option) any later version. +1) The QEMU emulator as a whole is released under the GNU General +Public License, version 2. + +2) Parts of the QEMU emulator have specific licenses which are compatible +with the GNU General Public License, version 2. Hence each source file +contains its own licensing information. Source files with no licensing +information are released under the GNU General Public License, version +2 or (at your option) any later version. As of July 2013, contributions under version 2 of the GNU General Public License (and no later version) are only accepted for the following files diff --git a/Makefile b/Makefile index f9791dcb82..386e13a6ea 100644 --- a/Makefile +++ b/Makefile @@ -770,7 +770,10 @@ palcode-clipper \ u-boot.e500 u-boot-sam460-20100605.bin \ qemu_vga.ndrv \ edk2-licenses.txt \ -hppa-firmware.img +hppa-firmware.img \ +opensbi-riscv32-virt-fw_jump.bin \ +opensbi-riscv64-sifive_u-fw_jump.bin opensbi-riscv64-virt-fw_jump.bin + DESCS=50-edk2-i386-secure.json 50-edk2-x86_64-secure.json \ 60-edk2-aarch64.json 60-edk2-arm.json 60-edk2-i386.json 60-edk2-x86_64.json diff --git a/pc-bios/README b/pc-bios/README index 0a17f3ec6d..68b4a81103 100644 --- a/pc-bios/README +++ b/pc-bios/README @@ -63,3 +63,14 @@ ARM. Licensing information is given in "edk2-licenses.txt". The image files are described by the JSON documents in the "pc-bios/descriptors" directory, which conform to the "docs/interop/firmware.json" schema. + +- OpenSBI (https://github.com/riscv/opensbi) aims to provide an open-source + reference implementation of the RISC-V Supervisor Binary Interface (SBI) + specifications for platform-specific firmwares executing in M-mode. For all + supported platforms, OpenSBI provides several runtime firmware examples. + These example firmwares can be used to replace the legacy riscv-pk bootloader + and enable the use of well-known bootloaders such as U-Boot. + OpenSBI is distributed under the terms of the BSD 2-clause license + ("Simplified BSD License" or "FreeBSD License", SPDX: BSD-2-Clause). OpenSBI + source code also contains code reused from other projects desribed here: + https://github.com/riscv/opensbi/blob/master/ThirdPartyNotices.md. diff --git a/pc-bios/opensbi-riscv32-virt-fw_jump.bin b/pc-bios/opensbi-riscv32-virt-fw_jump.bin new file mode 100755 index 0000000000000000000000000000000000000000..f5bcaa56954c860d09acc0cb337c1666d88b6efb GIT binary patch literal 36888 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 literal 0 HcmV?d00001 diff --git a/pc-bios/opensbi-riscv64-sifive_u-fw_jump.bin b/pc-bios/opensbi-riscv64-sifive_u-fw_jump.bin new file mode 100755 index 0000000000000000000000000000000000000000..5d7a1ef6818994bac4a36818ad36043b592ce309 GIT binary patch literal 40968 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 literal 0 HcmV?d00001 diff --git a/roms/Makefile b/roms/Makefile index 078d3fb705..dc70fb5aea 100644 --- a/roms/Makefile +++ b/roms/Makefile @@ -37,6 +37,8 @@ find-cross-prefix = $(subst gcc,,$(notdir $(call find-cross-gcc,$(1)))) powerpc64_cross_prefix := $(call find-cross-prefix,powerpc64) powerpc_cross_prefix := $(call find-cross-prefix,powerpc) x86_64_cross_prefix := $(call find-cross-prefix,x86_64) +riscv32_cross_prefix := $(call find-cross-prefix,riscv32) +riscv64_cross_prefix := $(call find-cross-prefix,riscv64) # tag our seabios builds SEABIOS_EXTRAVERSION="-prebuilt.qemu.org" @@ -52,18 +54,21 @@ EDK2_EFIROM = edk2/BaseTools/Source/C/bin/EfiRom default: @echo "nothing is build by default" @echo "available build targets:" - @echo " bios -- update bios.bin (seabios)" - @echo " vgabios -- update vgabios binaries (seabios)" - @echo " sgabios -- update sgabios binaries" - @echo " pxerom -- update nic roms (bios only)" - @echo " efirom -- update nic roms (bios+efi)" - @echo " slof -- update slof.bin" - @echo " skiboot -- update skiboot.lid" - @echo " u-boot.e500 -- update u-boot.e500" - @echo " u-boot.sam460 -- update u-boot.sam460" - @echo " efi -- update UEFI (edk2) platform firmware" - @echo " clean -- delete the files generated by the previous" \ - "build targets" + @echo " bios -- update bios.bin (seabios)" + @echo " vgabios -- update vgabios binaries (seabios)" + @echo " sgabios -- update sgabios binaries" + @echo " pxerom -- update nic roms (bios only)" + @echo " efirom -- update nic roms (bios+efi)" + @echo " slof -- update slof.bin" + @echo " skiboot -- update skiboot.lid" + @echo " u-boot.e500 -- update u-boot.e500" + @echo " u-boot.sam460 -- update u-boot.sam460" + @echo " efi -- update UEFI (edk2) platform firmware" + @echo " opensbi32-virt -- update OpenSBI for 32-bit virt machine" + @echo " opensbi64-virt -- update OpenSBI for 64-bit virt machine" + @echo " opensbi64-sifive_u -- update OpenSBI for 64-bit sifive_u machine" + @echo " clean -- delete the files generated by the previous" \ + "build targets" bios: build-seabios-config-seabios-128k build-seabios-config-seabios-256k cp seabios/builds/seabios-128k/bios.bin ../pc-bios/bios.bin @@ -162,6 +167,24 @@ skiboot: efi: edk2-basetools $(MAKE) -f Makefile.edk2 +opensbi32-virt: + $(MAKE) -C opensbi \ + CROSS_COMPILE=$(riscv32_cross_prefix) \ + PLATFORM="qemu/virt" + cp opensbi/build/platform/qemu/virt/firmware/fw_jump.bin ../pc-bios/opensbi-riscv32-virt-fw_jump.bin + +opensbi64-virt: + $(MAKE) -C opensbi \ + CROSS_COMPILE=$(riscv64_cross_prefix) \ + PLATFORM="qemu/virt" + cp opensbi/build/platform/qemu/virt/firmware/fw_jump.bin ../pc-bios/opensbi-riscv64-virt-fw_jump.bin + +opensbi64-sifive_u: + $(MAKE) -C opensbi \ + CROSS_COMPILE=$(riscv64_cross_prefix) \ + PLATFORM="qemu/sifive_u" + cp opensbi/build/platform/qemu/virt/firmware/fw_jump.bin ../pc-bios/opensbi-riscv64-sifive_u-fw_jump.bin + clean: rm -rf seabios/.config seabios/out seabios/builds $(MAKE) -C sgabios clean @@ -173,3 +196,4 @@ clean: $(MAKE) -C u-boot-sam460ex distclean $(MAKE) -C skiboot clean $(MAKE) -f Makefile.edk2 clean + $(MAKE) -C opensbi clean diff --git a/roms/opensbi b/roms/opensbi new file mode 160000 index 0000000000..ce228ee091 --- /dev/null +++ b/roms/opensbi @@ -0,0 +1 @@ +Subproject commit ce228ee0919deb9957192d723eecc8aaae2697c6