Repository navigation
Conversation
cshung
force-pushed
the
cshung/mshv-aarch64
branch
from
July 31, 2026 16:13
b34cc5d to
fb92ede
Compare
cshung
force-pushed
the
cshung/mshv-aarch64
branch
from
August 12, 2026 14:55
fb92ede to
3736e16
Compare
cshung
force-pushed
the
cshung/mshv-aarch64
branch
2 times, most recently
from
August 20, 2026 17:42
b440e24 to
4ada969
Compare
cshung
force-pushed
the
cshung/mshv-aarch64
branch
from
September 2, 2026 22:47
4ada969 to
7f2289d
Compare
cshung
force-pushed
the
cshung/mshv-aarch64
branch
from
September 29, 2026 05:30
a70dcfa to
1b275f2
Compare
cshung
force-pushed
the
cshung/mshv-aarch64
branch
from
November 2, 2026 17:10
1b275f2 to
2f42d32
Compare
This comment has been minimized.
This comment has been minimized.
cshung
force-pushed
the
cshung/mshv-aarch64
branch
from
November 5, 2026 17:24
2f42d32 to
0e44f0a
Compare
This comment has been minimized.
This comment has been minimized.
Add a full VirtualMachine trait implementation for MSHV on aarch64, replacing the previous stub that returned false/unimplemented. Key changes: - mshv/aarch64.rs: Complete implementation including VM creation, memory mapping, vcpu run loop with MMIO-based I/O dispatch, general/FPU/special register access via hv_register_assoc, and vcpu reset support. - hyperlight_vm/aarch64.rs: Wire up MshvVm::new() so MSHV is used when detected (previously returned NoHypervisorFound). - memory_region.rs: Implement TryFrom<hv_arm64_memory_intercept_message> for MemoryRegionFlags using intercept_access_type field. The implementation mirrors the KVM aarch64 backend's I/O page pattern (MMIO writes to the I/O page GPA are interpreted as port I/O) and follows MSHV x86_64 patterns for partition creation and register access. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: cshung <3410332+cshung@users.noreply.github.com>
Configure the GIC, decode MMIO writes, preserve register state, and rebuild the partition during restore. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: cshung <3410332+cshung@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 6f20a05d-6bee-4e2e-b320-12f8d9759bbc Signed-off-by: cshung <3410332+cshung@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 6f20a05d-6bee-4e2e-b320-12f8d9759bbc Signed-off-by: cshung <3410332+cshung@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 6f20a05d-6bee-4e2e-b320-12f8d9759bbc Signed-off-by: cshung <3410332+cshung@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 6f20a05d-6bee-4e2e-b320-12f8d9759bbc Signed-off-by: cshung <3410332+cshung@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 6f20a05d-6bee-4e2e-b320-12f8d9759bbc Signed-off-by: cshung <3410332+cshung@users.noreply.github.com>
Check the symmetric hl-linux-arm pool for native ARM64 and read/write access to the MSHV device. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: cshung <3410332+cshung@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: cshung <3410332+cshung@users.noreply.github.com>
Bound partition concurrency and recognize Arm CPU implementers. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: cshung <3410332+cshung@users.noreply.github.com>
ARM64 MSHV goldens need CPU-vendor support and published fixtures. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: cshung <3410332+cshung@users.noreply.github.com>
cshung
force-pushed
the
cshung/mshv-aarch64
branch
from
November 10, 2026 16:59
e039b60 to
747ee00
Compare
This comment has been minimized.
This comment has been minimized.
cshung
marked this pull request as ready for review
November 10, 2026 18:22
cshung
requested review from
danbugs,
dblnz,
devigned,
jprendes and
jsturtevant
as code owners
November 10, 2026 18:22
cshung
requested review from
andreiltd,
ludfjig,
simongdavies,
squillace and
syntactically
as code owners
November 10, 2026 18:22
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
A guest-controlled MMIO store can overflow the PC increment and panic the host, while snapshot capture and restore also issue unnecessary separate register requests.
3 open issues
What changed in this PR
This PR implements the Linux aarch64 MSHV backend, allowing Hyperlight to run ARM64 sandboxes through MSHV.
Changes:
- Implements VM creation, memory mapping, MMIO dispatch, register access, and vCPU reset.
- Connects MSHV to ARM64 backend selection and memory-access decoding.
- Adds ARM64 MSHV CI coverage and adjusts test concurrency and platform expectations.
| File | Description |
|---|---|
typos.toml |
Allows an identifier spelling required by MSHV bindings. |
src/hyperlight_host/tests/sandbox_host_tests.rs |
Limits parallel callbacks for ARM64 MSHV. |
src/hyperlight_host/tests/integration_test.rs |
Limits ARM64 MSHV stress-test concurrency. |
src/hyperlight_host/src/sandbox/snapshot/file/config.rs |
Accepts Arm CPU implementers in Linux snapshot tests. |
src/hyperlight_host/src/mem/memory_region.rs |
Decodes ARM64 MSHV memory-access flags. |
src/hyperlight_host/src/hypervisor/virtual_machine/mshv/aarch64.rs |
Implements the ARM64 MSHV virtual machine backend. |
src/hyperlight_host/src/hypervisor/hyperlight_vm/aarch64.rs |
Instantiates MSHV when selected on ARM64. |
.github/workflows/ValidatePullRequest.yml |
Adds debug and release ARM64 MSHV jobs. |
.github/workflows/dep_build_test.yml |
Configures runners, test limits, and snapshot-golden exclusions for ARM64 MSHV. |
Review effort: Balanced
Ordinary tests share four slots. Internally parallel tests reserve all slots to stay within the partition limit. The sandbox smoke test retains fifty runs across twenty-four workers. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: cshung <3410332+cshung@users.noreply.github.com>
This comment has been minimized.
This comment has been minimized.
MMIO instruction advancement wraps at the address boundary. Special-register capture and restore each use one request with stack-allocated associations. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: cshung <3410332+cshung@users.noreply.github.com>
Benchmark ResultsMeasured commit: kvm / amd (Linux) (➖ stable)No benchmark improved or regressed. Benchmark Resultsfunction_call_codec
payload_allocation
sandboxes
slot_pool
snapshot_files
virtq_readonly
virtq_readwrite
kvm / intel (Linux) (➖ stable)No benchmark improved or regressed. Benchmark Resultsfunction_call_codec
payload_allocation
sandboxes
slot_pool
snapshot_files
virtq_readonly
virtq_readwrite
mshv3 / amd (Linux) (➖ stable)No benchmark improved or regressed. Benchmark Resultsfunction_call_codec
payload_allocation
sandboxes
slot_pool
snapshot_files
virtq_readonly
virtq_readwrite
mshv3 / intel (Linux) (➖ stable)No benchmark improved or regressed. Benchmark Resultsfunction_call_codec
payload_allocation
sandboxes
slot_pool
snapshot_files
virtq_readonly
virtq_readwrite
hyperv-ws2025 / amd (Windows) (➖ stable)No benchmark improved or regressed. Benchmark Resultsfunction_call_codec
payload_allocation
sandboxes
slot_pool
snapshot_files
virtq_readonly
virtq_readwrite
hyperv-ws2025 / intel (Windows) (➖ stable)No benchmark improved or regressed. Benchmark Resultsfunction_call_codec
payload_allocation
sandboxes
slot_pool
snapshot_files
virtq_readonly
virtq_readwrite
Reported by |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


Summary
Implements the VirtualMachine trait for MSHV on aarch64, replacing the previous stub.
Changes
Design
Testing