MigVM AArch64
A standalone bare-metal payload for CCA (ARM v9 Realm) and VirtCCA (ARM v8 TrustZone) confidential VM migration.
Quick Start
# Build
cargo build --release --target aarch64-unknown-none
# Run on QEMU
bash sh_script/qemu.sh run
# VirtCCA guest mode
cargo build --release --features virtcca --target aarch64-unknown-none
bash sh_script/qemu.sh virtcca
# CCA Realm mode (pending hardware)
cargo build --release --features cca --target aarch64-unknown-none
Features
| Feature | Description |
|---|---|
default |
Normal QEMU VM (no confidential computing) |
virtcca |
VirtCCA guest mode (ARM v8 TrustZone S-EL2, TSI SMC) |
cca |
CCA Realm mode (ARM v9, RSI SMC) |
Architecture
AArch64 boot (exception.S) → MMU init → FDT parse → GICv3 init → Timer init
→ PCIe enum → VirtIO-net + VirtIO-vsock → smoltcp DHCP → TCP 5001/5002
Documentation
- Port Summary
- CODE FLOW
- VirtIO Plan
- GIC Controller
- Timer + TRNG
- Memory / MMU
- CCA / VirtCCA
- Debug Logs
- Debug Methods
Prerequisites
- Rust nightly/aarch64-unknown-none target
- QEMU 8.2+ with
qemu-system-aarch64 - For VirtCCA: KVM with
kvm-type=cvm+ TMM firmware
Verification Status
| Environment | DHCP | TCP | Timer | TSI | MMU |
|---|---|---|---|---|---|
| KVM + GICv3 | ✅ | ✅ | ✅ 30s | N/A | ✅ |
| VirtCCA | ✅ | ✅ | ✅ | ✅ 11/11 | ✅ |
| CCA Realm | ⚠️ | ⚠️ | ⚠️ | ⚠️ code ready | ⚠️ |
License
This project is dual-licensed:
- BSD-2-Clause-Patent — applies to files retaining the original Intel
copyright (generic stubs / standard templates:
src/acpi.rs,src/mm/layout.rs,src/mm/heap.rs). - Mulan Permissive Software License v2 (Mulan PSL v2) — applies to all other source files (AArch64-specific implementations) carrying the Huawei Technologies copyright.
See the LICENSE file for the full text of both licenses. Each source file declares its applicable license in its header.