Skip to content

build(deps): Upgrade to arm-gic 0.9 - #2663

Merged
mkroening merged 1 commit into
hermit-os:mainfrom
Gelbpunkt:arm-gic-0.9
Aug 22, 2026
Merged

build(deps): Upgrade to arm-gic 0.9#2663
mkroening merged 1 commit into
hermit-os:mainfrom
Gelbpunkt:arm-gic-0.9

Conversation

@Gelbpunkt

@Gelbpunkt Gelbpunkt commented Aug 18, 2026

Copy link
Copy Markdown
Member

Since the arm-gic crate can now figure out whether we have a GICv3 or GICv4 on its own, we don't need to inspect the compatible of the interrupt controller node anymore.

While I'm at it, I decided to replace the hardcoded lookup path for the GIC with a lookup by compatible to ensure that we retain the previous behavior of panic on unsupport GIC version.

@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: e8cbf97 Previous: 2e23902 Performance Ratio
startup_benchmark Build Time 94.29 s 80.34 s 1.17
startup_benchmark File Size 0.78 MB 0.80 MB 0.98
Startup Time - 1 core 0.76 s (±0.01 s) 0.75 s (±0.02 s) 1.02
Startup Time - 2 cores 0.77 s (±0.02 s) 0.74 s (±0.02 s) 1.05
Startup Time - 4 cores 0.78 s (±0.01 s) 0.74 s (±0.02 s) 1.04
multithreaded_benchmark Build Time 93.12 s 82.11 s 1.13
multithreaded_benchmark File Size 0.88 MB 0.86 MB 1.03
Multithreaded Pi Efficiency - 2 Threads 66.29 % (±6.50 %) 85.89 % (±6.61 %) 0.77
Multithreaded Pi Efficiency - 4 Threads 39.75 % (±3.57 %) 43.43 % (±2.56 %) 0.92
Multithreaded Pi Efficiency - 8 Threads 19.16 % (±1.72 %) 25.76 % (±1.53 %) 0.74
micro_benchmarks Build Time 231.47 s 80.40 s 2.88
micro_benchmarks File Size 0.89 MB 0.86 MB 1.03
Scheduling time - 1 thread 191.11 ticks (±35.56 ticks) 62.65 ticks (±4.06 ticks) 3.05
Scheduling time - 2 threads 103.42 ticks (±21.80 ticks) 34.08 ticks (±4.10 ticks) 3.03
Micro - Time for syscall (getpid) 11.40 ticks (±5.37 ticks) 3.45 ticks (±0.58 ticks) 3.30
Memcpy speed - (built_in) block size 4096 56442.90 MByte/s (±40123.48 MByte/s) 82448.38 MByte/s (±56997.13 MByte/s) 0.68
Memcpy speed - (built_in) block size 1048576 14216.06 MByte/s (±12463.68 MByte/s) 30585.98 MByte/s (±24707.84 MByte/s) 0.46
Memcpy speed - (built_in) block size 16777216 11773.68 MByte/s (±9677.72 MByte/s) 26340.06 MByte/s (±21720.96 MByte/s) 0.45
Memset speed - (built_in) block size 4096 56414.59 MByte/s (±40101.56 MByte/s) 82292.76 MByte/s (±56891.50 MByte/s) 0.69
Memset speed - (built_in) block size 1048576 14547.57 MByte/s (±12625.19 MByte/s) 31323.85 MByte/s (±25145.86 MByte/s) 0.46
Memset speed - (built_in) block size 16777216 12099.86 MByte/s (±9884.46 MByte/s) 27104.68 MByte/s (±22209.94 MByte/s) 0.45
Memcpy speed - (rust) block size 4096 49324.18 MByte/s (±36376.57 MByte/s) 74097.96 MByte/s (±51811.44 MByte/s) 0.67
Memcpy speed - (rust) block size 1048576 14641.64 MByte/s (±12796.87 MByte/s) 30361.60 MByte/s (±24602.37 MByte/s) 0.48
Memcpy speed - (rust) block size 16777216 12006.77 MByte/s (±10261.69 MByte/s) 27625.34 MByte/s (±22806.88 MByte/s) 0.43
Memset speed - (rust) block size 4096 49909.76 MByte/s (±36893.86 MByte/s) 74373.47 MByte/s (±51976.48 MByte/s) 0.67
Memset speed - (rust) block size 1048576 15054.75 MByte/s (±13027.61 MByte/s) 31110.89 MByte/s (±25033.24 MByte/s) 0.48
Memset speed - (rust) block size 16777216 12427.29 MByte/s (±10545.01 MByte/s) 28386.93 MByte/s (±23265.03 MByte/s) 0.44
alloc_benchmarks Build Time 208.94 s 74.76 s 2.79
alloc_benchmarks File Size 0.86 MB 0.87 MB 0.98
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 24752.61 Ticks (±1738.97 Ticks) 5860.58 Ticks (±98.43 Ticks) 4.22
Allocations - Average Allocation time (no fail) 25896.93 Ticks (±2036.74 Ticks) 6554.81 Ticks (±92.86 Ticks) 3.95
Allocations - Average Deallocation time 7436.00 Ticks (±2253.75 Ticks) 1805.01 Ticks (±250.35 Ticks) 4.12
mutex_benchmark Build Time 210.78 s 79.82 s 2.64
mutex_benchmark File Size 0.89 MB 0.86 MB 1.03
Mutex Stress Test Average Time per Iteration - 1 Threads 36.02 ns (±8.53 ns) 12.10 ns (±0.41 ns) 2.98
Mutex Stress Test Average Time per Iteration - 2 Threads 33.20 ns (±9.72 ns) 40.26 ns (±1.68 ns) 0.82

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

Since the arm-gic crate can now figure out whether we have a GICv3 or
GICv4 on its own, we don't need to inspect the compatible of the
interrupt controller node anymore.

While I'm at it, I decided to replace the hardcoded lookup path for the
GIC with a lookup by compatible to ensure that we retain the previous
behavior of panic on unsupport GIC version.
@Gelbpunkt
Gelbpunkt marked this pull request as ready for review August 22, 2026 20:49

@mkroening mkroening left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Thanks! :)

@mkroening
mkroening enabled auto-merge August 22, 2026 21:09
@mkroening
mkroening added this pull request to the merge queue Aug 22, 2026
Merged via the queue into hermit-os:main with commit 24d9fff Aug 22, 2026
23 checks passed
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.

2 participants