microsoft / microsoft/openvmm

Define portable CPU and clock snapshot contracts

Open
#4,437 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
1.9k
Forks
238
Avg merge
1d 15h
Merged PRs (30d)
100

Description

Tracking issue: MicroVM support and private snapshot restore.

Motivation

A restored guest must see CPU state and time that agree with the save boundary.
Serializing backend-specific state without an explicit compatibility contract can
admit an incompatible restore target or produce clocks that jump inconsistently
between restored processors. Portability needs defined limits, not an assumption
that every host or hypervisor can consume every snapshot.

Proposed Scope

  • Define the CPU state and capability contract captured at the quiesced boundary.
  • Separate portable state from backend-specific requirements and validate target
    compatibility before resuming guest execution.
  • Capture the guest clock relationship at the save boundary and define how paused
    time is treated during restore.
  • Synchronize restored virtual-processor clocks before execution, including the
    MSHV restored-vCPU path where that backend is supported.
  • Propagate unsupported-state and clock-restore failures through the fallible
    lifecycle interfaces.
  • Keep SMP topology extensions in their own PR rather than adding fields that
    this contract cannot yet use.

Acceptance Criteria

  • CPU state round trips preserve the defined architectural state on supported
    save/restore paths.
  • An incompatible CPU or backend contract is rejected before any VP resumes.
  • Clock tests cover a nonzero pause interval and verify the documented
    continuity and monotonicity behavior.
  • Restored VP clocks use a consistent saved boundary; supported MSHV coverage
    explicitly tests clock synchronization before vCPU execution.
  • Backend failures return lifecycle errors without partially resumed VPs.
  • Documentation records supported host/backend combinations and identifies
    unavailable runtime coverage separately from passing unit tests.

Dependencies

Non-Goals

This issue does not promise arbitrary cross-host migration, define SMP topology
expansion, or implement the snapshot manifest and RAM publication transaction.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the linked 00-microvm.md tracking document and the S01 fallible lifecycle and quiesce transaction dependency. Trace the lifecycle interfaces and the MSHV restored-vCPU path, then use the acceptance criteria to define completion: compatible CPU state, synchronized clocks, rejected failures before resume, and documented host/backend coverage.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
infrastructure
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.