[PATCH 0/3] Subject: [PATCH v3] lib: sbi: Add RISC-V Smrnmi extension support
Nylon Chen
nylon.chen at sifive.com
Thu Jan 29 00:13:40 PST 2026
This patch series adds support for the RISC-V Smrnmi (Resumable
Non-Maskable Interrupts) extension to OpenSBI
1. PATCH 1/3: Add Smrnmi extension detection
- Defines Smrnmi CSR registers and MNSTATUS bit definitions
- Registers the Smrnmi extension in hart extension enumeration
2. PATCH 2/3: Enable Smrnmi extension handler
- Implements sbi_rnmi_vector_init() to allocate per-HART RNMI context
- Adds platform operation set_rnmi_trap_vector() for trap vector programming
- Adds suspend/resume support for RNMI CSRs
3. PATCH 3/3: Add common NMI trap handler
- Implements sbi_rnmi_vector assembly entry point in fw_base.S
- Implements default sbi_rnmi_trap_handler() in C
- Enables RNMI via MNSTATUS.NMIE after trap handler is set up
Changes in v3:
- Split single patch into three-patch series per Anup's feedback:
* PATCH 1: Add Smrnmi extension detection (without enabling NMI)
* PATCH 2: Add common NMI trap handler in fw_base.S
* PATCH 3: Enable NMI handling with proper infrastructure
- Added platform abstraction via set_rnmi_trap_vector() callback
- Added per-HART RNMI context allocation
- Added suspend/resume support for RNMI CSRs
Changes in v2:
- Remove hart_smrnmi_get_allowed() and use sbi_hart_has_extension() for Smrnmi detection.
Co-developed-by: Zong Li <zong.li at sifive.com>
Signed-off-by: Zong Li <zong.li at sifive.com>
Suggested-by: Nick Hu <nick.hu at sifive.com>
Suggested-by: Samuel Holland <samuel.holland at sifive.com>
Signed-off-by: Nylon Chen <nylon.chen at sifive.com>
Signed-off-by: Yong-Xuan Wang <yongxuan.wang at sifive.com>
---
Nylon Chen (3):
lib: sbi: Add Smrnmi extension detection
lib: sbi: Enable Smrnmi extension handler
firmware: fw_base.S: Add common NMI trap handler
firmware/fw_base.S | 64 ++++++++++++++++++++++++++++++++++++++++++++
include/sbi/riscv_encoding.h | 11 ++++++++
include/sbi/sbi_hart.h | 3 +++
include/sbi/sbi_platform.h | 9 +++++++
include/sbi/sbi_trap.h | 12 +++++++--
lib/sbi/sbi_hart.c | 52 +++++++++++++++++++++++++++++++++++
lib/sbi/sbi_hsm.c | 10 +++++++
lib/sbi/sbi_init.c | 8 ++++++
lib/sbi/sbi_trap.c | 16 +++++++++++
9 files changed, 183 insertions(+), 2 deletions(-)
---
base-commit: 74434f255873d74e56cc50aa762d1caf24c099f8
change-id: 20260128-smrnmi-v3-8db10bc24df9
Best regards,
--
Nylon Chen <nylon.chen at sifive.com>
More information about the opensbi
mailing list