From e603a18647e97e306e9f887ffcf45cae19f56445 Mon Sep 17 00:00:00 2001 From: Moody Liu Date: Thu, 15 Aug 2024 17:03:33 +0100 Subject: [PATCH] testing: support riscv64 --- tools/testing/main.py | 30 +++++++++++++++++++++++++----- tools/testing/utils/QemuProcess.py | 5 +++++ 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/tools/testing/main.py b/tools/testing/main.py index 7fdf9a74..857dc973 100755 --- a/tools/testing/main.py +++ b/tools/testing/main.py @@ -101,13 +101,20 @@ def main(): builder.memory(args.memory_size) builder.smp(args.smp) builder.machine(QEMU_ARCH_ARGS[args.arch]['machine']) - builder.cpu(QEMU_ARCH_ARGS[args.arch]['cpu']) - builder.bios(QEMU_ARCH_ARGS[args.arch]['bios']) + + if "cpu" in QEMU_ARCH_ARGS[args.arch]: + builder.cpu(QEMU_ARCH_ARGS[args.arch]['cpu']) + + if "bios" in QEMU_ARCH_ARGS[args.arch]: + builder.bios(QEMU_ARCH_ARGS[args.arch]['bios']) + builder.chardev("stdio", id='serial0', logfile=args.serial_log_file) - builder.chardev('file', id='syslog', path=args.kernel_log_file) builder.serial('chardev:serial0') + + builder.chardev('file', id='syslog', path=args.kernel_log_file) builder.serial('chardev:syslog') - builder.drive(format='raw', file='fat:rw:uefi-files/') + + builder.drive(id='hd0', format='raw', file='fat:rw:uefi-files/') if args.kvm: builder.accel('kvm') @@ -121,7 +128,20 @@ def main(): builder.add_raw_arg('-S') CMDLINE = KernelCommandLine() - CMDLINE.printk_console = 'serial_com2' + + if args.arch == "riscv64": + builder.device('qemu-xhci') + builder.device('usb-kbd') + builder.device('usb-mouse') + builder.device('ramfb') + builder.device('virtio-scsi-pci') + builder.device('scsi-hd,drive=hd0') + drive_kwargs = {'if': 'pflash', 'unit': '0', 'format': 'raw', 'file': '/opt/ovmf-riscv64.fd'} + builder.drive(**drive_kwargs) + + if args.arch == 'x86_64': + CMDLINE.printk_console = 'serial_com2' + CMDLINE.mos_tests = args.kernel_tests CMDLINE.init_args = '-j' CMDLINE.debug.extend(args.kernel_debug) diff --git a/tools/testing/utils/QemuProcess.py b/tools/testing/utils/QemuProcess.py index f784f66a..55a86c27 100644 --- a/tools/testing/utils/QemuProcess.py +++ b/tools/testing/utils/QemuProcess.py @@ -21,6 +21,10 @@ class QemuDeadError(Exception): 'cpu': 'max', 'bios': '/usr/share/ovmf/x64/OVMF.4m.fd', }, + 'riscv64': { + 'machine': 'virt', + 'cpu': 'rv64', + }, } @@ -95,6 +99,7 @@ class QemuProcessBuilder: 'accel': '-accel', 'serial': '-serial', 'display': '-display', + 'device': '-device', } def __init__(self, qemu_path: str):