[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