[PATCH v2 0/9] Add RISC-V Worlds ISA support to OpenSBI
Yu-Chien Peter Lin <[email protected]>
| Newsgroups | org.infradead.lists.opensbi |
|---|---|
| Message-ID | <[email protected]> |
This patch series adds support for RISC-V Worlds ISA extensions, enabling hardware-enforced isolation boundaries based on World IDs by extending the OpenSBI domain framework. Trust Model and Boot-time Roles -------------------------------- The implementation follows the two-phase M-mode trust model: - RoT M-mode phase: Prior boot stage (ROM/SPL) that may program mwid and mlwidlist and lock mwid before handing off to OpenSBI. - Regular M-mode phase (OpenSBI): Treats pmwid/pmwidlist/pmlwidlist as input policy from hardware/RoT. Locks mwid to prevent later M-mode code from changing its own WID. Programs per-domain mlwid/mwiddeleg based on DT 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 domain_support.md): - wid: S-mode WID for this domain - widdeleg: WID delegation bitmap for this domain If a domain node lacks wid, OpenSBI falls back to M-mode WID, all modes will run in the same World. [1] https://patchwork.kernel.org/project/linux-riscv/cover/[email protected]/ 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_hart: add WID protection mechanism lib: sbi_domain_context: add slwid to per-domain S-mode context 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 | 16 ++++++ 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 | 31 ++++++++++ lib/sbi/sbi_domain_context.c | 13 +++++ lib/sbi/sbi_hart.c | 38 ++++++++++++ lib/sbi/sbi_hart_worlds.c | 72 +++++++++++++++++++++++ lib/sbi/sbi_init.c | 13 +++++ lib/utils/fdt/fdt_domain.c | 50 ++++++++++++++++ lib/utils/fdt/fdt_helper.c | 92 ++++++++++++++++++++++++++++++ platform/generic/platform.c | 13 ++++- 16 files changed, 420 insertions(+), 1 deletion(-) create mode 100644 include/sbi/sbi_hart_worlds.h create mode 100644 lib/sbi/sbi_hart_worlds.c -- 2.43.7 -- opensbi mailing list [email protected] http://lists.infradead.org/mailman/listinfo/opensbi