Skip to content

feat(x86_64): add PVH boot support - #2366

Draft
mkroening wants to merge 3 commits into
mainfrom
pvh
Draft

feat(x86_64): add PVH boot support#2366
mkroening wants to merge 3 commits into
mainfrom
pvh

Conversation

@mkroening

@mkroening mkroening commented Apr 8, 2026

Copy link
Copy Markdown
Member

This PR adds PVH boot support directly to the kernel. This allows the kernel to be booted in QEMU, Firecracker, and Cloud Hypervisor directly, without the loader.

The pvh crate was successfully published.

Depends on:

Closes #2373.

Comment thread src/arch/x86_64/kernel/pvh/pvh_start32.s Outdated
Comment thread src/arch/x86_64/kernel/pvh/pvh_start32.s Outdated
@mkroening
mkroening force-pushed the pvh branch 4 times, most recently from b58f50f to 9b06a39 Compare May 10, 2026 13:53
@mkroening
mkroening force-pushed the pvh branch 2 times, most recently from edeb190 to bd67731 Compare July 9, 2026 19:52
@mkroening mkroening changed the title feat(x86_64): add PVH support feat(x86_64): add PVH boot support Aug 3, 2026
@mkroening
mkroening force-pushed the pvh branch 5 times, most recently from 9f6eacd to bf9ea1a Compare August 15, 2026 15:43

@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: ac92773 Previous: 2e23902 Performance Ratio
startup_benchmark Build Time 92.14 s 80.34 s 1.15
startup_benchmark File Size 0.78 MB 0.80 MB 0.98
Startup Time - 1 core 1.27 s (±0.05 s) 0.75 s (±0.02 s) 1.71
Startup Time - 2 cores 1.30 s (±0.02 s) 0.74 s (±0.02 s) 1.77
Startup Time - 4 cores 1.31 s (±0.02 s) 0.74 s (±0.02 s) 1.77
multithreaded_benchmark Build Time 92.33 s 82.11 s 1.12
multithreaded_benchmark File Size 0.88 MB 0.86 MB 1.03
Multithreaded Pi Efficiency - 2 Threads 65.80 % (±6.08 %) 85.89 % (±6.61 %) 0.77
Multithreaded Pi Efficiency - 4 Threads 40.55 % (±3.04 %) 43.43 % (±2.56 %) 0.93
Multithreaded Pi Efficiency - 8 Threads 20.03 % (±1.50 %) 25.76 % (±1.53 %) 0.78
micro_benchmarks Build Time 216.37 s 80.40 s 2.69
micro_benchmarks File Size 0.89 MB 0.86 MB 1.03
Scheduling time - 1 thread 194.18 ticks (±35.25 ticks) 62.65 ticks (±4.06 ticks) 3.10
Scheduling time - 2 threads 120.49 ticks (±16.23 ticks) 34.08 ticks (±4.10 ticks) 3.54
Micro - Time for syscall (getpid) 10.65 ticks (±5.52 ticks) 3.45 ticks (±0.58 ticks) 3.09
Memcpy speed - (built_in) block size 4096 59087.60 MByte/s (±41917.32 MByte/s) 82448.38 MByte/s (±56997.13 MByte/s) 0.72
Memcpy speed - (built_in) block size 1048576 14304.21 MByte/s (±12365.49 MByte/s) 30585.98 MByte/s (±24707.84 MByte/s) 0.47
Memcpy speed - (built_in) block size 16777216 12008.83 MByte/s (±10045.07 MByte/s) 26340.06 MByte/s (±21720.96 MByte/s) 0.46
Memset speed - (built_in) block size 4096 59337.60 MByte/s (±42107.78 MByte/s) 82292.76 MByte/s (±56891.50 MByte/s) 0.72
Memset speed - (built_in) block size 1048576 14698.39 MByte/s (±12607.14 MByte/s) 31323.85 MByte/s (±25145.86 MByte/s) 0.47
Memset speed - (built_in) block size 16777216 12425.77 MByte/s (±10342.20 MByte/s) 27104.68 MByte/s (±22209.94 MByte/s) 0.46
Memcpy speed - (rust) block size 4096 55073.83 MByte/s (±38928.99 MByte/s) 74097.96 MByte/s (±51811.44 MByte/s) 0.74
Memcpy speed - (rust) block size 1048576 14710.76 MByte/s (±12222.13 MByte/s) 30361.60 MByte/s (±24602.37 MByte/s) 0.48
Memcpy speed - (rust) block size 16777216 12402.07 MByte/s (±10353.01 MByte/s) 27625.34 MByte/s (±22806.88 MByte/s) 0.45
Memset speed - (rust) block size 4096 55748.98 MByte/s (±39408.28 MByte/s) 74373.47 MByte/s (±51976.48 MByte/s) 0.75
Memset speed - (rust) block size 1048576 15001.32 MByte/s (±12368.03 MByte/s) 31110.89 MByte/s (±25033.24 MByte/s) 0.48
Memset speed - (rust) block size 16777216 12774.58 MByte/s (±10602.94 MByte/s) 28386.93 MByte/s (±23265.03 MByte/s) 0.45
alloc_benchmarks Build Time 210.08 s 74.76 s 2.81
alloc_benchmarks File Size 0.86 MB 0.87 MB 0.98
Allocations - Allocation success 91.35 % 91.31 % 1.00
Allocations - Deallocation success 100.00 % 100.00 % 1
Allocations - Pre-fail Allocations 61.55 % 61.44 % 1.00
Allocations - Average Allocation time 17528.94 Ticks (±1264.26 Ticks) 5860.58 Ticks (±98.43 Ticks) 2.99
Allocations - Average Allocation time (no fail) 18494.18 Ticks (±1456.71 Ticks) 6554.81 Ticks (±92.86 Ticks) 2.82
Allocations - Average Deallocation time 3469.53 Ticks (±1242.04 Ticks) 1805.01 Ticks (±250.35 Ticks) 1.92
mutex_benchmark Build Time 210.41 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 35.54 ns (±6.37 ns) 12.10 ns (±0.41 ns) 2.94
Mutex Stress Test Average Time per Iteration - 2 Threads 33.54 ns (±7.93 ns) 40.26 ns (±1.68 ns) 0.83

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

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.

Tracking issue for PVH boot support

2 participants