[PATCH v3 0/9] Add RISC-V Worlds ISA support to OpenSBI

Anup Patel anup at brainfault.org
Wed Oct 28 04:20:24 PDT 2026


Hi Peter,

On Tue, Oct 27, 2026 at 2:05 PM Yu-Chien Peter Lin <peter.lin at sifive.com> wrote:
>
> This patch series adds support for the RISC-V Worlds ISA extensions in
> OpenSBI, introducing a WID-based hart protection backend to enforce
> hardware isolation boundaries across domains.
>
> Trust Model and Boot-time Roles
> -------------------------------
>
> The implementation adheres to the two-phase M-mode trust model:
>
> - RoT M-mode phase: An earlier boot stage (e.g., ROM or SPL) may program
>   mwid and mlwidlist, locking mwid prior to handing off execution to
>   OpenSBI.
>
> - Regular M-mode phase (OpenSBI): OpenSBI treats the non-ISA platform
>   constraints (pmwid, pmwidlist, pmlwidlist) and CSR states (mwid,
>   mlwidlist) as immutable input policies from the hardware/RoT. It locks
>   mwid if still unlocked, preventing subsequent M-mode software from
>   altering its own WID, and programs per-domain mlwid and mwiddeleg based
>   on device tree configuration.
>
> Device Tree Bindings
> --------------------
>
> Per-hart properties defined in Linux kernel DT bindings v3 [1]:
> - riscv,pmwid: M-mode World ID
> - riscv,pmwidlist: M-mode permitted WID bitmap
> - riscv,pmlwidlist: S/U-mode permitted WID bitmap
>
> Per-domain properties (see docs/domain_support.md):
> - wid: World ID assigned to this domain for S/U-mode
> - widdeleg: WID delegation bitmap for this domain
>
> Changes since v2
> ----------------
> - Make 'wid' property mandatory for all domains (including root) when
>   Smlwid is implemented; reject misconfigured domains at boot.
> - Remove M-mode WID fallback logic (mwid/pmwid) for S-mode domain WID.
> - Validate domain wid and widdeleg against pmlwidlist and mlwidlist masks.
> - Introduce a new patch to propagate error from sbi_hart_protection_reconfigure()
>   in sbi_domain_context.
> - Adapt to upstream domain state framework API rename (sbi_domain_data ->
>   sbi_domain_state).
> - Update documentation and boot log output accordingly.
>
> [1] https://patchwork.kernel.org/project/linux-riscv/cover/20260812122131.1534906-1-peter.lin@sifive.com/
>
> Yu-Chien Peter Lin (9):
>   lib: sbi_hart: detect RISC-V Worlds ISA extensions
>   lib: utils: fdt_helper: parse RISC-V Worlds per-hart WID properties
>   lib: fdt_domain: parse domain WID properties
>   lib: sbi_hart: lock mwid CSR for RoT immutability
>   lib: sbi_domain_context: propagate error from
>     sbi_hart_protection_reconfigure
>   lib: sbi_hart_worlds: Implement WID hart protection backend
>   include: sbi_types: add PRIx64 format macro
>   lib: sbi: display World ID configuration at boot
>   docs: document WID DT properties
>
>  docs/domain_support.md             |  36 +++++
>  include/sbi/riscv_encoding.h       |  12 ++
>  include/sbi/sbi_domain.h           |   6 +
>  include/sbi/sbi_hart.h             |  15 +++
>  include/sbi/sbi_hart_worlds.h      |  24 ++++
>  include/sbi/sbi_types.h            |   2 +
>  include/sbi_utils/fdt/fdt_helper.h |   2 +
>  lib/sbi/objects.mk                 |   1 +
>  lib/sbi/sbi_domain.c               |  20 +++
>  lib/sbi/sbi_domain_context.c       |   5 +-
>  lib/sbi/sbi_hart.c                 |  38 ++++++
>  lib/sbi/sbi_hart_worlds.c          | 210 +++++++++++++++++++++++++++++
>  lib/sbi/sbi_init.c                 |  13 ++
>  lib/utils/fdt/fdt_domain.c         |  84 ++++++++++++
>  lib/utils/fdt/fdt_helper.c         |  90 +++++++++++++
>  platform/generic/platform.c        |  13 +-
>  16 files changed, 569 insertions(+), 2 deletions(-)
>  create mode 100644 include/sbi/sbi_hart_worlds.h
>  create mode 100644 lib/sbi/sbi_hart_worlds.c
>
> --
> 2.43.7
>

Overall, this series is in great shape. Once, I will
merge once my comments are addressed.

Thanks,
Anup



More information about the opensbi mailing list