* [PATCH v2 0/4] riscv: Upgrade OpenSBI to v0.6 and add 32-bit sifive_u bios image
@ 2020-02-24 13:39 Bin Meng
2020-02-24 13:39 ` [PATCH v2 1/4] roms: opensbi: Upgrade from v0.5 to v0.6 Bin Meng
` (5 more replies)
0 siblings, 6 replies; 11+ messages in thread
From: Bin Meng @ 2020-02-24 13:39 UTC (permalink / raw)
To: Philippe Mathieu-Daudé, Alistair Francis, Bastian Koppelmann,
Palmer Dabbelt, Sagar Karandikar, qemu-devel, qemu-riscv
This series advances the roms/opensbi submodule to the v0.6 release,
and builds and captures platform firmware binaries from that release.
A 32-bit sifive_u bios image has also been added, so that we can have
32-bit test coverage for SiFive specific drivers that cannot be done
with the 'virt' machine.
Two GitLab CI jobs are added to build the OpenSBI firmware binaries.
Changes in v2:
- new patch: Upgrade opensbi from v0.5 to v0.6
- Update the 32-bit sifive_u bios image to OpenSBI v0.6
- new patch: Add GitLab jobs to build OpenSBI firmware binaries
Bin Meng (4):
roms: opensbi: Upgrade from v0.5 to v0.6
roms: opensbi: Add 32-bit firmware image for sifive_u machine
riscv: sifive_u: Update BIOS_FILENAME for 32-bit
gitlab-ci.yml: Add jobs to build OpenSBI firmware binaries
.gitlab-ci-opensbi.yml | 63 +++++++++++++++++++++++++++
.gitlab-ci.d/opensbi/Dockerfile | 33 ++++++++++++++
.gitlab-ci.yml | 1 +
Makefile | 2 +-
hw/riscv/sifive_u.c | 6 ++-
pc-bios/opensbi-riscv32-sifive_u-fw_jump.bin | Bin 0 -> 49472 bytes
pc-bios/opensbi-riscv32-virt-fw_jump.bin | Bin 40984 -> 41280 bytes
pc-bios/opensbi-riscv64-sifive_u-fw_jump.bin | Bin 49160 -> 53760 bytes
pc-bios/opensbi-riscv64-virt-fw_jump.bin | Bin 45064 -> 49664 bytes
roms/Makefile | 7 +++
roms/opensbi | 2 +-
11 files changed, 111 insertions(+), 3 deletions(-)
create mode 100644 .gitlab-ci-opensbi.yml
create mode 100644 .gitlab-ci.d/opensbi/Dockerfile
create mode 100644 pc-bios/opensbi-riscv32-sifive_u-fw_jump.bin
--
2.7.4
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v2 1/4] roms: opensbi: Upgrade from v0.5 to v0.6
2020-02-24 13:39 [PATCH v2 0/4] riscv: Upgrade OpenSBI to v0.6 and add 32-bit sifive_u bios image Bin Meng
@ 2020-02-24 13:39 ` Bin Meng
2020-02-24 16:58 ` Alistair Francis
2020-02-24 13:39 ` [PATCH v2 2/4] roms: opensbi: Add 32-bit firmware image for sifive_u machine Bin Meng
` (4 subsequent siblings)
5 siblings, 1 reply; 11+ messages in thread
From: Bin Meng @ 2020-02-24 13:39 UTC (permalink / raw)
To: Philippe Mathieu-Daudé, Alistair Francis, Bastian Koppelmann,
Palmer Dabbelt, Sagar Karandikar, qemu-devel, qemu-riscv
Upgrade OpenSBI from v0.5 to v0.6 and the pre-built bios images.
The v0.6 release includes the following commits:
dd8ef28 firmware: Fix compile error for FW_PAYLOAD with latest GCC binutils
98f4a20 firmware: Introduce relocation lottery
f728a0b include: Sync-up encoding with priv v1.12-draft and hypervisor v0.5-draft
18897aa include: Use _UL() and _ULL() for defines in riscv_encoding.h
7a13beb firmware: Add preferred boot HART field in struct fw_dynamic_info
215421c lib: Remove date and time from init message
838657c include: Remove ilen member of struct unpriv_trap
b1d8c98 lib: No need to set VSSTATUS.MXR bit in get_insn()
0e1322b lib: Better naming of unpriv APIs for wider use
75f903d lib: Simplify trap parameters in sbi_ecall functions
c96cc03 lib: Fix CPU capabilities detection function
ab14f94 lib: Fix probe extension
813f7f4 lib: Add error detection for misa_extension
dc40042 include: sbi_platform: fix compilation for GCC-9
bd732ae include: Add guest external interrupt related defines
6590a7d lib: Delegate guest page faults to HS-mode
4370f18 include: Extend struct sbi_trap_info for mtval2 and mtinst
086dbdf lib: Fix sbi_get_insn() for load guest page fault
2be424b lib: Extend trap redirection for hypervisor v0.5 spec
7219477 lib: Use MTINST CSR in misaligned load/store emulation
b8732fe lib: Add replacement extension and function ids
aa0ed1d lib: Remove redundant IPI types
1092663 lib: Add TIME extension in SBI
9777aee lib: Add IPI extension in SBI
9407202 lib: Add hfence instruction encoding
331ff6a lib: Support stage1 and stage2 tlb flushing
86a31f5 lib: Implement RFENCE extension
c7d1b12 firmware: Return real DTB address when FW_xyz_FDT_ADDR is not defined
9beb573 firmware: Improve comments for fw_prev_arg1() and fw_next_arg1()
fc6bd90 docs: Improve docs for FDT address passing
46a90d9 lib: utils: Support CLINT with 32bit MMIO access on RV64 system
c0849cd platform: Add T-head C910 initial support
e746673 lib: Remove unnecessary checks from init_coldboot() and init_warmboot()
c3e406f lib: Add initial sbi_exit() API
55e191e lib: Add system early_exit and final_exit APIs
6469ed1 lib: Add timer exit API
b325f6b lib: Add ipi exit API
1993182 lib: Add irqchip exit API
2aa43a1 lib: save/restore MIE CSR in sbi_hart_wait_for_coldboot()
b0c9787 lib: do sbi_exit() upon halt IPI
15ed1e7 lib: improve system reboot and shutdown implementation
73c19e6 lib: zero-out memory allocated using sbi_scratch_alloc_offset()
a67fd68 lib: Add sbi_init_count() API
049ad0b build: Use -ffreestanding
e340bbf include: Add OPENSBI_EXTERNAL_SBI_TYPES in sbi_types.h
b28b8ac docs: Add description of using OPENSBI_EXTERNAL_SBI_TYPES
adf8b73 platform: thead/c910: Remove SBI_PLATFORM_HAS_PMP
f95dd39 docs: platform: Update SiFive FU540 doc as-per U-Boot v2020.01
6ffe1be firmware: Fix placement of .align directives
7daccae platform: thead/c910: Don't enable L2 cache in warm boot
a73d45c platform: thead/c910: Don't set plic/clint address in warm boot
30cdf00 scripts: Add C910 to platform list in the binary archive script
0492c5d include: Typo fix in comment for SBI_SCRATCH_SIZE define
046cc16 lib: Move struct sbi_ipi_data definition to sbi_ipi.c
3d2aaac lib: Introduce sbi_ipi_send_smode() API
da9b76b lib: Introduce sbi_ipi_send_halt() API
a8b4b83 lib: Introduce sbi_tlb_fifo_request() API
5f762d1 lib: Introduce sbi_ipi_event_create/destroy() APIs
817d50d lib: Drop _fifo from the name of various sbi_tlb_fifo_xyz() functions
84cd4fc lib: Initialize TLB management directly from coldboot/warmboot path
0a411bf include: Add generic and simple list handling APIs
37923c4 lib: Add dynamic registration of SBI extensions
7668502 lib: Factor-out SBI legacy extension
161b348 lib: Factor-out SBI replacement extensions
43ac621 lib: Factor-out SBI vendor extension
021b9e7 lib: Factor-out SBI base extension
85647a1 platform: template: typo fix in system reboot/shutdown names
ac1c229 platform: Update UART base addresses for qemu/sifve_u
d79173b platform: Add an platform ops to return platform specific tlb flush limit
2c2bbe7 platform: sifive/fu540: Set tlb range flush limit to zero
5ff1ab0 makefile: add support for building on macOS
6d0b4c5 platform: Drop qemu/sifive_u support
9a717ec platform: sifive: fu540: Add platform specific 'make run' cmd
d6fa7f9 doc: sifive: fu540: Update QEMU instruction when using U-Boot as the payload
179edde lib: sbi_scratch: use bitwise ops in sbi_scratch_alloc_offset()
897b8fb lib: Use __builtin_ctzl() in pmp_get()
1a8ca08 lib: Initialize out value in SBI calls
c2bfa2b lib: irqchip/plic: Disable all contexts and IRQs
c2f23cc platform: Add Spike initial support
a062200 platform: Remove stale options from config.mk files
c03c8a1 scripts: Add Spike to platform list of binary archive script
29bb2a6 docs: platform: Add documentation for Spike platform
48b06ad ThirdPartyNotices: Fix doc styles
892e879 doc: coreboot: Fix doc styles
fdfb533 doc: payload_linux: Fix doc styles
44d1296 doc: andes-ae350: Fix doc styles
a8ef0b5 doc: ariane-fpga: Fix doc styles
82fd42f doc: qemu_virt: Fix doc styles
f8ce996 doc: sifive_fu540: Fix doc styles
27a5c7f doc: thead-c910: Fix doc styles
0b41453 Revert "lib: Use __builtin_ctzl() in pmp_get()"
c66543d lib: utils: htif: Fix 32-bit build
bc874e3 lib: Don't check MIDELEG and MEDELEG at end of delegate_traps()
24c3082 lib: Print interrupt and exception delegation in boot prints
66fb729 platform: sifive: fu540: Add 32-bit specific fdt/payload addresses
3e7d666 platform: qemu: virt: Correct the typo in config.mk
c3b3b8f lib: Fix typo in atomic exchange functions
3936243 lib: Use available hart mask for correct hbase value
f8b3bb8 lib: Simplify the for-loop in sbi_ipi_send_many()
ac5e821 include: Bump-up version to 0.6
Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
---
Changes in v2:
- new patch: Upgrade opensbi from v0.5 to v0.6
pc-bios/opensbi-riscv32-virt-fw_jump.bin | Bin 40984 -> 41280 bytes
pc-bios/opensbi-riscv64-sifive_u-fw_jump.bin | Bin 49160 -> 53760 bytes
pc-bios/opensbi-riscv64-virt-fw_jump.bin | Bin 45064 -> 49664 bytes
roms/opensbi | 2 +-
4 files changed, 1 insertion(+), 1 deletion(-)
diff --git a/pc-bios/opensbi-riscv32-virt-fw_jump.bin b/pc-bios/opensbi-riscv32-virt-fw_jump.bin
index 6c5b7b89f676392b687d9835ac9fbdc34f3052cd..c9654e70471764b0ee13e4d10b6f9368c6bcbf57 100644
GIT binary patch
delta 19518
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
AO#lD@
delta 15745
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
HAo>3bum3?0
diff --git a/pc-bios/opensbi-riscv64-sifive_u-fw_jump.bin b/pc-bios/opensbi-riscv64-sifive_u-fw_jump.bin
index 971f2be4054d481461efbddca947c44fcfc73ce9..77f4dc8f8322212c437e7f8d7f2ddf63bae1c2cf 100644
GIT binary patch
delta 24610
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
delta 19825
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
diff --git a/pc-bios/opensbi-riscv64-virt-fw_jump.bin b/pc-bios/opensbi-riscv64-virt-fw_jump.bin
index 45a5aed1ce0cc2121a9e9b9733010d85da5f53ba..31e74d12ea79f390344a7fe5164846bce93714da 100644
GIT binary patch
delta 23736
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
delta 19041
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
diff --git a/roms/opensbi b/roms/opensbi
index be92da2..ac5e821 160000
--- a/roms/opensbi
+++ b/roms/opensbi
@@ -1 +1 @@
-Subproject commit be92da280d87c38a2e0adc5d3f43bab7b5468f09
+Subproject commit ac5e821d50be631f26274765a59bc1b444ffd862
--
2.7.4
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v2 2/4] roms: opensbi: Add 32-bit firmware image for sifive_u machine
2020-02-24 13:39 [PATCH v2 0/4] riscv: Upgrade OpenSBI to v0.6 and add 32-bit sifive_u bios image Bin Meng
2020-02-24 13:39 ` [PATCH v2 1/4] roms: opensbi: Upgrade from v0.5 to v0.6 Bin Meng
@ 2020-02-24 13:39 ` Bin Meng
2020-02-24 18:33 ` Alistair Francis
2020-02-24 13:39 ` [PATCH v2 3/4] riscv: sifive_u: Update BIOS_FILENAME for 32-bit Bin Meng
` (3 subsequent siblings)
5 siblings, 1 reply; 11+ messages in thread
From: Bin Meng @ 2020-02-24 13:39 UTC (permalink / raw)
To: Philippe Mathieu-Daudé, Alistair Francis, Bastian Koppelmann,
Palmer Dabbelt, Sagar Karandikar, qemu-devel, qemu-riscv
Although the real world SiFive HiFive Unleashed board is a 64-bit
hardware configuration, with QEMU it is possible to test 32-bit
configuration with the same hardware features.
This updates the roms Makefile to add the build rules for creating
the 32-bit OpenSBI firmware image for sifive_u machine. A pre-built
OpenSBI v0.6 image has been added as the default bios for 32-bit
sifive_u machine.
Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
---
Changes in v2:
- Update the 32-bit sifive_u bios image to OpenSBI v0.6
Makefile | 2 +-
pc-bios/opensbi-riscv32-sifive_u-fw_jump.bin | Bin 0 -> 49472 bytes
roms/Makefile | 7 +++++++
3 files changed, 8 insertions(+), 1 deletion(-)
create mode 100644 pc-bios/opensbi-riscv32-sifive_u-fw_jump.bin
diff --git a/Makefile b/Makefile
index 146a91b..b140855 100644
--- a/Makefile
+++ b/Makefile
@@ -804,7 +804,7 @@ u-boot.e500 u-boot-sam460-20100605.bin \
qemu_vga.ndrv \
edk2-licenses.txt \
hppa-firmware.img \
-opensbi-riscv32-virt-fw_jump.bin \
+opensbi-riscv32-sifive_u-fw_jump.bin opensbi-riscv32-virt-fw_jump.bin \
opensbi-riscv64-sifive_u-fw_jump.bin opensbi-riscv64-virt-fw_jump.bin
diff --git a/pc-bios/opensbi-riscv32-sifive_u-fw_jump.bin b/pc-bios/opensbi-riscv32-sifive_u-fw_jump.bin
new file mode 100644
index 0000000000000000000000000000000000000000..bab13f597ac9da31518f0a2bb22c2a1dbd56380d
GIT binary patch
literal 49472
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
z�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%0DMiNGf_$WkVuRX&6)lQo8YJYsn*8)V^6}pe
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
literal 0
HcmV?d00001
diff --git a/roms/Makefile b/roms/Makefile
index 28e1e55..f9acf39 100644
--- a/roms/Makefile
+++ b/roms/Makefile
@@ -66,6 +66,7 @@ default help:
@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 " opensbi32-sifive_u -- update OpenSBI for 32-bit sifive_u machine"
@echo " opensbi64-sifive_u -- update OpenSBI for 64-bit sifive_u machine"
@echo " bios-microvm -- update bios-microvm.bin (qboot)"
@echo " clean -- delete the files generated by the previous" \
@@ -181,6 +182,12 @@ opensbi64-virt:
PLATFORM="qemu/virt"
cp opensbi/build/platform/qemu/virt/firmware/fw_jump.bin ../pc-bios/opensbi-riscv64-virt-fw_jump.bin
+opensbi32-sifive_u:
+ $(MAKE) -C opensbi \
+ CROSS_COMPILE=$(riscv32_cross_prefix) \
+ PLATFORM="sifive/fu540"
+ cp opensbi/build/platform/sifive/fu540/firmware/fw_jump.bin ../pc-bios/opensbi-riscv32-sifive_u-fw_jump.bin
+
opensbi64-sifive_u:
$(MAKE) -C opensbi \
CROSS_COMPILE=$(riscv64_cross_prefix) \
--
2.7.4
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v2 3/4] riscv: sifive_u: Update BIOS_FILENAME for 32-bit
2020-02-24 13:39 [PATCH v2 0/4] riscv: Upgrade OpenSBI to v0.6 and add 32-bit sifive_u bios image Bin Meng
2020-02-24 13:39 ` [PATCH v2 1/4] roms: opensbi: Upgrade from v0.5 to v0.6 Bin Meng
2020-02-24 13:39 ` [PATCH v2 2/4] roms: opensbi: Add 32-bit firmware image for sifive_u machine Bin Meng
@ 2020-02-24 13:39 ` Bin Meng
2020-02-24 13:39 ` [PATCH v2 4/4] gitlab-ci.yml: Add jobs to build OpenSBI firmware binaries Bin Meng
` (2 subsequent siblings)
5 siblings, 0 replies; 11+ messages in thread
From: Bin Meng @ 2020-02-24 13:39 UTC (permalink / raw)
To: Philippe Mathieu-Daudé, Alistair Francis, Bastian Koppelmann,
Palmer Dabbelt, Sagar Karandikar, qemu-devel, qemu-riscv
Update BIOS_FILENAME to consider 32-bit bios image file name.
Tested booting Linux v5.5 32-bit image (built from rv32_defconfig
plus CONFIG_SOC_SIFIVE) with the default 32-bit bios image.
Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
---
Changes in v2: None
hw/riscv/sifive_u.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/hw/riscv/sifive_u.c b/hw/riscv/sifive_u.c
index ca561d3..371133e 100644
--- a/hw/riscv/sifive_u.c
+++ b/hw/riscv/sifive_u.c
@@ -57,7 +57,11 @@
#include <libfdt.h>
-#define BIOS_FILENAME "opensbi-riscv64-sifive_u-fw_jump.bin"
+#if defined(TARGET_RISCV32)
+# define BIOS_FILENAME "opensbi-riscv32-sifive_u-fw_jump.bin"
+#else
+# define BIOS_FILENAME "opensbi-riscv64-sifive_u-fw_jump.bin"
+#endif
static const struct MemmapEntry {
hwaddr base;
--
2.7.4
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v2 4/4] gitlab-ci.yml: Add jobs to build OpenSBI firmware binaries
2020-02-24 13:39 [PATCH v2 0/4] riscv: Upgrade OpenSBI to v0.6 and add 32-bit sifive_u bios image Bin Meng
` (2 preceding siblings ...)
2020-02-24 13:39 ` [PATCH v2 3/4] riscv: sifive_u: Update BIOS_FILENAME for 32-bit Bin Meng
@ 2020-02-24 13:39 ` Bin Meng
2020-02-24 19:15 ` Alistair Francis
2020-03-06 0:02 ` Palmer Dabbelt
2020-03-01 2:47 ` [PATCH v2 0/4] riscv: Upgrade OpenSBI to v0.6 and add 32-bit sifive_u bios image Bin Meng
2020-03-06 0:06 ` Palmer Dabbelt
5 siblings, 2 replies; 11+ messages in thread
From: Bin Meng @ 2020-02-24 13:39 UTC (permalink / raw)
To: Philippe Mathieu-Daudé, Alistair Francis, Bastian Koppelmann,
Palmer Dabbelt, Sagar Karandikar, qemu-devel, qemu-riscv
Add two GitLab jobs to build the OpenSBI firmware binaries.
The first job builds a Docker image with the packages requisite
to build OpenSBI, and stores this image in the GitLab registry.
The second job pulls the image from the registry and builds the
OpenSBI firmware binaries.
The docker image is only rebuilt if the GitLab YAML or the
Dockerfile is updated. The second job is only built when the
roms/opensbi/ submodule is updated, when a git-ref starts with
'opensbi' or when the last commit contains 'OpenSBI'. The files
generated are archived in the artifacts.zip file.
With OpenSBI v0.6, it took 2 minutes 56 seconds to build
the docker image, and 1 minute 24 seconds to generate the
artifacts.zip with the firmware binaries (filesize: 111KiB).
See: https://gitlab.com/lbmeng/qemu/pipelines/120520138
Suggested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
---
Changes in v2:
- new patch: Add GitLab jobs to build OpenSBI firmware binaries
.gitlab-ci-opensbi.yml | 63 +++++++++++++++++++++++++++++++++++++++++
.gitlab-ci.d/opensbi/Dockerfile | 33 +++++++++++++++++++++
.gitlab-ci.yml | 1 +
3 files changed, 97 insertions(+)
create mode 100644 .gitlab-ci-opensbi.yml
create mode 100644 .gitlab-ci.d/opensbi/Dockerfile
diff --git a/.gitlab-ci-opensbi.yml b/.gitlab-ci-opensbi.yml
new file mode 100644
index 0000000..dd051c0
--- /dev/null
+++ b/.gitlab-ci-opensbi.yml
@@ -0,0 +1,63 @@
+docker-opensbi:
+ stage: build
+ rules: # Only run this job when the Dockerfile is modified
+ - changes:
+ - .gitlab-ci-opensbi.yml
+ - .gitlab-ci.d/opensbi/Dockerfile
+ when: always
+ image: docker:19.03.1
+ services:
+ - docker:19.03.1-dind
+ variables:
+ GIT_DEPTH: 3
+ IMAGE_TAG: $CI_REGISTRY_IMAGE:opensbi-cross-build
+ # We don't use TLS
+ DOCKER_HOST: tcp://docker:2375
+ DOCKER_TLS_CERTDIR: ""
+ before_script:
+ - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
+ script:
+ - docker pull $IMAGE_TAG || true
+ - docker build --cache-from $IMAGE_TAG --tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
+ --tag $IMAGE_TAG .gitlab-ci.d/opensbi
+ - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
+ - docker push $IMAGE_TAG
+
+build-opensbi:
+ rules: # Only run this job when ...
+ - changes: # ... roms/opensbi/ is modified (submodule updated)
+ - roms/opensbi/*
+ when: always
+ - if: '$CI_COMMIT_REF_NAME =~ /^opensbi/' # or the branch/tag starts with 'opensbi'
+ when: always
+ - if: '$CI_COMMIT_MESSAGE =~ /opensbi/i' # or last commit description contains 'OpenSBI'
+ when: always
+ artifacts:
+ paths: # 'artifacts.zip' will contains the following files:
+ - pc-bios/opensbi-riscv32-sifive_u-fw_jump.bin
+ - pc-bios/opensbi-riscv32-virt-fw_jump.bin
+ - pc-bios/opensbi-riscv64-sifive_u-fw_jump.bin
+ - pc-bios/opensbi-riscv64-virt-fw_jump.bin
+ - opensbi32-virt-stdout.log
+ - opensbi32-virt-stderr.log
+ - opensbi64-virt-stdout.log
+ - opensbi64-virt-stderr.log
+ - opensbi32-sifive_u-stdout.log
+ - opensbi32-sifive_u-stderr.log
+ - opensbi64-sifive_u-stdout.log
+ - opensbi64-sifive_u-stderr.log
+ image: $CI_REGISTRY_IMAGE:opensbi-cross-build
+ variables:
+ GIT_DEPTH: 3
+ script: # Clone the required submodules and build OpenSBI
+ - git submodule update --init roms/opensbi
+ - export JOBS=$(($(getconf _NPROCESSORS_ONLN) + 1))
+ - echo "=== Using ${JOBS} simultaneous jobs ==="
+ - make -j${JOBS} -C roms/opensbi clean
+ - make -j${JOBS} -C roms opensbi32-virt 2>&1 1>opensbi32-virt-stdout.log | tee -a opensbi32-virt-stderr.log >&2
+ - make -j${JOBS} -C roms/opensbi clean
+ - make -j${JOBS} -C roms opensbi64-virt 2>&1 1>opensbi64-virt-stdout.log | tee -a opensbi64-virt-stderr.log >&2
+ - make -j${JOBS} -C roms/opensbi clean
+ - make -j${JOBS} -C roms opensbi32-sifive_u 2>&1 1>opensbi32-sifive_u-stdout.log | tee -a opensbi32-sifive_u-stderr.log >&2
+ - make -j${JOBS} -C roms/opensbi clean
+ - make -j${JOBS} -C roms opensbi64-sifive_u 2>&1 1>opensbi64-sifive_u-stdout.log | tee -a opensbi64-sifive_u-stderr.log >&2
diff --git a/.gitlab-ci.d/opensbi/Dockerfile b/.gitlab-ci.d/opensbi/Dockerfile
new file mode 100644
index 0000000..4ba8a4d
--- /dev/null
+++ b/.gitlab-ci.d/opensbi/Dockerfile
@@ -0,0 +1,33 @@
+#
+# Docker image to cross-compile OpenSBI firmware binaries
+#
+FROM ubuntu:18.04
+
+MAINTAINER Bin Meng <bmeng.cn@gmail.com>
+
+# Install packages required to build OpenSBI
+RUN apt update \
+ && \
+ \
+ DEBIAN_FRONTEND=noninteractive \
+ apt install --assume-yes --no-install-recommends \
+ build-essential \
+ ca-certificates \
+ git \
+ make \
+ wget \
+ && \
+ \
+ rm -rf /var/lib/apt/lists/*
+
+# Manually install the kernel.org "Crosstool" based toolchains for gcc-8.3
+RUN wget -O - \
+ https://mirrors.edge.kernel.org/pub/tools/crosstool/files/bin/x86_64/8.3.0/x86_64-gcc-8.3.0-nolibc-riscv32-linux.tar.xz \
+ | tar -C /opt -xJ
+RUN wget -O - \
+ https://mirrors.edge.kernel.org/pub/tools/crosstool/files/bin/x86_64/8.3.0/x86_64-gcc-8.3.0-nolibc-riscv64-linux.tar.xz \
+ | tar -C /opt -xJ
+
+# Export the toolchains to the system path
+ENV PATH="/opt/gcc-8.3.0-nolibc/riscv32-linux/bin:${PATH}"
+ENV PATH="/opt/gcc-8.3.0-nolibc/riscv64-linux/bin:${PATH}"
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index c15e394..4c3a72b 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,5 +1,6 @@
include:
- local: '/.gitlab-ci-edk2.yml'
+ - local: '/.gitlab-ci-opensbi.yml'
before_script:
- apt-get update -qq
--
2.7.4
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH v2 1/4] roms: opensbi: Upgrade from v0.5 to v0.6
2020-02-24 13:39 ` [PATCH v2 1/4] roms: opensbi: Upgrade from v0.5 to v0.6 Bin Meng
@ 2020-02-24 16:58 ` Alistair Francis
0 siblings, 0 replies; 11+ messages in thread
From: Alistair Francis @ 2020-02-24 16:58 UTC (permalink / raw)
To: Bin Meng
Cc: open list:RISC-V, Sagar Karandikar, Bastian Koppelmann,
Palmer Dabbelt, qemu-devel@nongnu.org Developers,
Alistair Francis, Philippe Mathieu-Daudé
On Mon, Feb 24, 2020 at 5:42 AM Bin Meng <bmeng.cn@gmail.com> wrote:
>
> Upgrade OpenSBI from v0.5 to v0.6 and the pre-built bios images.
>
> The v0.6 release includes the following commits:
>
> dd8ef28 firmware: Fix compile error for FW_PAYLOAD with latest GCC binutils
> 98f4a20 firmware: Introduce relocation lottery
> f728a0b include: Sync-up encoding with priv v1.12-draft and hypervisor v0.5-draft
> 18897aa include: Use _UL() and _ULL() for defines in riscv_encoding.h
> 7a13beb firmware: Add preferred boot HART field in struct fw_dynamic_info
> 215421c lib: Remove date and time from init message
> 838657c include: Remove ilen member of struct unpriv_trap
> b1d8c98 lib: No need to set VSSTATUS.MXR bit in get_insn()
> 0e1322b lib: Better naming of unpriv APIs for wider use
> 75f903d lib: Simplify trap parameters in sbi_ecall functions
> c96cc03 lib: Fix CPU capabilities detection function
> ab14f94 lib: Fix probe extension
> 813f7f4 lib: Add error detection for misa_extension
> dc40042 include: sbi_platform: fix compilation for GCC-9
> bd732ae include: Add guest external interrupt related defines
> 6590a7d lib: Delegate guest page faults to HS-mode
> 4370f18 include: Extend struct sbi_trap_info for mtval2 and mtinst
> 086dbdf lib: Fix sbi_get_insn() for load guest page fault
> 2be424b lib: Extend trap redirection for hypervisor v0.5 spec
> 7219477 lib: Use MTINST CSR in misaligned load/store emulation
> b8732fe lib: Add replacement extension and function ids
> aa0ed1d lib: Remove redundant IPI types
> 1092663 lib: Add TIME extension in SBI
> 9777aee lib: Add IPI extension in SBI
> 9407202 lib: Add hfence instruction encoding
> 331ff6a lib: Support stage1 and stage2 tlb flushing
> 86a31f5 lib: Implement RFENCE extension
> c7d1b12 firmware: Return real DTB address when FW_xyz_FDT_ADDR is not defined
> 9beb573 firmware: Improve comments for fw_prev_arg1() and fw_next_arg1()
> fc6bd90 docs: Improve docs for FDT address passing
> 46a90d9 lib: utils: Support CLINT with 32bit MMIO access on RV64 system
> c0849cd platform: Add T-head C910 initial support
> e746673 lib: Remove unnecessary checks from init_coldboot() and init_warmboot()
> c3e406f lib: Add initial sbi_exit() API
> 55e191e lib: Add system early_exit and final_exit APIs
> 6469ed1 lib: Add timer exit API
> b325f6b lib: Add ipi exit API
> 1993182 lib: Add irqchip exit API
> 2aa43a1 lib: save/restore MIE CSR in sbi_hart_wait_for_coldboot()
> b0c9787 lib: do sbi_exit() upon halt IPI
> 15ed1e7 lib: improve system reboot and shutdown implementation
> 73c19e6 lib: zero-out memory allocated using sbi_scratch_alloc_offset()
> a67fd68 lib: Add sbi_init_count() API
> 049ad0b build: Use -ffreestanding
> e340bbf include: Add OPENSBI_EXTERNAL_SBI_TYPES in sbi_types.h
> b28b8ac docs: Add description of using OPENSBI_EXTERNAL_SBI_TYPES
> adf8b73 platform: thead/c910: Remove SBI_PLATFORM_HAS_PMP
> f95dd39 docs: platform: Update SiFive FU540 doc as-per U-Boot v2020.01
> 6ffe1be firmware: Fix placement of .align directives
> 7daccae platform: thead/c910: Don't enable L2 cache in warm boot
> a73d45c platform: thead/c910: Don't set plic/clint address in warm boot
> 30cdf00 scripts: Add C910 to platform list in the binary archive script
> 0492c5d include: Typo fix in comment for SBI_SCRATCH_SIZE define
> 046cc16 lib: Move struct sbi_ipi_data definition to sbi_ipi.c
> 3d2aaac lib: Introduce sbi_ipi_send_smode() API
> da9b76b lib: Introduce sbi_ipi_send_halt() API
> a8b4b83 lib: Introduce sbi_tlb_fifo_request() API
> 5f762d1 lib: Introduce sbi_ipi_event_create/destroy() APIs
> 817d50d lib: Drop _fifo from the name of various sbi_tlb_fifo_xyz() functions
> 84cd4fc lib: Initialize TLB management directly from coldboot/warmboot path
> 0a411bf include: Add generic and simple list handling APIs
> 37923c4 lib: Add dynamic registration of SBI extensions
> 7668502 lib: Factor-out SBI legacy extension
> 161b348 lib: Factor-out SBI replacement extensions
> 43ac621 lib: Factor-out SBI vendor extension
> 021b9e7 lib: Factor-out SBI base extension
> 85647a1 platform: template: typo fix in system reboot/shutdown names
> ac1c229 platform: Update UART base addresses for qemu/sifve_u
> d79173b platform: Add an platform ops to return platform specific tlb flush limit
> 2c2bbe7 platform: sifive/fu540: Set tlb range flush limit to zero
> 5ff1ab0 makefile: add support for building on macOS
> 6d0b4c5 platform: Drop qemu/sifive_u support
> 9a717ec platform: sifive: fu540: Add platform specific 'make run' cmd
> d6fa7f9 doc: sifive: fu540: Update QEMU instruction when using U-Boot as the payload
> 179edde lib: sbi_scratch: use bitwise ops in sbi_scratch_alloc_offset()
> 897b8fb lib: Use __builtin_ctzl() in pmp_get()
> 1a8ca08 lib: Initialize out value in SBI calls
> c2bfa2b lib: irqchip/plic: Disable all contexts and IRQs
> c2f23cc platform: Add Spike initial support
> a062200 platform: Remove stale options from config.mk files
> c03c8a1 scripts: Add Spike to platform list of binary archive script
> 29bb2a6 docs: platform: Add documentation for Spike platform
> 48b06ad ThirdPartyNotices: Fix doc styles
> 892e879 doc: coreboot: Fix doc styles
> fdfb533 doc: payload_linux: Fix doc styles
> 44d1296 doc: andes-ae350: Fix doc styles
> a8ef0b5 doc: ariane-fpga: Fix doc styles
> 82fd42f doc: qemu_virt: Fix doc styles
> f8ce996 doc: sifive_fu540: Fix doc styles
> 27a5c7f doc: thead-c910: Fix doc styles
> 0b41453 Revert "lib: Use __builtin_ctzl() in pmp_get()"
> c66543d lib: utils: htif: Fix 32-bit build
> bc874e3 lib: Don't check MIDELEG and MEDELEG at end of delegate_traps()
> 24c3082 lib: Print interrupt and exception delegation in boot prints
> 66fb729 platform: sifive: fu540: Add 32-bit specific fdt/payload addresses
> 3e7d666 platform: qemu: virt: Correct the typo in config.mk
> c3b3b8f lib: Fix typo in atomic exchange functions
> 3936243 lib: Use available hart mask for correct hbase value
> f8b3bb8 lib: Simplify the for-loop in sbi_ipi_send_many()
> ac5e821 include: Bump-up version to 0.6
>
> Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Alistair
>
> ---
>
> Changes in v2:
> - new patch: Upgrade opensbi from v0.5 to v0.6
>
> pc-bios/opensbi-riscv32-virt-fw_jump.bin | Bin 40984 -> 41280 bytes
> pc-bios/opensbi-riscv64-sifive_u-fw_jump.bin | Bin 49160 -> 53760 bytes
> pc-bios/opensbi-riscv64-virt-fw_jump.bin | Bin 45064 -> 49664 bytes
> roms/opensbi | 2 +-
> 4 files changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/pc-bios/opensbi-riscv32-virt-fw_jump.bin b/pc-bios/opensbi-riscv32-virt-fw_jump.bin
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 2/4] roms: opensbi: Add 32-bit firmware image for sifive_u machine
2020-02-24 13:39 ` [PATCH v2 2/4] roms: opensbi: Add 32-bit firmware image for sifive_u machine Bin Meng
@ 2020-02-24 18:33 ` Alistair Francis
0 siblings, 0 replies; 11+ messages in thread
From: Alistair Francis @ 2020-02-24 18:33 UTC (permalink / raw)
To: Bin Meng
Cc: open list:RISC-V, Sagar Karandikar, Bastian Koppelmann,
Palmer Dabbelt, qemu-devel@nongnu.org Developers,
Alistair Francis, Philippe Mathieu-Daudé
On Mon, Feb 24, 2020 at 5:45 AM Bin Meng <bmeng.cn@gmail.com> wrote:
>
> Although the real world SiFive HiFive Unleashed board is a 64-bit
> hardware configuration, with QEMU it is possible to test 32-bit
> configuration with the same hardware features.
>
> This updates the roms Makefile to add the build rules for creating
> the 32-bit OpenSBI firmware image for sifive_u machine. A pre-built
> OpenSBI v0.6 image has been added as the default bios for 32-bit
> sifive_u machine.
>
> Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Alistair
>
> ---
>
> Changes in v2:
> - Update the 32-bit sifive_u bios image to OpenSBI v0.6
>
> Makefile | 2 +-
> pc-bios/opensbi-riscv32-sifive_u-fw_jump.bin | Bin 0 -> 49472 bytes
> roms/Makefile | 7 +++++++
> 3 files changed, 8 insertions(+), 1 deletion(-)
> create mode 100644 pc-bios/opensbi-riscv32-sifive_u-fw_jump.bin
>
> diff --git a/Makefile b/Makefile
> index 146a91b..b140855 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -804,7 +804,7 @@ u-boot.e500 u-boot-sam460-20100605.bin \
> qemu_vga.ndrv \
> edk2-licenses.txt \
> hppa-firmware.img \
> -opensbi-riscv32-virt-fw_jump.bin \
> +opensbi-riscv32-sifive_u-fw_jump.bin opensbi-riscv32-virt-fw_jump.bin \
> opensbi-riscv64-sifive_u-fw_jump.bin opensbi-riscv64-virt-fw_jump.bin
>
>
> diff --git a/pc-bios/opensbi-riscv32-sifive_u-fw_jump.bin b/pc-bios/opensbi-riscv32-sifive_u-fw_jump.bin
> new file mode 100644
> index 0000000000000000000000000000000000000000..bab13f597ac9da31518f0a2bb22c2a1dbd56380d
> GIT binary patch
> literal 49472
> zcmcG%3tUrIwm-g4PEJmO55TC=j<%Et2yHDIA6FeMuMojU)e#+R?X;YtV`utssN=Q0
> zPQm0P21L||DXq>>AE3<CT2p1}T+2g3gw{u`V0EgsMx^!?Ur0fL|99sk60Ft!?!ABg
> zgp-`J_g-tSz4qE`uf5hfIypxiCXVP-3NkW6r^Gi-P8_0~=oBi_@moPYh!KWzYK@W*
> zwNjZRPI-Jd?(|pov&#svt;|T&uz13{Z)%G(i0@v4af^)j?#HuQme^6oX51QQ+{zMN
> z-`~VN_*cRBr+)UnxVvUVKgXKC#BKbmQ2QH&@NYq`!CiIVmnI4NzYyU!FOl&(r8{eW
> z?Y}ef9p9ZcO)$y^2lw?qIlN2IzkymWlco~Ed5{r4b2Dwb*j+5q7FRRtWb0UWeMaZX
> zHNwBEISD8CSi$)lB7Am`S+GmG!`{A=R^q#JO@dRv`^zpa5%j+UoTE%U;QR^o&oi5M
> zEqQQ>+NkYIv|(99f+Nu*{2Pr#qgYA{!I}{%wJSXC>uaR0?=x`^{8gO6zQ+>A``?}V
> zWtVJ?RR8>=zWR@L)6)G2rKMwKM%-W5bBUDp!6cT=iF^2AUBHMstO}wF;>lytfurg$
> ztB8&dBARkgk9UnTKEiYCqXtfM9=~M?Upg##?Bw;jzA_>vGKo4_U*h2ZDAUQV#@Toh
> zLa!R0)-3(P-i#5nM1A2{na6Il7Zqs3&J%6;RT79pTcmc_mL6Oc_%w5bHuC46z8I+;
> z-t(yh+0|bgbKZ~tBicvt-HVasSK1N4AWS9;grUQ;?U5-3+VJzTKsr2Vb0=h7)10Jz
> zX+CPl)n-|ARvX5XP~JVgwKK2{CQ`@toEw51^ygS|%6Vn3n!g+zSo+eVcPXt9WDbQc
> z>obfR=G@ie#JDwq=+>}A{Y+m*_m>|?cwYy8+0L#Zj?N!QbzfZpX3HBMk`ZkC%*Z&d
> zxrxJlka4&_!^h3MWfSIS5q6gh{XGcY4rSe`S)JAdiC4C&v|+#T@<j9w|2;uT`Nzj!
> z8#6j{;x5Hxg~Y|;Gg{&WUgPJ5tViOm2(w@BCGmvpBZ()#2W%i8WQE8^>ln;+FZH98
> zSt0XcuSLy_bwAkJnH51stA>fi3{jIF|FZEbo17!r^!}{S@XE;Q)Edo)7zLFom>rhF
> zvC%3{r?SfI7ce5Gq<!@pbgFGKhiO>6S_S?ShsDd1)+dFhjAT}3XOWp9EfoyO>L(km
> z4Vx{y7EWSq$M+E1)ltM&J&Fhx8F9#f1C!7iT`YZzZyi`;4426U*3(+o!b3(6tfKV>
> z9+Wxp3-$km`u&I?$_Va{9O#r)DysX|_B-^zCl4M8KNfjB=ER7`QJ;@JJ>iSVXR9k~
> ztLtly)E+<7SbzGHvq#P!yLkMY6F)Rw{rtx1_Affm>Ntj611&ruvD4Pa?TJrF$Vj}J
> zD4Vl>PI%g$w1m0G=Vr{iI!`fW<CMsheJRPQjj0Q#-k7R*dgIfP3-&EYex~u6g}=M;
> zyWE7Vwf#oFg}<`cJ8>+dcSjyi2#?PqVX+dugF^^m;&bAegq#E>F(;8p%1O#eW(+w7
> zW=hT!CM73@NzF-Rrshm#rsYgyrsqs&X5`FZp3HeNYbF`JGJ8eZO7Hlr%$C~IafHzC
> z<2bU4UN!iw<~W%$UMk1wrK`UjA#rq^N&1p4CrXajA2T-|Idc3HQ0UOv+U!APCQsbC
> zKN@Q{Fl?=fVO`r8qw51^i{jHY34B_?dHz&EjP;$P>>)eHI!|)!K?`SemU6~JE{?5j
> z=2%xbXRK}I!a18}6>&5#BGsHOa{!Z|;HKyX4QI~er>wDQER5Q2W)2t3DzMG{G2YS2
> zGfN9j6};ap>NO1%cjsD9SjcZg1M8Bo5Q19z87U^UA28wktb%G_Q7_UqB1OmIR-!qL
> zT0v#`p17IQj8Q?P$nA*>c|1oSDSF7v2}|3U<a!a`<Kq4^vqi{J$&Iyx6>P0a!MdUq
> zM%Q>nVDF5zCuMA{OUAmIWky%4Ebv*;!Iky}SEP0?2hHm6ehUdpPid3x#l8{W;`=sX
> zQb#Hv&KyngDY0)zWDKdIsMv7Oc&I<a9y&pc&JDy^Ek~b*F~*}cgsr_m*rO(beiGx6
> z(F}X!I$;lfK(;8um0LJRQxoI(`nRN7q5J)hpk_6HxWI97AalO2ZlQw7=xZAQDRl8H
> z(Jeee&VUZFVRzEYz8y1GjCh?=EmTjb<{_6gb{E0=Tl$(?$$ckE^onx#<G$m36bs9A
> z|BCwtw2LKwau4Lb5sd$H>RDajM7vwfU6deI{@Fd0yWssEaxTfO@qH)9UT}wU7d)}M
> zWAXgFR5msO&(9lONis2S-BD>YXU0<s$395=V6(Vh+?4p-0k(bvC~5-FZUgUvTY_{i
> zoF>)0quIdZ=+zHcn8C>!P(sb=|Db!Jop@r;&6j?QfAGYH&G&?nKb48XoZ|jfQyp*r
> zo!C?%a$AtRP2FoZH$(J<RW4$j+UyC87$mA}ZEeBsjf=aq*+E3$gZkRITq3pQe9aU4
> zY?@jjZ#yeWcecOoiH)1X8Xn--<RH#yh~bRM6FA^QbT8EV@Ke8KW++a_{dLd^nN{!m
> z<wOf%Gg()EVyu;eONN1iMw4*NNje+Ob7%5>{X)6o>8xuG$|a%P^C<Ufk8(S6d^pke
> zr{eQ;nbi}U{dA1^hz}NrHl9t9N^yTgdsFD_$$r%PcVx<5yO)=?zb2Jv0_C!k1AFU4
> zooDqC71HyF-{X1Gf%mf_$!KHpM#iW&GpwP6F&g$kt{lECSKd8ntkpn@K;v;maYolT
> zE^zJ%OIqadq2V==)rwl8wAaw}$24P8Tv79$xNxjFlf`(fIb~uNmFIECl$+w{{mF$x
> z;{DHZ43ou`*-{&+m9&)@t0yk(L1R)8!zNpS(@w^i{2{YN{^{xjUSD9_U}jFO7A$he
> zo(&x4ETmiw#~v|3;%x(-7l7vnkapL(Equ7r(d=S$zaPX@a|sG@isQ{4n1^(3_K<ds
> zRN860((cl?py;2Cwf!N9<d8(eAc;obA&Kme3Kqh;N->V*B#;{GAc?^J<Z?o)n4>ki
> z(8?jX0<r`xjaJwSEkwOh!8n>Y=F@!jKnpW{4XYo>8mA~&qdt;llgF~*Ub$S&)#Ya>
> zrmqRDmu>X6fR_BNY{9JInQFxuuf%RBfMf(dF5uG)d|H2kk0-8j9%Srdiq|XSQ^m}O
> zJIX<A&^hbb_|c=1==f0TQ_8<Pi9WGAsZ4765274l$uX!EMD}p8$P4){(myej?`T)s
> zqsackRaK*WqdO|8VV*S33zlrDDXFfnoN;#U>6eaVE6ugDznK5|GmRN179M}$SXurE
> z>mKXAT<wSp?V$4WRm(0Fl$iuO|A0-yF_R4C3ewfFrs({0nk_uOU#8!eXx7v3mGt{^
> zO)hV9wRUwFJLV285Z0U`!XL+Jbc4q;HrMqoM{5)#Y~Tkvt`B2!QiRp=e(JYlh$Mxg
> z9_^Sq`EAW7kTAW!8zxSRE*7&zm5?hBv9<OmE&pcgHbXw;Lq5F=`E-B@SLqg?^3MM#
> zMm^ZV=oYsTck@#nY)miWW`k}CDwUj_QpB<PQ;-^UoN<bkGwOFjid^DY!-tR}ZCtoA
> zoLi9Z=RJr0*G$S9I`SF(dByaCPuHj$TjSdbbgi}IRKdG9kBBc}E?3SqM)f9aRFF*9
> zr-i6KHb&OmEE8v#UlL_@w}HF<jW`$5jw}i$A&kI4<|kvtOvZ|7z=~<ObH$v;vb6@5
> zbuD6zu4QZ>pB5dQA+EF=qf%w=)%*`HiDLFjyQp%%CI5lZ?~98}+L)wBxtg9a|M>ib
> zr}jJ*{`C5%WecuOf9^TVWXlS}I|r7gU8-OX4@q11v7d9k($RTMd1)#1Ac?;^48k|1
> zB#4v7pjkb+P#eaPo*ZY#jtYB-UUVg{yWNIVKkJn{`BN%wP}0(~Ci)>Vq2Zs*s8t+^
> ztWP~eLRdo~<b?=1ww*C1?S*ENR$#9M6mv3H&9gfdp!a$Cnbl?1m?ErZ^EQ8SpV<y7
> zT0q58P_euR73plx(PLhPJv+6`G@wdT2mVqm<|t2z**PB@qf}&unB&?skCqHoHC?|N
> zmyvWlDIsM~3I|$Jyd&!==BbBf*N~81)-u!KCW%^>c6KLEgdkO4U!U9FOawj8HTU)H
> zJANFLC|qjp9a*FeQ(;Zn@Uwd1PAb14&3MS5C`hw$cSy67=${MyYexTCd-N~IMY)7&
> z%6c{_meF_P9-d0EmsT5n|4{vvFp9Ibtn`N%Yjl-nKh^qjJ;tb9nRs-zxMHk3k-G(6
> z<0$6Zh|=%!4{G+(wVu12GTE)?+G!89rKR5ts7Om&Trn#xy<%xvN(Fepx2lwxvR+Aw
> zjh=L`UT!{m?_O%;pnx0{kb?s9z_~!jMp~;V_tG(uIB7=h?3%gNBqY;mTQ-K2nQ~mV
> zSDjt!<Qhmv=)&iqbxe}R#`Pr~D>Zid(lhQ$2VX>lKeQ^nJs#2e1<L+fAgZ8i(PT7R
> zUj$iWg{;{LS@U5JU5IKzRM!wlkiwWOX(cSxN(>Wvth(<U%t>t&q4~rWt0T?e!9whn
> ze)aP;#Gq3J?yuW#JzVSw3meU((6LMvB~A=aUGE)FCgpqIx**L^V{#$ZUlHps=8<7<
> zkG;nGAK!=CSdn<FNKsgk#`Rc{7=6)gnK1&~<)6c#JoZEX8<_I|(*T%@0CU;@5zG%=
> z_wMICG=bZ_4D92*`gcEA_gLlc3X2I<9HH`sgrpvtQCnsj0d4Y_lIoO~|0wDmg<}|-
> zv!&}&K9d|N>PO#eZoP9q2?DJP`%G6ew8PdOd|Grc6=Mwj^z!59?}kt18(w^bJMm$D
> z{lCHI=cQc$KBpjGpz&Ob2sxA$5mI?AD&&y+t(MOF^FHgc$ho}nAK!1h?2tGXNSsng
> zobsL$=Pu*L=ySmTcVgq$%p$9yTYL9YmLgMP*#>c3nPpYn=RRH9F|Gyr*!rZ83Vpg9
> z`X!Yv-MA?cT3X?>cxC*Z&zd)EN}OESyGk1#uqNNG$=m4DY0&X#Julx*36uqniweeX
> zdGPKK6s$9Fg{ix}e}H}}XPqukq8XHE1tq$li7qPTspdIC+yhR5wN#e1+b|keWmd5v
> z)-N6IyzkdAyybQqV!h9c4FTFLEM(rj#0adZpME7#!zHdtOm{{WQj5+I+Hc6=pI<i_
> z{r&iU9{An>zF!2sUv?M1msS;73Z<a5T1ISnSigLNZ@v4kNo}*zt^}-e_mU1}ru(jN
> zz~=6IG`hm|pdcuAub$rz5^PMh7W5nTCD@hzU)IuT`XYnyU3ouy3Dw6G>(%xMGS)sM
> zai4vq#Td;IHd+tsR5T-)_<kMp*cg!r%C>$vN#YAa9~I76ipXrSaRYX-6Wren>l$24
> zZFYfriL{dSkN<7FqxmAaa<pTf(7Uxaw{Qt8^!rFwHs5bgq5IpW&MW01@pIxGiyDa&
> zWqRv{l{b3l7`V)a(>neJ$s*<b%IxlMPj;r22Vzx)vR<5IZ9x<#H>>*5A&zDwoWdTb
> zIOSIa*4Ta!81!wE=Ol42xO=Ov>(GPa6#vKF-wx|4>d|^W#kN<Q%v)BWy6P`m97D@S
> z`*!VOHdgSIk>y#0^c!3b>%}7s{+=8D{edj9yI;eB+0-T!-LjWnvm+b!Qhg?}er`3@
> zF{wr~zY=<;sVsMdm_Noe<-<b^teTpCL8IyQ?VQ0oY??Mk%s#VPojw@jFpS}X3O}aW
> zY}3i(bmtL!thX_`7bz<e_0T;+LWX2^{ItebH+znVY%0|jmoEuFk$Ozg7<rrwlC-AM
> z>88XOYuSdu#i`=XCv03zhu5CfkA7RxuxDmC?7gyd{ax!er_j2zWZ4E<tGMsr@9D2p
> zk-6Q{vwc)e(!G{RceWOJe8!R4pUkbFe@M}odhD56GH9PECT~~ns9aEOpoCvk;^%Rj
> z63eW@jb_p@Pg^V}UsMWW3NJl%#Z#S6qX6X;W>twew}|coURkO#hz9%H;O@LX{9aHr
> z$^4M7revfZPfeJ*XX<2;_G!NO*tp~78RoOz9o@4dOGH|K?Q8BNt~1AQsXS7w8`&|h
> zj%s8zRFZjD0BNr@p_^`J#z?l#SJ<Ve0;P?#wsD6y*Zo#6CYM=+UMFRJnm^a8^h4ci
> z6Hg?vJ2>)r{GN>oc465enXvdIc{63xR7Ss`;LW<wVwGN!`X^A{{r1Jq4Td-MZu`Z~
> zQ{}?zC&}8X6Nzu8aQYKfo2Jt8pH{dBD>|yYm{Lh@FQq#=*NCx}4T+v}4|VxvxWtKm
> zKAc-kIkC)i;46uq{9~IEg;o4O4f=?)rAL&B0>k-!xng=J3b|Z=4O&+7QPKSqR~Urn
> zPxdddYm0gEY4XF#C54fNp#IdKYPJ&h8B@CVge=u%RgO#2{(c-|F9g1#_@oW{d{|&F
> zwGq$dqZJe@?YpJn(%g7NyQEGk$IXb><M{#a^S_sd*|FQP<$e>EcG&lPx|$<Fp3Cq3
> z%Ufbc>4U!g(1Q!AB)eOt)^qvg)iG8fiBnKoX^TsT2&?aBznuqd!hkh&5!TRUJ+uif
> zlgf85wD(E}8l!p<c6$&pMg$S(UM{n#oW(cK<$`K@*K;|znvLj1e^;G4Fe|<8Kw5g+
> zUV3L%y65tfm34b*Df+#jLMj(rvBE1uy7xpR#F(6>WRvwu){v<*8kQ;pSAcho>eeX2
> zriw}-gpVyVskv;qx@{cUW%YzS+ebbBHG-8#$<~^bf`$uWUE7pK*9SdXP`9?Ws^?mW
> zZ7$E)T3h+&j9Sxm<yKRTQY)TNZWS*mX`7yqY^5-S8*VJMlB~7k`Ws7CxN2}s!8NLX
> zR^-eOW9=NJ(V3)VUC#r`tANsN)l~o1Ow?(x1E!go<;&E3>&x2g8s*k(xk{U}O}RDa
> z1ErYUR=_P1_*3C(p3gp2pgxK7kw)Ov$TQlNz{q$(xpifYlJ-|?JfQ@x9fJ?rnt7SJ
> z^<-Cf4^9T72edrO(sH!kPj}O>i~~=J64iV|K?c8|z_zTlRbYeU#*!4$C;8KX!gGxZ
> zF4ZycG<i4I`GX%9^|Ds}E6@no+@{fWiAH4RpWTG}Vcm{jQg&@t+JRqEE@X*Y!F_!#
> ziaZNzHtqG%a9+KP4*|ZKC}L~n!%h`|3d*dt{IkZ=IyySfV|19TwWZHn56~yKp@5=y
> z9b23=_{MdZZ(MQpj_WXtYuLTU)jO7N(2<iy%|^%hw+cp$ake!`qen+l8twiVZMkY|
> z&NihqLLb~7A@nZ{ee($YQyAbJLPxoKgj?Q5@4^DtIYv)cIlx?d>R;}DK|gGFEKeJG
> zfZ9W6oTc_pb1k)t&i-QV>G_{$V;44JwI}TI<7Ii*hJ}rev}QdLJKD?DB=#xJnH95p
> z^tG7c(ZWHw?0`YIVE-@sMo1a6S*f-UyR9$bEHc&osl0QX3g^NpZC$#yVNAZk&9%uk
> z8-&m{Sq64pM-Si4nn&$;Qi~<(<!Lb%NpfvhJY&{C7UB%1zbE8!!hB1;`5CkHtVu3C
> z$;6YH@e-zMXA1qf|6*&?l{mLk8V{u?*+VMu@M6rhXw19uO4hkt84hccZs9<jg3<i~
> z<?LAn8JumS$fOjUS#!JnPO1GSHQJxZ))qlZq!Z&ID`A}}*w61IXqT{uKE$cXa^i2Z
> zZcR0xz<*kR^G_~Ai4!<7y})h<r7ThXr2btD^+Ry}C_&&tVJR8I)((d5e+m#(4C|}|
> zglO1eE&;-L#^`MO1rS_)ePhzs4`KUNUmt>?89ffV$Uqkv=ptjCDw)x>7-yH!GWO7N
> z8E7N>1$|KY`k?ef5WkZkI3fKm4`*vn0YVWV)B%DO5H112PC#e_gb#lK1Pd!cNM`*I
> zGA~LHws(3$j)kKSEc(Er4=nls``}{O38Pu`fkhwK`}d)_LxND!;fJ6<CqWQ@^n~ml
> zf<6F35g^n7f)x-h0m4o|Xaj@~e*px;j}ipMkA4UdrzHrPS3MzX2ci#h^g)h3U>B;w
> z>bV%JXtW%CkfRUs`}d*rssv%-RX+sogakqVohRg#5cB~MiU6Sw5UhZ32@rMyLK`4_
> z_zNKL-%Ai`zw<+AIxInmxQO`>gg)RrYcS5aQgFJj!mevEc3;sr`&y1Oukqad`>?24
> zf)Ls4hv0Nc5V&)g56~@60YVWV)B%DO5H112PC#e_gb#lK1lLy*1oKyZ2-~Y92u-Iv
> zA>=RU15U68E6@j63RJK|FNQrj8s}rn73hQF{(Xr0LV|Gd-+l<<za$9G&paXLmZ1-T
> zPy`5dfM5lLOMtKw5ZVCY!(RZw(kMYlZuCRQ+$%xYe%KRIxrD8ymfLg&atTr+g)w?9
> zxQpR8@FAqea_0VhXg(%EC^_bbpnp$-Ai6vu#eZOH2lK|-Q-Gl2A(sFlnrB^?0AW0D
> zbhiBh2!@X(2#SyW5F&O;5HhQvGi9O=fRN6k4}g%uqYr?vm`5J~VL5;QK9o8o2n(Hl
> z2;5c)g8pC7@qWj;PVsDQ9a_EwNNv2|GlY6LEGUrbUaa!h)&EVZ%K^LMr{G`G=R9^r
> zCE_#KU&g&Il{Rm8_u<yRv;T-W!!qA&)#F*%D~o*3HoJqlwPW@lH)pImVwsEQ>%7m8
> zEtQ_v(&uYN?#F6~V|s9%ceP?`RZ7t)<~fgo2eDp_@1cQCwxrdmEe0~A>b4d)k7^8;
> zpdZ#LwK=DtAGRrzs<gv08EvGV(GE{zp8IDv21OKu*y4c_1|@cPU(USvpGK^b6z<(1
> zW|*;4y*WeFj=0{g4cl-_8~%KUc34t}HgZk}Y^R5Oea&~PxRozoen>O|Yu1OgUt8>M
> z<HB9q@EnxdNM0}ST<6P|zsv?j&J}#}^5x*pxt8O%S9-lq2N2)HcqF`h`H7X%UXnF%
> zSS2|kyxmOJ9pyL?G6MD*+;yv3VKvopt#Q=OH7bcQ_`gdvjVP0IG{+$FI=%%pc(USV
> z_sKCm{ipT1%N8EYG2}E2-XXM~B;9o!=9ah>t^RsBhBMS|hTSH`!uoNHh2uqTYjA5P
> z{oR80yW8ZdS=>_{joDacdAOK<AM6tOtp&}UBIho0`7FNO@U0))T3UhyOAFy}?!u9d
> zn~ZNiER~^srX>a(Wegne;G3YU@T8-iF$k}>kesHGJA^*vq(j5Hc;fz5OJ|<~^*9Z@
> zN6*Ez75MQlv-r<ibi9+O>S=pr7K&AQr+agA51a<qQ_Mxk<CZQ7Z}(e0u@-{&65*A-
> zvb&Ug;D)a)HGiXv;<~>u^R!LT($z75bqxTPTeF*q`>m5bAP%jj{ic)>`nAepHjXd8
> z{rjzEPz7`w<U|cdFO9fPZ1#@5L?5o!PazvWfC#d3v@o*RnB3YWtlCHRThtZ}aSy%$
> zD@Qjq{G&N4iSxE8wUqPyX2XzbZLxw->*bJx{&855*5n&~ibGC74L?q(@3ks3bzE|x
> z9v*lyPi*B&gTKPx#eRE)zsz8#zeL#6v_#mvz!H8tGJH}(F24$I1+_|+^IeX9#a!5(
> zX6}v%w7RG__9r&(M%S700m(LQCJVT|Ju@$lSklpPx$U-nq#Wmju#d<#B?gl)r8Q4<
> zmuDUxY7@DcOBSjXim-7U69OyLAN^RAH@r0wPm2$i5B`dtkquq4<rDLflKT2X@Sv<|
> ztUg`&%-M`D7M_0L^OqX4L$ada&68v&#$*dI8cH$W;GrUKSY6FK3vB%@%$e2NFnPN+
> z9G_wMMB+0XpBQ`|#b<=PorQmr<frs1X8iLcLy^FzuSr|8g<r4+_=S{EpS_vS&J(6_
> zeVG({KJ@MU$ChbuRrh&!nSC{WuYPp723K|OKQ6cD;&<*hf41l0n)k@E0aH`WKZt5h
> z-tHl5m)dYeYjNlLm5F867tA?0i}J+2@`sq*i{fBs`q=X#=bSAbnB1pot~h<N8vOJO
> zyrCM+6oc%CsAmei$IwRFcuwW+zxbwI1QgNvC)#FlpBSqKzp<bB(`IkodeLsib93?%
> z4X&`;(Q-4%uOdaMp8ijsndkm;BW__*V^T6aOCwV^rYfdheJbPW<4-3n*t3AqM_}h9
> zwds7`Lw3Kyl;hke_T6vq=R?I9b{=JM3U9<2iLq8Xg%5{+Pc{5E&tp%7XV4&cXctjf
> z^T%PG?|vp8^mA(WNg`(OP0pZ$Ble1d2_nvofQ9ua^>S5jl@SGNme~+bpc6C5V|DQO
> zy^n|2{Z6vx!MDJ`!1e^(mi0IX?)Lxa#*O;HO7j;d{I&2|xKygtSU_){Ul7DifalkK
> zSo^agE>D!CbXLT<iDxRZB92XT;&0`|@5{3yc28`;-{OgFxU+WRSNNMfu?~M<nRo^F
> zpPhILe`ijt!r!=wFXDde#5DX3o45jZLMCS7FPS(Ue`6;sq4y`G<8R1>c>E<37MC;n
> zbUGWcdiXH>zLZE9HqQ^haBYhp!?jHm!?g_*!?jL|;o7|v!?oKfhHDEchHFKN;o7AX
> z!?l?d!?kG?!?k*f;o312!?h6<!?gn_hHE*B;o312!?h6<!?gn_hHE)sh+ThkX>V#X
> z�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%0DMiNGf_$WkVuRX&6)lQo8YJYsn*8)V^6}pe
> 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
>
> literal 0
> HcmV?d00001
>
> diff --git a/roms/Makefile b/roms/Makefile
> index 28e1e55..f9acf39 100644
> --- a/roms/Makefile
> +++ b/roms/Makefile
> @@ -66,6 +66,7 @@ default help:
> @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 " opensbi32-sifive_u -- update OpenSBI for 32-bit sifive_u machine"
> @echo " opensbi64-sifive_u -- update OpenSBI for 64-bit sifive_u machine"
> @echo " bios-microvm -- update bios-microvm.bin (qboot)"
> @echo " clean -- delete the files generated by the previous" \
> @@ -181,6 +182,12 @@ opensbi64-virt:
> PLATFORM="qemu/virt"
> cp opensbi/build/platform/qemu/virt/firmware/fw_jump.bin ../pc-bios/opensbi-riscv64-virt-fw_jump.bin
>
> +opensbi32-sifive_u:
> + $(MAKE) -C opensbi \
> + CROSS_COMPILE=$(riscv32_cross_prefix) \
> + PLATFORM="sifive/fu540"
> + cp opensbi/build/platform/sifive/fu540/firmware/fw_jump.bin ../pc-bios/opensbi-riscv32-sifive_u-fw_jump.bin
> +
> opensbi64-sifive_u:
> $(MAKE) -C opensbi \
> CROSS_COMPILE=$(riscv64_cross_prefix) \
> --
> 2.7.4
>
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 4/4] gitlab-ci.yml: Add jobs to build OpenSBI firmware binaries
2020-02-24 13:39 ` [PATCH v2 4/4] gitlab-ci.yml: Add jobs to build OpenSBI firmware binaries Bin Meng
@ 2020-02-24 19:15 ` Alistair Francis
2020-03-06 0:02 ` Palmer Dabbelt
1 sibling, 0 replies; 11+ messages in thread
From: Alistair Francis @ 2020-02-24 19:15 UTC (permalink / raw)
To: Bin Meng
Cc: open list:RISC-V, Sagar Karandikar, Bastian Koppelmann,
Palmer Dabbelt, qemu-devel@nongnu.org Developers,
Alistair Francis, Philippe Mathieu-Daudé
On Mon, Feb 24, 2020 at 5:40 AM Bin Meng <bmeng.cn@gmail.com> wrote:
>
> Add two GitLab jobs to build the OpenSBI firmware binaries.
>
> The first job builds a Docker image with the packages requisite
> to build OpenSBI, and stores this image in the GitLab registry.
> The second job pulls the image from the registry and builds the
> OpenSBI firmware binaries.
>
> The docker image is only rebuilt if the GitLab YAML or the
> Dockerfile is updated. The second job is only built when the
> roms/opensbi/ submodule is updated, when a git-ref starts with
> 'opensbi' or when the last commit contains 'OpenSBI'. The files
> generated are archived in the artifacts.zip file.
>
> With OpenSBI v0.6, it took 2 minutes 56 seconds to build
> the docker image, and 1 minute 24 seconds to generate the
> artifacts.zip with the firmware binaries (filesize: 111KiB).
>
> See: https://gitlab.com/lbmeng/qemu/pipelines/120520138
>
> Suggested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Acked-by: Alistair Francis <alistair.francis@wdc.com>
Alistair
>
> ---
>
> Changes in v2:
> - new patch: Add GitLab jobs to build OpenSBI firmware binaries
>
> .gitlab-ci-opensbi.yml | 63 +++++++++++++++++++++++++++++++++++++++++
> .gitlab-ci.d/opensbi/Dockerfile | 33 +++++++++++++++++++++
> .gitlab-ci.yml | 1 +
> 3 files changed, 97 insertions(+)
> create mode 100644 .gitlab-ci-opensbi.yml
> create mode 100644 .gitlab-ci.d/opensbi/Dockerfile
>
> diff --git a/.gitlab-ci-opensbi.yml b/.gitlab-ci-opensbi.yml
> new file mode 100644
> index 0000000..dd051c0
> --- /dev/null
> +++ b/.gitlab-ci-opensbi.yml
> @@ -0,0 +1,63 @@
> +docker-opensbi:
> + stage: build
> + rules: # Only run this job when the Dockerfile is modified
> + - changes:
> + - .gitlab-ci-opensbi.yml
> + - .gitlab-ci.d/opensbi/Dockerfile
> + when: always
> + image: docker:19.03.1
> + services:
> + - docker:19.03.1-dind
> + variables:
> + GIT_DEPTH: 3
> + IMAGE_TAG: $CI_REGISTRY_IMAGE:opensbi-cross-build
> + # We don't use TLS
> + DOCKER_HOST: tcp://docker:2375
> + DOCKER_TLS_CERTDIR: ""
> + before_script:
> + - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
> + script:
> + - docker pull $IMAGE_TAG || true
> + - docker build --cache-from $IMAGE_TAG --tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
> + --tag $IMAGE_TAG .gitlab-ci.d/opensbi
> + - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
> + - docker push $IMAGE_TAG
> +
> +build-opensbi:
> + rules: # Only run this job when ...
> + - changes: # ... roms/opensbi/ is modified (submodule updated)
> + - roms/opensbi/*
> + when: always
> + - if: '$CI_COMMIT_REF_NAME =~ /^opensbi/' # or the branch/tag starts with 'opensbi'
> + when: always
> + - if: '$CI_COMMIT_MESSAGE =~ /opensbi/i' # or last commit description contains 'OpenSBI'
> + when: always
> + artifacts:
> + paths: # 'artifacts.zip' will contains the following files:
> + - pc-bios/opensbi-riscv32-sifive_u-fw_jump.bin
> + - pc-bios/opensbi-riscv32-virt-fw_jump.bin
> + - pc-bios/opensbi-riscv64-sifive_u-fw_jump.bin
> + - pc-bios/opensbi-riscv64-virt-fw_jump.bin
> + - opensbi32-virt-stdout.log
> + - opensbi32-virt-stderr.log
> + - opensbi64-virt-stdout.log
> + - opensbi64-virt-stderr.log
> + - opensbi32-sifive_u-stdout.log
> + - opensbi32-sifive_u-stderr.log
> + - opensbi64-sifive_u-stdout.log
> + - opensbi64-sifive_u-stderr.log
> + image: $CI_REGISTRY_IMAGE:opensbi-cross-build
> + variables:
> + GIT_DEPTH: 3
> + script: # Clone the required submodules and build OpenSBI
> + - git submodule update --init roms/opensbi
> + - export JOBS=$(($(getconf _NPROCESSORS_ONLN) + 1))
> + - echo "=== Using ${JOBS} simultaneous jobs ==="
> + - make -j${JOBS} -C roms/opensbi clean
> + - make -j${JOBS} -C roms opensbi32-virt 2>&1 1>opensbi32-virt-stdout.log | tee -a opensbi32-virt-stderr.log >&2
> + - make -j${JOBS} -C roms/opensbi clean
> + - make -j${JOBS} -C roms opensbi64-virt 2>&1 1>opensbi64-virt-stdout.log | tee -a opensbi64-virt-stderr.log >&2
> + - make -j${JOBS} -C roms/opensbi clean
> + - make -j${JOBS} -C roms opensbi32-sifive_u 2>&1 1>opensbi32-sifive_u-stdout.log | tee -a opensbi32-sifive_u-stderr.log >&2
> + - make -j${JOBS} -C roms/opensbi clean
> + - make -j${JOBS} -C roms opensbi64-sifive_u 2>&1 1>opensbi64-sifive_u-stdout.log | tee -a opensbi64-sifive_u-stderr.log >&2
> diff --git a/.gitlab-ci.d/opensbi/Dockerfile b/.gitlab-ci.d/opensbi/Dockerfile
> new file mode 100644
> index 0000000..4ba8a4d
> --- /dev/null
> +++ b/.gitlab-ci.d/opensbi/Dockerfile
> @@ -0,0 +1,33 @@
> +#
> +# Docker image to cross-compile OpenSBI firmware binaries
> +#
> +FROM ubuntu:18.04
> +
> +MAINTAINER Bin Meng <bmeng.cn@gmail.com>
> +
> +# Install packages required to build OpenSBI
> +RUN apt update \
> + && \
> + \
> + DEBIAN_FRONTEND=noninteractive \
> + apt install --assume-yes --no-install-recommends \
> + build-essential \
> + ca-certificates \
> + git \
> + make \
> + wget \
> + && \
> + \
> + rm -rf /var/lib/apt/lists/*
> +
> +# Manually install the kernel.org "Crosstool" based toolchains for gcc-8.3
> +RUN wget -O - \
> + https://mirrors.edge.kernel.org/pub/tools/crosstool/files/bin/x86_64/8.3.0/x86_64-gcc-8.3.0-nolibc-riscv32-linux.tar.xz \
> + | tar -C /opt -xJ
> +RUN wget -O - \
> + https://mirrors.edge.kernel.org/pub/tools/crosstool/files/bin/x86_64/8.3.0/x86_64-gcc-8.3.0-nolibc-riscv64-linux.tar.xz \
> + | tar -C /opt -xJ
> +
> +# Export the toolchains to the system path
> +ENV PATH="/opt/gcc-8.3.0-nolibc/riscv32-linux/bin:${PATH}"
> +ENV PATH="/opt/gcc-8.3.0-nolibc/riscv64-linux/bin:${PATH}"
> diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
> index c15e394..4c3a72b 100644
> --- a/.gitlab-ci.yml
> +++ b/.gitlab-ci.yml
> @@ -1,5 +1,6 @@
> include:
> - local: '/.gitlab-ci-edk2.yml'
> + - local: '/.gitlab-ci-opensbi.yml'
>
> before_script:
> - apt-get update -qq
> --
> 2.7.4
>
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 0/4] riscv: Upgrade OpenSBI to v0.6 and add 32-bit sifive_u bios image
2020-02-24 13:39 [PATCH v2 0/4] riscv: Upgrade OpenSBI to v0.6 and add 32-bit sifive_u bios image Bin Meng
` (3 preceding siblings ...)
2020-02-24 13:39 ` [PATCH v2 4/4] gitlab-ci.yml: Add jobs to build OpenSBI firmware binaries Bin Meng
@ 2020-03-01 2:47 ` Bin Meng
2020-03-06 0:06 ` Palmer Dabbelt
5 siblings, 0 replies; 11+ messages in thread
From: Bin Meng @ 2020-03-01 2:47 UTC (permalink / raw)
To: Philippe Mathieu-Daudé, Alistair Francis, Bastian Koppelmann,
Palmer Dabbelt, Sagar Karandikar,
qemu-devel@nongnu.org Developers, open list:RISC-V
Hi Palmer,
On Mon, Feb 24, 2020 at 9:40 PM Bin Meng <bmeng.cn@gmail.com> wrote:
>
>
> This series advances the roms/opensbi submodule to the v0.6 release,
> and builds and captures platform firmware binaries from that release.
>
> A 32-bit sifive_u bios image has also been added, so that we can have
> 32-bit test coverage for SiFive specific drivers that cannot be done
> with the 'virt' machine.
>
> Two GitLab CI jobs are added to build the OpenSBI firmware binaries.
>
> Changes in v2:
> - new patch: Upgrade opensbi from v0.5 to v0.6
> - Update the 32-bit sifive_u bios image to OpenSBI v0.6
> - new patch: Add GitLab jobs to build OpenSBI firmware binaries
>
Would you please take this series for the next PR?
Regards,
Bin
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 4/4] gitlab-ci.yml: Add jobs to build OpenSBI firmware binaries
2020-02-24 13:39 ` [PATCH v2 4/4] gitlab-ci.yml: Add jobs to build OpenSBI firmware binaries Bin Meng
2020-02-24 19:15 ` Alistair Francis
@ 2020-03-06 0:02 ` Palmer Dabbelt
1 sibling, 0 replies; 11+ messages in thread
From: Palmer Dabbelt @ 2020-03-06 0:02 UTC (permalink / raw)
To: bmeng.cn
Cc: philmd, Alistair Francis, Bastian Koppelmann, sagark, qemu-devel,
qemu-riscv
On Mon, 24 Feb 2020 05:39:44 PST (-0800), bmeng.cn@gmail.com wrote:
> Add two GitLab jobs to build the OpenSBI firmware binaries.
>
> The first job builds a Docker image with the packages requisite
> to build OpenSBI, and stores this image in the GitLab registry.
> The second job pulls the image from the registry and builds the
> OpenSBI firmware binaries.
>
> The docker image is only rebuilt if the GitLab YAML or the
> Dockerfile is updated. The second job is only built when the
> roms/opensbi/ submodule is updated, when a git-ref starts with
> 'opensbi' or when the last commit contains 'OpenSBI'. The files
> generated are archived in the artifacts.zip file.
>
> With OpenSBI v0.6, it took 2 minutes 56 seconds to build
> the docker image, and 1 minute 24 seconds to generate the
> artifacts.zip with the firmware binaries (filesize: 111KiB).
>
> See: https://gitlab.com/lbmeng/qemu/pipelines/120520138
>
> Suggested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
I don't really understand how this works well enough to be comfortable putting
my Reviewed-by on it -- I'm certainly not opposed to it, it's just not really
my thing. I've put it in my queue without a review, but my understanding is
that we need one to send it up (and I usually avoid putting things in my queue
until they have a review).
If nobody else has time to review it then I'll do so before sending the PR, but
that may delay things. It'd be great if someone could save me the time... :)
Thanks for doing this, though -- wve're sorely lacking in CI!
>
> ---
>
> Changes in v2:
> - new patch: Add GitLab jobs to build OpenSBI firmware binaries
>
> .gitlab-ci-opensbi.yml | 63 +++++++++++++++++++++++++++++++++++++++++
> .gitlab-ci.d/opensbi/Dockerfile | 33 +++++++++++++++++++++
> .gitlab-ci.yml | 1 +
> 3 files changed, 97 insertions(+)
> create mode 100644 .gitlab-ci-opensbi.yml
> create mode 100644 .gitlab-ci.d/opensbi/Dockerfile
>
> diff --git a/.gitlab-ci-opensbi.yml b/.gitlab-ci-opensbi.yml
> new file mode 100644
> index 0000000..dd051c0
> --- /dev/null
> +++ b/.gitlab-ci-opensbi.yml
> @@ -0,0 +1,63 @@
> +docker-opensbi:
> + stage: build
> + rules: # Only run this job when the Dockerfile is modified
> + - changes:
> + - .gitlab-ci-opensbi.yml
> + - .gitlab-ci.d/opensbi/Dockerfile
> + when: always
> + image: docker:19.03.1
> + services:
> + - docker:19.03.1-dind
> + variables:
> + GIT_DEPTH: 3
> + IMAGE_TAG: $CI_REGISTRY_IMAGE:opensbi-cross-build
> + # We don't use TLS
> + DOCKER_HOST: tcp://docker:2375
> + DOCKER_TLS_CERTDIR: ""
> + before_script:
> + - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
> + script:
> + - docker pull $IMAGE_TAG || true
> + - docker build --cache-from $IMAGE_TAG --tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
> + --tag $IMAGE_TAG .gitlab-ci.d/opensbi
> + - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
> + - docker push $IMAGE_TAG
> +
> +build-opensbi:
> + rules: # Only run this job when ...
> + - changes: # ... roms/opensbi/ is modified (submodule updated)
> + - roms/opensbi/*
> + when: always
> + - if: '$CI_COMMIT_REF_NAME =~ /^opensbi/' # or the branch/tag starts with 'opensbi'
> + when: always
> + - if: '$CI_COMMIT_MESSAGE =~ /opensbi/i' # or last commit description contains 'OpenSBI'
> + when: always
> + artifacts:
> + paths: # 'artifacts.zip' will contains the following files:
> + - pc-bios/opensbi-riscv32-sifive_u-fw_jump.bin
> + - pc-bios/opensbi-riscv32-virt-fw_jump.bin
> + - pc-bios/opensbi-riscv64-sifive_u-fw_jump.bin
> + - pc-bios/opensbi-riscv64-virt-fw_jump.bin
> + - opensbi32-virt-stdout.log
> + - opensbi32-virt-stderr.log
> + - opensbi64-virt-stdout.log
> + - opensbi64-virt-stderr.log
> + - opensbi32-sifive_u-stdout.log
> + - opensbi32-sifive_u-stderr.log
> + - opensbi64-sifive_u-stdout.log
> + - opensbi64-sifive_u-stderr.log
> + image: $CI_REGISTRY_IMAGE:opensbi-cross-build
> + variables:
> + GIT_DEPTH: 3
> + script: # Clone the required submodules and build OpenSBI
> + - git submodule update --init roms/opensbi
> + - export JOBS=$(($(getconf _NPROCESSORS_ONLN) + 1))
> + - echo "=== Using ${JOBS} simultaneous jobs ==="
> + - make -j${JOBS} -C roms/opensbi clean
> + - make -j${JOBS} -C roms opensbi32-virt 2>&1 1>opensbi32-virt-stdout.log | tee -a opensbi32-virt-stderr.log >&2
> + - make -j${JOBS} -C roms/opensbi clean
> + - make -j${JOBS} -C roms opensbi64-virt 2>&1 1>opensbi64-virt-stdout.log | tee -a opensbi64-virt-stderr.log >&2
> + - make -j${JOBS} -C roms/opensbi clean
> + - make -j${JOBS} -C roms opensbi32-sifive_u 2>&1 1>opensbi32-sifive_u-stdout.log | tee -a opensbi32-sifive_u-stderr.log >&2
> + - make -j${JOBS} -C roms/opensbi clean
> + - make -j${JOBS} -C roms opensbi64-sifive_u 2>&1 1>opensbi64-sifive_u-stdout.log | tee -a opensbi64-sifive_u-stderr.log >&2
> diff --git a/.gitlab-ci.d/opensbi/Dockerfile b/.gitlab-ci.d/opensbi/Dockerfile
> new file mode 100644
> index 0000000..4ba8a4d
> --- /dev/null
> +++ b/.gitlab-ci.d/opensbi/Dockerfile
> @@ -0,0 +1,33 @@
> +#
> +# Docker image to cross-compile OpenSBI firmware binaries
> +#
> +FROM ubuntu:18.04
> +
> +MAINTAINER Bin Meng <bmeng.cn@gmail.com>
> +
> +# Install packages required to build OpenSBI
> +RUN apt update \
> + && \
> + \
> + DEBIAN_FRONTEND=noninteractive \
> + apt install --assume-yes --no-install-recommends \
> + build-essential \
> + ca-certificates \
> + git \
> + make \
> + wget \
> + && \
> + \
> + rm -rf /var/lib/apt/lists/*
> +
> +# Manually install the kernel.org "Crosstool" based toolchains for gcc-8.3
> +RUN wget -O - \
> + https://mirrors.edge.kernel.org/pub/tools/crosstool/files/bin/x86_64/8.3.0/x86_64-gcc-8.3.0-nolibc-riscv32-linux.tar.xz \
> + | tar -C /opt -xJ
> +RUN wget -O - \
> + https://mirrors.edge.kernel.org/pub/tools/crosstool/files/bin/x86_64/8.3.0/x86_64-gcc-8.3.0-nolibc-riscv64-linux.tar.xz \
> + | tar -C /opt -xJ
> +
> +# Export the toolchains to the system path
> +ENV PATH="/opt/gcc-8.3.0-nolibc/riscv32-linux/bin:${PATH}"
> +ENV PATH="/opt/gcc-8.3.0-nolibc/riscv64-linux/bin:${PATH}"
> diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
> index c15e394..4c3a72b 100644
> --- a/.gitlab-ci.yml
> +++ b/.gitlab-ci.yml
> @@ -1,5 +1,6 @@
> include:
> - local: '/.gitlab-ci-edk2.yml'
> + - local: '/.gitlab-ci-opensbi.yml'
>
> before_script:
> - apt-get update -qq
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 0/4] riscv: Upgrade OpenSBI to v0.6 and add 32-bit sifive_u bios image
2020-02-24 13:39 [PATCH v2 0/4] riscv: Upgrade OpenSBI to v0.6 and add 32-bit sifive_u bios image Bin Meng
` (4 preceding siblings ...)
2020-03-01 2:47 ` [PATCH v2 0/4] riscv: Upgrade OpenSBI to v0.6 and add 32-bit sifive_u bios image Bin Meng
@ 2020-03-06 0:06 ` Palmer Dabbelt
5 siblings, 0 replies; 11+ messages in thread
From: Palmer Dabbelt @ 2020-03-06 0:06 UTC (permalink / raw)
To: bmeng.cn
Cc: philmd, Alistair Francis, Bastian Koppelmann, sagark, qemu-devel,
qemu-riscv
On Mon, 24 Feb 2020 05:39:40 PST (-0800), bmeng.cn@gmail.com wrote:
>
> This series advances the roms/opensbi submodule to the v0.6 release,
> and builds and captures platform firmware binaries from that release.
>
> A 32-bit sifive_u bios image has also been added, so that we can have
> 32-bit test coverage for SiFive specific drivers that cannot be done
> with the 'virt' machine.
>
> Two GitLab CI jobs are added to build the OpenSBI firmware binaries.
>
> Changes in v2:
> - new patch: Upgrade opensbi from v0.5 to v0.6
> - Update the 32-bit sifive_u bios image to OpenSBI v0.6
> - new patch: Add GitLab jobs to build OpenSBI firmware binaries
>
> Bin Meng (4):
> roms: opensbi: Upgrade from v0.5 to v0.6
> roms: opensbi: Add 32-bit firmware image for sifive_u machine
> riscv: sifive_u: Update BIOS_FILENAME for 32-bit
> gitlab-ci.yml: Add jobs to build OpenSBI firmware binaries
>
> .gitlab-ci-opensbi.yml | 63 +++++++++++++++++++++++++++
> .gitlab-ci.d/opensbi/Dockerfile | 33 ++++++++++++++
> .gitlab-ci.yml | 1 +
> Makefile | 2 +-
> hw/riscv/sifive_u.c | 6 ++-
> pc-bios/opensbi-riscv32-sifive_u-fw_jump.bin | Bin 0 -> 49472 bytes
> pc-bios/opensbi-riscv32-virt-fw_jump.bin | Bin 40984 -> 41280 bytes
> pc-bios/opensbi-riscv64-sifive_u-fw_jump.bin | Bin 49160 -> 53760 bytes
> pc-bios/opensbi-riscv64-virt-fw_jump.bin | Bin 45064 -> 49664 bytes
> roms/Makefile | 7 +++
> roms/opensbi | 2 +-
> 11 files changed, 111 insertions(+), 3 deletions(-)
> create mode 100644 .gitlab-ci-opensbi.yml
> create mode 100644 .gitlab-ci.d/opensbi/Dockerfile
> create mode 100644 pc-bios/opensbi-riscv32-sifive_u-fw_jump.bin
Thanks. This is in the queue, aside from that somewhat pedantic issue about
the CI stuff it's good to go!
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2020-03-06 0:07 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-02-24 13:39 [PATCH v2 0/4] riscv: Upgrade OpenSBI to v0.6 and add 32-bit sifive_u bios image Bin Meng
2020-02-24 13:39 ` [PATCH v2 1/4] roms: opensbi: Upgrade from v0.5 to v0.6 Bin Meng
2020-02-24 16:58 ` Alistair Francis
2020-02-24 13:39 ` [PATCH v2 2/4] roms: opensbi: Add 32-bit firmware image for sifive_u machine Bin Meng
2020-02-24 18:33 ` Alistair Francis
2020-02-24 13:39 ` [PATCH v2 3/4] riscv: sifive_u: Update BIOS_FILENAME for 32-bit Bin Meng
2020-02-24 13:39 ` [PATCH v2 4/4] gitlab-ci.yml: Add jobs to build OpenSBI firmware binaries Bin Meng
2020-02-24 19:15 ` Alistair Francis
2020-03-06 0:02 ` Palmer Dabbelt
2020-03-01 2:47 ` [PATCH v2 0/4] riscv: Upgrade OpenSBI to v0.6 and add 32-bit sifive_u bios image Bin Meng
2020-03-06 0:06 ` Palmer Dabbelt
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).