microsoft / microsoft/openvmm

Provide minimal chipset and fixed-MMIO building blocks

Open
#4,434 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 lightweight machine profile needs to compose a small chipset and place virtio
devices at a defined MMIO layout without inheriting unnecessary platform devices.
Reusable chipset and transport primitives would let the machine contract be added
separately from the plumbing that makes its layout and interrupts possible.

Proposed Scope

  • Add the generic chipset composition and fixed-MMIO registration primitives
    needed by a minimal machine profile.
  • Make address ranges, device placement, and interrupt routing explicit and
    validate incompatible or overlapping assignments.
  • Adapt affected constructors and exhaustive matches in the same PR, including
    the ACPI IRQ initialization required by any new interface.
  • Preserve defaults and behavior for existing chipset users.
  • Exercise interrupt behavior with deterministic fixtures rather than depending
    on the complete machine profile.

Acceptance Criteria

  • A focused fixture constructs a minimal chipset with deterministic device
    addresses and interrupt routing.
  • Invalid ranges, overlaps, and unsupported assignments are rejected before
    devices become accessible.
  • MMIO access and interrupt tests exercise the new primitives without a live
    hypervisor or the cold-boot feature.
  • Affected Windows and Linux constructors and match arms compile without
    requiring a later PR to supply missing initialization.
  • Existing chipset tests retain their behavior, and the new APIs document
    their layout and ownership constraints.

Dependencies

Non-Goals

This issue does not expose a new CLI machine type, choose the full cold-boot
contract, or add snapshot persistence.

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 existing chipset constructors, exhaustive match arms, ACPI IRQ initialization, and chipset tests; trace how current device placement and interrupts are represented. Use the deterministic virtio interrupt fixture from #4425 as a dependency, then add focused tests for fixed MMIO, invalid assignments, and interrupt behavior. Done means the minimal primitives work without a live hypervisor while existing chipset behavior remains unchanged.

Written by the indexing model from the issue text.

Assessment

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.