microsoft / microsoft/openvmm

Persist virtio state and reconstruct console attachments

Open
#4,439 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

Restoring guest RAM alone is insufficient for a virtio device: negotiated state,
queue ownership, pending work, and interrupt state must agree with the guest.
Console support provides a concrete first consumer of a generic persistence
contract and makes buffered I/O and host-endpoint reconstruction observable.

Proposed Scope

  • Define bounded, validated generic virtio device and queue persistence.
  • Defer restored device activation until required state and attachments are ready,
    with an explicit acknowledgment of activation success or failure.
  • Persist the console's buffered I/O under a documented save-boundary contract.
  • Reconstruct host console endpoints rather than serializing process-local handles
    or assuming an endpoint survives capture.
  • Include generic persistence and working console reconstruction in the same PR.
  • Propagate quiesce and activation failures through the snapshot transaction.

Acceptance Criteria

  • Generic state round trips preserve negotiated features, queue state, and
    relevant interrupt/device status; malformed state is rejected without panics.
  • No restored device consumes descriptors or emits I/O before activation is
    acknowledged, and a failed activation unwinds cleanly.
  • Console buffer tests verify the documented handling of bytes pending at the
    save boundary, including empty and partially consumed buffers.
  • A VMM test captures and restores with active console I/O and verifies guest
    progress and the expected byte sequence after endpoint reconstruction.
  • Missing or incompatible host endpoints produce a bounded failure and release
    any resources already prepared.

Dependencies

Non-Goals

Acknowledged activation is a lifecycle requirement. Network and filesystem
persistence are separate consumers of this generic contract.

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 00-microvm.md and review dependencies S03 (#4438) and F04 (#4425) before locating the snapshot, virtio, and console entry points. Done means generic state round-trips safely, activation and failure handling are bounded, console buffers follow the save-boundary contract, and active-I/O capture/restore verifies guest progress and expected bytes.

Written by the indexing model from the issue text.

Assessment

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.