From: Simon Glass <simon.glass@canonical.com> The build-qemu script accepts --arch riscv via build_helper's argument parser but raises ValueError since no riscv block exists. Add RISC-V support with: - Board names qemu-riscv64/qemu-riscv32 (and _spl variants) - QEMU binary selection (qemu-system-riscv64/riscv32) - Machine type 'virt' with TCG acceleration - Tianocore firmware path (RISCV_VIRT_CODE.fd) - virtio-gpu-pci display setup (shared with arm, since the virt machine has no native VGA) Co-developed-by: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Simon Glass <simon.glass@canonical.com> --- scripts/build-qemu | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/scripts/build-qemu b/scripts/build-qemu index 4f77eb88167..5c69457647e 100755 --- a/scripts/build-qemu +++ b/scripts/build-qemu @@ -9,7 +9,7 @@ It assumes that board config - your OS images are in ${imagedir}/{distroname}/ -So far the script supports only ARM and x86 +So far the script supports ARM, RISC-V and x86 """ import argparse @@ -122,6 +122,8 @@ class BuildQemu: elif args.use_tianocore: if args.arch == 'arm': bios_override = Path(self.tiano, 'OVMF-pure-efi.aarch64.fd.64m') + elif args.arch == 'riscv': + bios_override = Path(self.tiano, 'RISCV_VIRT_CODE.fd') else: bios_override = Path(self.tiano, 'OVMF-pure-efi.x64.fd') if not bios_override.exists(): @@ -156,6 +158,23 @@ class BuildQemu: self.board = 'qemu_arm64' self.helper.qemu = 'qemu-system-aarch64' self.qemu_extra.extend(['-cpu', 'cortex-a57']) + elif args.arch == 'riscv': + if args.xpl: + self.board = 'qemu-riscv64_spl' + default_bios = 'u-boot.bin' + else: + self.board = 'qemu-riscv64' + default_bios = 'u-boot.bin' + self.helper.qemu = 'qemu-system-riscv64' + self.qemu_extra.extend(['-machine', 'virt']) + if not args.kvm: + self.qemu_extra.extend(['-accel', 'tcg']) + if self.helper.bitness == 32: + if args.xpl: + self.board = 'qemu-riscv32_spl' + else: + self.board = 'qemu-riscv32' + self.helper.qemu = 'qemu-system-riscv32' elif args.arch == 'x86': self.board = 'qemu-x86' default_bios = 'u-boot.rom' @@ -291,7 +310,7 @@ class BuildQemu: # SCT usually runs headlessly if self.args.serial_only or self.args.sct_seq: qemu_cmd.extend(['-display', 'none']) - elif self.args.arch == 'arm': + elif self.args.arch in ('arm', 'riscv'): qemu_cmd.extend(['-device', 'virtio-gpu-pci']) qemu_cmd.extend(['-device', 'qemu-xhci', '-device', 'usb-kbd', '-device', 'usb-tablet', '-device', 'usb-mouse']) -- 2.43.0