[kvm-unit-tests PATCH 0/7] riscv: ACPI boot and BRS-I SBI tests

Xiang W wangxiang at iscas.ac.cn
Tue Oct 6 05:55:57 PDT 2026


在 2026-09-30三的 13:22 +0200,Andrew Jones写道:
> 
> Thanks for this series, Xiang. I'm glad to see kvm-unit-tests getting
> used. But please make sure you work with the RVI BRS community to ensure
> your work is aligned with their plans.
> 
> Thanks,
> drew

Thanks for your review;
I will try to get in touch with the RVI BRS community. 
I will make modifications based on your suggestions in the next patch.

Regards,
Xiang W
> 
> On Thu, Sep 24, 2026 at 11:39:38AM +0800, Xiang W wrote:
> > Hi,
> > 
> > This series lets RISC-V kvm-unit-tests boot on BRS-I platforms that
> > describe the system with UEFI + ACPI instead of a device tree, and adds
> > a first unit test for the SBI rules in the RISC-V Boot and Runtime
> > Services specification [1].
> > 
> > The RISC-V port currently assumes a DT for CPU bring-up, timer
> > frequency, ISA-string parsing and console setup. BRS-I firmware
> > typically does not provide a usable DT, and often has no MMIO UART
> > either. Without these changes the existing tests abort in setup before
> > they can exercise SBI.
> > 
> > Patches 1-4 teach the RISC-V library to initialize from ACPI when a DT
> > is absent:
> > 
> >   - locate the ACPI 2.0 RSDP via the EFI configuration table
> >   - parse MADT RINTC entries for hart / CPU bring-up
> >   - read the timebase frequency from RHCT
> >   - parse the ISA string from RHCT Hart Info nodes (match by ACPI UID)
> > 
> > The RSDP is left in EFI_ACPI_RECLAIM_MEMORY; the RISC-V allocator does
> > not reuse that region, so the table is not copied aside.
> > 
> > Patch 5 splits CONFIG_SBI_CONSOLE out of the UART driver. io_init()
> > becomes a no-op and puts() issues SBI DBCN CONSOLE_WRITE directly, so
> > EFI/ACPI guests no longer depend on a described MMIO UART to print.
> > 
> > Patch 6 drops the EFI runner's EFI_USE_ACPI=y early exit. The runner
> > already omits -machine acpi=off in that case; QEMU virt defaults to
> > ACPI enabled.
> > 
> > Patch 7 adds riscv/riscv-brs.c for:
> > 
> >   SBI_010  spec version >= 2.0
> >   SBI_020  HSM required
> >   SBI_030  TIME required unless Sstc
> >   SBI_040  IPI required unless Ssaia
> >   SBI_050  RFENCE required unless Ssaia
> >   SBI_060  PMU required unless Smcsrind + Sscsrind + Smcdeleg + Ssccfg
> >   SBI_070  DBCN required when ACPI SPCR Interface Type is 0x15
> > 
> > The new test is in group "riscv-brs nodefault", so it is not part of
> > the default run_tests.sh pass. DT-only QEMU virt is unchanged.
> > 
> > Based on kvm-unit-tests master (5a221342).
> > 
> > [1] https://github.com/riscv-non-isa/riscv-brs
> > 
> > Testing
> > =======
> > Build:
> > 
> >   ./configure --arch=riscv64 \
> >               --cross-prefix=riscv64-linux-gnu- \
> >               --console=sbi --enable-efi && make
> > 
> > EFI + ACPI (BRS-I style):
> > 
> >   EFI_USE_ACPI=y EFI_UEFI=/path/to/RISCV_VIRT_CODE.fd \
> >     ./riscv/efi/run riscv/riscv-brs.efi
> > 
> > Please review.
> > 
> > Xiang W (7):
> >   riscv: Initialize the ACPI RSDP from the EFI system table
> >   riscv: Add ACPI support for CPU initialization
> >   riscv: Add ACPI support for timer frequency discovery
> >   riscv: Add ACPI support for ISA string discovery
> >   riscv: Decouple SBI console from UART init
> >   riscv: efi: Allow ACPI boots
> >   riscv: Add BRS SBI requirement tests
> > 
> >  lib/acpi.h                |  67 ++++++++++++++-
> >  lib/riscv/asm/isa.h       |   5 ++
> >  lib/riscv/asm/processor.h |   1 +
> >  lib/riscv/asm/sbi.h       |   2 +
> >  lib/riscv/io.c            |  50 +++++------
> >  lib/riscv/isa.c           |  82 ++++++++++++++++--
> >  lib/riscv/setup.c         |  55 ++++++++++++
> >  lib/riscv/timer.c         |  37 ++++++---
> >  riscv/Makefile            |   1 +
> >  riscv/efi/run             |   5 --
> >  riscv/riscv-brs.c         | 171 ++++++++++++++++++++++++++++++++++++++
> >  riscv/unittests.cfg       |   4 +
> >  12 files changed, 424 insertions(+), 56 deletions(-)
> >  create mode 100644 riscv/riscv-brs.c
> > 
> > -- 
> > 2.47.3
> > 




More information about the kvm-riscv mailing list