Skip to content

Canonicalize SMP topology and shared interrupt status #4442

Description

Tracking issue: MicroVM support and private snapshot restore.

Motivation

An SMP microVM needs one consistent description of its processors across machine
configuration, guest tables, interrupt routing, and saved state. Canonical topology
and shared interrupt-status semantics make multi-processor boot and restore
reviewable and avoid backend-dependent interpretations of the same machine.

Proposed Scope

  • Define a canonical topology and stable VP identities for supported microVM SMP
    configurations.
  • Apply the topology consistently to guest discovery, processor construction, and
    snapshot compatibility checks.
  • Define shared-status interrupt delivery, including how pending sources are
    observed and cleared without losing another source's notification.
  • Introduce required ACPI fields and update every affected platform constructor
    and caller in the same PR.
  • Preserve the single-VP profile and previously established restore behavior.

Acceptance Criteria

  • Equivalent valid configurations produce the same topology and VP identities
    across supported boot and restore paths.
  • Invalid processor counts, identifiers, or incompatible restored topology
    fail before guest execution.
  • Deterministic tests cover multiple pending interrupt sources and clearing one
    source while another remains pending.
  • VMM coverage boots and restores a supported multi-VP guest and verifies
    processor discovery, execution, and interrupt delivery.
  • Windows and Linux callers compile with all required ACPI initialization;
    no later PR is needed to complete the API change.
  • The canonical topology and supported limits are documented.

Dependencies

This ordering is an integration prerequisite, not a claim that CPU topology
inherently depends on a filesystem device.

Non-Goals

This issue does not introduce arbitrary CPU hotplug, cross-topology migration, or
the later policy for selecting VP targets during restore.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions