Skip to content

kern-crates/arm_vcpu

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

47 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

arm_vcpu

CI Crates.io [License]

AArch64 virtual CPU (vCPU) implementation for hypervisors. This crate provides the core vCPU structure and virtualization-related interface support specifically designed for the AArch64 architecture.

Features

  • 🔧 Complete vCPU Implementation: Full virtual CPU structure for AArch64 guests
  • 🚀 Exception Handling: Comprehensive trap and exception handling for virtualized environments
  • 🎯 Hardware Virtualization: Support for ARMv8 virtualization extensions (EL2)
  • 🔒 Security: SMC (Secure Monitor Call) handling and secure virtualization
  • 📊 Per-CPU Support: Efficient per-CPU data structures and management
  • 🛠️ No-std Compatible: Works in bare-metal and embedded environments

Architecture Overview

This crate implements the following key components:

  • Aarch64VCpu: The main virtual CPU structure that manages guest execution state
  • TrapFrame: Context frame for handling traps and exceptions from guest VMs
  • Exception Handlers: Support for synchronous and asynchronous exception handling
  • System Register Emulation: Virtualized access to AArch64 system registers
  • SMC Interface: Secure Monitor Call handling for trusted execution

Usage

Add this to your Cargo.toml:

[dependencies]
arm_vcpu = "0.1"

Basic Example

use arm_vcpu::{Aarch64VCpu, Aarch64VCpuCreateConfig, has_hardware_support};

// Check if hardware virtualization is supported
if has_hardware_support() {
    // Create vCPU configuration
    let config = Aarch64VCpuCreateConfig::default();
    
    // Create and configure the virtual CPU
    let vcpu = Aarch64VCpu::new(config)?;
    
    // Run the virtual CPU
    vcpu.run()?;
}

Requirements

  • Architecture: AArch64 (ARMv8-A or later)
  • Privilege Level: EL2 (Hypervisor mode) required for full functionality

License

This project is dual-licensed under either:

at your option.

About

vCpu for ARM: virtualization support under aarch64 architecture

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 93.8%
  • Assembly 6.2%