Skip to content

fix(aarch64): add support od macOS HVF on Apple Silicon#2487

Open
stlankes wants to merge 2 commits into
hermit-os:mainfrom
stlankes:pan
Open

fix(aarch64): add support od macOS HVF on Apple Silicon#2487
stlankes wants to merge 2 commits into
hermit-os:mainfrom
stlankes:pan

Conversation

@stlankes

Copy link
Copy Markdown
Contributor

This series makes Hermit's aarch64 kernel boot under macOS HVF on Apple Silicon, in addition to the existing TCG support. Three small adjustments are needed: virtual timer instead of physical, PSCI shutdown instead of semihosting, and FEAT_PAN-aware EL1 setup.

@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: 7b19385 Previous: f83a235 Performance Ratio
startup_benchmark Build Time 74.82 s 77.08 s 0.97
startup_benchmark File Size 0.73 MB 0.73 MB 1.00
Startup Time - 1 core 0.72 s (±0.03 s) 0.73 s (±0.02 s) 0.99
Startup Time - 2 cores 0.73 s (±0.02 s) 0.75 s (±0.02 s) 0.97
Startup Time - 4 cores 0.73 s (±0.01 s) 0.76 s (±0.02 s) 0.96
multithreaded_benchmark Build Time 75.30 s 80.66 s 0.93
multithreaded_benchmark File Size 0.86 MB 0.86 MB 1.00
Multithreaded Pi Efficiency - 2 Threads 89.90 % (±6.55 %) 89.44 % (±5.91 %) 1.01
Multithreaded Pi Efficiency - 4 Threads 43.95 % (±2.50 %) 44.06 % (±2.65 %) 1.00
Multithreaded Pi Efficiency - 8 Threads 25.72 % (±1.11 %) 25.56 % (±1.89 %) 1.01
micro_benchmarks Build Time 73.75 s 87.20 s 0.85
micro_benchmarks File Size 0.87 MB 0.87 MB 1.00
Scheduling time - 1 thread 65.25 ticks (±2.68 ticks) 67.04 ticks (±1.91 ticks) 0.97
Scheduling time - 2 threads 37.69 ticks (±5.07 ticks) 39.33 ticks (±3.42 ticks) 0.96
Micro - Time for syscall (getpid) 3.88 ticks (±0.61 ticks) 3.43 ticks (±0.24 ticks) 1.13
Memcpy speed - (built_in) block size 4096 79865.65 MByte/s (±55528.13 MByte/s) 84527.91 MByte/s (±58322.62 MByte/s) 0.94
Memcpy speed - (built_in) block size 1048576 30730.20 MByte/s (±24779.35 MByte/s) 30845.87 MByte/s (±25037.16 MByte/s) 1.00
Memcpy speed - (built_in) block size 16777216 29617.82 MByte/s (±24322.65 MByte/s) 27492.52 MByte/s (±22708.20 MByte/s) 1.08
Memset speed - (built_in) block size 4096 80616.55 MByte/s (±55989.76 MByte/s) 84666.80 MByte/s (±58421.97 MByte/s) 0.95
Memset speed - (built_in) block size 1048576 31468.34 MByte/s (±25202.70 MByte/s) 31593.14 MByte/s (±25470.12 MByte/s) 1.00
Memset speed - (built_in) block size 16777216 30365.99 MByte/s (±24745.14 MByte/s) 28269.66 MByte/s (±23193.64 MByte/s) 1.07
Memcpy speed - (rust) block size 4096 76368.69 MByte/s (±53167.85 MByte/s) 74722.10 MByte/s (±52209.99 MByte/s) 1.02
Memcpy speed - (rust) block size 1048576 30538.57 MByte/s (±24655.89 MByte/s) 30824.11 MByte/s (±25054.28 MByte/s) 0.99
Memcpy speed - (rust) block size 16777216 29614.03 MByte/s (±24326.72 MByte/s) 27597.67 MByte/s (±22766.03 MByte/s) 1.07
Memset speed - (rust) block size 4096 76953.37 MByte/s (±53567.73 MByte/s) 74865.22 MByte/s (±52302.23 MByte/s) 1.03
Memset speed - (rust) block size 1048576 31273.21 MByte/s (±25082.79 MByte/s) 31565.59 MByte/s (±25484.76 MByte/s) 0.99
Memset speed - (rust) block size 16777216 30346.51 MByte/s (±24735.78 MByte/s) 28374.92 MByte/s (±23250.83 MByte/s) 1.07
alloc_benchmarks Build Time 72.54 s 81.01 s 0.90
alloc_benchmarks File Size 0.81 MB 0.81 MB 1.00
Allocations - Allocation success 91.32 % 91.32 % 1
Allocations - Deallocation success 100.00 % 100.00 % 1
Allocations - Pre-fail Allocations 61.46 % 61.46 % 1
Allocations - Average Allocation time 5698.06 Ticks (±129.85 Ticks) 6133.98 Ticks (±129.62 Ticks) 0.93
Allocations - Average Allocation time (no fail) 6322.70 Ticks (±153.35 Ticks) 6784.80 Ticks (±184.79 Ticks) 0.93
Allocations - Average Deallocation time 1206.28 Ticks (±392.18 Ticks) 1292.85 Ticks (±344.36 Ticks) 0.93
mutex_benchmark Build Time 72.88 s 81.90 s 0.89
mutex_benchmark File Size 0.87 MB 0.87 MB 1.00
Mutex Stress Test Average Time per Iteration - 1 Threads 12.10 ns (±0.36 ns) 12.08 ns (±0.27 ns) 1.00
Mutex Stress Test Average Time per Iteration - 2 Threads 40.42 ns (±2.47 ns) 17.94 ns (±3.62 ns) 2.25

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

@stlankes stlankes force-pushed the pan branch 3 times, most recently from bf13593 to 6596f16 Compare June 21, 2026 09:20
stlankes added 2 commits June 21, 2026 11:48
This series makes Hermit's aarch64 kernel boot under
macOS HVF on Apple Silicon, in addition to the existing TCG support.
Three small adjustments are needed: virtual timer instead of physical,
PSCI shutdown instead of semihosting, and FEAT_PAN-aware EL1 setup.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants