Skip to content

feat(riscv): Support advanced interrupt architecture - #2689

Open
sbutz wants to merge 8 commits into
hermit-os:mainfrom
sbutz:sb/riscv_aia
Open

feat(riscv): Support advanced interrupt architecture#2689
sbutz wants to merge 8 commits into
hermit-os:mainfrom
sbutz:sb/riscv_aia

Conversation

@sbutz

@sbutz sbutz commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Implements #2614.

Feature flag is added in hermit-os/hermit-rs#1077.

Follow-up tasks:

  • For each configured msix vector. The external interrupt with the same number is enabled too. This might incur unnecessary cpu traps. Proposed solution: Implement msi vector allocator and store handlers per imsic.
  • Bump riscv crate once new version available.
  • Explicetly specifc cpu profile rva23s64 once ci's qemu reaches version 10.1

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark Results

Details
Benchmark Current: a129717 Previous: 2e23902 Performance Ratio
startup_benchmark Build Time 92.56 s 80.34 s 1.15
startup_benchmark File Size 0.79 MB 0.80 MB 0.99
Startup Time - 1 core 0.72 s (±0.01 s) 0.75 s (±0.02 s) 0.96
Startup Time - 2 cores 0.73 s (±0.01 s) 0.74 s (±0.02 s) 0.99
Startup Time - 4 cores 0.72 s (±0.02 s) 0.74 s (±0.02 s) 0.97
multithreaded_benchmark Build Time 91.79 s 82.11 s 1.12
multithreaded_benchmark File Size 0.88 MB 0.86 MB 1.02
Multithreaded Pi Efficiency - 2 Threads 66.81 % (±6.98 %) 85.89 % (±6.61 %) 0.78
Multithreaded Pi Efficiency - 4 Threads 40.71 % (±2.90 %) 43.43 % (±2.56 %) 0.94
Multithreaded Pi Efficiency - 8 Threads 19.46 % (±1.65 %) 25.76 % (±1.53 %) 0.76
micro_benchmarks Build Time 217.34 s 80.40 s 2.70
micro_benchmarks File Size 0.88 MB 0.86 MB 1.02
Scheduling time - 1 thread 185.31 ticks (±37.95 ticks) 62.65 ticks (±4.06 ticks) 2.96
Scheduling time - 2 threads 107.21 ticks (±22.78 ticks) 34.08 ticks (±4.10 ticks) 3.15
Micro - Time for syscall (getpid) 9.24 ticks (±4.42 ticks) 3.45 ticks (±0.58 ticks) 2.68
Memcpy speed - (built_in) block size 4096 60164.87 MByte/s (±42353.11 MByte/s) 82448.38 MByte/s (±56997.13 MByte/s) 0.73
Memcpy speed - (built_in) block size 1048576 13833.16 MByte/s (±11411.08 MByte/s) 30585.98 MByte/s (±24707.84 MByte/s) 0.45
Memcpy speed - (built_in) block size 16777216 12495.75 MByte/s (±10427.00 MByte/s) 26340.06 MByte/s (±21720.96 MByte/s) 0.47
Memset speed - (built_in) block size 4096 60059.06 MByte/s (±42299.43 MByte/s) 82292.76 MByte/s (±56891.50 MByte/s) 0.73
Memset speed - (built_in) block size 1048576 14065.79 MByte/s (±11523.72 MByte/s) 31323.85 MByte/s (±25145.86 MByte/s) 0.45
Memset speed - (built_in) block size 16777216 12719.27 MByte/s (±10516.45 MByte/s) 27104.68 MByte/s (±22209.94 MByte/s) 0.47
Memcpy speed - (rust) block size 4096 53538.06 MByte/s (±39144.57 MByte/s) 74097.96 MByte/s (±51811.44 MByte/s) 0.72
Memcpy speed - (rust) block size 1048576 14581.29 MByte/s (±12498.96 MByte/s) 30361.60 MByte/s (±24602.37 MByte/s) 0.48
Memcpy speed - (rust) block size 16777216 12177.34 MByte/s (±10081.97 MByte/s) 27625.34 MByte/s (±22806.88 MByte/s) 0.44
Memset speed - (rust) block size 4096 53825.05 MByte/s (±39326.54 MByte/s) 74373.47 MByte/s (±51976.48 MByte/s) 0.72
Memset speed - (rust) block size 1048576 14829.51 MByte/s (±12591.42 MByte/s) 31110.89 MByte/s (±25033.24 MByte/s) 0.48
Memset speed - (rust) block size 16777216 12438.19 MByte/s (±10199.57 MByte/s) 28386.93 MByte/s (±23265.03 MByte/s) 0.44
alloc_benchmarks Build Time 211.56 s 74.76 s 2.83
alloc_benchmarks File Size 0.87 MB 0.87 MB 0.99
Allocations - Allocation success 91.38 % 91.31 % 1.00
Allocations - Deallocation success 100.00 % 100.00 % 1
Allocations - Pre-fail Allocations 61.60 % 61.44 % 1.00
Allocations - Average Allocation time 15313.40 Ticks (±2088.42 Ticks) 5860.58 Ticks (±98.43 Ticks) 2.61
Allocations - Average Allocation time (no fail) 17287.66 Ticks (±2217.64 Ticks) 6554.81 Ticks (±92.86 Ticks) 2.64
Allocations - Average Deallocation time 7106.95 Ticks (±1267.67 Ticks) 1805.01 Ticks (±250.35 Ticks) 3.94
mutex_benchmark Build Time 226.05 s 79.82 s 2.83
mutex_benchmark File Size 0.88 MB 0.86 MB 1.02
Mutex Stress Test Average Time per Iteration - 1 Threads 33.40 ns (±7.46 ns) 12.10 ns (±0.41 ns) 2.76
Mutex Stress Test Average Time per Iteration - 2 Threads 31.38 ns (±9.02 ns) 40.26 ns (±1.68 ns) 0.78

This comment was automatically generated by workflow using github-action-benchmark.

@sbutz
sbutz marked this pull request as ready for review September 2, 2026 15:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant