Skip to content

feat(riscv64): add imsic driver - #2738

Draft
sbutz wants to merge 5 commits into
hermit-os:mainfrom
sbutz:imsic
Draft

sbutz wants to merge 5 commits into
hermit-os:mainfrom
sbutz:imsic

Conversation

@sbutz

@sbutz sbutz commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

Part 2/2 of supporting RISC-V Advanced Interrupt Architecture (AIA) #2614.

Extracted from: #2689
Based on #2731.

  • adds driver for IMSIC
  • if IMSIC is available use APLIC in MSI mode
  • send IPI as MSI
  • support MSI for PCI devices

@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: 532bbbb Previous: 2e23902 Performance Ratio
startup_benchmark Build Time 100.74 s 80.34 s 1.25 ❗
startup_benchmark File Size 0.85 MB 0.80 MB 1.06 ❗
Startup Time - 1 core 0.74 s (±0.03 s) 0.75 s (±0.02 s) 0.99
Startup Time - 2 cores 0.73 s (±0.02 s) 0.74 s (±0.02 s) 1.00
Startup Time - 4 cores 0.73 s (±0.02 s) 0.74 s (±0.02 s) 0.98
multithreaded_benchmark Build Time 93.57 s 82.11 s 1.14 ❗
multithreaded_benchmark File Size 0.94 MB 0.86 MB 1.09 ❗
Multithreaded Pi Efficiency - 2 Threads 86.00 % (±8.45 %) 85.89 % (±6.61 %) 1.00
Multithreaded Pi Efficiency - 4 Threads 43.34 % (±3.81 %) 43.43 % (±2.56 %) 1.00
Multithreaded Pi Efficiency - 8 Threads 25.58 % (±1.51 %) 25.76 % (±1.53 %) 0.99
micro_benchmarks Build Time 91.70 s 80.40 s 1.14 ❗
micro_benchmarks File Size 0.94 MB 0.86 MB 1.09 ❗
Scheduling time - 1 thread 65.04 ticks (±2.30 ticks) 62.65 ticks (±4.06 ticks) 1.04
Scheduling time - 2 threads 35.91 ticks (±4.23 ticks) 34.08 ticks (±4.10 ticks) 1.05
Micro - Time for syscall (getpid) 3.59 ticks (±0.58 ticks) 3.45 ticks (±0.58 ticks) 1.04
Memcpy speed - (built_in) block size 4096 78974.34 MByte/s (±55156.00 MByte/s) 82448.38 MByte/s (±56997.13 MByte/s) 0.96
Memcpy speed - (built_in) block size 1048576 30245.35 MByte/s (±24474.47 MByte/s) 30585.98 MByte/s (±24707.84 MByte/s) 0.99
Memcpy speed - (built_in) block size 16777216 26943.93 MByte/s (±22295.51 MByte/s) 26340.06 MByte/s (±21720.96 MByte/s) 1.02
Memset speed - (built_in) block size 4096 79628.52 MByte/s (±55602.89 MByte/s) 82292.76 MByte/s (±56891.50 MByte/s) 0.97
Memset speed - (built_in) block size 1048576 31011.41 MByte/s (±24930.66 MByte/s) 31323.85 MByte/s (±25145.86 MByte/s) 0.99
Memset speed - (built_in) block size 16777216 27726.52 MByte/s (±22792.26 MByte/s) 27104.68 MByte/s (±22209.94 MByte/s) 1.02
Memcpy speed - (rust) block size 4096 75079.80 MByte/s (±52179.74 MByte/s) 74097.96 MByte/s (±51811.44 MByte/s) 1.01
Memcpy speed - (rust) block size 1048576 30278.61 MByte/s (±24540.95 MByte/s) 30361.60 MByte/s (±24602.37 MByte/s) 1.00
Memcpy speed - (rust) block size 16777216 26710.22 MByte/s (±22128.12 MByte/s) 27625.34 MByte/s (±22806.88 MByte/s) 0.97
Memset speed - (rust) block size 4096 75251.23 MByte/s (±52294.11 MByte/s) 74373.47 MByte/s (±51976.48 MByte/s) 1.01
Memset speed - (rust) block size 1048576 31023.93 MByte/s (±24963.64 MByte/s) 31110.89 MByte/s (±25033.24 MByte/s) 1.00
Memset speed - (rust) block size 16777216 27489.42 MByte/s (±22623.20 MByte/s) 28386.93 MByte/s (±23265.03 MByte/s) 0.97
alloc_benchmarks Build Time 82.78 s 74.76 s 1.11 ❗
alloc_benchmarks File Size 0.93 MB 0.87 MB 1.06 ❗
Allocations - Allocation success 91.37 % 91.31 % 1.00 ❗
Allocations - Deallocation success 100.00 % 100.00 % 1
Allocations - Pre-fail Allocations 61.61 % 61.44 % 1.00 ❗
Allocations - Average Allocation time 3736.67 Ticks (±902.61 Ticks) 5860.58 Ticks (±98.43 Ticks) 0.64 ❗
Allocations - Average Allocation time (no fail) 4713.95 Ticks (±816.93 Ticks) 6554.81 Ticks (±92.86 Ticks) 0.72 ❗
Allocations - Average Deallocation time 1294.81 Ticks (±196.12 Ticks) 1805.01 Ticks (±250.35 Ticks) 0.72 ❗
mutex_benchmark Build Time 110.48 s 79.82 s 1.38 ❗
mutex_benchmark File Size 0.94 MB 0.86 MB 1.09 ❗
Mutex Stress Test Average Time per Iteration - 1 Threads 12.36 ns (±0.48 ns) 12.10 ns (±0.41 ns) 1.02
Mutex Stress Test Average Time per Iteration - 2 Threads 70.30 ns (±3.17 ns) 40.26 ns (±1.68 ns) 1.75 ❗

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

This branch has not been deployed

No deployments
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