1 unstable release

0.1.0 Oct 12, 2019

#1354 in Procedural macros

23 downloads per month
Used in libvmm


181 lines

Library VMM

Experimenting with building library VMM in Rust. Unclear what this will turn out to be.


New to Rust?!

  • Here you can find out how to install Rust on your system.
  • This is a very clear point to start off learning Rust or to find more details about it.

Installing project dependencies

$ ./scripts/install-deps
  • Logout and login again to make group modifications to be effective.

How to run the unit tests

$ cd src/testing
$ make


  • Basic VMCS handling support.
  • Add a first unit test.
  • Add basic EPT page table handling.
  • Add support for managing MSR and IO bitmaps.
  • Add support for skipping instructions.
  • VMLaunch/VMResume support.
  • Add basic VMCS validation code.
  • Port kvm-unit-tests tests.
  • Port KVM kernel selftests.
  • Add NMI support.
  • Add support for SGX virtualization.
  • Add processor craziness mitigations for speculation attacks.
  • Add MCE handling.
  • Add support for VPID.
  • MONITOR & MWAIT + APERF/MPERF emulation.
  • Add CPUID emulation.
  • Add PLE support.
  • Add TSC scaling support.
  • Add VMCS shadowing support.
  • Add preemption timer support.
  • Add PML support.
  • Instruction emulation.
  • Create a library OS to use it for testing.
  • Add support for request-interrupt-window.
  • Add support for Interrupt on entry settings.
  • Add support for managing IOMMU page tables.
  • Add support for hardware posted interrupt.
  • Add support for APICv.
  • Add support for SVM.
  • Add better support for non-root guest mode code.
  • Extend the VMCS validation checks in (${}/src/x86_64/instructions/vmcs.rs).
    • 26.2 VMX controls and host state.
      • 26.2.1 VMX controls.
        • VM Exit control validation.
        • VM Entry control validation.
      • 26.2.2 Host controls and MSRs.
      • 26.2.3 Host segment and descriptor tables.
      • 26.2.4 Address space size.
    • 26.3 Guest state.


~16K SLoC